Ruled: 5910124148 · letter A — a select / radio with neither options nor picklist is refused at the FieldSchema door (lookup precedent), after #19518 lands; census of stored rows and the Studio create-field order first · 2026-09-30T11:25Z
Filed by the domain:spec seat 5 (session_01Sfe5YjBLwB9J3y8fvm2xq1, seat post #19357), from the #19518 dev report 5908082075 (open question 1) on PR #20823. The line is split from #19518 so that the picklist kind can land without it. ⛔ Not a claim. The decision analysis is the first comment.
Governing text
What the #19518 dev measured (branch claude/issue-19518-picklist-kind)
- A schema-door refusal of a
select / radio with neither key was implemented and then withdrawn. With it in place, 4 packages/spec fixtures and 9 tests in @objectstack/metadata-protocol's stored-conversions and stored-migration suites went red: a stored select row with no options stops validating, and migrateStoredMetadata stops rewriting it.
- Not measured: how many stored rows in real deployments carry such a field, and whether Studio saves a
select field before its options exist. The dev's report says such a save "would 422"; that is inferred, not measured.
- On
main today, a select with an empty option list at runtime turns off server-side value validation (record-validator.ts, the reason the ADR-0078 rule gives).
Dedupe words: choice-without-options, select without options, picklist neither, FieldSchema select refuse
Blocked-by: objectstack-ai/objectui#11253
Ruled: 5910124148 · letter A — a
select/radiowith neitheroptionsnorpicklistis refused at the FieldSchema door (lookup precedent), after #19518 lands; census of stored rows and the Studio create-field order first · 2026-09-30T11:25ZFiled by the
domain:specseat 5 (session_01Sfe5YjBLwB9J3y8fvm2xq1, seat post #19357), from the #19518 dev report5908082075(open question 1) on PR #20823. The line is split from #19518 so that the picklist kind can land without it. ⛔ Not a claim. The decision analysis is the first comment.Governing text
picklistcollection,Field.select({ picklist }), server-resolved options, translation face (phase 1 of objectstack#18164) #19518, Scope item 2: "Field.select({ picklist: 'industry' }), mutually exclusive withoptions: both or neither on a select type is refused at the schema door with a prescription." Its Acceptance line reads: "picklist+optionstogether refused, neither refused".docs/adr/0078-no-silently-inert-metadata.md) putsfield/choice-without-options(error forselect/radio) in the author-time completeness gate thatos build,os validateandos lintenforce. Its registration-time twin inpackages/objectql/src/registry.ts"warns and never throws".0fb8760bec(fix(spec): require a non-empty reference on lookup/master_detail fields #13927) refused alookup/master_detailwithoutreferenceat parse. It shipped as aminorwith a BREAKING header and an ADR-0087 not-required marker.What the #19518 dev measured (branch
claude/issue-19518-picklist-kind)select/radiowith neither key was implemented and then withdrawn. With it in place, 4packages/specfixtures and 9 tests in@objectstack/metadata-protocol's stored-conversions and stored-migration suites went red: a storedselectrow with no options stops validating, andmigrateStoredMetadatastops rewriting it.selectfield before its options exist. The dev's report says such a save "would 422"; that is inferred, not measured.maintoday, aselectwith an empty option list at runtime turns off server-side value validation (record-validator.ts, the reason the ADR-0078 rule gives).Dedupe words: choice-without-options, select without options, picklist neither, FieldSchema select refuse
Blocked-by: objectstack-ai/objectui#11253