key-gaps: the key regex was blind to digits, inventing missing secrets #69
No reviewers
Labels
No labels
Compat/Breaking
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Security
Kind/Testing
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Status
Abandoned
Status
Blocked
Status
Need More Info
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: Jinemi/thermograph#69
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/key-gaps-digit-regex"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
grep -oE "^[A-Z_]+="cannot match a key name containing a digit.This estate has exactly six such names — all the
*_S3_*keys. So a prod audit returned 26 keys against 32 real ones, and reported the S3 and lake credentials as missing from both live hosts.They were present the whole time. The phantom was independently reproduced twice by re-running the same pattern, which is precisely what made it convincing, and it was briefly recorded as one of two root causes of the ERA5 lake being unqueryable (#56). That issue has one cause: the missing
duckdb-lakeimage.An audit that under-reports is worse than no audit. A missing-secret finding sends someone to provision a credential that already exists — and in a rotation tool, it would justify writing over one.
Fixed to
^[A-Z][A-Z0-9_]*=in both the skill andkey_gaps.py's docstring. The match still stops at the=, so no value is read — that property is the entire reason this is a grep rather than a parser, and it is preserved.Centralis's
secrets_gapscarried the same bug and is fixed separately inemi/centralis#8, with a regression test.Also ignores
.claude/worktrees/, after the first commit here swept in two other sessions' live checkouts as embedded git repositories. This repo already has a documented history of parallel sessions colliding through shared checkouts; this is the same hazard wearing a different hat.