Rendered from docs/process/obligations/0233-thirteen-run-tooling-gaps-from-run-20261002-1233-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.
Thirteen run-tooling gaps from run 20261002-1233, filed together
Context
hw-run-policy sends a finding about the build order, its tooling or the CI of this repository to this shelf. Run 20261002-1233 wrote these intake lines, and the product owner ruled each one RECORD. Intake lines 11, 12, 13, 15, 19, 22, 48, 59, 73, 89, 90, 99 and 124 were ruled during the run. Lines 79, 80, 84, 85, 96 and 105 were ruled at the top of run 20261003-1026. Each item was checked on a46bd95e, and each names the file and the symbol that was read. Two lines of the run are not here. HW-PD-0020 no longer says "No job is skipped on the new event", so lines 17 and 18 are withdrawn. HW-PD-0021 names a newer digest for .claude/skills/hw-run-policy/SKILL.md, so line 12 holds for HW-PD-0007 alone.
Obligation
The self-hosted CI runner.
- The merge-group job
headwater check (advisory)in.github/workflows/ci.ymlfailed twice onsccache rustc -vVwith "Timed out waiting for server startup", ten seconds into the step that builds the engine. One failure ejected a verified pull request. The job names noSCCACHE_STARTUP_TIMEOUTand noRUSTC_WRAPPER, andtools/ci/toolchain.shnames neither. The wrapper comes from the environment of the runner, and nothing in this repository starts it or bounds its startup. The fix is a startup timeout in the runner environment, a retry of the build step, or a build with no wrapper when the server does not start.
Counts and sentences in the CI records that are no longer true.
- HW-PD-0007 declares
governsonto.claude/skills/hw-run-policy/SKILL.mdwithverified_revisionsha256:05bbe166…, which the run reported as suspect. A re-read of HW-PD-0007 against the skill restamps the edge or amends the record. - The Context of HW-PD-0017 says "A run is two jobs". That holds for the self-hosted pool only. The evaluation that HW-PD-0017 rests on says that each job condition opens with
!cancelled(), and thedeployjob does not. A contributor who restores the old prose behind a valid stamp turns nothing red. - The Context of HW-OBL-0145 says "The job carries 55 steps". The job carried 75 steps when line 19 was measured, and #927 added the step that runs
tools/run/shadow-mine-fixtures.sh. The record declares nogovernsedge, so no check sees the count drift. - The Context of HW-OBL-0173 says that
.github/workflows/ci.yml"holds 40run:steps over 1022 lines, and five of its lines carryexit 1". The file has 2270 lines ona46bd95e.
Stamps and governed scope.
- A stamp taken on a branch older than
mainreverts a newer stamp at the squash. #1614 wroteverified_revisionfor two edges of spec 17 against the copies on its own branch, somaincarried digests that no tree ofmainheld. Both edges went suspect when it merged. Nothing incheck --changeor the merge queue compares a stamp with the content on the tip of the merge group. The cost is a suspect finding and a re-read, not a silent pass. tools/run/shadow-mine.sh,tools/run/shadow-mine-fixtures.sh,tools/ci/governed-scope.jqandtools/ci/governed-scope-fixtures.share in the governed scope oftools/**, and no document declaresgovernsonto any of them. The mining how-to namesshadow-mine.shin prose only. HW-OBL-0231 records the same gap fortools/ci/toolchain.sh.- The edit hook in
.claude/hooks/lib.shsays thattools/probe/probe-record-fixtures.sh"is in the governed scope, and nothing governs it".headwater explainsays that the path is outside every corpus root. The hook and the engine disagree about the path, so a contributor meets a warning that no edge can clear. - No rule says whether the
last_verifiedof a process obligation moves when a change edits its Discharge. HW-OBL-0224 and HW-OBL-0225 keeplast_verified: 2026-09-30after an edit on 2026-10-03. This item waits on a ruling and not on a build.
Tests of the run tooling.
- Four boundary mutants of
tools/run/shadow-mine.shsurvivetools/run/shadow-mine-fixtures.sh: p3, p10, p13 and p15, which the verify report of #927 lists. No case tests whether the nine restampedgovernsedges onto.github/workflows/ci.ymlgo suspect again on a later edit of the workflow. - The intent hook
.claude/hooks/intent.shskips a prompt that opens with<task-notification>or<cross-session-message, and not one that opens with<agent-message from=. 314 of 937 distinct prompt identifiers in the shadow log from 2026-09-20 to 2026-10-03 are such envelopes. So a raw count of 1,020 lines reads as past the bound of #927, and the joined count of person prompts is 587.
The agents of the build order.
- A builder of #1631 pushed its rebased branch with
git push --force-with-lease..claude/agents/hw-build.mdsays "You never merge, and you never force-push." The branch was its own and had no open pull request, and a later round mergedmaininstead. - The first live session through the plain-HTTP route of #1467 cost 6.17 cents, against the one cent that the adjudication note stated.
.claude/agents/hw-build.mddoes not ask a build note to state a spend estimate before a live session runs.
Discharge
Each item discharges alone, when the file it names says or does what the item asks, or when a change records why it stays. The record discharges when every item has. An item that gains a reader outside this repository leaves this record for an issue, and the record says where it went.