Rendered from docs/process/obligations/0203-three-small-run-tooling-gaps-from-run-20260922-1121-filed-together.md in the Headwater
corpus. Every document on this half of the site is typed by the taxonomy
the descriptor names: corpus.json.
Three small run-tooling gaps from run 20260922-1121, filed together
Context
hw-run-policy's intake rule caps what a single pass sends to this register as its own full record, past which one record lists the rest. Run 20260922-1121 surfaced three small findings this way, none with a reader outside this repository. No two of them share a root cause, and none shares one with HW-OBL-0202.
Obligation
Claim-through-the-board silently skipped two issues. gh project item-list against board 1 (PVT_kwDOEsVrw84BgGeU) was checked directly on 2026-09-23. It has no item for #847 or for #855. #828, #817 and #971 — the run's other four merges — are all present. The mechanism hw-build.md names for moving a claimed issue onto the board did not run, or did not land, for these two. Nothing in the run's own log explains why. Worth checking whether this is systemic (issues filed a certain way, or moved out of a milestone by an earlier top-of-run pass) or two isolated gaps, before treating it as fixed by adding the two missing cards by hand.
Interactive grep -E is not what it looks like in this sandbox. grep is shell-function-shadowed to ugrep -G, which forces basic regular-expression semantics even when -E is passed. This silently broke a sanity check on run 20260922-1121 that assumed GNU grep -E semantics. Confirmed by type grep in the same session. A non-interactive sh script is unaffected. Only an agent reaching for grep -E directly in an interactive shell hits it.
.claude/hooks/intent.sh documents a blocking behavior Claude Code does not have. A comment in its shadow-log section, predating issue #971, claims a non-zero exit from this hook would block the prompt. Two separate agents independently fetched Claude Code's current hook documentation on 2026-09-22. They confirmed only exit code 2 blocks a UserPromptSubmit hook. #971 did not correct the comment because it was out of that change's scope.
Discharge
The board-item gap discharges when hw-build.md's claim-through-the-board step is confirmed to run for every claimed issue (or the two missing cards are added and the mechanism is watched over a further run to see whether the gap recurs).
The grep shadowing discharges when hw-run-policy's environment section carries a line naming it, the same way its other host-specific traps are recorded. That way, the next interactive session reaching for grep -E is warned before it is bitten.
The stale comment discharges when .claude/hooks/intent.sh's shadow-log section is next touched. That touch must also correct the exit-code claim to name exit 2, not any non-zero exit, as the one code UserPromptSubmit treats as blocking.