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
Found while retiring element:filter at element grain (#9220). Out of that card's scope — its ruling covered element:filter only — so recorded here unassigned for triage.
Measured (2026-08-17, during the #9220 verdict sweep)
grep for element:form in objectui (main 5ffcc14) finds no renderer registration: the only non-test hits are the same stale comment packages/components/src/renderers/basic/elements.tsx:18 ("heavier interactive elements (element:filter, element:form) live in their own files" — the same sentence whose element:filter half ADR-0049 candidate: element:filter declares targetVariable (and possibly the whole element) with no renderer or reader in any repo #9220 just falsified) and the Studio palette exclusion packages/app-shell/src/views/metadata-admin/previews/block-types.ts:157 — 'element:form': 'no renderer — use the object-bound object-form block', i.e. Studio deliberately does not offer it and records the replacement.
Found while retiring
element:filterat element grain (#9220). Out of that card's scope — its ruling coveredelement:filteronly — so recorded here unassigned for triage.Measured (2026-08-17, during the #9220 verdict sweep)
element:formin objectui (main5ffcc14) finds no renderer registration: the only non-test hits are the same stale commentpackages/components/src/renderers/basic/elements.tsx:18("heavier interactive elements (element:filter, element:form) live in their own files" — the same sentence whoseelement:filterhalf ADR-0049 candidate:element:filterdeclarestargetVariable(and possibly the whole element) with no renderer or reader in any repo #9220 just falsified) and the Studio palette exclusionpackages/app-shell/src/views/metadata-admin/previews/block-types.ts:157—'element:form': 'no renderer — use the object-bound object-form block', i.e. Studio deliberately does not offer it and records the replacement.ElementFormPropsSchema(packages/spec/src/ui/component.zod.ts) declares a full form contract —object,fields,mode,submitLabel,onSubmit(CEL),aria— andpackages/lint/src/validate-page-field-bindings.tscarries an'element:form': { props: ['fields'] }binding entry. If nothing renders the element, every one of those keys is a capability claim nothing keeps — the ADR-0049 candidate:element:filterdeclarestargetVariable(and possibly the whole element) with no renderer or reader in any repo #9220 shape one element over.element:filterdeclarestargetVariable(and possibly the whole element) with no renderer or reader in any repo #9220's sweep, not a completed verdict. Per the ADR-0049 candidate:element:filterdeclarestargetVariable(and possibly the whole element) with no renderer or reader in any repo #9220 precedent, the element-level verdict measurement (all repos) comes first; per-key work is the wrong grain if the whole element is dead.Relations
element:filterdeclarestargetVariable(and possibly the whole element) with no renderer or reader in any repo #9220 (element:filter retirement — the direct precedent, including the keptComponentPropsMaprow mechanism and the D2 strip conversion shape).object/filterdata-binding family onelement:form(and formerlyelement:filter) for v18 — an element-grain verdict here would subsume that card'selement:formhalf; triage should sequence them.object-formblock (ComponentPropsMap['object-form'], A typo'd key inside a page component'spropertiesis accepted in silence — the props bag is a passthrough record and the SDUI props gate has no schema to dispatch forobject-*blocks #7751).Backlink: #9220.