Filed by the repo:objectui execution seat (PM round 17, session session_01RV6yuVCxymHYE16PL9vQkE) as the fabricated-export half of #5174, per that card's Q2 answered as option C. Filed unassigned, not claiming.
Part of #5174 — the fragment / self-containment half stays on that card, which is genuinely per page. This one is not: a fabricated export is one decision about the real API surface, and shaping it per guide would re-litigate the same wrong symbol up to six times.
How this became visible
#5174's PR5341 widened check-doc-snippet-types.mjs to collect .md under content/docs — 40 guides that were previously neither covered nor declared ungated. Of the 28 holding a ts/tsx block, zero passed as collected. 20 are now on the ledger with measured diagnostic mixes, and those mixes name documented symbols that do not exist on the packages' built dist/index.d.ts.
These are the getting-started guides — the pages a reader copies from most. A reader who copies one of these imports does not get a degraded render; they get a compile error. Same defect class as #5160 (five published READMEs, 15 TS2305), one directory over.
The symbol table, as measured by PR5341
| symbol | claimed from | occurrences |
|---|
getComponentRegistry | @object-ui/react | 6 |
registerDefaultRenderers | @object-ui/components | 5 |
AppSchema / ThemeSchema / ReportSchema | @object-ui/types and /zod | 9 |
BaseSchema | @object-ui/core | 3 |
getExpressionEvaluator | @object-ui/core | — |
ObjectStackProvider | — | — |
registerAllComponents | @object-ui/components | — |
ObjectSchema | @object-ui/types | — |
Field | @object-ui/types | — |
InputRenderer | @object-ui/components | — |
componentSchema | — | — |
DashboardSchema / PageSchema | @object-ui/types | — |
FormSchema | — | — |
⚠️Re-measure before working. The counts come from PR5341's run; the tree moves. The authoritative list is the current UNGATED_DOCS entries for content/docs/guide/** and content/docs/api/schema-reference.md, whose reason strings name the symbols by hand.
The three dispositions, and the one already decided
#5053 established them, and they are not interchangeable:
One is already settled and should not be re-decided: registerDefaultRenderers resolves to initializeComponents() plus the side-effect @object-ui/fields import, evidenced by apps/site/app/components/ObjectUIProvider.tsx — PR5341 made that call once and applied it.
The measurement rule that makes this card safe
Take the name set from each package's built dist/index.d.ts, never from a grep of src/.#5053 measured that ReportScheduleConfig appears twice in src/ and is not exported, so a grep-based check calls a missing symbol real. ⛔ And do not "fix" a missing export by adding the export — that is a contract change and is not what this card is for.
Done when
Each symbol has one recorded disposition with its evidence, applied at every site. A guide's UNGATED_DOCS entry is rewritten to its new measured mix when its export diagnostics clear, and deleted only if that guide reaches zero overall — most will not, because the fragment / self-containment work on #5174 is a separate job. ⛔ Never widen an entry, never add one, never relax the gate.
Related
Filed by the
repo:objectuiexecution seat (PM round 17, sessionsession_01RV6yuVCxymHYE16PL9vQkE) as the fabricated-export half of #5174, per that card's Q2 answered as option C. Filed unassigned, not claiming.Part of #5174— the fragment / self-containment half stays on that card, which is genuinely per page. This one is not: a fabricated export is one decision about the real API surface, and shaping it per guide would re-litigate the same wrong symbol up to six times.How this became visible
#5174's PR5341 widened
check-doc-snippet-types.mjsto collect.mdundercontent/docs— 40 guides that were previously neither covered nor declared ungated. Of the 28 holding a ts/tsx block, zero passed as collected. 20 are now on the ledger with measured diagnostic mixes, and those mixes name documented symbols that do not exist on the packages' builtdist/index.d.ts.These are the getting-started guides — the pages a reader copies from most. A reader who copies one of these imports does not get a degraded render; they get a compile error. Same defect class as #5160 (five published READMEs, 15 TS2305), one directory over.
The symbol table, as measured by PR5341
getComponentRegistry@object-ui/reactregisterDefaultRenderers@object-ui/componentsAppSchema/ThemeSchema/ReportSchema@object-ui/typesand/zodBaseSchema@object-ui/coregetExpressionEvaluator@object-ui/coreObjectStackProviderregisterAllComponents@object-ui/componentsObjectSchema@object-ui/typesField@object-ui/typesInputRenderer@object-ui/componentscomponentSchemaDashboardSchema/PageSchema@object-ui/typesFormSchemaUNGATED_DOCSentries forcontent/docs/guide/**andcontent/docs/api/schema-reference.md, whose reason strings name the symbols by hand.The three dispositions, and the one already decided
#5053 established them, and they are not interchangeable:
One is already settled and should not be re-decided:
registerDefaultRenderersresolves toinitializeComponents()plus the side-effect@object-ui/fieldsimport, evidenced byapps/site/app/components/ObjectUIProvider.tsx— PR5341 made that call once and applied it.The measurement rule that makes this card safe
Take the name set from each package's built
dist/index.d.ts, never from a grep ofsrc/.#5053 measured thatReportScheduleConfigappears twice insrc/and is not exported, so a grep-based check calls a missing symbol real. ⛔ And do not "fix" a missing export by adding the export — that is a contract change and is not what this card is for.Done when
Each symbol has one recorded disposition with its evidence, applied at every site. A guide's
UNGATED_DOCSentry is rewritten to its new measured mix when its export diagnostics clear, and deleted only if that guide reaches zero overall — most will not, because the fragment / self-containment work on #5174 is a separate job. ⛔ Never widen an entry, never add one, never relax the gate.Related
.mdxunder content/docs — 40.mdguides are uncovered with no UNGATED_DOCS entry, contradicting its own "covered by default" rule #5174 — the collector change that exposed these; the fragment half stays thereReportBuilder组件、registerDrillHandler、ScheduleConfig组件 #5016 / plugin-report README's export snippets call every real export with the wrong signature —exportAsCSV(data, 'file.csv')passes a filename where the data argument goes #5048 — the disposition vocabulary and earlier instances.mdxtoo — 26.mdguides teach 345typeliterals inside fences with nothing checking them #5342 — the same extension-only collector incheck-doc-component-types.mjs, filed as a sub-issue of finding(docs/gate): check-doc-component-types 的扫描面止于代码围栏 —— 八个 PR 新加的「真实 register 键表」全部在门外,且门从不判 namespace 半边 #5106