Development record
A one-letter `exclude_path_fragments` entry (for example `e`) passes `mergeConfig`, matches by substring nearly every path, and drops a file holding a secret from the release scan while one other scanned file keeps the zero-coverage sentinel quiet, so the secret is copied into the release payload and the ship gate does not refuse.
A one-letter exclude_path_fragments entry (for example e) passes mergeConfig, matches by substring nearly every path, and drops a file holding a secret from the release scan while one other scanned file keeps the zero-coverage sentinel quiet, so the secret is copied into the release payload and the ship gate does not refuse.
Private security advisory GHSA-4f3r-hxcm-crq4 (draft, severity medium). Follows GHSA-8fqr-pv94-5jwp, which refused a punctuation-only fragment. Full text, evidence and reproduction: .abcd/.work.local/scratch/security-drain-2026-10-11/advisories/ in the main checkout's local tier. This record stays uncommitted until its fix lands; the fix commit adds it directly to resolved/.
Evidence (main 3d171421a): mergeConfig (internal/adapter/scanner/scanner.go) refuses a blank, slash-only or punctuation-only fragment and accepts any fragment holding a letter or digit; excludedBy matches with strings.Contains on the slash path. Confirmed by reading the code at that commit; not re-run.
Frontmatter
| id | iss-2610111600051340 |
|---|---|
| type | issue |
| lifecycle | resolved |
| severity | minor |
.abcd/work/issues/resolved/iss-2610111600051340-one-letter-exclude-fragment-drops-secret.md
open on GitHub ↗ · commit history ↗
mentions1
- iss-2610120929469571The release scan accepts an exclude_path_fragments entry that matches no payload file without a word, so a typo'd exclusion (generatd/ for generated/) reads as working while the files it was meant to leave out are scanned, and a fragment left behind after a rename silently stands ready to exclude whatever later takes that name. Found by the follow-up to lane X's whole-segment exclusion fix (iss-2610111600051340) on 2026-10-12; whole-segment matching makes a near-miss fragment match nothing where a substring match often still hit, so the silent case is now the common one.