Uh oh!
There was an error while loading. Please reload this page.
docs(pm): express the entry guard's self-test size as a floor, not a reading - #14002
Merged
Merged
Conversation
…reading The docblock above the `--self-test` entry guard carried two figures frozen at PR #9897 and both had rotted: * "THIS file's 77 assertions" read as a present-tense claim about this file's current suite. It printed 77 at PR #9897 and prints 255 today — a factor of 3.3. * "the same reason line 810 carries it" pointed at the sibling main-invocation guard, which really was line 810 at PR #9897. Line 810 is now an unrelated `try {` inside the regeneration predicate; the guard has moved to line 2336. Writing today's numbers would re-freeze the same defect one value later, so the 77 is now anchored to PR #9897 as the historical fact it is, today's size is a FLOOR ("more than three times that") stated as a floor on purpose and pointing at `--self-test`'s `checked` as the live reading, and the line number is replaced by a reference to the guard itself, which cannot drift. Measured before choosing the shape, on this file's own history rather than inherited from the sibling: across all 13 commits that have ever touched it (introduced 2026-08-18, never renamed), the static `assert(` count went up 10 times, held flat twice, and has never once gone down (22 -> 248 static). The counting method reproduces the two independent readings on record — 70 static at a065e46 and 223 at 9c4c431. The runtime figure is not even constant across environments, which is a second reason a floor beats a reading: `--self-test` prints 255 in an installed tree and 253 without node_modules, where the generator-provenance row fails closed and says so on its `live:` line. Both readings are green and truthful. No behaviour change: the guard and the self-test are untouched, and the count is identical before and after this commit (255 at the merge base, 255 here). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Msg17tAHJ3jVTYFgHydCm2
os-sam
marked this pull request as ready for review
August 31, 2026 23:22
os-sam
enabled auto-merge
August 31, 2026 23:22
Uh oh!
There was an error while loading. Please reload this page.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes#13963
The docblock above this file's
--self-testentry guard carried two figures frozen at PR #9897, and both had rotted. The card names one; reading the sentence turned up the other sitting beside it.try {in the regeneration predicate; the guard is at line 2336Both were true when written and neither is anchored to the moment that made it true, so both read as present-tense claims about this file. That is exactly the defect class #13536 describes.
The shape, copied from the sibling
Per triage, this follows what landed in
dispatch-gates.mjsas010518bbrather than inventing a shape:--self-test'scheckedas the live reading;Refreshing 77 to 255 was explicitly not done: it re-arms the identical defect one value later. No gate pins the figure to the live count either — #13536 rules that out, and this PR adds none.
The floor premise, re-measured on THIS file
Triage required this premise be re-run here rather than inherited from the sibling. Across all 13 commits that have ever touched this file (introduced 2026-08-18, never renamed), static
assert(call sites went:It has never once gone down, so a floor stays true where a reading rots. The counting method reproduces both independent readings already on record — 70 static at
a065e46550b4and 223 at9c4c431fd— which is what makes the sweep trustworthy rather than merely self-consistent.The historical 77 is measured, not assumed: the file at
a065e46550b4was run directly and printed77 assertions.Two notes worth recording. The clone this ran in arrived shallow (floor 2026-08-30, 208 commits), where this file has only 2 commits of history and PR #9897's commit does not resolve at all — the premise is unmeasurable in that state and a sweep run there would have "confirmed" a 2-commit history. It was unshallowed first (28s, strictly additive;
--shallow-sincewas avoided because it can silently shorten, asscripts/pm/git-history.mjsdocuments). Second, the live count is not even constant across environments:--self-testprints 255 in an installed tree and 253 withoutnode_modules, where the generator-provenance row fails closed and says so on itslive:line. Both are green and truthful — a further reason the prose should not carry a number as a reading.Verification
Gate union derived from the change set by
node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack(no hand-fed paths), run on final head226bbc000:pnpm check:pm-governed-merges(✓ 255 assertions),pnpm check:entry-guard,pnpm check:pm-dispatch-gates,node scripts/pm/bare-root-worklist.mjs --self-test(both convention-triggered gates for editing a gate script), andnode scripts/check-skills-token-ratchet.mjs.node scripts/check-test-completeness.mjsexits 3 = PREREQUISITE NOT MET, recorded as NOT MEASURED, not as a red: it grades a savedturbo run testlog, none exists locally, and CI passes the path on every invocation, so the branch is unreachable there.No behaviour change: the guard and the self-test are untouched, and the count is identical either side of the diff — 255 at the merge base, 255 at head. The diff is comment-only, one hunk, 17 insertions / 7 deletions.
Sibling card #13896 (same file) is closed, and no open PR touches this file, so nothing serialises against this one.
Generated by Claude Code
Generated by Claude Code