docs(now): two bare headings were three damaged entries — plus the check that says whether it was a class - #3212
Conversation
SKILL 556 found two headings in docs/NOW.md with nothing under them, at
lines 6359 and 6361. Repairing them turned up a third entry the
empty-body check could not see, because it HAD a body -- just not its
own.
SW-conformance — gf96 0 lines -> its own 23
Wave Loop 434 — boot-evidence 0 lines -> its own 45
SW-conformance — gf48 39 lines, all W434's -> its own 17
Fifty lines below its heading, gf48 carried "### What landed (Variant B
-- board reachable, P12/relay still blocked)" and
XADC_LIVE_W434_OPERATING_POINT: FPGA boot evidence under a software
conformance promotion. All 39 of its lines came from W434's 45, and six
of W434's were gone outright.
SKILL 556 reported "31 of Wave Loop 434's 34 substantial lines are still
elsewhere in the file, so most of that content survives". Both halves are
true and the conclusion is wrong: they survive under the WRONG heading,
which is misattribution and worse than loss. Nineteen of the thirty-four
appear exactly once and are W434-specific, and every one of those sat
under gf48; the other fifteen appear up to twenty-five times each and are
boilerplate. "Still in the file" is the same unit error as "50 red
workflows" -- the container is not the claim.
Restoring gf48 from its last NON-EMPTY body would have restored the
damage: at 5057850 that body was W434's. The selector has to be
content, not emptiness -- the last version whose first lines actually
mention `gf48 (GoldenFloat48`. Same shape as SKILL 559: absence is not
the discriminator, identity is.
Verified: 310 headings before and after, 0 titles lost, 0 empty bodies,
exactly 3 bodies changed.
SKILL 565.
Refs #3195
|
📓 NotebookLM Notebook linked to this PR
This notebook contains session context, decisions, and artifacts for this work. |
PR DashboardGenerated at: 2026-09-05 00:12:08 UTC
Summary
Seal Status
|
|
📓 NotebookLM Notebook linked to this PR
This notebook contains session context, decisions, and artifacts for this work. |
Update: was it one case or a class?
The naive question is useless here. 58 of the 63 The prototype gave the right number because one of its alternatives was deadThe python sketch reported 1 on the damaged file. Ported to Rust it reported 49. The
Had it shipped, the code would have said "issue numbers count" and the behaviour would have said Both fixtures were wrong and both tests were right to fail
Two fixtures, two failures, both because the fixture was unrepresentative and the code was right. 744 crate tests, 5 mutants killed (two only after the fixtures were corrected). SKILL 568. |
#3206's SKILL 556 found two headings in
docs/NOW.mdwith nothing under them, at lines 6359 and6361. Repairing them turned up a third entry the empty-body check could not see, because it had a
body — just not its own.
SW-conformance — gf96 …Wave Loop 434 — FPGA boot-evidence …SW-conformance — gf48 …Fifty lines below its heading,
gf48carried### What landed (Variant B — board reachable, P12/relay still blocked)andXADC_LIVE_W434_OPERATING_POINT— FPGA boot evidence under asoftware-conformance promotion. All 39 of its lines came from W434's 45; six of W434's were gone
outright.
The measurement that misled me
SKILL 556 reported "31 of Wave Loop 434's 34 substantial lines are still elsewhere in the file, so
most of that content survives". Both halves are true and the conclusion is wrong.
They survive under the wrong heading — which is not survival, it is misattribution, and it is
worse than loss: one entry silently claimed another wave's silicon evidence as its own.
The check that would have caught it: for a line said to survive, ask under which heading, not
whether the file contains it.
XADC_LIVE_W434_OPERATING_POINT) — andevery one of those sat under
gf48.- Branch:,- CI:) that saysnothing about survival in either direction.
"Still in the file" is the same unit error as "50 red workflows" — the container is not the claim.
Picking the version to restore
Restoring
gf48from "the last commit where its body was non-empty" would have restored thedamage: at
505785011its body was non-empty and was W434's. The selector has to be content,not emptiness — the last version whose first lines actually mention
gf48 (GoldenFloat48.Same shape as SKILL 559: absence is not the discriminator, identity is.
Verification
SKILL 565. Refs #3195