Context
Repeated real horizontal DockSplitter drags in Workstation produced a 100k Matrix state where the grid still paints, but its header and body no longer share column geometry. The captured frame shows a common outer left edge while the internal boundaries diverge progressively: header columns are narrower than their body cells, and the final body column is clipped at the common right edge.
This is a follow-up to the #16353 investigation, not scope for PR #16370. It is also distinct from the drag-start wedge in #16365.
The Problem
After several committed splitter resizes, header labels can stop sitting above their corresponding cells. The screenshot proves rendered disagreement; it does not prove whether the stale surface is the header, the body, or an upstream width generation.
A grid that continues repainting with mismatched column geometry is both visually broken and dangerous for interaction: users can read or target the wrong apparent column.
The Architectural Reality
src/grid/Container.mjs:1182 handles resize by updating mounted body columns and the header toolbar in separate phases.
src/grid/header/Wrapper.mjs owns header-region projection; src/grid/Body.mjs owns body-cell geometry and caches.
#12955 has a similar visible header/cell mismatch after column drag, while #12929 covers a uniform scroll-offset mismatch. Neither establishes the cause of this splitter-resize case.
The Fix
- Reproduce with a bounded series of real splitter drags, waiting for committed document and FLIP settlement after each drag.
- Capture a dataField-keyed geometry matrix after every commit: worker column width/x, header DOM left/width, first visible body-cell DOM left/width, container width, and scrollLeft.
- Identify the first divergent owner/generation and repair that grid resize-propagation seam. Do not add Workstation-specific offsets or timing delays.
- Retain a regression witness at the owning grid layer and at the headed Workstation surface.
Acceptance Criteria
Out of Scope
- Repaint liveness tracked by
#16353 / PR #16370.
- Intermittent drag-start failure tracked by
#16365.
- Text selection during splitter drags tracked by
#16362.
- Reopening historical column-drag fixes unless evidence proves the same mechanism.
Decision Record impact
None.
Related
Related: #16353 · PR #16370 · #16365 · #16362 · #12955 · #12929
Origin Session ID: 019fb600-58b9-7fa2-86a7-5a15e1ccf659
Retrieval Hint: "repeated splitter drags grid header body geometry desync"
Context
Repeated real horizontal DockSplitter drags in Workstation produced a 100k Matrix state where the grid still paints, but its header and body no longer share column geometry. The captured frame shows a common outer left edge while the internal boundaries diverge progressively: header columns are narrower than their body cells, and the final body column is clipped at the common right edge.
This is a follow-up to the
#16353investigation, not scope for PR #16370. It is also distinct from the drag-start wedge in#16365.The Problem
After several committed splitter resizes, header labels can stop sitting above their corresponding cells. The screenshot proves rendered disagreement; it does not prove whether the stale surface is the header, the body, or an upstream width generation.
A grid that continues repainting with mismatched column geometry is both visually broken and dangerous for interaction: users can read or target the wrong apparent column.
The Architectural Reality
src/grid/Container.mjs:1182handles resize by updating mounted body columns and the header toolbar in separate phases.src/grid/header/Wrapper.mjsowns header-region projection;src/grid/Body.mjsowns body-cell geometry and caches.#12955has a similar visible header/cell mismatch after column drag, while#12929covers a uniform scroll-offset mismatch. Neither establishes the cause of this splitter-resize case.The Fix
Acceptance Criteria
#16353repaint witness remains green.Out of Scope
#16353/ PR #16370.#16365.#16362.Decision Record impact
None.
Related
Related: #16353 · PR #16370 · #16365 · #16362 · #12955 · #12929
Origin Session ID: 019fb600-58b9-7fa2-86a7-5a15e1ccf659
Retrieval Hint:
"repeated splitter drags grid header body geometry desync"