Repository navigation
fix(scripts): the checklist's line-citation limb refuses the comma form and a tilde range - #25340
Merged
Merged
Conversation
…-in tilde range Claude-Session: https://claude.ai/code/session_01PPd7QqomCKXskDb8wkVgDV Co-authored-by: Claude <noreply@anthropic.com>
…d-only hits unjudged Claude-Session: https://claude.ai/code/session_01PPd7QqomCKXskDb8wkVgDV Co-authored-by: Claude <noreply@anthropic.com>
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.
Requested by Elon · project thread
Fixes #24894
Clause-②: no
Metadata-protocol: none
What changed
check-platform-checklist's line-citation limb now refuses the two spellings the card measured going through: the comma form (foo.ts,123,foo.ts,123-140) and the bare tilde range (~7354-7368). Both arrive as ordinaryline-anchorfindings from the one shared sweep, with the remedy the limb already names (afile#symbolanchor or a file-level anchor).scripts/symbol-anchors.mjs, the comma form.LINE_ANCHOR's separator is now a colon (with the optional approximation tilde) or a comma. It is tight: no space between the path, the comma and the number, sofoo.test.ts, 12 casesstays a count. Because it carries its own path it is a row for every corpus, not an option, and that was measured first (table below): zero new hits outside the checklist.scripts/symbol-anchors.mjs, the tilde range. A new corpus declaration,tildeRangeCitations(default OFF), and its patternTILDE_RANGE_CITATION: a tilde, two numbers of at least two digits joined by a hyphen or an en dash, no whitespace, left side refusing an identifier character or a colon, right side refusing an identifier character or a percent sign, and the second number not below the first (so an approximate month stays silent). It inherits the path named before it, exactly as the two path-less spellings do.defineCorpusrefuses it beside adocProjectionby the same rule that refusespathlessLineCitationsthere, and the message names whichever option was declared. Line-anchor findings now carrycomma/tildeRangebooleans.scripts/check-platform-checklist.mjs. The corpus declarestildeRangeCitations: true. A finding in one of the two new spellings that sits inside ahistoryarray of an area file, or anywhere inFOLLOW-UPS.md, is counted and printed, not judged (appendOnlyLineCitation, keyed on where the finding sits;historyLineRangeswalks the JSON with string state so line numbers survive). It is a filter on the sweep's findings, not a grammar: the source-read pin D2 (no local citation grammar) still holds. ⛔ It is no wider than the two spellings: a colon-form citation in a history row is judged exactly as before. The console line now names the comma form and the tilde range and prints the append-only count (12 onmain's ledger).Why the shared core and not only the checklist's projection
The dispatch preferred a checklist-only change. That route is closed by this file's own design: the checklist gate carries no line-citation grammar of its own (self-test D2 reds on one), and the shared core's header records the 2026-09-01 ruling 「⛔ Do not fork this file for a second corpus; if a corpus needs behaviour this core lacks, widen the core」. So the scoping is done the core's way: the path-less spelling is an opt-in declaration only this corpus makes, and the path-carrying spelling became a shared row only after it measured zero new hits in every other corpus. The tilde range is its own declaration rather than a third row inside
pathlessLineCitations, becausecheck-adr-symbol-anchorsprints that it leaves "the two path-less spellings" unjudged; folding a third in would make that sentence false.Corpus measurement (before any shared pattern moved)
Every corpus registered on the shared core, on
7b047b4483, with the real extractor (tilde range forced on for the measurement):docs/adr/**scripts/**comment prosepackages/spec/src/**docblocksisSystemcensus pageFOLLOW-UPS.mdrecords-formshistory rowGate verdicts for the four other corpora are byte-identical in their line-anchor and declined counts before and after (ADR 0 line anchors;
scripts/**0, 11 declined; spec docblocks 0 new, 202 declined, 7 residual; census page OK).check-issue-citations,isystem-census,doc-line-anchorsandcheck-react-page-adapter-contractimport no grammar from the core (commentProse/symbolResolutionClassonly, or a comment mention), so nothing there moves.Red-first proof
The same plant, in
records-forms.jsonoutside any history row:sql-driver.ts#createColumn ~7354-7368 and sql-driver.ts,7354, applied and restored byscripts/ablation-replace.mjs(blob back to HEAD,git diff HEADempty, both legs).main(7b047b4483):node scripts/check-platform-checklist.mjsexits 0 and prints "line citations: 0 survive". This is the escape.changetext: exit 0, append-only count 12 → 13.Gates
Head
35c4358.node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstackderived 34 commands; each ran with its exit code captured before any pipe and all 34 exit 0, includingpnpm check:platform-checklist,node scripts/symbol-anchors.mjs --self-test,check-scripts-symbol-anchorsand its--self-test,check-self-test-wiredandpnpm check:pm-dispatch-gates.--ranreconciliation: "34 derived famil(ies) accounted for — 34 run, 0 NOT-MEASURED". Seven more ran outside the derivation, all exit 0: the checklist's--self-testand the three other corpus gates with their--self-tests.symbol-anchorsself-test floor 156 → 175 (each new firing spelling beside the silent neighbour that bounds it, default-off pair, inheritance, de-duplication, and the projection refusal for the new option with its data-corpus control).14056c9) with this branch's two scripts overlaid:pnpm check:platform-checklistexit 0 (329 items, append-only count 12) and its--self-testexit 0.node scripts/pm/check-governed-merges.mjs --branch HEAD: NOT governed, 337 changed lines.scripts/gate files publish nothing, so this PR carriesskip-changeset. No package is touched, so no build closure, package test or typecheck is owed; no test file names either script.Acceptance notes
main(0 today).docs/adr/0131-…mdline 1174 carries a tilde range (applyTenantScope (~12016–12066)), a position dated to2514d49f3in its own sentence. The ADR corpus does not declaretildeRangeCitationsand its verdict sentence names only the two path-less spellings it leaves off; opting that corpus in is a separate decision with a price (2 hits, one a count).os-dev.md's no-HTML-comment rule (same shape as PR docs(qa): re-author access-security.platform-owner-email-anchor for the Default Organization grant #25323).claude/project-thread-gdsmhy, the one the seat's claim names, rather than aclaude/issue-24894-*name. Work was done in a linked worktree (../objectstack-issue-24894).Generated by Claude Code