Decision card routed from objectui#4600 (PM session session_017Qqyix2QcnpUC9XeYVDzx3), on the contract-first pattern of #7496/#7917. Full measurement: objectui#4600, comment 5287946890 (measured at objectui f69127fcc, @objectstack/spec@17.0.0-rc.6).
The question
objectui ships a schema catalog of SDUI component JSON (type: 'dashboard' nodes rendered by SchemaRenderer), published in the docs gallery and declared an AI RAG/few-shot corpus. All 9 plugin-dashboard entries are REJECTED by the spec's DashboardSchema — but on three axes with different meanings, and no existing ruling says which schema such a node is supposed to satisfy:
- Class A — metadata identity: every entry lacks
name/label. DashboardSchema models a stored platform metadata DOCUMENT; an SDUI component node has no metadata identity by construction. - Class B — SDUI envelope:
type: 'dashboard' (all 9) and title (6) are unrecognized_keys to the spec — but type is what makes it an SDUI node at all. - Class C2 — metric-card: 3 entries / 11 widgets use objectui's
metric-card (static presentational value/icon/trend), which is not in the spec's 20-value widget enum and has no dataset behind a hard-coded string. These render perfectly today; they are only spec-invalid.
(Class C1 — the retired inline-analytics shape — is NOT part of this question; objectui is fixing those examples to live surfaces under its own card.)
The options, as measured
- An SDUI dashboard node is validated by objectui's own
DashboardWidgetSchema/component schema, not the spec's DashboardSchema — the spec document schema governs stored metadata only. Then the catalog gate objectui wants is against the component schema, and classes A/B are non-issues by definition. Cost: the corpus never demonstrates the platform-metadata form. - The spec grows an explicit component/embedded projection of
DashboardSchema (identity-optional, envelope-aware) that SDUI nodes validate against. Cost: a new spec surface with its own maintenance. - The catalog migrates to genuine metadata documents (add identity, drop the envelope) and the SDUI corpus is regenerated from them. Cost: measured in objectui#4600 — it inverts what the examples are for, and metric-card still has no home.
- metric-card: joins the spec's widget enum (with a static-value story) / stays an objectui extension explicitly allowed by whichever schema wins above.
objectui's downstream work (gallery truth, the narrow GlobalFilterSchema gate from #4356) proceeds either way; a full DashboardSchema catalog gate stays impossible until this is ruled.
Generated by Claude Code
Decision card routed from objectui#4600 (PM session
session_017Qqyix2QcnpUC9XeYVDzx3), on the contract-first pattern of #7496/#7917. Full measurement: objectui#4600, comment 5287946890 (measured at objectuif69127fcc,@objectstack/spec@17.0.0-rc.6).The question
objectui ships a schema catalog of SDUI component JSON (
type: 'dashboard'nodes rendered bySchemaRenderer), published in the docs gallery and declared an AI RAG/few-shot corpus. All 9 plugin-dashboard entries are REJECTED by the spec'sDashboardSchema— but on three axes with different meanings, and no existing ruling says which schema such a node is supposed to satisfy:name/label.DashboardSchemamodels a stored platform metadata DOCUMENT; an SDUI component node has no metadata identity by construction.type: 'dashboard'(all 9) andtitle(6) areunrecognized_keysto the spec — buttypeis what makes it an SDUI node at all.metric-card(static presentationalvalue/icon/trend), which is not in the spec's 20-value widget enum and has no dataset behind a hard-coded string. These render perfectly today; they are only spec-invalid.(Class C1 — the retired inline-analytics shape — is NOT part of this question; objectui is fixing those examples to live surfaces under its own card.)
The options, as measured
DashboardWidgetSchema/component schema, not the spec'sDashboardSchema— the spec document schema governs stored metadata only. Then the catalog gate objectui wants is against the component schema, and classes A/B are non-issues by definition. Cost: the corpus never demonstrates the platform-metadata form.DashboardSchema(identity-optional, envelope-aware) that SDUI nodes validate against. Cost: a new spec surface with its own maintenance.objectui's downstream work (gallery truth, the narrow
GlobalFilterSchemagate from #4356) proceeds either way; a fullDashboardSchemacatalog gate stays impossible until this is ruled.Generated by Claude Code