From 2debcd197de9d90f9a7b3609a4c100092754ddc1 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 8 Sep 2026 07:31:10 +0000 Subject: [PATCH] docs(gate): the package-README census reads 26 across 8 files, and says which commit it read that on MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `check-doc-component-types.mjs`' header recorded its own census as "26 unregistered `type` literals across 12 files". The `26` is right; the `12` never was. PR #8111 landed the sentence and its own per-file table in the same artifact, and that table lists 8 files with a non-zero unregistered column (app-shell, mobile, plugin-dashboard, plugin-detail, plugin-gantt, plugin-grid, plugin-report, plugin-view) — so the summary contradicted the measurement it summarises, on the same page. Re-derived on c30026715 with this gate's own `deriveRegistryKeys`, its fence walker and its `type`-literal matcher over all 39 `packages/NAME/README.md`: README files: 39 | blocks: 382 | type literals: 240 | registry keys: 656 unregistered sites: 26 across 8 file(s) All 26 `file:line:value` triples match #8111's table element for element, and the four blind spots resolve to `packages/data-objectstack/README.md:603-606` (four unquoted YAML scalars in one `yaml` fence, confirmed against a control term in the same run). Only the file COUNT was wrong. Why the paragraph gained a date rather than just a corrected numeral. This is the class objectui#7448 ruled on one file over — the workflow header of this very gate carried "184 pages (144 `.mdx` + 40 `.md`)", every part drifted, and nothing went red — and the ruling recorded there is that changing 184 to 188 "would only have restarted that clock". Its mechanical half, the `documentCounts` pin, reads workflow YAML headers only; no copy of it reads a gate `.mjs` header, which is why this one rotted unobserved. Deleting the numbers outright (7448's remedy) is not available here: the sentence argues that the census does NOT read zero, so the magnitude is the argument. The middle is the shape `check-doc-fence-languages.mjs` already uses for its own census — `273537957`: 83 files, 105 blocks — a reading anchored to a commit, which cannot rot because it is history rather than a live claim. Comment-only; the gate's verdict is byte-identical either side. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01FhBNJcLRZLe8M87VcUgpKr --- scripts/check-doc-component-types.mjs | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/scripts/check-doc-component-types.mjs b/scripts/check-doc-component-types.mjs index 66e5621d52..dee45abae7 100644 --- a/scripts/check-doc-component-types.mjs +++ b/scripts/check-doc-component-types.mjs @@ -282,11 +282,25 @@ export function appDocsDirs(root) { * ⚠️ Why the leg is NOT here yet, and what has to happen first. The `domain:ui` * ruling on objectui#7896 orders this move census-first: a change that moves a * gate's scan population reports before it enforces, and the widening may land in - * the same pull request ONLY if the census reads zero. It does not. All 39 files - * were walked with this gate's own extractor and registry, and the census read - * **26 unregistered `type` literals across 12 files**, plus 4 blind spots (four - * unquoted YAML scalars in `packages/data-objectstack/README.md`, an object - * field-type vocabulary the same-line string-literal matcher cannot read). + * the same pull request ONLY if the census reads zero. It does not. Re-derived on + * `c30026715` with this gate's own `deriveRegistryKeys`, fence walker and `type` + * matcher over all 39 `packages/NAME/README.md`, the census read + * **26 unregistered `type` literals across 8 files**, plus 4 blind spots (four + * unquoted YAML scalars in `packages/data-objectstack/README.md:603-606`, an + * object field-type vocabulary the same-line string-literal matcher cannot read). + * That reading is DATED, not a live claim: it belongs to the commit named above, + * and the instrument named beside it is how the next reader re-derives it rather + * than inheriting it. It is written that way because the sentence it replaces was + * not — it said `12 files`, a number contradicted by the per-file table of the + * very census PR that landed it (#8111, 8 files with a non-zero column), and it + * had already been quoted onward into objectui#8115's brief, which instructs its + * implementer not to re-derive the census. A file COUNT is what a later reader + * uses to judge whether a fix is complete, so `8 of 12` reads as unfinished work + * that does not exist (objectui#8484). This is the same class objectui#7448 ruled + * on one file over — a count in a header that nothing re-measures will rot — and + * the same remedy `check-doc-fence-languages.mjs` already uses for its own census + * (`273537957`: 83 files, 105 blocks): anchor the reading to a commit instead of + * restating a bare number and restarting the clock. * Landing the leg today would turn `main` red on 26 sites this card is not * authorised to touch. Twenty-five of the 26 are other vocabularies with real declaration sites * — dashboard widget kinds (`DashboardRenderer.tsx`), flow-graph node kinds,