Skip to content

Commit fbb247c

Browse files
docs(qa): reword the #2567 Phase 2 comment to stop naming a fixed route list (#9027) (#9145)
The `#2567 Phase 2` comment (and two sibling mentions of the same claim in this file) described discover()'s static enumeration as covering data/meta/graphql HTTP entry points only. PROBES has grown to 15 probes over 11 named source files across 7 route families (meta, actions, automation, packages, data, realtime, mcp) since that comment was written, and no `graphql` probe exists in the table today — the old wording was already inaccurate on that front too. Reworded generically (HTTP/transport entry points named in the curated PROBES table) rather than re-enumerating the current families, per the issue's own reasoning: an enumerated list is what drifted in the first place, so replacing one fixed list with another just re-creates the mechanism that caused this finding. discover() itself is unchanged and correctly enumerates all 15 surfaces; this is a prose-only fix. Claude-Session: https://claude.ai/code/session_01Y26DJEHSBhhAQ6wwfsHNza Co-authored-by: Claude <noreply@anthropic.com>
1 parent 445ae4d commit fbb247c

1 file changed

Lines changed: 16 additions & 14 deletions

File tree

packages/qa/dogfood/test/authz-conformance.test.ts

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,11 @@
1010
// deleted proof, breaks the build.
1111
//
1212
// #2567 Phase 2 — the anonymous-deny SURFACES are additionally pinned by the
13-
// `discover()` ratchet: this test STATICALLY enumerates the data/meta/graphql
14-
// HTTP entry points from source and asserts each is classified by a matrix row.
15-
// A new ungated `/data` route (or a removed/stale `covers` key) then fails CI as
16-
// UNCLASSIFIED / STALE — the surface can't silently regress.
13+
// `discover()` ratchet: this test STATICALLY enumerates the HTTP/transport
14+
// entry points named in the curated `PROBES` table below and asserts each is
15+
// classified by a matrix row. A new ungated route (or a removed/stale
16+
// `covers` key) then fails CI as UNCLASSIFIED / STALE — the surface can't
17+
// silently regress.
1718

1819
import { describe, expect, it } from 'vitest';
1920
import { fileURLToPath } from 'node:url';
@@ -43,13 +44,14 @@ const ATTRIBUTION = { marker: ATTRIBUTION_MARKER, scan: scanProofCandidates } as
4344

4445
// ── #2567 ratchet — static enumeration of anonymous-deny HTTP entry points ──
4546
//
46-
// A CURATED per-file probe table (not a blind repo grep): scoped to the four
47-
// source files and to data/meta/graphql segments only, so control-plane routes
48-
// (/health, /auth, /ready, /discovery) are never enumerated as data surfaces.
49-
// But each probe is pattern-based WITHIN its file, so a genuinely new `/data`
50-
// route (or a new graphql/meta handler) is auto-discovered → new key → a
51-
// missing `covers` fails CI. Keys are derived from source CONTENT (route
52-
// literals / handler names), never line numbers, so they don't churn on edits.
47+
// A CURATED per-file probe table (not a blind repo grep): scoped to the
48+
// source files and route families named in PROBES below, so control-plane
49+
// routes (/health, /auth, /ready, /discovery) are never enumerated as data
50+
// surfaces. But each probe is pattern-based WITHIN its file, so a genuinely
51+
// new route or handler matching an existing probe's pattern is auto-discovered
52+
// → new key → a missing `covers` fails CI. Keys are derived from source
53+
// CONTENT (route literals / handler names), never line numbers, so they don't
54+
// churn on edits.
5355
const PROBES: ReadonlyArray<{ file: string; re: RegExp; key: (m: RegExpExecArray) => string }> = [
5456
// REST /meta umbrella registrar — one guarded registrar covers all ~17 routes.
5557
{
@@ -222,9 +224,9 @@ describe('ADR-0056 D10 — authorization conformance matrix', () => {
222224
const problems = checkLedger(AUTHZ_CONFORMANCE, {
223225
proofRoot: HERE, // proofs are dogfood test files alongside this one
224226
highRisk: HIGH_RISK,
225-
// The ratchet: every discovered data/meta/graphql entry point must be
226-
// classified by exactly one row's `covers`, and no `covers` key may be
227-
// stale (no longer in source).
227+
// The ratchet: every discovered PROBES entry point must be classified
228+
// by exactly one row's `covers`, and no `covers` key may be stale (no
229+
// longer in source).
228230
discover: () => discoverAnonymousDenySurfaces(),
229231
// #7976 — and the cited proofs must NAME the rows they prove.
230232
attribution: ATTRIBUTION,

0 commit comments

Comments
 (0)