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
Filed by the objectstack dev seat executing the objectstack#12715 option-A ruling (maintainer, 2026-08-28: re-introduce fieldGroups[].visibleWhen WITH its enforcement side), as that dispatch's ruled condition 3: VERIFY the "no further objectui work" claim on the current objectui ref. Verdict: the claim is false — one adapter gap remains, and per contract-first it is recorded here rather than patched from the spec seat. Session: https://claude.ai/code/session_01LpRNHxWZgSUgVnFT9mQQo4
What was measured (objectui origin/main at f9653ae)
The spec side (objectstack#12715) re-introduces fieldGroups[].visibleWhen (CEL via ExpressionInputSchema, the ADR-0089 spelling) and deriveFieldGroupLayout passes it through to the derived FieldGroupSection verbatim.
On the objectui side, both fieldGroups-derived section-divider synthesis sites ALREADY stamp the predicate and the membership claim:
packages/plugin-form/src/DrawerForm.tsx (derived-fieldGroups branch): same stamp.
But the adapter those sites read section from — deriveFieldGroupSections in packages/plugin-form/src/fieldGroups.ts — maps the spec's FieldGroupSection onto ObjectFormSection copying only name/label/fields/collapse pair. It never copies visibleWhen, so the stamped value is always undefined on the derived path, and the two derived form paths stay structurally fail-open even after the spec slot lands.
The work
Carry visibleWhen through the deriveFieldGroupSections map (spec bump to the release carrying the slot; the value arrives as a bare CEL string or an expression envelope, both already legal for ObjectFormSection.visibleWhen).
Turn the six-way matrix's two previously-undiscriminable rows into discriminating pins: ModalForm derived-fieldGroups and DrawerForm derived-fieldGroups (the sectionVisibleWhen-6111.test.tsx header records them as structurally unreachable — that header note, and the matching note in fieldGroups.ts, retire with this card). A fixture declaring fieldGroups: [{ key, label, visibleWhen }] can now discriminate each site's stamp.
⛔ Whole-group disappearance (header included) rides the landed #6236 contract unchanged — no new semantics. The predicate vocabulary is the spec's; this card is only the carry + pins.
Blocked-by: objectstack-ai/objectstack#12715
Filed by the objectstack dev seat executing the objectstack#12715 option-A ruling (maintainer, 2026-08-28: re-introduce
fieldGroups[].visibleWhenWITH its enforcement side), as that dispatch's ruled condition 3: VERIFY the "no further objectui work" claim on the current objectui ref. Verdict: the claim is false — one adapter gap remains, and per contract-first it is recorded here rather than patched from the spec seat. Session: https://claude.ai/code/session_01LpRNHxWZgSUgVnFT9mQQo4What was measured (objectui origin/main at f9653ae)
The spec side (objectstack#12715) re-introduces
fieldGroups[].visibleWhen(CEL via ExpressionInputSchema, the ADR-0089 spelling) andderiveFieldGroupLayoutpasses it through to the derivedFieldGroupSectionverbatim.On the objectui side, both fieldGroups-derived
section-dividersynthesis sites ALREADY stamp the predicate and the membership claim:packages/plugin-form/src/ModalForm.tsx(derived-fieldGroups branch):visibleWhen: (section as any).visibleWhenbeside the A section hidden byFormSection.visibleWhenstill renders its FIELDS on the plugin-form chain — the console renderer drops the whole section #6236 membership claim;packages/plugin-form/src/DrawerForm.tsx(derived-fieldGroups branch): same stamp.But the adapter those sites read
sectionfrom —deriveFieldGroupSectionsinpackages/plugin-form/src/fieldGroups.ts— maps the spec'sFieldGroupSectionontoObjectFormSectioncopying onlyname/label/fields/collapse pair. It never copiesvisibleWhen, so the stamped value is alwaysundefinedon the derived path, and the two derived form paths stay structurally fail-open even after the spec slot lands.The work
visibleWhenthrough thederiveFieldGroupSectionsmap (spec bump to the release carrying the slot; the value arrives as a bare CEL string or an expression envelope, both already legal forObjectFormSection.visibleWhen).ModalForm derived-fieldGroupsandDrawerForm derived-fieldGroups(thesectionVisibleWhen-6111.test.tsxheader records them as structurally unreachable — that header note, and the matching note infieldGroups.ts, retire with this card). A fixture declaringfieldGroups: [{ key, label, visibleWhen }]can now discriminate each site's stamp.ModalFormcontentLayout: 'tabbed') cannot carry a sectionvisibleWhenat all —FormFieldTabdeclares no predicate slot #6237 remains open and is not addressed by this card.Boundary
⛔ Whole-group disappearance (header included) rides the landed #6236 contract unchanged — no new semantics. The predicate vocabulary is the spec's; this card is only the carry + pins.