Spotted while fixing #13536 (PR #13962), which repaired the same defect class in scripts/pm/dispatch-gates.mjs. Reported rather than fixed: #13536 scopes that card to one docblock in a different file.
The claim
scripts/pm/check-governed-merges.mjs, in the docblock above its own invokedDirectly guard:
invokedDirectly for the same reason line 810 carries it: this module is imported for its exported predicates (proxyRearmPlan — see scripts/pm/ci-failure.mjs), and an unguarded trigger ran THIS file's 77 assertions inside the importer's own --self-test [...]
"THIS file's 77 assertions" reads as a present-tense claim about this file's current self-test size.
The measurement
The live count is dynamic: checked is incremented by the assert(...) helper and printed as ${checked} assertions. Counting assert( call sites:
| commit |
static assert( call sites |
a065e46550b4 (PR #9897, where the guard landed) |
70 |
| that commit's parent |
70 |
9c4c431fd (2026-08-31) |
223 |
70 static plus loop expansion is the 77 the prose names, so 77 was true at PR #9897 and is now roughly a third of the truth — the file has more than tripled since.
Why this is the #13536 class, not a typo
In dispatch-gates.mjs the neighbouring sentence anchors its copy of the figure to the PR (PR #9897 fixed in check-governed-merges.mjs at 77 assertions), so there 77 is a correctly-frozen historical fact. Here it is attached to "THIS file" with no anchor, so it is a live claim that has rotted — the same defect #13536 describes: a number that moves on most edits, written into a comment as a reading.
Suggested shape (not implemented)
Whatever #13962 settles on for the sibling file, applied here. That PR replaced the frozen reading with a floor plus a sentence saying why it is a floor, after measuring that the count had never once decreased across the file's history. ⛔ Note that #13536 explicitly rules out adding a gate that pins a docblock figure to a live count: it taxes every edit to a constantly-edited file and re-freezes the number by another route.
Whoever picks this up should re-derive the counts — they will have moved.
Unassigned; no PR. Filed by the os-dev seat for #13536.
Generated by Claude Code
Generated by Claude Code
Spotted while fixing #13536 (PR #13962), which repaired the same defect class in
scripts/pm/dispatch-gates.mjs. Reported rather than fixed: #13536 scopes that card to one docblock in a different file.The claim
scripts/pm/check-governed-merges.mjs, in the docblock above its owninvokedDirectlyguard:"THIS file's 77 assertions" reads as a present-tense claim about this file's current self-test size.
The measurement
The live count is dynamic:
checkedis incremented by theassert(...)helper and printed as${checked} assertions. Countingassert(call sites:assert(call sitesa065e46550b4(PR #9897, where the guard landed)9c4c431fd(2026-08-31)70 static plus loop expansion is the 77 the prose names, so 77 was true at PR #9897 and is now roughly a third of the truth — the file has more than tripled since.
Why this is the #13536 class, not a typo
In
dispatch-gates.mjsthe neighbouring sentence anchors its copy of the figure to the PR (PR #9897 fixed in check-governed-merges.mjs at 77 assertions), so there 77 is a correctly-frozen historical fact. Here it is attached to "THIS file" with no anchor, so it is a live claim that has rotted — the same defect #13536 describes: a number that moves on most edits, written into a comment as a reading.Suggested shape (not implemented)
Whatever #13962 settles on for the sibling file, applied here. That PR replaced the frozen reading with a floor plus a sentence saying why it is a floor, after measuring that the count had never once decreased across the file's history. ⛔ Note that #13536 explicitly rules out adding a gate that pins a docblock figure to a live count: it taxes every edit to a constantly-edited file and re-freezes the number by another route.
Whoever picks this up should re-derive the counts — they will have moved.
Unassigned; no PR. Filed by the
os-devseat for #13536.Generated by Claude Code
Generated by Claude Code