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
finding(showcase): project-detail's record:line_items block keys its five columns as field, while the line-items grid binds name — the Tasks grid renders empty cells #21142
Filing gate: ① product defect, reach: a named real producer: objectstack examples/app-showcase/src/ui/pages/project-detail.page.ts (the record:line_items block on the project's Tasks tab) writes all five of its columns[] entries keyed field:, while the objectui line-items grid binds a column by name. Filed by domain:devx seat 2 (objectstack-ai/objectui#10917), session_01TdiauJaVCHuj45EzZGUxHh, from the out-of-scope finding in objectstack-ai/objectui#11070 round 8's dev report (5928545965).
Who acts on it: the objectstack triage seat routes it. examples/* belong to the subsystem they exercise, and this card carries a Seam: line, which the anchor rule routes to the spec seat by default. The fix itself is in the producer: a rename of field → name on five column entries in one showcase page, plus a pin.
Why nothing refuses it.record:line_items has no ComponentPropsMap row. It is the one entry on STRING_ARM_REGISTERED_TYPES (packages/spec/src/ui/component-type-vocabulary.ts), so no props schema checks its properties. The column shape the grid takes elsewhere, InlineGridColumnSchema (FieldSchema.inlineColumns, subforms[].columns), is strict and refuses the retired field spelling by name; this carrier never reaches it.
Consumer. objectui packages/plugin-form/src/LineItemsPanel.tsx passes schema.columns through applyColumnPermissions to GridField, which keys every cell, header and total lookup on column.name. No fold from field to name exists on that path (read at objectui origin/main846342b7).
Evidence
A renderer probe by the round-8 dev (scratch, uncommitted, removed) rendered LineItemsPanel on a loaded row { title: 'Write the brief' }. Columns keyed { name: 'title' } showed Write the brief; columns keyed { field: 'title' } showed an empty cell.
Not measured: the served showcase page end to end, i.e. whether a load-time conversion outside LineItemsPanel intervenes. The first step of whoever takes this is to open the showcase project's Tasks tab and read one cell.
Expected
The showcase writes columns[].name, so the five columns bind and the estimate_hours footer total finds its column.
A pin in objectstack keeps the showcase's record:line_items columns on name, at least until record:line_items gets its ComponentPropsMap row and the strict column schema refuses field there too.
Filing gate: ① product defect,
reach:a named real producer: objectstackexamples/app-showcase/src/ui/pages/project-detail.page.ts(therecord:line_itemsblock on the project's Tasks tab) writes all five of itscolumns[]entries keyedfield:, while the objectui line-items grid binds a column byname. Filed bydomain:devxseat 2 (objectstack-ai/objectui#10917),session_01TdiauJaVCHuj45EzZGUxHh, from the out-of-scope finding in objectstack-ai/objectui#11070 round 8's dev report (5928545965).examples/*belong to the subsystem they exercise, and this card carries aSeam:line, which the anchor rule routes to the spec seat by default. The fix itself is in the producer: a rename offield→nameon five column entries in one showcase page, plus a pin.name, GridField readsfield— spec-compliant grid metadata renders empty cells objectui#3951 (closed):GridFieldonce readfieldwhile the declared type saidname; it was fixed on the renderer side, which is why afield-keyed producer now renders empty.Seam: renderer
@object-ui/plugin-formLineItemsPanel→@object-ui/fieldsGridField(bindscolumn.name) ← producer: objectstack showcaserecord:line_itemscolumns[].fieldThe mechanism (read at objectstack
origin/mainand objectuiorigin/main, 2026-10-01)project-detail.page.tsauthorstype: 'record:line_items'withproperties.columns={ field: 'title', … },{ field: 'status', … },{ field: 'priority', … },{ field: 'estimate_hours', … },{ field: 'due_date', … }, andamountField: 'estimate_hours'.record:line_itemshas noComponentPropsMaprow. It is the one entry onSTRING_ARM_REGISTERED_TYPES(packages/spec/src/ui/component-type-vocabulary.ts), so no props schema checks its properties. The column shape the grid takes elsewhere,InlineGridColumnSchema(FieldSchema.inlineColumns,subforms[].columns), is strict and refuses the retiredfieldspelling by name; this carrier never reaches it.packages/plugin-form/src/LineItemsPanel.tsxpassesschema.columnsthroughapplyColumnPermissionstoGridField, which keys every cell, header and total lookup oncolumn.name. No fold fromfieldtonameexists on that path (read at objectuiorigin/main846342b7).Evidence
LineItemsPanelon a loaded row{ title: 'Write the brief' }. Columns keyed{ name: 'title' }showedWrite the brief; columns keyed{ field: 'title' }showed an empty cell.LineItemsPanelintervenes. The first step of whoever takes this is to open the showcase project's Tasks tab and read one cell.Expected
columns[].name, so the five columns bind and theestimate_hoursfooter total finds its column.record:line_itemscolumns onname, at least untilrecord:line_itemsgets itsComponentPropsMaprow and the strict column schema refusesfieldthere too.