Skip to content

Commit d744340

Browse files
claude[bot]claude
andauthored
fix(docs-audit): anchor the ledger route:/client: KEY in one place (#11542) (#11634)
Eight scans in `affected-docs.mjs` ask "is a `route:` / `client:` declaration written here?". `declLead` has spelled the colon and the run after it once since #11494, but the KEY stayed each call site's own argument: `declarationsIn` anchored it with `\b` and the other seven did not. So `subroute: 'GET /x'` was a declaration to SEVEN of the eight and not to the eighth, and it minted a silent phantom ROW — silent because the partial-read verdict keys on the gap between `rows` and `routesDeclared` and both terms read the unanchored spelling. The anchor now lives in `declLead`, once, and `declarationsIn` stops restating it. Priced against the `--bridge-coverage` before/after standard: 0 divergent leads across the seven live ledgers, and the census is byte-identical row for row (269 of 269 / 222 of 222 / 45 reachable / 177 UNREACHABLE / 0 prose-quoted leads / brokenScan 0). `--self-test` moves the pin #11584 left rather than deleting it, adds one fixture per previously-unanchored scan, and pins the `$route:` residue (#11630) where the next card will find it. Claude-Session: https://claude.ai/code/session_015ahemw8RcTgqtxrj15PEZx Co-authored-by: Claude <noreply@anthropic.com>
1 parent 8d2c95d commit d744340

2 files changed

Lines changed: 224 additions & 26 deletions

File tree

scripts/docs-audit/README.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,22 @@ opens with the very quote the recognizer reads. Both moves were priced on a tree
174174
no instance of the shape, and `259 of 259` / `221 of 221` / 176 unreachable came out
175175
byte-identical across each.
176176

177+
**And the key itself is anchored** — since #11542, in one place rather than eight. Eight
178+
scans ask *"is a `route:` / `client:` declaration written here?"*; `declLead` has spelled the
179+
colon and the run after it once since #11494, but the **key** stayed each call site's own
180+
argument and only one of the eight anchored it with `\b`. So `subroute: 'GET /api/v1/gone'`
181+
was a declaration to **seven** of them and not to the eighth, and it minted a phantom
182+
**row** — silent for the same reason as the two above, `rows` and the first term of
183+
`routesDeclared` moving together. Not all seven behaviours it moved are counting: the row
184+
window is delimited by that same lead, so a `subroute:` written between a real `route:` and
185+
its `client:` **closed the real row's window** and handed the binding to the phantom, which
186+
then joined the unreachable population — a wrong binding no count comparison can see. Priced
187+
on a tree carrying no instance: **zero** leads across the seven ledgers that the unanchored
188+
spelling reads and the anchored one does not, and `269 of 269` / `222 of 222` / 45 reachable /
189+
177 unreachable came out byte-identical **row for row** across the change. `$route:` is still
190+
read as a declaration — `\b` fails only against a *word* character — but all eight agree on it
191+
now, and `--self-test` pins that residue (#11630) where the next card will find it.
192+
177193
A skipped type member is reported **nowhere**, and that is the intended answer rather than
178194
a new silence: it is a correct declaration of a *type*, not a table row — the same rule
179195
under which the `route: string;` member of all seven entry interfaces has always produced

0 commit comments

Comments
 (0)