Skip to content

docs(gate): the package-README census reads 26 across 8 files, and says which commit it read that on - #8536

Merged
baozhoutao merged 1 commit into
mainfrom
claude/issue-8484-census-file-count
Sep 8, 2026
Merged

docs(gate): the package-README census reads 26 across 8 files, and says which commit it read that on#8536
baozhoutao merged 1 commit into
mainfrom
claude/issue-8484-census-file-count

Conversation

@claude

@claude claude Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Fixes #8484

scripts/check-doc-component-types.mjs' header recorded its own package-README census as "26 unregistered type literals across 12 files". The 26 is right; the 12 never was — and it was wrong against the artifact that produced it, not only against today's tree: PR #8111 landed that sentence and its own per-file table in the same body, and the table lists 8 files with a non-zero unregistered column.

Re-derived, with the gate's own instrument

Not taken from the card. deriveRegistryKeys(root) plus this gate's fence walker and its type-literal matcher, over all 39 packages/NAME/README.md, on c30026715:

README files: 39 | blocks: 382 | type literals: 240 | registry keys: 656
unregistered sites: 26 across 8 file(s)

  4  packages/app-shell/README.md          1  packages/plugin-detail/README.md
  3  packages/mobile/README.md             5  packages/plugin-gantt/README.md
  4  packages/plugin-dashboard/README.md   4  packages/plugin-grid/README.md
  3  packages/plugin-report/README.md      2  packages/plugin-view/README.md

All 26 file:line:value triples match PR #8111's table element for element. The other three numerals in the same sentence were re-measured too and all hold: 39 files, 26 sites, and the 4 blind spots, which resolve to packages/data-objectstack/README.md:603-606 — four unquoted YAML scalars in one yaml fence. That last reading is a zero from the quoted matcher, so it carries a control: the file has 46 fence markers and the term objectstack hits 32 times in the same run, and the four type: lines are the only four in the file.

Only the file COUNT was wrong.

Why the paragraph gained a date instead of just a corrected numeral

This is the class objectui#7448 ruled on, one file over — the workflow header of this same gate carried "184 pages (144 .mdx + 40 .md)", every part drifted, and no check went red over the whole distance. The ruling recorded in check-doc-component-types.test.ts is explicit that correcting the numeral is the wrong move: "Changing 184 to 188 would only have restarted that clock."

Its remedy — delete the count, state the population — is not available here: this sentence's whole argument is that the census does not read zero, so the magnitude is the argument. The middle is the shape check-doc-fence-languages.mjs:345 already uses for its own census (`273537957`: 83 files, 105 blocks): anchor the reading to the commit it was taken on and name the instrument that re-derives it. A dated reading cannot rot, because it is history rather than a live claim.

On pinning the census — considered, declined, with the reason

The card exists because nothing asserts this number. Two honest pins were available and both are refused, deliberately rather than by omission:

  1. Pin the value (26 / 8). Cheap to re-derive, but it guards a paragraph with a known, short remaining life: the entire block exists to explain why the widening leg has not landed, and objectui#8115 rewrites or deletes it. A pin that the very next card on this file must delete is work added to a card already in retriage.
  2. Extend objectui#7448's documentCounts pin to .mjs gate headers. This is the class's own mechanical answer, and its absence here is exactly why the count rotted unobserved — measured: all three copies read workflow YAML headers only. But a verbatim extension is a false-positive machine. Run unchanged over the three doc gates' comment prose it reports 6 / 2 / 8 hits, and most are legitimate dated readings the pattern cannot tell from live claims.

That second point is a real gap and larger than this card, so it is filed rather than dropped: objectui#8535 (finding only, unassigned), which carries the measurement above and costs the two candidate designs.

The date anchor in this diff is what protects the sentence in the meantime, at zero ongoing cost.

Scope

One file, comments only. No behaviour, no floor, no scan population moves. PR #8111's body and objectui#8115's card body are left alone as historical records, per the card. Note for the PM seat, not acted on here: objectui#8115's triage comment is not a historical record — it quotes the 12 as a live instruction while telling its implementer not to re-derive the census. That brief is the PM seat's to correct.

Verification

check result
node scripts/check-doc-component-types.mjs EXIT=0✅ Every documented component type is registered. (188 docs, 1106 blocks, 891 literals, 656 keys)
vitest run scripts/__tests__/check-doc-component-types.test.ts 56/56 passed
the 8 scripts/__tests__ files that name this gate 8 files, 287/287 passed
pnpm type-check:scripts EXIT=0
pnpm check:control-bytes EXIT=0, 6743 tracked text files
pnpm check:comment-mask-corpus EXIT=0
pnpm check:entry-guard EXIT=0
pnpm check:doc-fences EXIT=0
node scripts/check-changeset-presence.mjs EXIT=0 — "no changeset is owed" (1 file changed, 0 published source)
pnpm lint:root EXIT=0 — 277 files, 0 errors (32 pre-existing warnings, none in this file; the changed file alone reports 0/0)

Exit codes were captured before any pipe. Lint was not narrowed: lint:root's full 277-file population ran, the count is read from eslint's own --format json output, and eslint.config.js declares no projectService/project, so type-aware linting is off and a comment-only edit inside one file cannot move any other file's verdict.

pnpm check:doc-snippets is NOT MEASURED, not green and not red: it exits 2 with [unbuilt-package] for every package, i.e. a prerequisite (whole-tree build) not met. It reads doc snippets, not this file, and CI builds.

Also observed and not chased, as instructed: Test (shard 2/4) is flaky on packages/plugin-kanban/src/ObjectKanban.contractEnvelope-6839.test.tsx:134 — objectui#8493, unrelated to this diff.


Generated by Claude Code

…ys which commit it read that on

`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 c300267 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 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FhBNJcLRZLe8M87VcUgpKr
@baozhoutao
baozhoutao marked this pull request as ready for review September 8, 2026 07:56
@baozhoutao
baozhoutao added this pull request to the merge queue Sep 8, 2026
Merged via the queue into main with commit b8b0ac1 Sep 8, 2026
31 checks passed
@baozhoutao
baozhoutao deleted the claude/issue-8484-census-file-count branch September 8, 2026 08:13
@claude

claude Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor Author

LANDED — b8b0ac1d7 on origin/main. domain:devx @ objectui execution seat, PM session session_01FhBNJcLRZLe8M87VcUgpKr, R47, 2026-09-08T08:16Z. PR #8536 (card objectui#8484): added_to_merge_queue 07:56:34Z → removed_from_merge_queue 08:13:13Zmerged **08:13:14Z`. ⭐ One second apart ⇒ that removal is the merge, ⛔ not a dequeue — read from the timeline events, never from a field.

Landing probe, on a re-fetched origin/main (b8b0ac1d71a191b70007ef2270f9be26fbee8247)

Every row is git grep -c -F … origin/main -- scripts/check-doc-component-types.mjs.

probe expect read
26 unregistered `type` literals across 8 files > 0 1
Re-derived on > 0 1
the date anchor c30026715 > 0 1
packages/data-objectstack/README.md:603-606 > 0 1
273537957 — the precedent it copied from check-doc-fence-languages.mjs > 0 1
firing controlplus 4 blind spots, present before and after, same command shape > 0 1
negativeacross 12 files 0 0
nonsense controlzzq-not-a-real-token-8484 0 0

⇒ Both zeros are readings: the same command returns 1 on a phrase this diff did not touch, and 0 on a token that cannot exist.

What is now on main

The gate header no longer claims a file count contradicted by the census that produced it, and — the part that matters more than the numeral — the reading is dated: it names the commit it was measured on and the instrument that re-derives it. ⭐ That is this repository's own recorded verdict on this exact class, applied to the gate that carries it: objectui#7448 ruled that changing one bare number "would only have restarted that clock", and that ruling lives at scripts/__tests__/check-doc-component-types.test.ts:946this gate's own test file.

⚠️Nothing was pinned by this PR, deliberately, and the reason was measured rather than asserted: a verbatim extension of objectui#7448's documentCounts pin to gate .mjs docblocks reports 6 / 2 / 8 hits over the three doc gates' prose, most of them legitimate dated readings the pattern cannot tell from live claims. That gap is objectui#8535.


Generated by Claude Code

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

Labels

None yet

Projects

None yet

2 participants