Found while implementing #8711 half (2). Filed unassigned; observation-class.
packages/qa/dogfood/test/authz-conformance.test.ts carries a "#2567 Phase 2" comment block just above the PROBES table:
the anonymous-deny SURFACES are additionally pinned by the discover() ratchet: this test STATICALLY enumerates the data/meta/graphql HTTP entry points from source and asserts each is classified by a matrix row.
That description was accurate when written (#2567 Phase 2), but PROBES has grown well past data/meta/graphql since: #5519 added the /actions and /automation dispatcher gates, #7033/#7023 added the /packages domain gate, #2992 (ADR-0096 D4) added the realtime transport tripwires (in-memory-realtime-adapter.ts, realtime-service-plugin.ts, client/realtime-api.ts, plus a tripwire on rest-server.ts and http-dispatcher.ts), and ADR-0096/#3167 added the two MCP transport pins (http-dispatcher.tshandleMcp, domains/mcp.ts, mcp/plugin.ts). None of those is a data/meta/graphql route.
As of this writing the table is 15 probes over 11 named source files (re-derived while working #8711 half (2); see PR #9026), not the narrower surface the comment still names. The comment is cosmetic drift, not a checking-behaviour defect — discover() itself is unaffected and correctly enumerates all 15 — but a reader relying on the comment to know what's covered would undercount the surface, the same class of failure #8711 named for the matrix's own header (a written claim drifting out of step with what the mechanism does), one level down.
Not fixed here: #8711 half (2)'s ruled scope was narrowing the primitives-vs-routes completeness claim in the matrix header and the companion test's opening header, plus the hand-maintained statement — not auditing every other description in these files. Rewriting the #2567 Phase 2 comment's route-family list wasn't part of that ruling, and PR #9026 deliberately left it alone rather than touching prose beyond the ruled boundary.
Suggested fix: reword the #2567 Phase 2 comment to describe the enumerated surface generically (HTTP/transport entry points across the curated PROBES table) rather than naming a fixed, now-incomplete list of segments, or enumerate the route families it currently covers and expect that list to need updating again as new families join.
Found while implementing #8711 half (2). Filed unassigned; observation-class.
packages/qa/dogfood/test/authz-conformance.test.tscarries a "#2567 Phase 2" comment block just above thePROBEStable:That description was accurate when written (#2567 Phase 2), but
PROBEShas grown well pastdata/meta/graphqlsince: #5519 added the/actionsand/automationdispatcher gates, #7033/#7023 added the/packagesdomain gate, #2992 (ADR-0096 D4) added the realtime transport tripwires (in-memory-realtime-adapter.ts,realtime-service-plugin.ts,client/realtime-api.ts, plus a tripwire onrest-server.tsandhttp-dispatcher.ts), and ADR-0096/#3167 added the two MCP transport pins (http-dispatcher.tshandleMcp,domains/mcp.ts,mcp/plugin.ts). None of those is adata/meta/graphqlroute.As of this writing the table is 15 probes over 11 named source files (re-derived while working #8711 half (2); see PR #9026), not the narrower surface the comment still names. The comment is cosmetic drift, not a checking-behaviour defect —
discover()itself is unaffected and correctly enumerates all 15 — but a reader relying on the comment to know what's covered would undercount the surface, the same class of failure #8711 named for the matrix's own header (a written claim drifting out of step with what the mechanism does), one level down.Not fixed here: #8711 half (2)'s ruled scope was narrowing the primitives-vs-routes completeness claim in the matrix header and the companion test's opening header, plus the hand-maintained statement — not auditing every other description in these files. Rewriting the
#2567 Phase 2comment's route-family list wasn't part of that ruling, and PR #9026 deliberately left it alone rather than touching prose beyond the ruled boundary.Suggested fix: reword the
#2567 Phase 2comment to describe the enumerated surface generically (HTTP/transport entry points across the curatedPROBEStable) rather than naming a fixed, now-incomplete list of segments, or enumerate the route families it currently covers and expect that list to need updating again as new families join.