Development record
githubRemoteRe matches the remote host case-sensitively, so a mixed-case github.com remote (git@GitHub.com:...) leaves GitRemoteUsername empty and the github_username redaction kind is never compiled — the caller's handle survives history capture redaction and the PII scan
githubRemoteRe matches the remote host case-sensitively, so a mixed-case github.com remote (git@GitHub.com:...) leaves GitRemoteUsername empty and the github_username redaction kind is never compiled — the caller's handle survives history capture redaction and the PII scan
Evidence
internal/adapter/scanner/identity.go:94--githubRemoteRecompiled without(?i); the only github.com regex in the file lacking it (noreplyRe/noreplyLoginReboth carry it).identity.go:72-76-- sole producer ofid.GitRemoteUsername;identity.go:157-161compilesm.githubonly when it is non-empty;redact.go:63-75redacts identity findings regardless of severity.
Refuter verdict -- CONFIRMED (substantive, low-to-mid)
Empirically verified: git@github.com:alice/repo.git captures alice; GitHub.com / GITHUB.COM / ssh://...GitHub.com all fail to match (git stores host case verbatim). No other path derives the handle. On the history path blockingResidual treats any identity kind as blocking, and a repo pii.json may raise it to hard_fail (disabled ship/pack gate). Not prior art: #311 lists the matchers as already (?i); this is the producer regex feeding them. Fix: add (?i); add a derivation table test plus a ScanText end-to-end assertion.
Frontmatter
| id | iss-339 |
|---|---|
| type | issue |
| lifecycle | resolved |
| severity | minor |
.abcd/work/issues/resolved/iss-339-githubremotere-matches-the-remote-host.md
open on GitHub ↗ · commit history ↗
mentions3
- dcn-26082000000000012026-08-20 — bughunt round 2 (branch bughunt-a/round-2): captured iss-331..iss-343 and fixed (ids 339-343 re-minted from an initial 326-330 after main concurrently took those numbers in the v0.6.1 cut)
- dcn-26082000000000032026-08-20 — Bug-hunt round 1 (hunt A), landed late: the round ran 2026-08-19 on a branch that
- iss-344Parallel hunts capture the same defect twice: iss-306 (hunt A round 1, landed late) and iss-339 (hunt B round 2) record the identical githubRemoteRe case-sensitivity bug, minted independently on unmerged branches invisible to each other. Collision-proof ids (itd-114) do not solve this class — it is the semantic sibling of the id collision, sharing the root cause that parallel minters cannot see each other's unmerged mints. Candidate rungs: a capture-time similarity check (itd-84's validator rung), hunt briefings that read open PRs' ledgers, or a shared mint registry as a side effect of itd-114's forge-backed option