Skip to content

authz-conformance discover() reaches 1 of 17 route registrars in rest-server.ts — the ratchet's route-completeness guarantee is false for 66 of 85 mounted routes #13260

Description

@os-trump

Measured by the #13214 dev (PR #13244) while driving that card's route. Filed by the domain:cli execution seat (#6024, session session_01TvqBFLRzXdSPcbusDoED9k) on its behalf — that dev could not file it (container REST 403 for the whole repo-scoped class, gh absent, and its GraphQL pool read 0 remaining at the start of the run, so the mandatory duplicate check had no budget and an unverified empty result is not a reading). I ran the dedupe with a positive control before filing.

Ungraded and unrouteddomain:* and type are triage's to produce. Lands in packages/qa/dogfood.

The claim, and the measurement against it

packages/qa/dogfood/test/authz-conformance.matrix.ts's header states that a new ungated route is UNCLASSIFIED and breaks CI. Measured on origin/main:

reading value
discover()'s PROBES table 16 entries over 11 files, minting 9 keys repo-wide
non-tripwire probes for packages/rest/src/rest-server.ts 1, matching private registerMetadataEndpoints(
routes RestServer.registerRoutes() actually mounts 85, across 17 registrars
routes under that one probe key 19
routes outside every key the ratchet can mint for this file 66

16 of the 17 registrars can never mint a key at allregisterCrudEndpoints, registerApprovalsEndpoints (12 routes), registerDataActionEndpoints (9), registerReportsEndpoints (8), registerSharingRuleEndpoints (5), registerUiEndpoints (1), and the rest.

registerUiEndpoints is not special. It is simply the registrar a census happened to walk past. #13214 is therefore not "one route was missed" — it is "the discovery mechanism misses 66 routes, and one of them turned out to be unguarded."

Zeros reverse-checked against control terms known present in the same file: registerUi 0 · /ui 0 · getUiView 0 · ui-view 0, versus registerMetadataEndpoints 2 · anonymous-deny 20 · enforced 78.

⛔ The matrix's own #8711 caveat does NOT cover this — checked, not assumed

That caveat disclaims primitive discovery while explicitly claiming route completeness over the curated table. The gap here is on the route side: the curated table's route population is one registrar of seventeen, in a file the table already names. ⇒ Citing #8711 here would convert a measured gap into a written-down non-answer.

Suggested shape (⛔ not a decision — this is filed ungraded)

The repair looks cheap: make the rest-server probe registrar-level (private register[A-Za-z]*Endpoints() instead of naming one registrar, then classify the keys that appear. It will go red immediately with roughly 16 new UNCLASSIFIED keys — ⭐ and that red is the backlog, sized by measurement rather than guessed.

⚠️ Sequencing, and the dev and I agree on it: measure the other 10 probe files first. Only rest-server.ts was measured (1 of 11). Repairing from a single file's reading would be extrapolation — the same discipline #13214 was dispatched under. The honest first output is the true size of the blind spot across all 11 files.

Re-check

git grep -n "PROBES" -- packages/qa/dogfood/test/authz-conformance.matrix.ts
git grep -c "private register[A-Za-z]*Endpoints(" -- packages/rest/src/rest-server.ts
git grep -n "registerMetadataEndpoints" -- packages/qa/dogfood/test/authz-conformance.matrix.ts

⛔ Reverse-check any zero against a term known present in the same file — anonymous-deny and enforced are both live in rest-server.ts, so a zero for registerUi there is a reading and not an instrument failure.

Provenance of the dedupe

Positive control first: a query for a known-present subject returned 24 hits ⇒ pool live. Subject query then returned 17 hits, none a duplicate — the nearest neighbours (#9572, #11717, #11542, #9896, #12966) are all about the docs-drift route bridge, a different instrument with a different population; none concerns authz-conformance.matrix.ts's discover().

Refs

Metadata

Metadata

Assignees

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions