Repository navigation
chore(docs,scripts): system-context page states no census totals; the census gate keeps the register - #22950
Merged
objectstack-fleet[bot] merged 5 commits intoOct 12, 2026
Conversation
The four count-carrying sentences, the maintenance-table note and the CI-checked decomposition figures are rewritten without exact numbers; a live count is `node scripts/isystem-census.mjs`. Every register row and anchor stays. The plugin-sharing sentence no longer claims "largest": measured, it is the third (runtime and plugin-security hold more reads). Claude-Session: https://claude.ai/code/session_012yK1ddAdAqfzwigRHZq3r2 Co-authored-by: Claude <noreply@anthropic.com>
…ing --fix The population, resolution and classification checks are unchanged; the dated raw-text decomposition stays present-and-dated, never compared. `--fix` now refuses with exit 2: nothing on the page is generated. Claude-Session: https://claude.ai/code/session_012yK1ddAdAqfzwigRHZq3r2 Co-authored-by: Claude <noreply@anthropic.com>
Nothing on the page is generated any more, so its .gitattributes route, its REGEN_ARTIFACTS row and its OS_REGEN_CLASSES row go, and so does gen:system-context-census (its only callers were that row and the page). The page was the one MIXED row; os-regen-merge's self-test now drives its mixed limb on a synthetic pattern while no real pattern is mixed. Claude-Session: https://claude.ai/code/session_012yK1ddAdAqfzwigRHZq3r2 Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012yK1ddAdAqfzwigRHZq3r2 Co-authored-by: Claude <noreply@anthropic.com>
This was referenced Oct 12, 2026
objectstack-fleet
Bot
deleted the
claude/issue-22927-census-drop-counts
branch
October 12, 2026 06:51
This was referenced Oct 12, 2026
marchtian
pushed a commit
that referenced
this pull request
Oct 12, 2026
Resolve content/docs/permissions/system-context.mdx: main's count-free prose (#22950), this branch's row 55b; no count lines. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015JgoXpZUGtNxnMDvRZsKzP
This was referenced Oct 12, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #22927
Clause-②: no
Executes ruling letter B on #22927 (comment 6117410296): the CI-checked statistics leave
content/docs/permissions/system-context.mdx; "every elevation site is registered" (POPULATION) and "every anchor resolves" (RESOLUTION) stay enforced, unchanged, in the requiredLint & Repo Gates.What changed
content/docs/permissions/system-context.mdxnode scripts/isystem-census.mjsfor a live count). The CI-checked figures leave the decomposition table, which is split into a dated raw-text snapshot (the six figures that were never compared, unchanged) and a numberless list of census steps. Every register row and every anchor is untouched. The "no split" decision is unchanged; only its wording moved.scripts/check-system-context-census.mjsDECLARED_COUNTS,regenerateDeclaredCounts,carryOnwardRowCount, the two count helpers and the COUNTS check are deleted.--fixnow refuses with exit 2 and says why (nothing on the page is generated) instead of rewriting numbers. POPULATION, RESOLUTION, CLASSIFICATION, the row-reference check and the dated-decomposition presence check are unchanged..gitattributesmerge=os-regen; the page's comment block is rewritten to say it is plain prose now and why.package.jsongen:system-context-censusis deleted (callers below).scripts/regen-artifacts.mjsREGEN_ARTIFACTSrow goes with its route (a short tombstone comment stays); themixeddocblock and thecontent/docs/permissions/**ledger entry stop saying the page is routed.scripts/pm/os-regen-merge.shOS_REGEN_CLASSESrow goes; the self-test drives its mixed limb on a synthetic pattern while no real pattern is mixed (details below).Size: 6 files, +289 / -878 against the merge base (net -589). The card estimated -200 to -400.
Measurements behind the file list (dispatch hypotheses H1 to H5)
1bd612bd6, thenorigin/mainwas merged once (e357a441c, two commits, neither touching these six files). Open PR fix(security)!: under a wall a catalog-carrying package is the platform operator's — install-local and the /packages delete refuse tenants (ADR-0131 D3) #22935 also edits the page; it had not landed when this was opened.git grepat1bd612bd6:DECLARED_COUNTS,regenerateDeclaredCountsandcarryOnwardRowCounthave no importer outside the gate (two prose mentions only: the page and a comment inscripts/regen-artifacts.mjs). The only symbol anchor into the gate from elsewhere isscripts/check-system-context-census.mjs#UNENFORCED_TEXT_COUNTS, cited twice byscripts/check-tenant-audit-census.mjsas the precedent for its own maintainer-ruled enforced/unenforced split; that export, its present-and-dated check and the quoted paragraph are kept, so the sibling is not touched. Self-test batteries:counts(6 cases) andCRITERION(2) tested only the counts and are deleted;the same criterion, behaviourally(3) is renamedthe dated decomposition: present and dated, never comparedwith the same three cases; the POPULATION case underthe contract still redsno longer asserts a headline count; the 8-case--fix regeneratesbattery is replaced by a 4-case--fix is retiredbattery that runs the flag as a child and asserts exit 2. The roster floor moves 18 to 16 for the two deleted batteries.check:merge-driver(git-merge-regen.mjs --self-test) reconciles.gitattributeswithREGEN_ARTIFACTSboth ways and requires everygen:*script to have a disposition, so the page's row had to go with its route andgen:system-context-censushad to go or gain aNOT_DRIVER_MANAGEDentry. Separately,bash scripts/pm/os-regen-merge.sh --self-test(a step of the requiredLint & Repo Gatesjob, not in the derived family list) holdsOS_REGEN_CLASSESequal to.gitattributesand to the driver's mixed rows: measured red with the route removed (2 cases: the classification table and its control). The page was the onlymixedrow, and that self-test pinned at least one mixed pattern, so with none left it now drives the same fixture and the same two discriminating mutations on a synthetic pattern (docs/fixture/mixed-census.mdx), and the control's third leg injects that synthetic route so it still fires instead of comparing empty to empty. All cases pass after the change, the mutations included.git-merge-regen.mjsneeded no edit: its mixed end-to-end case already reports "no mixed rows declared, nothing to prove", by design.gen:system-context-census.package.jsonitself, the page'sREGEN_ARTIFACTSrow (genfield), the page's own prose, and comments inscripts/pm/os-regen-merge.shand in the gate. No workflow, skill, AGENTS.md line or other script runs it. Deleted rather than turned into a live-count command: the live count already has a direct command (node scripts/isystem-census.mjs) and the gate's pass line prints it on every run, and agen:name that writes nothing would still need a merge disposition for a script that generates nothing.A consequence of removing the counts, measured
Probe at
1bd612bd6, driving the gate'sevaluate()with the real page, census and sweep, plus or minus one read in a symbol the page already anchors (packages/objectql/src/engine.ts#insert, two reads):So adding or deleting one of several reads inside an already-anchored symbol no longer reds anything. Before, it reddened only the counts, and the gate's own prescription for that red was the generator, which rewrote the numbers and required no row; POPULATION has always worked at symbol granularity. A read in a symbol no row anchors still reds, and a symbol whose last read is gone still reds through CLASSIFICATION. The page's precision callout and the "What CI holds" section now state this hole for additions as well as deletions, and the gate header records the probe. Closing it is the span-aware resolver the gate header already names as its own card.
One correction in a rewritten sentence
The plugin-sharing sentence said "The largest single consumer — 17 of the 130 sites"; only the numbers were checked. Measured at
1bd612bd6(node scripts/isystem-census.mjs --json, reads per package):packages/runtime26,packages/plugins/plugin-security21,packages/plugins/plugin-sharing17. It now reads "One of the largest consumers of the flag".Deviations from the claimed file surface
scripts/regen-artifacts.mjsandscripts/pm/os-regen-merge.sh: both are required by the route removal the ruling orders (H3), each red without its edit.Countsrow of the checks table (replaced by aDated snapshotrow, since that check still runs); one sentence namingDECLARED_COUNTS; and the declarations paragraph, which described "the enforced declarations row".Gates
Run on the final head
9354a731e, derived withnode scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack(the same 69 families as the dispatch's lead), plusbash scripts/pm/os-regen-merge.sh --self-test.68 of 69 derived families exit 0 at
9354a731e; the record reconciles withnode scripts/pm/dispatch-gates.mjs --ran: "69 derived, 68 run, 1 NOT-MEASURED, 0 UNRUN".bash scripts/pm/os-regen-merge.sh --self-testalso exits 0 ("all cases pass"; before its edit, 2 cases failed: the classification table and its control).pnpm check:dual-build-cjs-loads. Reason: it loads every package's builtdist/, and this worktree built only the@objectstack/lintand@objectstack/client-reactclosures (exit 3, the gate's own PREREQUISITE NOT MET). The diff touches no package source, manifest or build config.pnpm check:dts-closureandpnpm check:sourcemap-no-sources-contentpassed over the 36 packages built here, not the whole workspace.node scripts/check-system-context-census.mjs: "OK — 130 elevation read sites in 20 packages across 59 files, living in 110 symbol(s); the page cites 123 symbol(s) against 123 required, over 146 anchors and 7 file-level citation(s); 21 declared non-read; 9 file(s) hold more than one read in one symbol (the declared precision loss); 20 row reference(s) resolve to their keyed row, 0 declared unheld." Its--self-test: "all cases passed" (16 batteries).--fix: exit 2, "RETIRED".pnpm check:merge-driver: "all 42 generator(s) across 82 manifest(s) have a recorded disposition", "0 mixed row(s) name a comparator that exists and discriminates", "merge driver wiring is consistent (37 path(s) deliberately excluded)".pnpm --filter @objectstack/spec run check:docs: "226 generated files in sync".pnpm check:role-wordcaught a reserved word in the first draft of one new sentence; reworded, now exit 0..mjsfiles (the other changed files match nofilesglob ineslint.config.mjs): 2 files linted by the--format jsoncount, 0 errors, 0 warnings. The config enables no type-aware linting (noparserOptions.project), so this diff cannot move a verdict on an untouched file. The repo-widepnpm lintis CI's.testortypecheckis owed; the two builds ran only to give build-reading gates their input.Acceptance notes
Observations, not defects; nothing filed.
scripts/git-merge-regen.mjs: theline-anchorscomparator and its comments name this page as the generated case; no row uses it now. Kept on purpose (regen-artifacts.mjskeepsmixedfor the next mixed artifact). Carrier: none.scripts/doc-line-anchors.mjs,scripts/check-lockstep-package-count.mjs,scripts/check-regen-pending.mjsanddocs/audits/gate-census-2026-09.mddescribe the page's generated anchors or counts. They are history or dated audits and are left as written. Carrier: none.Generated by Claude Code