Commit 209c96e
Un-break CI: restore the DOC-04 banner, re-arm the disarmed gates, revert a stale merge's silent ledger regression (#744)
The `build` job has been red on `main` since **2026-06-28**. Three
separable causes, one commit each.
## 1. The red itself (`3d25fb6`)
`3661d98` removed the DOC-04 status banner from `README.adoc`, which
`tools/check-doc-truthing.sh` requires. Restored, plus three references
to `SOUNDNESS-LEDGER.adoc` — a file that does not exist — repointed at
`docs/SOUNDNESS.adoc`.
## 2. Why nothing else reported (`5c0366a`)
GitHub Actions skips every later step in a job once one fails. The
doc-truthing failure therefore disarmed the soundness-ledger gate, the
capability-anchor gate and the formatting check for ten weeks. They
reported `skipped`, not `failure` — **worse than red, because `skipped`
reads as absence of news rather than as a gate that never ran.**
`if: ${{ !cancelled() }}` on all four makes each report its own verdict.
## 3. What the disarmed gate was hiding (`f3a70ae`)
With the gates re-armed, the soundness-ledger gate failed on three of
its five properties. The cause is not a soundness regression:
`152d959` (2026-08-18) merged `origin/claude/capability-test-anchors`, a
branch whose copy of `docs/SOUNDNESS.adoc` predated three fixes already
on the main line. **It raised a real conflict, and the conflict was
resolved by deleting main's side.** Replaying the merge shows this
directly:
```console
$ git merge-tree --write-tree 808e859 fb27a7f
CONFLICT (content): Merge conflict in docs/SOUNDNESS.adoc # exit 1, two hunks
```
Git's own auto-merge output still contained both of main's fixes next to
the conflict markers. Diffing that replayed tree against what was
committed gives **60 deletions, 0 insertions** — the six marker lines
plus 54 lines of main's side, nothing added: the signature of a pure
"take theirs" resolution. Against its first parent the merge is 27
insertions / 51 deletions with **no new content**, reverting all three:
1. The #555 row was re-pointed at `test_resume_nontail_known_shallow`, a
name that was only ever *planned* (in the 2026-06-17 handoff) and has
never existed in the tree. The pin that does exist,
`test_resume_nontail_xfail` (`test/xfail/test_xfail_pins.ml:56`), covers
the same fixture and the same behaviour and is what the seal hashes.
2. The **Pinned-residual discipline** section was deleted — the section
naming the `XPASS` hand-off as the one place the anti-drift machinery
relies on a human.
3. Two claims regressed to being false: #624 restated as "flagged but
not yet fenced" although `f020a6f` fenced it, and the mechanisation
paragraph rolled back to "#620/#621", dropping P-2, P-3, F-3 and F-4.
This commit restores the file to `808e859`, the main-line parent of that
merge. Nothing has touched it since, so no later work is lost.
### The seal was never wrong — and was NOT resealed
Property 3 fails with a message offering `--reseal (if intentional)`.
Taking that offer would have hashed a test that does not exist: the
computed digest was `e3b0c442…` — the SHA-256 of the empty string.
**`tools/soundness-anchors.sha256` is unchanged.** The ledger was the
side that drifted, and it is the side that was fixed.
## Verification
All three gates run locally from a clean tree:
```
check-doc-truthing OK exit 0
check-soundness-ledger OK exit 0 all 5 properties (anchors + back-links + content-bound + stamp-fresh + pins live)
check-capability-anchors OK exit 0
```
Property 5 exercises the xfail harness, so its pass is a live
confirmation that `test_resume_nontail_xfail` still fails-as-expected —
the #555 hole is still pinned, not silently closed.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>1 parent 8abeaaa commit 209c96e
3 files changed
Lines changed: 68 additions & 30 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
100 | 100 | | |
101 | 101 | | |
102 | 102 | | |
| 103 | + | |
103 | 104 | | |
104 | 105 | | |
105 | 106 | | |
| |||
108 | 109 | | |
109 | 110 | | |
110 | 111 | | |
| 112 | + | |
111 | 113 | | |
112 | 114 | | |
113 | 115 | | |
| |||
116 | 118 | | |
117 | 119 | | |
118 | 120 | | |
| 121 | + | |
119 | 122 | | |
120 | 123 | | |
121 | 124 | | |
122 | 125 | | |
123 | 126 | | |
124 | 127 | | |
125 | 128 | | |
| 129 | + | |
126 | 130 | | |
127 | 131 | | |
128 | 132 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
23 | 23 | | |
24 | 24 | | |
25 | 25 | | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
26 | 36 | | |
27 | 37 | | |
28 | 38 | | |
29 | 39 | | |
30 | | - | |
| 40 | + | |
31 | 41 | | |
32 | 42 | | |
33 | 43 | | |
| |||
142 | 152 | | |
143 | 153 | | |
144 | 154 | | |
145 | | - | |
| 155 | + | |
146 | 156 | | |
147 | 157 | | |
148 | 158 | | |
| |||
192 | 202 | | |
193 | 203 | | |
194 | 204 | | |
195 | | - | |
| 205 | + | |
196 | 206 | | |
197 | 207 | | |
198 | 208 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
145 | 145 | | |
146 | 146 | | |
147 | 147 | | |
148 | | - | |
149 | | - | |
150 | | - | |
151 | | - | |
152 | | - | |
153 | | - | |
154 | | - | |
155 | | - | |
156 | | - | |
157 | | - | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
158 | 159 | | |
159 | 160 | | |
160 | 161 | | |
| |||
218 | 219 | | |
219 | 220 | | |
220 | 221 | | |
221 | | - | |
222 | | - | |
223 | | - | |
224 | | - | |
225 | | - | |
226 | | - | |
227 | | - | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
228 | 250 | | |
229 | 251 | | |
230 | 252 | | |
231 | | - | |
232 | | - | |
233 | | - | |
234 | | - | |
235 | | - | |
236 | | - | |
237 | | - | |
238 | | - | |
239 | | - | |
240 | | - | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
241 | 265 | | |
242 | 266 | | |
243 | 267 | | |
| |||
0 commit comments