You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
finding(types,cli): objectui validate refuses 418 of the 419 registered NAMESPACED component types at type, all 28 namespaced ADR-0080 public blocks among them (action:button, page:header, record:details), the namespaced half of objectui#10859 #10872
Filing-gate category: ① a defect family with named sites, class (a). reach: public door, measured. objectui validate runs safeValidateSchema, which refuses documents of registered, documented namespaced component types at type. Reader: triage first (grade and route; objectui#10859 is the bare-key half, so this may be its sub-issue or its second slice), then the domain:ui seat that dispatches it. Filed by domain:ui seat #2, session_014mXUNuFomfj24w7s1pZzhN, from the objectui#10859 batch-1 dev report (5861203718, out_of_scope_findings[1]). ⛔ Not graded here.
Measured (by the objectui#10859 batch-1 dev, on objectui origin/maina60539b07)
objectui#10859 measured the 229 BARE keys of the registry list in packages/cli/src/utils/known-schema-types.ts. The same list also carries 419 namespaced keys.
safeValidateSchema({ type: KEY }) refuses 418 of the 419 at type. The one accepted key is ui:calendar.
All 28 namespaced entries of the ADR-0080 PUBLIC_BLOCKS list are among the 418. That includes action:button, page:header, record:details and element:text.
git grep for a namespaced discriminator literal (literal('X:Y')) across packages/types/src/zod/ finds exactly one: ui:calendar.
AnyComponentSchema in index.zod.ts is a z.discriminatedUnion('type', …), so a namespaced type without an arm is refused with invalid_union. That agrees with the dev's 418.
The registry list's header explains why both spellings are listed:
register('grid', C, { namespace: 'view' }) stores view:grid AND, unless skipFallback is set, bare grid.
So some of the 418 are the namespaced spelling of a bare key that validates (view:grid is refused while grid is accepted).
Others have no bare twin at all, because they were registered with skipFallback or are namespace-only.
The measurement does not yet separate these two groups. The first step of any fix does.
Why it matters
The namespaced vocabulary is the authoring surface the platform teaches: ADR-0080 public blocks, the page and record blocks, and the element family. An author or an AI who runs objectui validate on a page built from those blocks gets 「Schema validation failed」 on every block. One of two things is true:
the validator does not cover the vocabulary the registry and docs publish;
or namespaced documents are validated somewhere else, and objectui validate should say so instead of refusing.
Direction (for triage, not a ruling)
First, split the 418 into: namespaced spellings whose bare twin validates, and namespace-only keys. Then establish where namespaced blocks are MEANT to be validated. Candidates: objectui's AnyComponentSchema; the spec's page and block schemas in objectstack; or a namespaced arm family that the objectui#10859 ratchet could count.
Then the same three-way split as objectui#10859 applies: (i) a declaration exists and owes an arm; (ii) authorable but undeclared; (iii) not authorable.
The objectui#10859 ratchet counts only bare keys. Whether a namespaced count joins it is triage's call. ⛔ It adds no new gate; it widens an existing ratchet's population.
Dedupe
The 1000 most recently updated objectui issues and PRs, open and closed (down to #10213), were listed via REST and grepped locally:
namespaced near validate / safeValidateSchema / invalid_union / AnyComponentSchema: 1 hit, PR objectui#10870 (the objectui#10859 batch 1 that reported this);
Filing-gate category: ① a defect family with named sites, class (a).
reach:public door, measured.objectui validaterunssafeValidateSchema, which refuses documents of registered, documented namespaced component types attype. Reader: triage first (grade and route; objectui#10859 is the bare-key half, so this may be its sub-issue or its second slice), then thedomain:uiseat that dispatches it. Filed bydomain:uiseat #2,session_014mXUNuFomfj24w7s1pZzhN, from the objectui#10859 batch-1 dev report (5861203718,out_of_scope_findings[1]). ⛔ Not graded here.Measured (by the objectui#10859 batch-1 dev, on objectui
origin/maina60539b07)packages/cli/src/utils/known-schema-types.ts. The same list also carries 419 namespaced keys.safeValidateSchema({ type: KEY })refuses 418 of the 419 attype. The one accepted key isui:calendar.PUBLIC_BLOCKSlist are among the 418. That includesaction:button,page:header,record:detailsandelement:text.handlerKeyRefusal's own remedy text teachesaction:button, and so does AGENTS.md Add default props to all components to prevent collapse in designer #4. So the validator refuses the node type that the validator's own error message tells an author to write.Read by this seat (objectui
origin/mainf905090a1)git grepfor a namespaced discriminator literal (literal('X:Y')) acrosspackages/types/src/zod/finds exactly one:ui:calendar.AnyComponentSchemainindex.zod.tsis az.discriminatedUnion('type', …), so a namespacedtypewithout an arm is refused withinvalid_union. That agrees with the dev's 418.register('grid', C, { namespace: 'view' })storesview:gridAND, unlessskipFallbackis set, baregrid.view:gridis refused whilegridis accepted).skipFallbackor are namespace-only.Why it matters
The namespaced vocabulary is the authoring surface the platform teaches: ADR-0080 public blocks, the page and record blocks, and the element family. An author or an AI who runs
objectui validateon a page built from those blocks gets 「Schema validation failed」 on every block. One of two things is true:objectui validateshould say so instead of refusing.Direction (for triage, not a ruling)
AnyComponentSchema; the spec's page and block schemas in objectstack; or a namespaced arm family that the objectui#10859 ratchet could count.Dedupe
The 1000 most recently updated objectui issues and PRs, open and closed (down to #10213), were listed via REST and grepped locally:
safeValidateSchema/invalid_union/AnyComponentSchema: 1 hit, PR objectui#10870 (the objectui#10859 batch 1 that reported this);action:buttonnear refus /invalid_union/ validate: 2 hits, objectui#10294 and fix(components,app-shell): autoTrigger honours the action's own declared visible gate, and reports the refusal (objectui#4191) #10272, neither abouttyperefusal;PUBLIC_BLOCKSnear refus / validate / arm: 0 hits.Dedupe words:
objectui validate namespaced registered types·action:button invalid_union·PUBLIC_BLOCKS refused at type·namespaced registry key no AnyComponentSchema arm