Blocked-by: #6153
Filed by the director seat (objectstack #12708, summon #8, session session_01ShyhexkB2d1AeRZ85tgAAe) as the retirement half of a maintainer ruling. Filed unassigned; domain:spec (the fix lands in packages/types), pm:blocked until objectui#6153 lands.
Ruling this follows
Provenance: maintainer, live PM chat with the director seat, 2026-09-02, decision batch #8 item 4 on objectui#6153, recommendation A, verbatim 「同意」. Ruled: the contract's field-level cascade key is @objectstack/spec's dependsOn (packages/spec/src/data/field.zod.ts:1306; the spec has no depends_on). objectui mirrors the spec: BaseFieldMetadata declares dependsOn, the five widgets read it without as any. objectui's own depends_on is the consumer-side twin and is retired under ADR-0049 enforce-or-remove, as its own card. This is that card.
What is retired
What stays
dependsOn on BaseFieldMetadata (declared by #6153), FormField.dependsOn (packages/types/src/form.ts:1032, already aligned with the spec), and the widget-prop dependsOn on FieldWidgetComponentProps. One spelling, one concept.
Measured population before filing (objectui origin/main ec0a7b84, per the 2026-09-02 seat re-check on #6153)
The snake spelling has no framework-level producer: no bridge, no spec, no generated metadata writes it. In-repo readers are the LookupField arm above, hand-written host fixtures and tests. Out-of-repo hand-written objectui hosts cannot be measured from here; the changeset text is the notice.
Execution
domain:spec lane, S. Removes a member from a published type ⇒ Clause-② yes, CONTRACT_REVIEW_TIER; @object-ui/types changeset minor ("removed depends_on; use dependsOn, the spec's spelling"). No grace window. Pins: depends_on is absent from the published BaseFieldMetadata; a metadata object carrying only depends_on no longer gates the select or filters the lookup (the arm is gone), while the same object spelled dependsOn does; examples/app-showcase cascading-select and invoice-to-contact still pass.
Unblocks when objectui#6153 closes.
Related: objectui#6153 (the ruling), objectui#4631 (the wider camelCase-fallback family in LookupField, not this card), objectstack #12708 (director seat ledger).
Blocked-by: #6153
Filed by the director seat (objectstack #12708, summon #8, session
session_01ShyhexkB2d1AeRZ85tgAAe) as the retirement half of a maintainer ruling. Filed unassigned;domain:spec(the fix lands inpackages/types),pm:blockeduntil objectui#6153 lands.Ruling this follows
Provenance: maintainer, live PM chat with the director seat, 2026-09-02, decision batch #8 item 4 on objectui#6153, recommendation A, verbatim 「同意」. Ruled: the contract's field-level cascade key is
@objectstack/spec'sdependsOn(packages/spec/src/data/field.zod.ts:1306; the spec has nodepends_on). objectui mirrors the spec:BaseFieldMetadatadeclaresdependsOn, the five widgets read it withoutas any. objectui's owndepends_onis the consumer-side twin and is retired under ADR-0049 enforce-or-remove, as its own card. This is that card.What is retired
packages/types/src/field-types.ts:128—BaseFieldMetadata.depends_on?: string[], plus its zod mirror if one exists (checkpackages/types/src/zod/for the key).fieldMeta?.depends_onread arm inpackages/fields/src/widgets/LookupField.tsx(around line 300) — finding(fields): two more undeclared-but-consumed metadata keys —dependsOnon select andoptions[].descriptionon lookup, both reached past the declared type #6153 drops the undeclared arm of that line; this card removes the snake arm, leaving one read ofdependsOn.depends_onmention incontent/docs/fields/**and in the field-metadata reference.What stays
dependsOnonBaseFieldMetadata(declared by #6153),FormField.dependsOn(packages/types/src/form.ts:1032, already aligned with the spec), and the widget-propdependsOnonFieldWidgetComponentProps. One spelling, one concept.Measured population before filing (objectui
origin/mainec0a7b84, per the 2026-09-02 seat re-check on #6153)The snake spelling has no framework-level producer: no bridge, no spec, no generated metadata writes it. In-repo readers are the LookupField arm above, hand-written host fixtures and tests. Out-of-repo hand-written objectui hosts cannot be measured from here; the changeset text is the notice.
Execution
domain:speclane, S. Removes a member from a published type ⇒ Clause-② yes,CONTRACT_REVIEW_TIER;@object-ui/typeschangeset minor ("removeddepends_on; usedependsOn, the spec's spelling"). No grace window. Pins:depends_onis absent from the publishedBaseFieldMetadata; a metadata object carrying onlydepends_onno longer gates the select or filters the lookup (the arm is gone), while the same object spelleddependsOndoes;examples/app-showcasecascading-select and invoice-to-contact still pass.Unblocks when objectui#6153 closes.
Related: objectui#6153 (the ruling), objectui#4631 (the wider camelCase-fallback family in LookupField, not this card), objectstack #12708 (director seat ledger).