Noticed while converging ComponentMeta's two packages/types declarations (#5893). Filed rather than fixed: packages/core is outside that card's fence, and it is not the same shape as the copy #5893 retired, so it is not a mechanical extension of that convergence.
Measured
Read off origin/main at merge-base efa70ecb2.
packages/core/src/registry/Registry.ts:37 declares its own export type ComponentMeta = { … }. After #5893, that is the only remaining structural copy of the name in the workspace — packages/types' two collapsed onto one.
Key sets:
| declaration | keys |
|---|
packages/types/src/base.ts:511 (11) | labeliconcategoryinputsdefaultPropsexamplesisContainerresizableresizeConstraintstagsdescription |
packages/core/src/registry/Registry.ts:37 (13) | labeliconcategorytiernamespaceskipFallbacklabellinginputsdefaultPropsexamplesisContainerresizableresizeConstraints |
So it is a superset with holes, not a copy:
Why it is worth recording separately
#5893's divergence and this one are the same two keys, which is what makes it more than a tidiness note: tags/description are declared on base.ts, declared on the zod mirror ComponentMetaSchema (packages/types/src/zod/base.zod.ts:298, all eleven keys), and now reachable on the plugin-facing type — but not writable at @object-ui/core's registry meta, which is the declaration a great many component registrations actually import. That is the same asymmetry #4972 recorded for ComponentInput: the publication face advertises keys the authoring face rejects.
The difference from #4972's ComponentInput case, and the reason this is not just "do #5671 again": core's four extra keys mean this cannot be a bare re-export. It needs a decision about shape — which is why it is filed for triage rather than folded into #5893.
Not covered by the cards that look like they cover it.#4972 is closed and scoped to ComponentInput's three copies plus WidgetInput; ComponentMeta is named nowhere in it. #5893 is scoped to the two declarations inside packages/types and says so. #5671 converged ComponentInput in this very file (Registry.ts) and left the ComponentMeta immediately below it untouched — visible in its diff, and deliberate, since it was out of that card's fence.
Possible directions
Not urgent: no registration has tried to write tags or description at core's meta, so nothing a user hits is broken today — the same dormancy #4972's divergence had until it wasn't.
Related: #4580 (the ruling and its reason), #4972 (the ComponentInput census), #5671 (the convergence PR), #5893 (the packages/types convergence this was found under), #4631 (the wider three-surfaces-disagree card).
Filed unassigned.
Noticed while converging
ComponentMeta's twopackages/typesdeclarations (#5893). Filed rather than fixed:packages/coreis outside that card's fence, and it is not the same shape as the copy #5893 retired, so it is not a mechanical extension of that convergence.Measured
Read off
origin/mainat merge-baseefa70ecb2.packages/core/src/registry/Registry.ts:37declares its ownexport type ComponentMeta = { … }. After #5893, that is the only remaining structural copy of the name in the workspace —packages/types' two collapsed onto one.Key sets:
packages/types/src/base.ts:511(11)labeliconcategoryinputsdefaultPropsexamplesisContainerresizableresizeConstraintstagsdescriptionpackages/core/src/registry/Registry.ts:37(13)labeliconcategorytiernamespaceskipFallbacklabellinginputsdefaultPropsexamplesisContainerresizableresizeConstraintsSo it is a superset with holes, not a copy:
tier(ADR-0080 public/internal contract tier),namespace,skipFallback,labelling(the closed three-value host-labelling vocabulary, objectui#3961 / objectui#4857). These are registry mechanics with no counterpart on the types side.base.ts(2):tagsanddescription— the exact pair [finding]ComponentMetahas two published declarations (base.ts+plugin-scope.ts), already diverged bytags/description, and thePluginComponentMetaalias has zero consumers #5893 was filed about.resizeConstraints, whose six members are identical in all declarations.Why it is worth recording separately
#5893's divergence and this one are the same two keys, which is what makes it more than a tidiness note:
tags/descriptionare declared onbase.ts, declared on the zod mirrorComponentMetaSchema(packages/types/src/zod/base.zod.ts:298, all eleven keys), and now reachable on the plugin-facing type — but not writable at@object-ui/core's registry meta, which is the declaration a great many component registrations actually import. That is the same asymmetry #4972 recorded forComponentInput: the publication face advertises keys the authoring face rejects.The difference from #4972's
ComponentInputcase, and the reason this is not just "do #5671 again": core's four extra keys mean this cannot be a bare re-export. It needs a decision about shape — which is why it is filed for triage rather than folded into #5893.Not covered by the cards that look like they cover it.#4972 is closed and scoped to
ComponentInput's three copies plusWidgetInput;ComponentMetais named nowhere in it. #5893 is scoped to the two declarations insidepackages/typesand says so. #5671 convergedComponentInputin this very file (Registry.ts) and left theComponentMetaimmediately below it untouched — visible in its diff, and deliberate, since it was out of that card's fence.Possible directions
core'sComponentMetabecomesComponentMetafrom@object-ui/typesextended with the four registry-only keys — one declaration for the shared nine plus a named registry extension. Nothing narrows;tags/descriptionreach the registration surface.base.ts'ComponentMetaandcorere-exports it outright, the way ComponentInput: re-export the one declaration instead of restating it three times #5671 handledComponentInput. Simplest resulting shape, but it publishes registry mechanics (skipFallback,namespace) on the general type, which may not be wanted.ComponentInput有三份结构副本(types 两份 + core 一份)外加一个窄孪生WidgetInput,而 #4580 的裁定说的是「re-export 而不是 restate」—— 副本之间今天已经有一处分歧 #4972's option (c), still not taken anywhere.Not urgent: no registration has tried to write
tagsordescriptionat core's meta, so nothing a user hits is broken today — the same dormancy #4972's divergence had until it wasn't.Related: #4580 (the ruling and its reason), #4972 (the
ComponentInputcensus), #5671 (the convergence PR), #5893 (thepackages/typesconvergence this was found under), #4631 (the wider three-surfaces-disagree card).Filed unassigned.