fix(scripts): cite the re-taken cost reading instead of restating a void tally in the platform checklist's pathlessLineCitations rationale - #18969
Merged
Conversation
… checklist's `pathlessLineCitations` rationale The entry justifying `pathlessLineCitations: true` on this corpus carried a corpus-wide count of what the two path-less spellings admit. That figure was a raw-regex tally, and the re-take living beside the grammar named it void: it subtracted neither the fenced blocks the extractor skips nor the citations the path-anchored passes had already recorded. Replace the restated digit with a bounded transfer: the qualitative claim stays here, the reading stays with the grammar that admits the spellings, cited as a resolvable symbol anchor that `check:scripts-symbol-anchors` resolves on every PR. Also state the reason this corpus may opt in that is live today -- the registration-time refusal of the option to any corpus declaring a `docProjection`, which this one does not. Claude-Session: https://claude.ai/code/session_01AmH9bKvGoLjiY86Q4Z3og2 Co-authored-by: Claude <noreply@anthropic.com>
…atform-checklist-stale-245
This was referenced Sep 18, 2026
os-steve
marked this pull request as ready for review
September 18, 2026 08:53
os-steve
deleted the
claude/issue-18913-platform-checklist-stale-245
branch
September 18, 2026 09:11
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 #18913
Clause-②: no
What was wrong
scripts/check-platform-checklist.mjsjustified its own corpus declaringpathlessLineCitations: truewith a corpus-wide count of what the two path-lessspellings admit across
docs/adr/**,scripts/**andpackages/spec/src/**.That figure was a RAW-REGEX tally. PR #18884 re-took the reading beside the
grammar itself and named the raw-regex pair void: it subtracts neither the fenced
blocks the extractor skips nor the citations the path-anchored passes had already
recorded, so it overstates what the option actually admits by about a half.
The aggravating half is where the number sat: inside the file's own stated
rationale for a live configuration decision, a dozen lines above the
defineCorpuscall it argues for. An author reading it to decide whether theircorpus should opt in was reading a cost the same repository had already
withdrawn.
Premise verification, done first
The card's load-bearing claim — that #18884 named that figure void — was the one
thing the dispatching seat had deliberately NOT checked. Confirmed before any
edit:
commit, and that commit names the PR:
0a5851d2"fix(scripts): refusepathlessLineCitationson a corpus that declares a doc projection (fix(scripts): refusepathlessLineCitationson a corpus that declares a doc projection #18884)"(
git log -Soverscripts/symbol-anchors.mjs; a positive reading, so theshallow checkout does not weaken it).
git grep -nE '245 times|222 and 23|222 \+ 23|222\+23'over*.mjs *.ts *.mts *.md *.mdx *.jsonreturnsexactly one hit, the rationale line itself; the control the card names,
112 and 25, returns exactly one hit inscripts/symbol-anchors.mjs, so the one isa reading and not a dumb instrument.
registered corpora were enumerated; four declare nothing, and the default in
scripts/symbol-anchors.mjs#extractAnchorsisfalse. Nothing heregeneralises, and nothing here was applied to another corpus.
Does the corrected figure change the decision it justified?
No, and this was checked before the prose was touched, because flipping a corpus
declaration under cover of a prose fix is exactly what this card must not become.
The old sentence carried two jobs. The qualitative one — in prose a colon before
digits is punctuation, so the option admits ports, scenario labels and docblock
back-references — survives the re-take unchanged; the re-take's own text
enumerates the same three shapes. The quantitative one halves but keeps its sign,
so "default OFF is a measurement" still holds.
What actually changed is that the reason this corpus may opt in is no longer a
cost reading at all.
scripts/symbol-anchors.mjs#defineCorpusnow REFUSES theoption, at registration, to any corpus declaring a
docProjection(#18845), andthe sharper half of the same re-take is that the projected corpora resolve the
option into unjudged residual and no actionable finding. This corpus declares no
projection and sweeps its documents raw, so the refusal does not reach it. That
is a mechanical test the registration passes, which is strictly better than the
prose cost argument it replaces.
The repair
Triage asked for a bounded transfer rather than a second absolute number
("绝对读数会腐烂,有界转移不会"), and the card asked that a successor not swap one
transcribed reading for another. Both are satisfied by citing rather than
restating:
scripts/symbol-anchors.mjs#PATHLESS_COLON_CITATION— the docblock thatcarries the re-take, and that names the tree it was taken against, which this
entry never did.
declaring no projection — is stated where the cost reading used to be.
No new corpus-wide figure is written here. The point of the card is that a digit
retyped into a second file is gated by nothing; a symbol anchor in a
scripts/**comment is resolved on every PR bycheck:scripts-symbol-anchors,so the pointer reds if its target is renamed or deleted.
Reverse verification of the pointer
The claim "this transfer is gated, the digit was not" is itself measured, from
the committed state, predicting a red:
Mutant leg — the anchor's symbol replaced with one that does not exist, via
scripts/ablation-replace.mjs --expect 1so the anchor must hit; proven on diskbefore reading any verdict (real anchor occurrences 1 to 0, mutant 0 to 1, blob
91d4962fto0c98d3cd):Restore leg —
git checkout HEAD -- scripts/check-platform-checklist.mjsunderan
EXIT INT TERMtrap on an absolute path;git diff HEADprints zero bytesand
git hash-objectreturns91d4962f, byte-identical to the HEAD blob.Declared: the FIRST ablation attempt was a NO-OP. It passed flag names the tool
does not take (
--find/--replaceinstead of--anchor/--replacement), thetool printed its usage, and the on-disk blob was unchanged — the reading from
that run is void and is not counted. It is reported rather than quietly re-run.
No build or
dist/is in this path: these are plain.mjsgates resolved fromsource, so on-disk blob change is the whole preflight.
A second stale count in the same block, fixed in place
The list this entry belongs to was introduced as "Two declarations this corpus
needed and the core did not have:" and has carried THREE items since the
pathlessLineCitationsfold was appended to it — the entry is tagged(#18592)while the other two came from #18107, so the count was simply never updated. That
is the same defect class as the card (a number in this rationale block that the
file itself contradicts) and the fix is one word, in the block already named on
the claim, adding no verification surface. Changed to "Three". Evidence is the
list itself:
unspannedAnchors,excludeDirs,pathlessLineCitations.Tests
Comment-only change to one file. Every reading below was taken on this branch at
5f63efc5, after the merge oforigin/main, withpnpm install --frozen-lockfilere-run for the lockfile the merge moved.
node scripts/pm/dispatch-gates.mjs --commandsderived 29 gate commands from thechange set; all 29 were run and recorded as
command :: exit code, and--ranreconciles them: "29 derived famil(ies) accounted for — 29 run, 0NOT-MEASURED (a DERIVED zero — all 29 recorded an exit code and none of them is
3)". Every exit code is 0. The derivation is byte-identical before and after the
merge, so the pre-merge sweep and this one cover the same families.
check:nul-bytesis green and a direct control-byte scan of the edited filefinds none.
pnpm lintis the repo-wide scan CI owns. Targeted run on the edited file:0 errors, 0 warnings, 1 file from
--format json. The narrowing is sound becausethis repository never enables type-aware linting —
eslint.config.mjssays so inits own words, "this repo runs one
eslint.config.mjs, which never enablestype-aware linting (no
parserOptions.project, no typed@typescript-eslintrules) for ANY file, test or not" — so a comment-only edit inside one file cannot
move the verdict on any file it does not contain.
Acceptance notes
Nothing to file. The only out-of-scope thing this work turned up is the "Two"
versus three miscount above, and it was repaired in place rather than noted,
under the bounded in-place rule: same defect class as the card, one word,
mechanically determined, inside the block the claim already names, and adding no
verification surface. It is called out in its own section rather than buried in
the diff.
The two fenced files were not touched:
scripts/pm/check-widening-tells.mjs(PR #18948) and
scripts/check-sdui-manifest.mjs(#18879) are absent from thisdiff, which carries exactly one path.
Generated by Claude Code