limit 29: the pin is stale on main, and the suite is shaped so it cannot see it - #41
Conversation
…not see it The committed pin names a commit from 2026-08-23. The last commit touching the source tree is dc1910b (#36), so the reader-side check reports divergence and exits 1 on a clean main checkout, and has since #36 landed. The suite is green at 891 anyway. The two tests that announce themselves as exercising the real shipped log both write the state they then assert: one stamps before checking, the other forces a foreign hash before checking. Each proves its half of the tool works; neither ever reads the committed value. Also recorded: those two tests reach green by writing to the tracked log and restoring in a finally, so an interrupted run can leave a fabricated pin in the file this repo's own tooling commits. Deliberately NOT re-stamped. Stamping is a claim that the entries were verified against that tree, and this lane has not verified 61 entries against dc1910b. Going green by stamping would be the exact dishonesty the pin exists to prevent. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
githubscum
commented
Sep 1, 2026
Provenance, stated rather than left to lapse. This was written on-meter, not One block worth recording. The intended first half of this work order was the |
…ng saw it dc1910b (PR #36) appended an amendment to entry 24 and, in the same hunk, deleted the "## 25." heading line. Entry 25's body (gh as the authenticated vendor CLI the rules could not see) has been orphaned inside entry 24 since 2026-08-29. main today carries 60 entries numbered 1..61: a citation of KNOWN-LIMITS 25 resolves to nothing, and a reader of entry 24 gets a section that changes subject mid-way. This is the 2026-08-22 incident the pin exists to prevent, one level worse: then a number meant something else, now it means nothing. It survived code review and 891 green tests, because no test had ever read the shipped log as a structure. - Restore the "## 25." heading. A faithful revert of the deleted line; the body is not moved. After: 61 entries, contiguous 1..61, no duplicates. - Add test/known-limits-numbering.test.js: read-only over the committed log, asserting contiguity from 1, uniqueness, ascending order, and a parse floor. It writes nothing and needs no pin, unlike the two existing cases that advertise the real log and write the state they then assert. - Amend entry 29 with the finding. Fail-first: RED on main at a2ac5e2 (60 entries, highest 61, missing 25 - the assertion names it). GREEN here. Full suite 895/895. NOT done, unchanged from this branch's first commit: the stale pin is not stamped. This run verified the log's structure, not the truth of 61 entries against dc1910b. Stamping on a numbering check would be a smaller lie and still a lie. The stamp is owed by whoever verifies. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
githubscum
commented
Sep 1, 2026
Run 6 advanced this branch: the numbering hole this PR's own limit was built to preventThis PR reported that the pin is stale and that no test reads the shipped log. Entry 25 does not exist
Two consequences, both live on
This is the 2026-08-22 incident again, the one limit 29 and the pin exist What this commit adds
Still not fixed, and the reason has not changedThe stale pin. This run verified the log's structure; it did not read 61 What a reviewer should doubt
ProvenanceOff-meter dispatch was attempted and failed: the local 870 was warmed Fail-first and the full suite were run before the push; results are in the |
…hey are all clean The numbering test added last run asks whether the log is intact. This asks whether the pointers into it are. They are different failures: an entry can vanish (which happened, twice), or a citation can name a number that never existed. The log can be perfectly contiguous while a comment sends a reader nowhere. Scans every .js/.mjs/.md/.json file in the tree for the explicit "KNOWN-LIMITS <n>" form and asserts each cited number has an entry. Read-only: opens files, writes nothing, needs no pin, no git, no fixture. NULL RESULT, recorded as one. No dangling citation exists today, and none existed on mainline either. This is a guard against a class of defect that has already occurred twice here, not a live find, and the header says so rather than implying otherwise. Deliberately narrow: the bare "limit <n>" shorthand is about twice as common and is not scanned, because it collides with ordinary prose. A fence that knows which side it under-scans. Fail-first, both halves: - The resolver is run against a synthetic citation that cannot resolve, so a green repo-wide assertion cannot be green for the wrong reason. - End-to-end proven by hand before this commit: a temporary file citing a nonexistent entry turned the suite RED and was reported as "<file>:1 cites 4242". Probe removed; tree clean. Full suite 898/898 (895 before, +3). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
githubscum
commented
Sep 1, 2026
Run 7 advanced this branch again: the same defect class, checked from the other sideRun 6 left a note saying a second structural check was worth considering and had What it doesThe numbering test from run 6 asks whether the log is intact: does every Those are different failures. An entry can vanish, which is what happened in It scans every The result is a null, and it is written down as a nullNo dangling citation exists. Every citation in the tree resolves, and every So this is a guard against a class of defect that has already occurred twice in Fail-first, both halvesA green repo-wide assertion over a clean repo proves nothing on its own, so:
Full suite 898/898 (895 before, +3). What a reviewer should doubt
Provenance and what did not happenWritten on-meter, stated rather than left to inference. Four prior runs of No new PR was opened, on purpose. Five are open and none has a review PR #33 was again not reviewed. The desk row |
The work order
Run the check that limit 29 recommends to every reader, and see whether anything
in this repository actually runs it. Nothing does, and the artifact it guards is
wrong.
What it found
The committed pin is stale on
main. It names2173d231(stamped2026-08-23). The last commit touching the source tree is
dc1910b(#36). Thereader-side check reports divergence and exits 1 on a clean
maincheckout, andhas since #36 landed. A reader following the instruction printed in the pin block
is correctly told they are reading a description of somewhere else.
The suite is green at 891 while that is true, and the two tests named for the
real log are why. Both write the state they then assert:
--stampon the shipped log and then asserts the check reportscurrent. Proves the stamp path works. Cannot fail on a stale committed pin,
because it overwrites the pin before reading it.
works. Cannot fail on a stale committed pin either, for the mirror reason.
The committed value is never read by anything. That is limit 29's own thesis one
level up: the mechanism built to make staleness detectable is never pointed at
the artifact, and its tests are shaped so they structurally cannot fail on it.
The 2026-08-23 fix said "the check exists, the automation does not." This is what
that cost.
Second defect, same read. Those two tests reach green by writing to the
tracked log and restoring in a
finally. Afinallysurvives an assertionfailure, not a killed process. An interrupted
npm testcan leave the shippedconfession log carrying a fabricated commit hash, in the file this repository's
own tooling stages and commits. The entry already says a false pin is caught only
by review; the suite that tests the pin can manufacture one unattended.
What is NOT in this PR, deliberately
No re-stamp. The obvious repair is a read-only test asserting the committed
pin equals the last source commit. It fails on
maintoday, so landing it needsa re-stamp in the same change, and the tool's own header says stamping is a claim
that the entries were verified against that tree. This lane has not read 61
entries against
dc1910b. Re-stamping to go green would be precisely thedishonesty the pin exists to prevent. The stamp is owed by whoever verifies,
and that is the reviewer's call, not this lane's.
No test-isolation fix. It is separable and needs no stamp: an env override on
the log path, git resolution left anchored to the repo, so the mutation tests use
a scratch copy. That edit lands in a self-mod gated directory and was blocked
unsigned while this ran. Named in the entry rather than smuggled into a file the
gate happens to allow.
Tested
git log -1 -- src, not inferred.watching all 7 pass against a log whose committed pin is wrong.
itself is untouched, verified in the diff.
What a reviewer should doubt
design, so a commit touching only docs or tests does not stale it. I checked
the source pathspec specifically. If you think the pin should track something
else, the entry's framing changes.
reviewer could say the stamp is mechanical and the lane should have run it.
The counter-argument is in the entry; the decision is yours.
process kill inside a ~150ms window. I judged it worth recording because the
file is one this repo's tooling commits, and because a limit found and not
written down is worse than one never found. You may rate it lower.
directory; only this file reads or writes it. A miss there would change the
concurrency argument.