Skip to content

[finding] A row insertion silently falsifies the census page's prose row references and NON_READ_ANCHORS why: strings, under a green check:system-context-census #15869

Description

@claude

Ungraded and unrouteddomain:*, 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:

  1. the page's own prose row referencesRow 34 is correct for the rule, row N's doors, what row N is skipping;
  2. 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:348why: 'row 34 -- the CONFLICT guard revoke() deletes in front of' row 34 row 35
scripts/check-system-context-census.mjs:353why: '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

#15783check: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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions