From 70b2f690109ca8156442f15a08375c5b4e17ea4b Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 5 Sep 2026 11:42:15 +0000 Subject: [PATCH] chore(devx): respell the parseSymbolRef placeholder and retire the last held allowance row The one-line docblock on `scripts/check-adr-0087-registration.mjs#parseSymbolRef` wrote its placeholder path-shaped, so the scripts/** symbol-anchor corpus read the illustration as an anchor into a file this tree does not have. It now uses the angle-bracket grammar `scripts/symbol-anchors.mjs#ANCHOR_GRAMMAR` already teaches. One line, no behaviour change. With the citation gone the last `HELD_FILE_ALLOWANCES` row has done its job and is deleted; the export and its doc stay, and the array is now empty. Four of the self-test's cases are registered per allowance row, so the pinned floor drops 30 to 26 by exactly that mechanism, with the reason written beside the literal. The allowance battery does not go vacuous: its five fixture cases run off the `scripts/bad.mjs` fixture row, not off the live array. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_012zGPuVVX3deAx9LdjK8jCk --- scripts/check-adr-0087-registration.mjs | 2 +- scripts/check-scripts-symbol-anchors.mjs | 27 ++++++++++++------------ 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/scripts/check-adr-0087-registration.mjs b/scripts/check-adr-0087-registration.mjs index 8bbc395598..8e9cbd0d47 100644 --- a/scripts/check-adr-0087-registration.mjs +++ b/scripts/check-adr-0087-registration.mjs @@ -2003,7 +2003,7 @@ const IDENT = '[A-Za-z_$][A-Za-z0-9_$]*'; const MEMBER_PATH_RE = new RegExp(`^${IDENT}(?:\\.${IDENT})*$`); /** - * `path/to/file.ts#Symbol` or `path/to/file.ts#a.b.member` -> its halves, or null. + * `/.ts#` or `/.ts#..` -> its halves, or null. * * ⚠️ The grammar was widened to a dotted member path (#15627), and the widening is * only sound because the READER was widened in the same commit. `packages/client/ diff --git a/scripts/check-scripts-symbol-anchors.mjs b/scripts/check-scripts-symbol-anchors.mjs index 33fe82dab3..23751124f5 100644 --- a/scripts/check-scripts-symbol-anchors.mjs +++ b/scripts/check-scripts-symbol-anchors.mjs @@ -145,17 +145,12 @@ export const CENSUS_15765 = { * The only admissible reason is the hot-file serial queue. */ export const HELD_FILE_ALLOWANCES = Object.freeze([ - Object.freeze({ - file: 'scripts/check-adr-0087-registration.mjs', - dated: '2026-09-05', - heldBy: 'PR #15724 (#15627)', - why: 'A one-line docblock on `scripts/check-adr-0087-registration.mjs#parseSymbolRef` writes its ' - + 'placeholder path-shaped, so a resolver reads the illustration as an anchor into a file this ' - + 'tree does not have. The repair is the angle-bracket spelling `/.ts#` that ' - + '`scripts/symbol-anchors.mjs#ANCHOR_GRAMMAR` already uses, and it is one line — but the file ' - + 'is held by a governed draft awaiting a human merge, and a comment-only edit landing under a ' - + 'reviewed governed PR is exactly the conflict this queue exists to prevent.', - }), + // EMPTY, and empty is the healthy state: every row written so far has been + // retired by repairing the citation it held. The mechanism above is not dead + // code — `triage()` still takes rows, and the self-test still exercises it in + // BOTH directions against its OWN fixture row (`scripts/bad.mjs`), including + // the leg that proves a row is load-bearing rather than decorative. So an + // empty live array leaves that battery running, not vacuous. ]); export const CORPUS = defineCorpus({ @@ -244,10 +239,14 @@ function assert(cond, msg) { if (!cond) { console.error(`❌ check-scripts-symbo // exactness loop below runs four `check()`s over each row), so retiring a row // legitimately lowers this floor by 4 — and that is the ONLY reason it may be // lowered. 34 → 30 when the `scripts/check-react-page-adapter-contract.mjs` -// row was retired (#15765). Any other drop is cases that STOPPED RUNNING; find what -// stopped registering instead of moving the number. +// row was retired, then 30 → 26 when the `scripts/check-adr-0087-registration.mjs` +// row was retired and the array went EMPTY (#15765). Any other drop is cases that +// STOPPED RUNNING; find what stopped registering instead of moving the number. +// ⚠️ An empty array does NOT make the allowance battery vacuous: its five +// fixture cases run off `scripts/bad.mjs`, never off the live rows, so they are +// not part of this arithmetic and must never fall out of the count. const SELF_TEST_BATTERIES = Object.freeze({ - 'check-scripts-symbol-anchors self-test': 30, + 'check-scripts-symbol-anchors self-test': 26, }); // DELETING an entry silences that battery's floor exactly as effectively as