⛔ Ungraded and unrouted — domain:*, priority and type are triage's. Filed unassigned by the domain:engine execution seat at landing time for PR #15395, because the round that found it repairs the current stale values as a side effect, and once it lands the evidence disappears while the mechanism stays.
The mechanism
scripts/check-system-context-census.mjs holds the census page's anchors (file:line) to the tree — that is what --fix rewrites and what the gate verifies. It does not hold two other things on the same page to the table:
- the page's own prose row references —
Row 34 is correct for the rule, row N's doors, what row N is skipping;
- the
why: strings in the script's own NON_READ_ANCHORS entries, which name a row by number.
Both are hand-maintained. So inserting a row renumbers the table and silently falsifies every reference below it, with the gate still green.
Measured on origin/main, ⛔ not argued
PR #15687 inserted one row (Bulk data event organizationId OMITTED), renumbering everything after it by +1. Today, on origin/main:
| reference |
what it says |
what the table says |
content/docs/permissions/system-context.mdx:252 — 「revoke() skips its own conflict guard. Row 34 is correct for the rule」 |
row 34 |
row 35 (:136) — row 34 is grant(), a different seam |
scripts/check-system-context-census.mjs:348 — why: 'row 34 -- the CONFLICT guard revoke() deletes in front of' |
row 34 |
row 35 |
scripts/check-system-context-census.mjs:353 — why: 'row 60 -- the call site of the compensating owner stamp' |
row 60 |
row 61 (:172) — row 60 is the email/webhook provenance stamp |
Firing positive control: the table carries 66 numbered rows, so the instrument that reads row numbers is working.
And pnpm check:system-context-census is green on that tree. ⇒ this is not a gate that failed; it is a class of claim the gate was never pointed at.
⚠️ Why the number being wrong is not the interesting part
Row 34 on main is grant() — a different seam with a different rule (it is explicitly not a bare skip; the system branch asserts the grant is not inert). So the prose sentence 「revoke() skips its own conflict guard. Row 34 is correct for the rule」 now reads as a statement about grant(), and it is false about grant(). A reader who follows the pointer lands on a row that contradicts the sentence pointing at it — which is worse than a dangling reference, because it resolves.
content/docs/permissions/system-context.mdx is PUBLISHED by the E3 measurement (content/docs/**). scripts/** is not.
⛔ What is NOT being claimed
Related, and ⛔ not a duplicate
#15783 — check:system-context-census dies with a raw ERR_MODULE_NOT_FOUND stack in a fresh checkout. That is the gate crashing; this is the gate passing while a published page says something false. Different failure modes on the same script.
Dedup: ⚠️ /search/issues answers 403 in this container and an empty search is not a reading — so this was a repo-scoped REST list of open issues filtered on system-context-census|NON_READ_ANCHORS|census, 50 hits read; only #15783 touches this script, and it is the crash above.
Re-check
git show origin/main:content/docs/permissions/system-context.mdx | grep -nE '^\| *3[3-6] *\|' # revoke() guard is row 35
git show origin/main:content/docs/permissions/system-context.mdx | grep -n 'Row 34 is correct' # :252
git show origin/main:scripts/check-system-context-census.mjs | grep -nE "why: 'row (34|60)" # :348, :353
git show origin/main:content/docs/permissions/system-context.mdx | grep -cE '^\| *[0-9]+ *\|' # control: 66 rows
Generated by Claude Code
⛔ Ungraded and unrouted —
domain:*, priority and type are triage's. Filed unassigned by thedomain:engineexecution seat at landing time for PR #15395, because the round that found it repairs the current stale values as a side effect, and once it lands the evidence disappears while the mechanism stays.The mechanism
scripts/check-system-context-census.mjsholds the census page's anchors (file:line) to the tree — that is what--fixrewrites and what the gate verifies. It does not hold two other things on the same page to the table:Row 34 is correct for the rule,row N's doors,what row N is skipping;why:strings in the script's ownNON_READ_ANCHORSentries, which name a row by number.Both are hand-maintained. So inserting a row renumbers the table and silently falsifies every reference below it, with the gate still green.
Measured on
origin/main, ⛔ not arguedPR #15687 inserted one row (
Bulk data event organizationId OMITTED), renumbering everything after it by +1. Today, onorigin/main:content/docs/permissions/system-context.mdx:252— 「revoke()skips its own conflict guard. Row 34 is correct for the rule」:136) — row 34 isgrant(), a different seamscripts/check-system-context-census.mjs:348—why: 'row 34 -- the CONFLICT guard revoke() deletes in front of'scripts/check-system-context-census.mjs:353—why: 'row 60 -- the call site of the compensating owner stamp':172) — row 60 is the email/webhook provenance stampFiring positive control: the table carries 66 numbered rows, so the instrument that reads row numbers is working.
And
pnpm check:system-context-censusis green on that tree. ⇒ this is not a gate that failed; it is a class of claim the gate was never pointed at.Row 34 on main is
grant()— a different seam with a different rule (it is explicitly not a bare skip; the system branch asserts the grant is not inert). So the prose sentence 「revoke()skips its own conflict guard. Row 34 is correct for the rule」 now reads as a statement aboutgrant(), and it is false aboutgrant(). A reader who follows the pointer lands on a row that contradicts the sentence pointing at it — which is worse than a dangling reference, because it resolves.content/docs/permissions/system-context.mdxis PUBLISHED by the E3 measurement (content/docs/**).scripts/**is not.⛔ What is NOT being claimed
readonlyfield is stripped from a non-system INSERT insideengine.insert, and the boundary copy is deleted #15395's renumbering makes all three true again, which is exactly why this card is about the mechanism and not about the values. When fix(objectql,metadata-protocol): a staticreadonlyfield is stripped from a non-system INSERT insideengine.insert, and the boundary copy is deleted #15395 lands, re-measure before acting — the table below it will read35/61and the references will match.Related, and ⛔ not a duplicate
#15783 —
check:system-context-censusdies with a rawERR_MODULE_NOT_FOUNDstack in a fresh checkout. That is the gate crashing; this is the gate passing while a published page says something false. Different failure modes on the same script.Dedup:⚠️
/search/issuesanswers 403 in this container and an empty search is not a reading — so this was a repo-scoped REST list of open issues filtered onsystem-context-census|NON_READ_ANCHORS|census, 50 hits read; only #15783 touches this script, and it is the crash above.Re-check
Generated by Claude Code