Context
Leaf of #18762 (its public-proof responsibility). Both surfaces were measured healthy on 2026-09-19, real Chromium (Playwright e2e rig), dev@bd2a404560, on a throwaway fixture: nothing is broken. What is missing is the witness: every tracked cell-editing arm drives a flat String model in a plain column, so these two code paths can regress unseen.
The Problem
| Path |
Why it is its own code path |
Tracked arms today |
A dotted dataField (user.firstname) |
the commit is record.set({[dataField]: …}), which data.RecordFactory#setRecordFields resolves through fieldsMap and Neo.ns; the cell lookup, data-field and isModifiedField all take the dotted name |
0 |
A tree column (grid.column.Tree → grid.column.Component) |
the cell's content is a component reference; grid.Row#applyRendererOutput swaps it for the editor's reference and has to give the component back, showing the new value through applyRecordConfigs |
0 |
Measured today (all green, no page error):
- Nested: double-click, Enter commit, Tab and Shift+Tab across nested and flat columns, Escape, F2, an emptied
required draft stays open, neo-is-modified appears on the edited nested cell and disappears when the original value returns (body.highlightModifiedCells + trackModifiedFields).
- Tree: renaming a leaf and a folder in the tree column (the double-click on a folder's label starts the edit and does not toggle the node; after the commit the tree component is back with the new name, indent and toggle intact); a plain column next to it; collapsing the parent by its toggle while a child's edit is open commits the draft, as any click-away does, and expanding shows the committed value.
The Fix
Test-only.
- New fixture
test/playwright/component/apps/grid-cell-editing-record-shapes: one grid over a model with a nested user object, one grid over a TreeStore with an editable tree column. A fixture of its own, because a third grid in grid-cell-editing would shrink the row windows its pooling arms depend on.
- New
test/playwright/e2e/grid/CellEditingRecordShapes.spec.mjs, on the shared e2e/utils/gridCellEditing.mjs reads, record ids resolved from cell text (the grid renders internal ids).
- Each arm gets a mutant that reddens it, stated in the PR.
Acceptance Criteria
Out of Scope
- A programmatic collapse or a store-side removal of the edited tree record with no focus change (no user gesture reaches it: the keys belong to the editor).
- Non-text editors on these shapes.
Related
#18762 · #18837 (the public-example witness, same helper)
Live latest-open sweep: checked latest 12 open issues at 2026-09-19T15:48Z, plus all-state searches "cell editing nested" and "cell editing tree column"; no equivalent found.
A2A claim sweep: latest 30 messages (all read-states) at 15:35Z; no claim on either surface (I announced both as undriven at 13:30Z; nobody picked them up).
MC sweep: "grid cell editing on nested record fields or a tree column component cell: witness, test coverage", 5 results: the 2026-03 tree-component refactor (primitives through applyRecordConfigs, which is why a rename shows up) and my own 09-18 coverage inventory (text-only fixture); no prior decision on these witnesses.
Own-assignment sweep: 1 open (#15252), not overlapping.
Origin Session ID: 2c9503fc-beef-4d80-939b-7d616601cd97
Retrieval Hint: "cell editing nested record field dotted dataField tree column component cell rename witness e2e record shapes"
Context
Leaf of #18762 (its public-proof responsibility). Both surfaces were measured healthy on 2026-09-19, real Chromium (Playwright e2e rig), dev@bd2a404560, on a throwaway fixture: nothing is broken. What is missing is the witness: every tracked cell-editing arm drives a flat
Stringmodel in a plain column, so these two code paths can regress unseen.The Problem
dataField(user.firstname)record.set({[dataField]: …}), whichdata.RecordFactory#setRecordFieldsresolves throughfieldsMapandNeo.ns; the cell lookup,data-fieldandisModifiedFieldall take the dotted nametreecolumn (grid.column.Tree→grid.column.Component)grid.Row#applyRendererOutputswaps it for the editor's reference and has to give the component back, showing the new value throughapplyRecordConfigsMeasured today (all green, no page error):
requireddraft stays open,neo-is-modifiedappears on the edited nested cell and disappears when the original value returns (body.highlightModifiedCells+trackModifiedFields).The Fix
Test-only.
test/playwright/component/apps/grid-cell-editing-record-shapes: one grid over a model with a nesteduserobject, one grid over aTreeStorewith an editabletreecolumn. A fixture of its own, because a third grid ingrid-cell-editingwould shrink the row windows its pooling arms depend on.test/playwright/e2e/grid/CellEditingRecordShapes.spec.mjs, on the sharede2e/utils/gridCellEditing.mjsreads, record ids resolved from cell text (the grid renders internal ids).Acceptance Criteria
neo-is-modifiedexactly while it differs from its original value.Out of Scope
Related
#18762 · #18837 (the public-example witness, same helper)
Live latest-open sweep: checked latest 12 open issues at 2026-09-19T15:48Z, plus all-state searches "cell editing nested" and "cell editing tree column"; no equivalent found. A2A claim sweep: latest 30 messages (all read-states) at 15:35Z; no claim on either surface (I announced both as undriven at 13:30Z; nobody picked them up). MC sweep: "grid cell editing on nested record fields or a tree column component cell: witness, test coverage", 5 results: the 2026-03 tree-component refactor (primitives through
applyRecordConfigs, which is why a rename shows up) and my own 09-18 coverage inventory (text-only fixture); no prior decision on these witnesses. Own-assignment sweep: 1 open (#15252), not overlapping.Origin Session ID: 2c9503fc-beef-4d80-939b-7d616601cd97 Retrieval Hint: "cell editing nested record field dotted dataField tree column component cell rename witness e2e record shapes"