Rendered from docs/obligations/0223-no-run-measures-whether-the-documents-under-docs-change-what-an-agent-builds.md in the Headwater
corpus. Every document on this half of the site is typed by the taxonomy
the descriptor names: corpus.json.
No run measures whether the documents under docs change what an agent builds
Context
This repository claims that its documents change what an agent builds. Spec 5 measures a claim with two arms of one probe set, and the absent arm names a declared ablation.
Until #1010, one ablation existed. It removes CLAUDE.md, .claude/, .githooks/ and .headwater/, and it keeps docs/. So the campaign tier measures whether the governance changes what an agent builds. The documents are present in both of its arms, and no rate of it can say what they do.
1010 added a second paired tier, documentation, to .headwater/probe.yml. Its ablation is the four governance paths, docs, and two files outside docs/ that copy what a document states. The probe shelves are the instrument, and every arm of every tier removes them. tools/probe/ablate.sh documentation <workspace> produces its absent tree. headwater probe plan --tier documentation refuses a probe whose predicate names a document that the ablation removes. A session cannot open or cite a document that it never had.
Obligation
When this record was written, no run of the documentation tier existed, so the claim was unmeasured. The Discharge section names the run that measured it.
Two probes on docs/probes/ are its instrument. HW-PROBE-a-session-names-the-status-a-settled-decision-carries-in-its-pull-request grades the ruling of HW-DR-0052. HW-PROBE-a-session-names-the-event-that-makes-a-document-accepted grades the ruling of HW-DR-0034. Each declares one expected answer from a closed set. The status probe also asks for the identifier of its ruling, because sessions that read nothing gave its expected value anyway (#1294).
With the two existing admissible probes, --category sufficiency selects four probes. On 2026-09-27 the plan projects 4 x 2 x 58 = 464 sessions. That is $116.00 at the declared rate of 25 cents a session, and $226.20 to $236.06 at the realized rates of 48.75 and 50.875 cents. The ceiling is $50.00, so the plan refuses on budget. #980 is where a person agrees to spend more.
The claim has a precise shape, and a published rate has to keep it. Present against absent at the documentation tier measures documents and governance together. The documents alone are the documentation tier's absent arm against the campaign tier's absent arm. That difference holds only when both ran in one batch on one model version. A campaign rate is never quoted for this claim.
HW-OBL-0004 and HW-OBL-0112 record the other unmeasured effects of this corpus on a session, and neither one isolates the documents.
Discharge
Two runs discharge this record: one of the documentation tier and one of the campaign tier. They run over the same selection, in one batch, on one model version, and both transcripts are committed under docs/probe-runs/. The result names the difference between the two absent arms as the effect of the documents, with its interval.
A ruling that the documents are not a claim this repository makes also discharges it. That ruling removes the documentation tier.
This record is discharged. The batch of 2026-09-30 ran both tiers over one sufficiency selection, in one batch, on claude-sonnet-5 (#1384). Both transcripts are committed. The documentation-tier result names the difference between the two absent arms. The campaign absent arm satisfied 114 of 119 graded sessions, and the documentation absent arm satisfied 46 of 120. The difference is +57.5 points, in a 95% Newcombe interval of +47.1 to +66.0 points. The evaluation of that batch states it by component, with its cost.
The effect survives the sessions that reached this repository from outside their workspace. 28 of the 120 documentation absent sessions did. Some read a copy of this repository on the host, some read the batch directory, and some read the repository on GitHub. 6 of them read HW-DR-0052 from a copy on the host, and 1 fetched it from GitHub. Without the 28, the status rate of that arm falls from 12/30 to 2/19. The accepted-event rate stays at zero, 0/26, and the unmeasured-claim rate is 1/19 against 4/30. So the leak raised the control arm where it moved it, and the effect of the documents is larger without it. The Limits section of the evaluation of that batch states the rule that counts a leak. The corpus was not frozen between the two arms' sessions, because this repository merged changes while the batch ran. Each session read one archive of the pin 109abba7, so both arms read the same bytes.
The plan of #1472 keeps this comparison. That issue adds four component arms to the campaign tier, and its plan still runs the documentation absent arm in the same batch. So the next run can measure the documents again beside each part of the layer.