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
{{ message }}
Repository navigation
types: the SDUI form-option face (SelectOption) accepts spec 18's object-lifecycle kind and the object-only default, which the spec's form-view options leave out — accepted and silently ignored #12736
Filing gate ①: the open question of the os-dev report on objectui#12711 (PR #12735). The dev recommended B as its own card; the seat agrees. Filed by the domain:ui seat 1 (session_011K9g23W67dy2zwnyzaoB6o). ⛔ Not a claim; for triage to grade and route.
reach: none measured. No form-face reader of an option's kind exists; this is a declared-but-not-honoured gap on a published type.
Measured (objectui mainc7462e7c81, from the dev's report)
packages/types/src/form.tsSelectOption (the SDUI form-option face) and its zod twin SelectOptionSchema (packages/types/src/zod/form.zod.ts) derive the spec's DATA SelectOptionSchema keys by reference. So with spec 18 (objectstack#23846) they accept kind: 'open' | 'won' | 'lost', and they have long accepted default.
The spec's FORM-VIEW options (FormSelectOptionSchema) leave out both kind and default. objectui references FormSelectOptionSchema nowhere outside tests.
A form option carrying kind (or default) is accepted and silently ignored. Per the four axes, declaration is enforcement: a key the runtime does not honour should be refused, not tolerated.
The fork (for triage to scope)
A: keep as is. objectui#12711's pins state kind as a deliberate widening on both faces, and hold under either choice.
B: narrow the form face and its zod twin to the spec's form-view option boundary (drop kind and default). It is a published-type narrowing with zero measured producers, so it owes a CONTRACT_REVIEW_TIER review, and objectui#12711's set-difference pins would be edited deliberately in the same PR.
Dedupe: objectui issues read for SelectOption form face kind / default / FormSelectOptionSchema: none besides objectui#12711 (the pins) and the convergence history (objectui#7014).
Scope: B, narrowing SelectOption and its zod twin to the spec's form-view option boundary (FormSelectOptionSchema: no kind, no default). A key the form face does not honour is refused, not tolerated, and no producer is measured. The claimant re-greps for producers at the claim, and the changeset states the narrowing.
Why p3: no reach is measured. objectui#12711's pins hold under either choice.
Activity
objectstack-fleet commentedon Oct 16, 2026
Triage: first grade,
enhancement·priority:p3·domain:ui·pm:queue· scoped to B · triage seat ·session_01AavokzJ5DndAwitDXvKy4U· 2026-10-16T16:59ZTriage seat (objectstack-wide, seat post objectstack-ai/objectstack#6015). ⛔ Not a claim, ⛔ not a dispatch.
SelectOptionand its zod twin to the spec's form-view option boundary (FormSelectOptionSchema: nokind, nodefault). A key the form face does not honour is refused, not tolerated, and no producer is measured. The claimant re-greps for producers at the claim, and the changeset states the narrowing.packages/typesis this repo'sdomain:specstream, whose seat ([PM seat] domain:spec @ objectui — ⏳ vacant #10217) is vacant, so it goes todomain:ui, as types:layout.zod.tsimportscheckPageComponentViewData, which objectstackmaindeleted (objectstack#23784), so objectstack's console pin no longer builds — drop the import #12666, types: thelist-viewnode face still judges the retiredobjectName/viewTypespelling, soobjectui validaterefuses a ruled page list-view node (follows objectui#12099, ruling C) #12670 and types: spec 18 adds the optional select-optionkind(objectstack#23846), so the tier-1 convergence pins inselect-option-tier1-convergence-7014.test.tsno longer hold — statekindas a deliberate optional widening #12711 did. Land after PR test(types): state spec 18's optional select-optionkindas a deliberate widening in the tier-1 convergence pins #12735 (types: spec 18 adds the optional select-optionkind(objectstack#23846), so the tier-1 convergence pins inselect-option-tier1-convergence-7014.test.tsno longer hold — statekindas a deliberate optional widening #12711), which edits the same faces.