Delete coveringKey's four drifted figures and point at the --self-test that derives them - #13806
Merged
os-project-manager merged 2 commits intoAug 31, 2026
Conversation
…t derives them The `coveringKey` docblock's refusal of the fifth key (the module a gate imports) stated four derived quantities as prose literals — total pairs, the novel half, the top-5 concentration, and the worst module's fan-out. The same file's `--self-test` re-derives all four live and prints them a few lines below, and nothing ever compared the two. All four had drifted; the self-test stayed green throughout. Delete the four literals and point at the run instead: the exact command, and the four assertion sentences to read, each with the quantity it names. The argument is untouched — precision, concentration and provenance-not-volume all still hold, and the fifth key stays refused. The remaining sizes in the section are not re-derived by any run, so they are now labelled for what they are: #13126's measurements over that day's tree, dated evidence rather than a description of this one. Same rule the aggregate section already states for its own firing rates. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Pk26oZ12t5N1hwGW1m1MgC
…veringkey-docblock-figures
This was referenced Aug 31, 2026
os-project-manager
marked this pull request as ready for review
August 31, 2026 13:31
os-project-manager
deleted the
claude/issue-13468-coveringkey-docblock-figures
branch
August 31, 2026 13:56
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 free
to 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 #13468
The
coveringKeydocblock inscripts/pm/dispatch-gates.mjsstated four derivedquantities as prose literals, while the same file's
--self-testre-derived all fourlive and printed them a few lines below. Nothing ever compared the two, so the prose
drifted and the gate stayed green throughout. Triage ruled: delete the numbers, point at
the run, keep the argument. That is what this PR does.
The figures, re-derived on this branch
Everything below was measured here, on a tree that contains #13783 (which changed
hintCovers— the denominator these figures rest on). Nothing is relayed.Head
af5103cf0. The command is the one the new docblock now tells the reader to run:Its stdout, verbatim:
Against what the docblock said. The left column is read from the file itself
(
git show origin/main:scripts/pm/dispatch-gates.mjs), not from the card:af5103cf0invoked-as.mjsfan-outThe self-test's own size has moved too: it runs 1048 cases here, and passes.
The rot is wider than the four figures — measured
Re-deriving the whole numeric surface of that section on this tree turned up drift in
every tree-derived figure it carries, not only the four the card tabulated:
183 families x 7347 tracked files14 -> 55,13 -> 37,17 -> 38,12 -> 2314 -> 56,13 -> 38,17 -> 40,12 -> 2421 modules carrying 31 pairs, median 14 -> 1512 -> 1463 novel, card to5512 novel, 8 of the 12Only the four are re-derived by any run, so only the four can be replaced by a pointer at
one. The rest are
#13126's own measurements and nothing recomputes them, so they are nowlabelled as what they are: dated evidence for a decision already taken, with an explicit
instruction to re-measure from that card's commands rather than from this prose. That is
the idiom the aggregate section immediately below already uses for its own firing rates —
this change copies it rather than inventing one.
The argument did not move
Checked before touching the prose, because #13783 changed the coverage predicate underneath
it:
the self-test's own assertion on it is green.
123 families, so the "a list that long is not read" argument is if anything stronger.
there moving
12 -> 14against14 -> 123at the head. Fan-in is still the onlyproperty separating the halves.
bare-root-worklist.mjs --self-teststill imports this file andno key still names that family, asserted green in the run above.
So the fifth key's refusal stands untouched, and nothing here reopens it.
What changed in the file
One file, comments only. No behaviour, no
hintCovers, nounreachableReason, noassertion added or weakened — in particular the self-test was not made to assert the
prose, which would be pinning with extra steps.
that repeated them —
232appeared five times,118four).the quantity it names spelled out. The shape is copied from
unreachableReason, whichalready answers a reader with a
git ls-filesinvocation they can run.#13126's tree, as described above.Verification
Local gate family derived after the final commit with
node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack(no paths passed —the script takes its own change set), at
af5103cf0. Exit codes were captured before anypipe; each verdict quotes the gate's own line, never a bare
$?.pnpm check:agent-test-spellingpnpm check:bash32-floorpnpm check:cli-command-idspnpm check:cross-package-test-inputspnpm check:entry-guardpnpm check:parse-guardpnpm check:pm-dispatch-gatesdispatch-gates self-test: 1048 cases pass.pnpm check:pnpm-filter-targetspnpm check:watch-hint-literalnode scripts/check-ci-filter-parity.mjsOK: all 129 declared cross-package glob(s) ... are coverednode scripts/check-cross-package-test-inputs.mjsOK: 24 package(s) read outside themselves, all declarednode scripts/check-self-test-wired.mjsevery one of the 154 script(s) CI runs that ship a --self-test has that self-test run by CInode scripts/check-shard-attestation.mjs2 aggregate gate(s) count 3 declared leg(s)node scripts/check-test-completeness.mjsPREREQUISITE NOT MET — this gate grades a saved 'turbo run test' log, and no log was named.CI's Test Core job supplies that log.The gate-script convention's own obligation: this file's test suite is its
--self-test,run by
check:pm-dispatch-gatesabove (1048 cases, green). No*.test.*file in the repoexercises it — the two that mention
dispatch-gatesdo so in prose comments about theirown fixtures.
pnpm lint— the repo-wideeslint . --no-inline-configon CI's unconditional list — wasrun in full rather than narrowed: GREEN, exit 0, 116s.
Staleness, stated rather than hidden: the derivation prints a STALE TREE warning because
origin/mainmoved again while this ran. The family it names was identical before andafter merging
origin/maininto this branch, so the four newer files it flags did notchange the answer; CI runs the real farm regardless.
Changeset
Check Changesetcounts changesets this PR adds (diff-filter=A against the merge base)and has no path-based exemption, so a comment-only edit under
scripts/goes red withoutone. This PR adds 0 changesets and releases nothing —
scripts/publishes no package — sothe
skip-changesetlabel is applied, which the workflow's own text names the preferredroute for a PR that declares no release of its own.
Generated by Claude Code