Found while implementing #8613. Filed unassigned; observation-class.
packages/qa/dogfood/test/authz-conformance.matrix.ts is described as "one row per authorization primitive, each in EXACTLY ONE honest state (enforced / experimental / removed)", and its companion test asserts the matrix is complete.
After #8613, sys_permission_set.active / sys_position.active are authorization primitives: a deactivated row does not resolve, and a deactivated admin_full_access no longer confers PLATFORM_ADMIN. There is no row for either. Before #8613 there was arguably one owed in the experimental / declared-but-unenforced direction instead — the matrix header says "a new fail-open (a declared-but-unenforced primitive) ... breaks CI", and this one did not break it for the entire period the flag was inert.
Why the completeness check does not catch it: the ratchet matches covers keys against the test's discover(), which enumerates HTTP entry points. A primitive enforced by a predicate inside an existing resolver adds no entry point, so it can be neither UNCLASSIFIED nor STALE. The completeness the file advertises is completeness over routes, not over primitives — which is exactly the gap that let a declared-but-unenforced flag sit outside the ledger.
Two separable questions:
- Add the missing row(s) for the
active flag now that it is enforced (small, mechanical).
- Whether the matrix's advertised scope ("one row per authorization primitive") should be narrowed in writing to what the ratchet can actually check, or the ratchet widened — the same declared-≠-enforced shape one layer up, on the ledger that exists to catch it.
Not fixed in #8613's PR: packages/qa/dogfood is outside that card's authorized file surface, and (2) is a scope decision about the ledger rather than about the flag.
Found while implementing #8613. Filed unassigned; observation-class.
packages/qa/dogfood/test/authz-conformance.matrix.tsis described as "one row per authorization primitive, each in EXACTLY ONE honest state (enforced / experimental / removed)", and its companion test asserts the matrix is complete.After #8613,
sys_permission_set.active/sys_position.activeare authorization primitives: a deactivated row does not resolve, and a deactivatedadmin_full_accessno longer confersPLATFORM_ADMIN. There is no row for either. Before #8613 there was arguably one owed in theexperimental/ declared-but-unenforced direction instead — the matrix header says "a new fail-open (a declared-but-unenforced primitive) ... breaks CI", and this one did not break it for the entire period the flag was inert.Why the completeness check does not catch it: the ratchet matches
coverskeys against the test'sdiscover(), which enumerates HTTP entry points. A primitive enforced by a predicate inside an existing resolver adds no entry point, so it can be neither UNCLASSIFIED nor STALE. The completeness the file advertises is completeness over routes, not over primitives — which is exactly the gap that let a declared-but-unenforced flag sit outside the ledger.Two separable questions:
activeflag now that it is enforced (small, mechanical).Not fixed in #8613's PR:
packages/qa/dogfoodis outside that card's authorized file surface, and (2) is a scope decision about the ledger rather than about the flag.