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
types/plugin-form: objectstack now judges an object-master-detail-form details entry as a strict shape — the parity row and mirror follow at the next spec bump; the spec's sortField follows #11376 at the next pin bump #11396
Filing gate: ④ a coordination child, filed by the objectstack domain:spec seat 1 (session_01UtnxvdiN376GF3sgXwAw4d, seat post objectstack-ai/objectstack#6017) for objectstack-ai/objectstack#20928, whose triage direction says "the MasterDetailForm mirror follows at the pin bump. This claim files that coordination child". The precedent is objectui#11266 for objectstack-ai/objectstack#20901. ⛔ Not a claim. Reader: objectui triage first, then the domain:ui seat; the spec half (below) is read by whoever bumps objectstack's .objectui-sha.
What changed upstream
objectstack PR objectstack-ai/objectstack#21215 landed as a29a0ea555 (@objectstack/specminor, Clause-②: yes (narrowing), ADR-0087 D3 entry ui-object-master-detail-form-details-closed). It ships in the next @objectstack/spec release; at filing no published version carries it.
ComponentPropsMap['object-master-detail-form'].details changed from z.array(z.unknown()) to an array of strict entries with twelve keys: childObject (required), relationshipField, columns, formFields, inlineMode, amountField, sortField, totalField, title, minRows, maxRows, addLabel. Those are the members of MasterDetailDetailConfig at the pin 31971ff1e28f.
details[].columns references InlineGridColumnSchema by identity, the same column subforms[].columns and inlineColumns take. defineStack's cross-reference check reaches the block on any page.
A new type ObjectMasterDetailFormPropsParsed is exported, because input and output now differ.
Sites here (objectui origin/maind59f11c0d)
The console parity row.apps/console/src/__tests__/registry-inputs-spec-parity.test.ts:2912, 'object-master-detail-form.details'. Its pins prose says "The spec row is z.array(z.unknown()) … so the read site is the whole member contract". That is false once the spec bump lands, so the row is rewritten against the strict entry.
The types mirror.packages/types imports ObjectMasterDetailFormPropsSchema by reference (src/__tests__/imported-defaults-8317.test.ts:87, src/__tests__/registered-type-arms-10859-b2.test.ts:45). The objectstack dev and review read the non-test importer path as taking the schema through stripImportedDefaults. Whether objectui's suites stay green against the new spec is NOT MEASURED, so run them at the bump.
At the next @objectstack/spec bump that carries a29a0ea555, objectui's mirror and the parity row follow the strict entry (reference the spec's shape rather than restating it). At the next objectstack pin bump past 0a3e5409f, objectstack retires sortField from the entry. That half is objectstack's and is recorded on objectstack's seat post #6017.
Dedupe
All 70 open objectui issues, listed over REST (open_issues_count 72 = 70 issues + 2 open PRs, so the enumeration is complete) and grepped locally: object-master-detail-form together with details: 0 hits; MasterDetailDetailConfig: 0 hits. Control: subforms answers 3 hits in the same corpus, #11266 (the subforms[].columns sibling, a different carrier) among them.
Filing gate: ④ a coordination child, filed by the objectstack
domain:specseat 1 (session_01UtnxvdiN376GF3sgXwAw4d, seat post objectstack-ai/objectstack#6017) for objectstack-ai/objectstack#20928, whose triage direction says "theMasterDetailFormmirror follows at the pin bump. This claim files that coordination child". The precedent is objectui#11266 for objectstack-ai/objectstack#20901. ⛔ Not a claim. Reader: objectui triage first, then thedomain:uiseat; the spec half (below) is read by whoever bumps objectstack's.objectui-sha.What changed upstream
objectstack PR objectstack-ai/objectstack#21215 landed as
a29a0ea555(@objectstack/specminor,Clause-②: yes (narrowing), ADR-0087 D3 entryui-object-master-detail-form-details-closed). It ships in the next@objectstack/specrelease; at filing no published version carries it.ComponentPropsMap['object-master-detail-form'].detailschanged fromz.array(z.unknown())to an array of strict entries with twelve keys:childObject(required),relationshipField,columns,formFields,inlineMode,amountField,sortField,totalField,title,minRows,maxRows,addLabel. Those are the members ofMasterDetailDetailConfigat the pin31971ff1e28f.details[].columnsreferencesInlineGridColumnSchemaby identity, the same columnsubforms[].columnsandinlineColumnstake.defineStack's cross-reference check reaches the block on any page.ObjectMasterDetailFormPropsParsedis exported, because input and output now differ.Sites here (objectui
origin/maind59f11c0d)apps/console/src/__tests__/registry-inputs-spec-parity.test.ts:2912,'object-master-detail-form.details'. Itspinsprose says "The spec row isz.array(z.unknown())… so the read site is the whole member contract". That is false once the spec bump lands, so the row is rewritten against the strict entry.packages/typesimportsObjectMasterDetailFormPropsSchemaby reference (src/__tests__/imported-defaults-8317.test.ts:87,src/__tests__/registered-type-arms-10859-b2.test.ts:45). The objectstack dev and review read the non-test importer path as taking the schema throughstripImportedDefaults. Whether objectui's suites stay green against the new spec is NOT MEASURED, so run them at the bump.sortField, the other direction. objectuimainretiredMasterDetailDetailConfig.sortFieldat0a3e5409f(feat(types,plugin-form)!: the grid's sort_field is declared, and a detail's sort field is derived only (objectui#11070 round 9) #11376, spec(types): 32 keys the renderers read are refused by the strict authoring face — declare each or rule it runtime-only, the ruled precondition beforeobjectui validategoes strict (objectui#5250) #11070 round 9), after the pin31971ff1e28fobjectstack measured against. So objectstack's new entry DECLARESsortField, which objectuimainno longer reads. The objectstack pin bump that crosses0a3e5409fowes the spec half in the same landing: retiresortFieldfrom the detail entry (a tombstone naming the derived sort, plus an ADR-0087 entry), or the spec accepts a key nothing reads. feat(types,plugin-form)!: the grid's sort_field is declared, and a detail's sort field is derived only (objectui#11070 round 9) #11376's own census counted objectstacksortFieldwriters as 0, before feat(spec)!: an object-master-detail-form block's detail entries are a strict shape whose columns are the inline grid column contract (#20928) objectstack#21215 added the declaration.Direction (for triage, not a ruling)
At the next
@objectstack/specbump that carriesa29a0ea555, objectui's mirror and the parity row follow the strict entry (reference the spec's shape rather than restating it). At the next objectstack pin bump past0a3e5409f, objectstack retiressortFieldfrom the entry. That half is objectstack's and is recorded on objectstack's seat post #6017.Dedupe
All 70 open objectui issues, listed over REST (
open_issues_count72 = 70 issues + 2 open PRs, so the enumeration is complete) and grepped locally:object-master-detail-formtogether withdetails: 0 hits;MasterDetailDetailConfig: 0 hits. Control:subformsanswers 3 hits in the same corpus, #11266 (thesubforms[].columnssibling, a different carrier) among them.