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
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:
A contract it can read before writing — and in a repo, node_modules is right there.
A good error after writing — objectui 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 exports
11 entries, all TS/zod module entry points — no JSON Schema
contributes.jsonValidation, by filename glob (*.objectui.json, *.oui.json) — not by $schema, no network
in-repo files declaring an ObjectUI $schema
0
⚠️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:
The contract an agent reads before writing, at the version actually installed.
Costs — and these are why it is a decision, not a task:
A generated artifact is a maintained artifact. It needs a generator, a gate that fails when it drifts from the zod source, and a place in the build. This repo has strong opinions about generated files (⛔ hand-editing them) and about gates whose green means "did not look".
.changeset/config.json — the in-repo precedent for an unpkg version-pinned $schema
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).
Filed by the
repo:objectuiexecution seat (sessionsession_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
$schemaURL. The maintainer ruled C — do not mint it (ruling comment5353861854), and the reasoning turned on a question that this card is the real answer to:Under AI-first authoring, an agent does not want a URL an editor resolves. It wants two things:
node_modulesis right there.objectui 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']exportspackages/vscode-extension/schemas/objectui-schema.jsoncontributes.jsonValidation, by filename glob (*.objectui.json,*.oui.json) — not by$schema, no network$schemaBaseSchema'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.0describes 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:
$schemaURL question thatobjectui check把每个 JSON 文件的根type都当成组件键判定,于是在任何 Node 工程里都对 package.json 的"type": "module"报未知类型 #5127 hit. If a URL is ever wanted, the unpkg-pinned form this repo already uses for@changesets/config(https://unpkg.com/@changesets/config@4.0.0/schema.json) becomes available for free, version-pinned, with zero hosting.packages/vscode-extensiona real document to bind instead of the 2.7 KB stub.objectui check把每个 JSON 文件的根type都当成组件键判定,于是在任何 Node 工程里都对 package.json 的"type": "module"报未知类型 #5127's coverage debt a second route: today 258 real schema files (60.8%) leave the judgement surface because single-node leaves like{type: button, label: Send Email}carry no structural key by construction.Costs — and these are why it is a decision, not a task:
ComponentInput有三份结构副本(types 两份 + core 一份)外加一个窄孪生WidgetInput,而 #4580 的裁定说的是「re-export 而不是 restate」—— 副本之间今天已经有一处分歧 #4972,ComponentInputin three structural copies; finding(types): the zod BaseSchema mirror still declares visible/disabled as boolean and ariaLabel as string, after the TS declarations widened #4605, the zod mirror drifting from the TS declarations). Two descriptions that can disagree is the failure mode, and the mitigation — generate, never hand-write, and gate the drift — has to be part of whatever ships.Not in scope here
⛔ This card does not re-open #5127's ruling. No public URL is minted by answering it either way.
Related
objectui check把每个 JSON 文件的根type都当成组件键判定,于是在任何 Node 工程里都对 package.json 的"type": "module"报未知类型 #5127 / PR5334 — the ruling that surfaced this; drops the$schemaarm, keeps the structural arm and skip countComponentInput有三份结构副本(types 两份 + core 一份)外加一个窄孪生WidgetInput,而 #4580 的裁定说的是「re-export 而不是 restate」—— 副本之间今天已经有一处分歧 #4972, finding(types): the zod BaseSchema mirror still declares visible/disabled as boolean and ariaLabel as string, after the TS declarations widened #4605 — the "two descriptions of one contract can disagree" family this would be joining.changeset/config.json— the in-repo precedent for an unpkg version-pinned$schemaRestart-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 closesBaseSchema, re-evaluate fork A per those measurements. Ruled 2026-08-25: B — do not ship now (recorded in the comments).