Skip to content

docs(now): two bare headings were three damaged entries — plus the check that says whether it was a class - #3212

Merged
gHashTag merged 3 commits into
masterfrom
loop/two-bare-headings-were-three
Sep 5, 2026
Merged

gHashTag merged 3 commits into
masterfrom
loop/two-bare-headings-were-three

Conversation

@gHashTag

@gHashTag gHashTag commented Sep 5, 2026

Copy link
Copy Markdown
Owner

#3206's 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.

entry before after
SW-conformance — gf96 … 0 lines its own 23
Wave Loop 434 — FPGA boot-evidence … 0 lines its own 45
SW-conformance — gf48 … 39 lines, all of them 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; 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.

  • 19 of the 34 appear exactly once and are W434-specific (XADC_LIVE_W434_OPERATING_POINT) — and
    every one of those sat under gf48.
  • The other 15 appear up to 25 times each: boilerplate (- Branch:, - CI:) that says
    nothing 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 gf48 from "the last commit where its body was non-empty" would have restored the
damage
: at 505785011 its 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

headings: 310 -> 310   titles lost: 0
EMPTY bodies: 2 -> 0
bodies changed: 3

SKILL 565. Refs #3195

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
@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

This notebook contains session context, decisions, and artifacts for this work.

@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-09-05 00:08:20 UTC

Summary

Status Count
Total Open PRs 13
PRs with Failing Checks 11
PRs with All Checks Green 2
READY 1
FAILING 11
PENDING 0

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=9b8875f1c9d4 != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-09-05 00:12:08 UTC

Summary

Status Count
Total Open PRs 13
PRs with Failing Checks 11
PRs with All Checks Green 2
READY 1
FAILING 11
PENDING 0

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=3c8c4b4c629b != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

This notebook contains session context, decisions, and artifacts for this work.

@gHashTag
gHashTag merged commit 458ec0b into master Sep 5, 2026
28 checks passed
@gHashTag
gHashTag deleted the loop/two-bare-headings-were-three branch September 5, 2026 00:17
@gHashTag gHashTag changed the title docs(now): two bare headings were three damaged entries — and the third still claimed a body docs(now): two bare headings were three damaged entries — plus the check that says whether it was a class Sep 5, 2026
@gHashTag

gHashTag commented Sep 5, 2026

Copy link
Copy Markdown
Owner Author

Update: was it one case or a class?

tri skill lost now asks it — an entry whose body names none of its own identifiers and does
name one another entry owns. Measured: 1 on the damaged base, 0 on the repaired tree, 0 in
SKILL.md across 524 sections.

The naive question is useless here. 58 of the 63 docs/NOW.md entries with a wave number in the
heading mention some other wave, because an entry routinely points at the next one. Naming none of
its own is what discriminates.

The prototype gave the right number because one of its alternatives was dead

The python sketch reported 1 on the damaged file. Ported to Rust it reported 49. The
difference is one alternative:

python:  \b(?:…|#(\d{3,5}))\b

\b# requires a word character immediately before the #. There is never one — so that branch
matched nothing, ever. The sketch silently compared wave and format identifiers only, which
happens to be the correct population, and reported the correct number while carrying a rule it
never applied
.

Had it shipped, the code would have said "issue numbers count" and the behaviour would have said
otherwise, until someone fixed the regex and the tool changed its mind for no visible reason. Issue
numbers are now excluded deliberately, with that measurement written beside the pattern.

Both fixtures were wrong and both tests were right to fail

  • XADC_LIVE_W434_OPERATING_POINT does not match: the _ before W434 is a word character, so
    \bW fails. What made the live case detectable was the plain `wave-loop-434` on its branch
    line.
  • A fixture with entry 889's body naming 888 and 890 but not 889 asserted no flag — which is
    exactly the shape that should flag.

Two fixtures, two failures, both because the fixture was unrepresentative and the code was right.
Same lesson as #3210, one pass later.

744 crate tests, 5 mutants killed (two only after the fixtures were corrected). SKILL 568.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant