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
Part of the metadata liveness audit umbrella #1878 (P2 — spec hygiene, cluster #6).
Problem
Inverse drift: renderers depend on props the spec does not declare. These break a strict Schema.parse() — the renderer needs a key that a spec-validating author would never be allowed to write.
Checklist
dashboard: component / data / rowField / columnField
For each: either add the prop to the spec (if it's legitimately authorable) or remove the renderer's dependency on it so strict validation holds.
Resolution
All three reconciled so strict validation holds:
dashboard — component/data + the pre-ADR-0021 inline-analytics keys (rowField/columnField/…) are quarantined and rejected by the strict DashboardWidgetSchema error map (dashboard.zod.ts), pointing authors at dataset/dimensions/values (renderer-only extras → options). (already on main)
app — accentColor/badgeVariant/separator declared on AppSchema (app.zod.ts). (already on main)
view — the structured buttons/defaults (added to FormViewSchema under spec: structured form button/defaults config on FormViewSchema + enroll view in the liveness ledger #2998 Track A) are now consumed by the objectui ObjectForm renderer, so the two liveness-ledger entries flip experimental → live. The remaining flat form-adapter keys (customFields/className/fields) stay classified as renderer-only ObjectUI extensions, not spec surface (objectui#2545). Landed as a coordinated pair:
Part of the metadata liveness audit umbrella #1878 (P2 — spec hygiene, cluster #6).
Problem
Inverse drift: renderers depend on props the spec does not declare. These break a strict
Schema.parse()— the renderer needs a key that a spec-validating author would never be allowed to write.Checklist
component/data/rowField/columnFieldObjectViewform-adapter keysaccentColor/badgeVariant/separator(also listed under naming drift)For each: either add the prop to the spec (if it's legitimately authorable) or remove the renderer's dependency on it so strict validation holds.
Resolution
All three reconciled so strict validation holds:
component/data+ the pre-ADR-0021 inline-analytics keys (rowField/columnField/…) are quarantined and rejected by the strictDashboardWidgetSchemaerror map (dashboard.zod.ts), pointing authors atdataset/dimensions/values(renderer-only extras →options). (already onmain)accentColor/badgeVariant/separatordeclared onAppSchema(app.zod.ts). (already onmain)buttons/defaults(added toFormViewSchemaunder spec: structured form button/defaults config on FormViewSchema + enrollviewin the liveness ledger #2998 Track A) are now consumed by the objectuiObjectFormrenderer, so the two liveness-ledger entries flipexperimental → live. The remaining flat form-adapter keys (customFields/className/fields) stay classified as renderer-only ObjectUI extensions, not spec surface (objectui#2545). Landed as a coordinated pair:ObjectFormfoldsbuttons/defaultsonto its flat props (merged6dee2cb)live, drops the ADR-0078 markers, regenerates theviewreference doc, updates the audit docs (mergedc4df271)Both merged with green CI. Closing.
Evidence
docs/audits/README.mdcluster Migrate from npm to pnpm #6docs/audits/2026-06-dashboardschema-property-liveness.md,2026-06-viewschema-property-liveness.md,2026-06-appschema-property-liveness.md