Commit 8813ecf
security: add gitleaks allowlist — greens the now-real secret gate on main (#512)
**Follow-up to #511 — `main` is currently red because of it.**
#511 merged at its first commit, so the caller fix landed **without**
this allowlist. `main`'s Secret Scanner therefore went straight from
`startup_failure` (dead — zero jobs, since 2026-07-06) to `failure`
(real gate, 15 false positives). This completes the change.
Net effect of #511 + this PR: **the scanner goes from not executing at
all, to executing and passing honestly.**
## The 15 findings — all verified false positives
| Where | Value | Why benign |
|---|---|---|
| `deno.lock` ×8 | hex digests | SHA-256 **integrity hashes** of public
registry modules |
| `lol/analysis/Project.toml` | UUID | Julia General-registry **package
UUID** |
| `docs/audits/otpiser-…a2ml` | 40-hex | **OpenPGP fingerprint** —
published by design |
| `rhodium…/haskell-registry-design.md` | `Ed25519KeyPair` | a Haskell
**type name**, not a value |
| `avow-lib/…/example.zig` | `abc123def456...` | commented `// Would be
real token` |
| `telegram-bot/NEXT-STEPS.md` ×2 | `1234567890_abc123...` | inside a
fenced ASCII terminal mockup |
| `…/examples.ndjson` | `0a1b2c3d4e5f…` | ascending-nibble filler walk |
This wall of noise is almost certainly what the original
`continue-on-error: true` was papering over — turn the gate on with no
allowlist, get 15 reds that are entirely noise, someone reverts, and the
estate is back to a scanner that cannot fail. **So this allowlist is the
unblocker for re-pinning callers estate-wide, not merely local
cleanup.**
## Design rule (documented in the file — please keep it)
Allowlist by **pattern class, anchored to the whole value**. Never
allowlist a path because "that file is fine", never disable a rule.
`paths` is confined to formats that cannot hold a live credential
(lockfile integrity hashes, dependency UUIDs).
Every regex is anchored `^...$` deliberately. An earlier draft used
unanchored `(?i)test|example` and **canary-testing caught that it
silently allowlisted the real AWS key**
`wJalrXUtnFEMI/K7MDENG/bPxRfiCY…` purely because "EXAMPLE" appears
inside it. Anchoring fixed it.
## Verification against `origin/main`
```
gitleaks detect --exit-code 1 -> no leaks found (exit 0)
```
with planted realistic secrets **still detected**: `github-pat`,
`gitlab-pat`, `slack-bot-token`, `stripe-access-token`,
`generic-api-key` (AWS).
Also clears **all 8** of `boj-server-cartridges`' equivalent fixture
findings with **no repo-specific additions** (see
boj-server-cartridges#99) — the evidence it works as the estate baseline
template, not a standards-only patch.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>1 parent dbfd661 commit 8813ecf
1 file changed
Lines changed: 105 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
0 commit comments