Commit 6e9bee6
feat(tooling): gate the route-ledger row census so a silent deletion reds (#17155)
`packages/runtime/src/route-ledger.ts` is census-shaped: its value is the
completeness of a list, and nothing in this tree read its row COUNT. An
index-slice edit meant to add two rows removed 105 lines -- route rows plus the
whole `/actions` section -- and exited 0, caught only because an unrelated gate
happened to redden.
Measured before writing anything:
* The file's own suite (route-ledger.conformance.test.ts) is domain-level --
"every registered dispatcher domain has at least one ledger entry" -- which
a shorter list satisfies. Positive control: deleting a whole live-registry
domain's rows DOES redden it, so "no count gate" is a reading and not an
artefact of the search.
* The cross-ledger guards (live-mount parity, client-url-conformance) compare
against the UNION of five ledgers, which absorbs deletions: 26 of
ROUTE_LEDGER's 82 rows have their wire pattern declared by another ledger,
by the `* /mcp/**` wildcard, or via `servedBy` -- including two rows in the
very `/actions` section the incident removed.
* 10 of the 11 `*-route-ledger.ts` files carry a per-route completeness pair
in their own package suite; this one is the only member of the family that
does not. So the gate carries one occurrence, measured rather than assumed.
The count is GENERATED (`--fix` writes the digits, nobody's memory does), the
anchor must resolve to exactly one match or report ROTTED_ANCHOR, and the shape
is check-lockstep-package-count.mjs's. Deliberately a deletion detector and not
a route-granularity cross-check against the dispatcher registry -- that question
is open in #17041 and a census stays correct whichever way it is ruled.
Claude-Session: https://claude.ai/code/session_012zTkyNHJ7TkuN2oXtP5x37
Co-authored-by: Claude <noreply@anthropic.com>1 parent fd5cff2 commit 6e9bee6
4 files changed
Lines changed: 457 additions & 0 deletions
File tree
- .github/workflows
- packages/runtime/src
- scripts
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3042 | 3042 | | |
3043 | 3043 | | |
3044 | 3044 | | |
| 3045 | + | |
| 3046 | + | |
| 3047 | + | |
| 3048 | + | |
| 3049 | + | |
| 3050 | + | |
| 3051 | + | |
| 3052 | + | |
| 3053 | + | |
| 3054 | + | |
| 3055 | + | |
| 3056 | + | |
| 3057 | + | |
| 3058 | + | |
| 3059 | + | |
3045 | 3060 | | |
3046 | 3061 | | |
3047 | 3062 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
128 | 128 | | |
129 | 129 | | |
130 | 130 | | |
| 131 | + | |
131 | 132 | | |
132 | 133 | | |
133 | 134 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
270 | 270 | | |
271 | 271 | | |
272 | 272 | | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
273 | 299 | | |
274 | 300 | | |
275 | 301 | | |
| |||
0 commit comments