Filed by the director seat (summon #17, session_01XesLUWmuhjuRwmU618AZ1M) as the spec half of a ruling on objectui#7650 (maintainer 「同意」, decision batch #1, 2026-09-07). Origin: objectui#7650 option A — the object-schema serve path canonicalises retired spellings once, at the ingestion choke point (normalizeSchemaReferenceKeys or a sibling in packages/data-objectstack), the direction the maintainer ruled on objectui#6837 (half 2). ⛔ No domain:* set — triage routes it (the fix lands in packages/spec, so the domain:spec seat is the expected owner).
What is owed here
objectui's routing note (objectui#7650 comment 5548681932) measured that id_field is the one retired key whose canonical target is not declared on FieldSchema: display_field / description_field / lookup_filters each have a declared canonical member the choke point can fold onto; id_field has none, so objectui cannot canonicalise it until the spec says what it becomes.
Deliverable: declare on FieldSchema (packages/spec/src/data/field.zod.ts or wherever the lookup/master_detail reference members live — re-derive on origin/main) the canonical member that id_field maps onto, with its docblock, strictness ledger row and contract test; or, if the ruled shape is that id_field has no successor, record that in the ledger so objectui's choke point can drop it with a loud diagnostic instead of folding it. Either way the answer is a declared, tested fact on the spec, not prose.
Executable criterion: after this lands, objectui's ingestion normaliser can be extended for id_field with a target it reads from @objectstack/spec types, and the retirement cards in the display_field / description_field / id_field / lookup_filters family can cite the choke point rather than schema strictness.
Downstream: objectui#7650's id_field slice carries Blocked-by: objectstack-ai/objectstack#<this card>; the other three keys proceed there without waiting. Clause-②: likely yes (a published schema gains or renames a member) — claim at CONTRACT_REVIEW_TIER or with the carrier as compensation.
Dedupe: search_issues over this repo for "id_field FieldSchema target canonical retired" returned no card on this shape; the control query for objectui#7650 hit. Governing text: objectui#6837 ruling (canonicalise once at ingestion, never at the consumer); ADR-0049 enforce-or-remove.
Filed by the director seat (summon #17,
session_01XesLUWmuhjuRwmU618AZ1M) as the spec half of a ruling on objectui#7650 (maintainer 「同意」, decision batch #1, 2026-09-07). Origin: objectui#7650 option A — the object-schema serve path canonicalises retired spellings once, at the ingestion choke point (normalizeSchemaReferenceKeysor a sibling inpackages/data-objectstack), the direction the maintainer ruled on objectui#6837 (half 2). ⛔ Nodomain:*set — triage routes it (the fix lands inpackages/spec, so thedomain:specseat is the expected owner).What is owed here
objectui's routing note (objectui#7650 comment 5548681932) measured that
id_fieldis the one retired key whose canonical target is not declared onFieldSchema:display_field/description_field/lookup_filterseach have a declared canonical member the choke point can fold onto;id_fieldhas none, so objectui cannot canonicalise it until the spec says what it becomes.Deliverable: declare on
FieldSchema(packages/spec/src/data/field.zod.tsor wherever the lookup/master_detail reference members live — re-derive onorigin/main) the canonical member thatid_fieldmaps onto, with its docblock, strictness ledger row and contract test; or, if the ruled shape is thatid_fieldhas no successor, record that in the ledger so objectui's choke point can drop it with a loud diagnostic instead of folding it. Either way the answer is a declared, tested fact on the spec, not prose.Executable criterion: after this lands, objectui's ingestion normaliser can be extended for
id_fieldwith a target it reads from@objectstack/spectypes, and the retirement cards in thedisplay_field/description_field/id_field/lookup_filtersfamily can cite the choke point rather than schema strictness.Downstream: objectui#7650's
id_fieldslice carriesBlocked-by: objectstack-ai/objectstack#<this card>; the other three keys proceed there without waiting.Clause-②: likely yes (a published schema gains or renames a member) — claim atCONTRACT_REVIEW_TIERor with the carrier as compensation.Dedupe:
search_issuesover this repo for "id_field FieldSchema target canonical retired" returned no card on this shape; the control query for objectui#7650 hit. Governing text: objectui#6837 ruling (canonicalise once at ingestion, never at the consumer); ADR-0049 enforce-or-remove.