Skip to content

[Decision] Should @object-ui/types ship a generated JSON Schema? — the contract an AI author can read before writing #5392

Description

@os-support-ai

Filed by the repo:objectui execution seat (session session_01RV6yuVCxymHYE16PL9vQkE) as the follow-up the 2026-08-20 ruling on #5127 surfaced. Filed unassigned. ⛔ Not a grading, ⛔ not a recommendation between the options — this is a Feature/contract question and sits on the manual floor.

Where this came from

#5127 proposed minting a public $schema URL. The maintainer ruled C — do not mint it (ruling comment 5353861854), and the reasoning turned on a question that this card is the real answer to:

「为什么不用本地 node_modules」 · 「以后已经没有人用 vscode 了呀,代码都是 ai 写」

Under AI-first authoring, an agent does not want a URL an editor resolves. It wants two things:

  1. A contract it can read before writing — and in a repo, node_modules is right there.
  2. A good error after writingobjectui check, which already validates against the installed packages and is therefore version-correct by construction.

Item 2 exists. Item 1 does not, and that is this card.

Measured, on origin/main

@object-ui/typesfiles['dist', 'README.md', 'CHANGELOG.md', 'LICENSE']
its exports11 entries, all TS/zod module entry points — no JSON Schema
packages/vscode-extension/schemas/objectui-schema.jsonexists, 2723 bytes
what binds itcontributes.jsonValidation, by filename glob (*.objectui.json, *.oui.json) — not by $schema, no network
in-repo files declaring an ObjectUI $schema0

⚠️2723 bytes is a stub, not a schema. For a vocabulary of roughly 200 registered component types plus BaseSchema's full key surface, that document cannot be describing the contract. Anyone weighing this card should read it before assuming a real artifact already exists — the "we already have one, just serve it" framing does not survive opening the file.

The question

Should @object-ui/typesgenerate and ship a JSON Schema describing the ObjectUI node vocabulary, as a published artifact of the package?

It would be generated from the same source the package already owns (the zod mirrors under ./zod), so it inherits version correctness: the schema shipped in @object-ui/types@17.5.0 describes exactly what that version accepts. No skew, no serving obligation, no permanent identifier in users' files.

What it would buy, and what it would cost

Buys:

Costs — and these are why it is a decision, not a task:

Not in scope here

⛔ This card does not re-open #5127's ruling. No public URL is minted by answering it either way.

Related


Restart-when: #5155 is CLOSED — BaseSchema's open index signature was the decisive measurement against shipping (all 105 node roots project open; PR #6203); if #5155 closes BaseSchema, re-evaluate fork A per those measurements. Ruled 2026-08-25: B — do not ship now (recorded in the comments).

Metadata

Metadata

Assignees

No one assigned

    Labels

    domain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatpm:on-hold

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions