Skip to content

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

Description

@objectstack-fleet

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/main a60539b07)

  • 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.
  • handlerKeyRefusal's own remedy text teaches action: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/main f905090a1)

  • 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:

Dedupe words: objectui validate namespaced registered types · action:button invalid_union · PUBLIC_BLOCKS refused at type · namespaced registry key no AnyComponentSchema arm

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:devpathThe road — create, dev, verify, publish/install, connect an agent, iteratebugSomething isn't workingdomain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatpm:queuepriority:p1

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions