Skip to content

chore(devx): migrate six scripts/** line citations to file-level anchors - #19200

Merged
os-try-charles merged 1 commit into
mainfrom
claude/issue-15809-line-citations-round3-devx
Sep 19, 2026
Merged

os-try-charles merged 1 commit into
mainfrom
claude/issue-15809-line-citations-round3-devx

Conversation

@os-try-charles

Copy link
Copy Markdown
Collaborator

Third round of the scripts/** unresolvable-citation migration (PRs #15806 and #16338 were rounds one and two), devx-lane slice only.

scripts/check-scripts-symbol-anchors.mjs registers scripts/** .mjs comment prose as a symbol-anchor corpus with judgeUntrackedLineAnchors: false, so a citation naming no tracked file is seen, counted and enumerated — and judged by nothing. This PR migrates six of those, by the gate's own repair form (its header, under [line-anchor]):

ANCHOR FORM: name the file as a file-level anchor and put the number beside it as data

Not one digit is repaired or repointed. Every number that was part of an anchor is still on its page, as data.

The six, and why each target is unambiguous

site citation resolves to
scripts/check-changeset-no-major.mjs date-range-presets.ts:101 packages/spec/src/data/date-range-presets.ts
scripts/cross-package-test-inputs.mjs :102, :92, :484-485 (continuations) packages/spec/src/shared/retired-key-migrate-sentence.test.ts
scripts/ts-parse.mjs tenant-audit-census.mjs:459, :723 scripts/tenant-audit-census.mjs
  • date-range-presets.ts — one tracked file of that basename (date-range-presets.test.ts is a different basename), and line 101 is inside the TSDoc block the surrounding prose describes.
  • retired-key-migrate-sentence.test.ts — one tracked file, and all three numbers still land on what the prose says they do: PUBLISHED_SKILLS_ROOT on line 102, the "plus every .md file under skills/" sentence on line 92, and the skills:-prefixed files.push on lines 484-485.
  • tenant-audit-census.mjs — one tracked file of that basename (check-tenant-audit-census.mjs is a different basename). It carries both cited constructs, the .replace(/\s+/g, ' ') collapse and the synthetic type CensusReceiver = ... alias; both have drifted off the cited lines, which is precisely why those lines are kept as dated data rather than repointed.

The gate's own dated record is corrected in the same edit

Both prior rounds did this, and it had gone stale in a way that matters: the header claimed a residual of 8 and named holders (PRs #16215, #16202) that have since merged, while the live command printed 18.

That regrowth — 8 back up to 18 between rounds, because gate-header prose written in the interval added citations faster than round two removed them — is the most load-bearing reading here, and the header now says so. This is not a burn-down; it is a quantity that grows.

Acceptance, measured on this branch

node scripts/check-scripts-symbol-anchors.mjs --list-unresolvable   EXIT 0   18 -> 12
node scripts/check-scripts-symbol-anchors.mjs --self-test           EXIT 0
node scripts/check-scripts-symbol-anchors.mjs                       EXIT 0

Row-by-row diff of the before and after listings: the only lines removed are the six above, plus the summary line changing from 18 ... 10 bare-filename, 5 continuation, 3 directory-qualified to 12 ... 8 bare-filename, 1 continuation, 3 directory-qualified. The other twelve rows are byte-identical and still listed.

What is deliberately NOT here

  • judgeUntrackedLineAnchors stays false. Whether it should flip is the open question this card exists to put in front of triage, and it is now a sharper question than a counting one — see below.
  • The remaining twelve rows are untouched, every one of them on another seat's surface: scripts/pm/check-governed-merges.mjs, scripts/pm/check-skill-line-ratchet.mjs, scripts/pm/check-prior-rulings.mjs, scripts/pm/check-half-states.mjs, scripts/pm/check-widening-tells.mjs (governed-surface and pm patrol instruments) and scripts/check-spec-docblock-symbol-anchors.mjs (SUBJECT is packages/spec docblocks). No card is filed for them here.

Open question for triage

A flag that flips at residual zero flips into a gate that reds on the next author's first bare citation — and the 8 -> 18 regrowth measured above says there will be a next author, soon. So what the flip needs is a remedy for an unbindable abbreviation (a bare engine.ts a resolver cannot bind to one of several files of that name), not a smaller number. Reaching zero and flipping the same day would hand the repo the permanently-red gate its own header says it retired.

Part of #15809


Generated by Claude Code

Third round of the scripts/** unresolvable-citation migration, devx-lane
slice only. All three cited targets resolve to exactly one tracked file,
so each is repaired by the gate's own form: the file named as a
file-level anchor, the number kept beside it as data. No digit is
repaired or repointed.

- check-changeset-no-major.mjs: date-range-presets.ts:101 resolves to
  packages/spec/src/data/date-range-presets.ts (the only tracked file of
  that basename; line 101 sits inside the TSDoc block the prose cites).
- cross-package-test-inputs.mjs: the three bare continuations :102, :92
  and :484-485 all belong to
  packages/spec/src/shared/retired-key-migrate-sentence.test.ts, whose
  PUBLISHED_SKILLS_ROOT is still on line 102, the "plus every .md file
  under skills/" sentence still on 92, and the skills:-prefixed push
  still on 484-485.
- ts-parse.mjs: tenant-audit-census.mjs:459 and its :723 continuation
  resolve to scripts/tenant-audit-census.mjs, the only tracked file of
  that basename -- it carries both the .replace collapse and the
  synthetic `type CensusReceiver = ${typeText}` alias (both drifted off
  the cited lines, which is exactly why they are kept as dated data).

The gate's header record is corrected in the same edit, as both prior
rounds did: it claimed a residual of 8 and named holders that have since
merged, while the live command printed 18. That regrowth -- 8 back up to
18 between rounds -- is the reading worth keeping, and the header now
says so.

--list-unresolvable drops 18 -> 12; the remaining 12 are byte-identical
and untouched, every one of them on another seat's surface.
judgeUntrackedLineAnchors stays false per the #15809 fence.

Claude-Session: https://claude.ai/code/session_017ef78bLdybu3AffehKkhfk

Co-authored-by: Claude <noreply@anthropic.com>
@os-try-charles os-try-charles added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Sep 19, 2026 — with Claude
@os-try-charles
os-try-charles marked this pull request as ready for review September 19, 2026 12:27
@os-try-charles
os-try-charles added this pull request to the merge queue Sep 19, 2026
Merged via the queue into main with commit f49be36 Sep 19, 2026
36 of 37 checks passed
@os-try-charles
os-try-charles deleted the claude/issue-15809-line-citations-round3-devx branch September 19, 2026 12:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/s skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants