Found while executing ruling step 1 of objectui#6771 (the body liveness census, branch claude/issue-6771-body-dialect-census). Out of that dispatch's fence — it is scoped to measurement only — so this is filed rather than swept in.
objectui#6771's 2026-09-01 ruling retires the body child-list dialect in five steps. Steps 2 and 4 enumerate renderers and the tier; step 5 says "corpus and teaching migrate in the same commit — the platform never refuses a spelling it still ships."
The census measured two populations the five steps never name. Both are inside this repo.
1. The platform PRODUCES body metadata today
These are not corpus and not teaching. They are code paths that emit body-spelled metadata into files a user then owns:
| producer | body nodes | what it emits |
|---|
packages/cli/src/commands/init.ts | 53 | the scaffolded app.json for every objectui init template (simple, form, …) |
packages/vscode-extension/src/extension.ts | 14 | the extension's new-file templates (empty, form, dashboard) |
packages/components/src/renderers/complex/carousel.tsx | 3 | shipped defaultProps.items |
packages/components/src/renderers/complex/resizable.tsx | 2 | shipped defaultProps panel content |
packages/runner/src/App.tsx | 1 | the runtime "no index page found" fallback tree |
packages/components/src/renderers/complex/scroll-area.tsx | 1 | shipped defaultProps |
Verbatim from init.ts, the simple template:
simple: {type: 'div',className: 'min-h-screen flex items-center justify-center …',body: {type: 'card',…body: {type: 'div',className: 'p-6 space-y-4',body: […]},},},⇒ Step 4 (the tier teaches children only) cannot land before these move, or every freshly scaffolded project fails validation on the first run of the tool that scaffolded it. That is the same ordering constraint step 5 states, applied to a surface step 5 does not mention: the defaultProps cases are stronger still, because the registration ships the dialect inside its own declared default.
2. Three generic body readers live outside the renderer tree
Step 2 converges registrations. These three resolve body for any node type, so they outlive that convergence and keep the dialect alive after it lands:
packages/core/src/validation/schema-validator.ts:419 — const children = schema.children || schema.body;packages/vscode-extension/src/providers/SchemaValidator.ts:102packages/vscode-extension/src/providers/PreviewProvider.ts:226,240
Control for that reading, same query shape, same run: schema.children outside packages/components/src/renderers resolves in 14 files, so the three hits above are a positive result and not an empty pathspec. (An earlier attempt at this query used a packages/*/src pathspec that returned zero for bothbody and children — a vacuous control. The reading above is the re-run with a control that fires.)
Measured with
pnpm census:body-dialect (scripts/body-dialect-census.mjs, added on the objectui#6771 census branch), plus git grep with the control noted above. Repo state 47035ce79.
Why this is filed rather than fixed
Every item above is inside objectui#6771's step 2–5 fence, which is Clause-② yes at dispatch and tier-gated. This card only records that the population is wider than the ruling enumerates, so the retirement is not planned against a short list. ⛔ No narrowing is proposed here.
Related
objectui#6771 (the retirement and its census) · objectui#6829 (badge nodes authoring children, independently reproduced by the same census: 7 nodes, same four files)
Found while executing ruling step 1 of objectui#6771 (the
bodyliveness census, branchclaude/issue-6771-body-dialect-census). Out of that dispatch's fence — it is scoped to measurement only — so this is filed rather than swept in.objectui#6771's 2026-09-01 ruling retires the
bodychild-list dialect in five steps. Steps 2 and 4 enumerate renderers and the tier; step 5 says "corpus and teaching migrate in the same commit — the platform never refuses a spelling it still ships."The census measured two populations the five steps never name. Both are inside this repo.
1. The platform PRODUCES
bodymetadata todayThese are not corpus and not teaching. They are code paths that emit
body-spelled metadata into files a user then owns:bodynodespackages/cli/src/commands/init.tsapp.jsonfor everyobjectui inittemplate (simple,form, …)packages/vscode-extension/src/extension.tsempty,form,dashboard)packages/components/src/renderers/complex/carousel.tsxdefaultProps.itemspackages/components/src/renderers/complex/resizable.tsxdefaultPropspanel contentpackages/runner/src/App.tsxpackages/components/src/renderers/complex/scroll-area.tsxdefaultPropsVerbatim from
init.ts, thesimpletemplate:⇒ Step 4 (the tier teaches
childrenonly) cannot land before these move, or every freshly scaffolded project fails validation on the first run of the tool that scaffolded it. That is the same ordering constraint step 5 states, applied to a surface step 5 does not mention: thedefaultPropscases are stronger still, because the registration ships the dialect inside its own declared default.2. Three generic
bodyreaders live outside the renderer treeStep 2 converges registrations. These three resolve
bodyfor any node type, so they outlive that convergence and keep the dialect alive after it lands:packages/core/src/validation/schema-validator.ts:419—const children = schema.children || schema.body;packages/vscode-extension/src/providers/SchemaValidator.ts:102packages/vscode-extension/src/providers/PreviewProvider.ts:226,240Control for that reading, same query shape, same run:
schema.childrenoutsidepackages/components/src/renderersresolves in 14 files, so the three hits above are a positive result and not an empty pathspec. (An earlier attempt at this query used apackages/*/srcpathspec that returned zero for bothbodyandchildren— a vacuous control. The reading above is the re-run with a control that fires.)Measured with
pnpm census:body-dialect(scripts/body-dialect-census.mjs, added on the objectui#6771 census branch), plusgit grepwith the control noted above. Repo state47035ce79.Why this is filed rather than fixed
Every item above is inside objectui#6771's step 2–5 fence, which is
Clause-② yes at dispatchand tier-gated. This card only records that the population is wider than the ruling enumerates, so the retirement is not planned against a short list. ⛔ No narrowing is proposed here.Related
objectui#6771 (the retirement and its census) · objectui#6829 (
badgenodes authoringchildren, independently reproduced by the same census: 7 nodes, same four files)