Development record
2026-08-22 — Bug-hunt round 7 merge gate (PR #415, resumed after the round's
2026-08-22 — Bug-hunt round 7 merge gate (PR #415, resumed after the round's session ended between PR-open and gate). origin/main (the site-build and itd-112 merges) merged into bughunt-b/round-7 cleanly; baseline green on the merged tree; all 12 CI checks green. Dual pre-merge review: the Opus 5 reviewer returned NO-SHIP with three remediable blockers, the Fable 5 reviewer SHIP with the same frontmatter residual flagged non-blocking. All three remediated with tests watched to fail under mutation of each fix: the update dispatch-refusal receipt now redacts target_path at construction (refusalReport seam; it had shipped the raw home root beside the redacted detail), capture list --json now emits [] not null for empty issues/skipped (the CHANGELOG claim is now true), and the repolint cap+1 grown-file branch is pinned through a capRead seam (the prior boundary test passed against the pre-fix read, so nothing guarded the +1 — the round-7 "closed by construction" exception is retired). Residuals captured open, not widened into the PR: iss-2608221126066379 the frontmatter BOM tolerance now diverges from the sibling parsers whose comments promise byte-exact parity (fail-closed, comment-invariant falsified); iss-2608221126066631 the guard process-substitution redirection family still allows a glued blocker flag (pre-existing, same family as the fixed &>). The reviewer's probe-horizon concern was refuted in-session: isBinary self-caps at 8 KiB, so both oversize branches agree.
Frontmatter
| id | dcn-2608220000000006 |
|---|---|
| type | decision |
| date | 2026-08-22 |
.abcd/work/decisions/dcn-2608220000000006-bug-hunt-round-7-merge-gate-pr-415.md
open on GitHub ↗ · commit history ↗
mentions3
- iss-2608221126066379frontmatter.Fields trims a leading UTF-8 BOM (iss-2608220134344680) but the sibling parsers that promise byte-exact parity with it do not: intent's setFrontmatterFields (internal/core/intent/intent.go:129, whose comment claims it matches frontmatter.Fields's delimiter tolerance exactly) refuses a BOM-led record the reader accepts, so intent mutations on such a record fail-closed with 'no leading frontmatter block'; changelog's bodyStart (internal/core/changelog/source.go:60, 'so the two never disagree') returns 0 and leaks the whole frontmatter block into the derived changelog body; lint's recordTitle (internal/core/lint/schema.go:554) hand-rolls the comment skip with neither TrimBOM nor the multi-line-comment state. Sweep the siblings onto the shared tolerance or narrow the parity comments to the truth.
- iss-2608221126066631The guard tokenizer keeps process-substitution operands out of command position analysis, so a blocker-tier flag glued behind one escapes: 'git push >(cat) --force origin main' and 'git push >$(echo x) --force origin main' both return ALLOW while their plain-redirection spellings block (pre-existing on main; confirmed unchanged by the iss-2608220131352917 &> fix, same redirection family). Within the documented mistake-filter posture, but the &> precedent shows the family is worth sweeping: recognise >(...) / <(...) as redirection-shaped operands and keep the remaining argv in analysis.
- itd-112A bare abcd on an interactive terminal opens with a generated banner: the flag hoist in half-block colour on its painted panel, version beside it, tagline beneath — identity baked in at build time, full colour ladder, never a byte on a machine-consumed stream