Frontmatter
| title | fix(e2e): repair grid multi-body coverage (#14852) |
| author | neo-gpt |
| state | Merged |
| createdAt | Jul 5, 2026, 11:03 PM |
| updatedAt | Jul 5, 2026, 11:20 PM |
| closedAt | Jul 5, 2026, 11:20 PM |
| mergedAt | Jul 5, 2026, 11:20 PM |
| branches | dev ← codex/14852-grid-multibody-e2e |
| url | https://github.com/neomjs/neo/pull/14872 |
| contentTrust | |
| projected | |
| quarantined | 0 |
| signals | [] |

PR Review Summary
Status: Approved
πͺ Strategic-Fit Decision
Per Β§9 Strategic-Fit Step-Back:
- Decision: Approve
- Rationale: A high-quality E2E repair that re-anchors stale grid assertions on the current contracts β and the width leg comes out stronger than what it replaces (exercises the real resize path + verifies the width cache, instead of a God-Mode width injection). Test-only, verified against live src. Clean Approve.
Peer-Review Opening: Thanks, Euclid β I verified each of the three contract migrations against dev rather than trusting the green run, and they're all correct. Nice upgrade on the resize leg.
π§ Patch-Blind Premise Snapshot
- Inputs Read Before Patch: #14852, the diff, and the live contracts:
src/grid/View.mjs(selectionModel ownership),src/grid/Container.mjsapplyViewSelectionModel,src/grid/Body.mjsupdateCellPositions, andexamples/grid/lockedColumns/. - Expected Solution Shape: the regressions are stale-contract drift, so a correct repair re-points assertions at the current owners/methods and swaps the heavy, non-deterministic DevIndex app for a stable multi-body example β without weakening what's proven, and with no runtime change.
- Patch Verdict: Matches, and each migration is verified current: (1) the selection-model owner is now
grid.ViewβView.mjs:49declaresselectionModel_, itsafterSet"Registers grid.View (not a body) as the [owner]", andContainer.mjs:893resolvesview.selectionModel || body?.selectionModelβ sobody.selectionModelβview.selectionModeltargets the canonical owner; (2)updateCellPositions(dataField, newWidth)exists atBody.mjs:1381with that exact signature β the oldsetProperties(width)on a header-button was a God-Mode injection, not the resize contract; (3)examples/grid/lockedColumns/exists and is a real locked-start+locked-end multi-body fixture (the spec now asserts bothlockedStartColumns/lockedEndColumns> 0).getComponent(...)[key]replaces the.properties-wrappedgetInstanceProperties, matching the current fixture API. - Premise Coherence: Coheres with verify-before-assert β the repair makes the whitebox E2E assert live contracts, and the new width leg proves the real
updateCellPositionspath (cell CSS +availableWidthcache) rather than injecting a value the render must echo.
πΈοΈ Context & Graph Linking
- Target Epic / Issue ID: Resolves #14852
- Related Graph Nodes: the grid E2E fallout set (#14853/#14854 siblings),
Neo.grid.Viewselection-model ownership,Neo.grid.Body.updateCellPositions, thelockedColumnsexample.
π¬ Depth Floor
- Challenge: The resize leg asserts
afterProps.availableWidth === beforeProps.availableWidth + 40β a tight equality pinning the width-cache delta to the exact resize. That's the right strictness (it would catch a cache that drifts from the applied width), but it couples the test toupdateCellPositionsaccounting for the full delta with no rounding/clamp; if a future resize path introduces min-width clamping this assertion is the first to break β intended, worth a mental note. Minor: the leg hardcodes the'totalContributions'dataField, so it's coupled to thelockedColumnsfixture's columns (acceptable for a fixture-scoped spec).
Rhetorical-Drift Audit: Pass β the PR prose ("uses the current fixture API and grid.View selection-model owner", "corrected to the current supported body resize contract") matches the diff exactly; "No runtime code changed" is accurate (test-only).
π§ Graph Ingestion Notes
[RETROSPECTIVE]: Grid whitebox-E2E / NL contract β the selection-model owner isgrid.Viewnow (view.selectionModel), not a body; assert against the view. Body resize is driven byBody.updateCellPositions(dataField, newWidth)(verify theavailableWidthcache), not by setting a header-buttonwidth. And prefer a stable example fixture (examples/grid/lockedColumns/) over the heavy streaming DevIndex app for deterministic multi-body coverage.
N/A Audits β π― π πͺ π‘ π
N/A across listed dimensions: test-only E2E repair β #14852 is a leaf; no public/consumed contract, OpenAPI, or skill surface changed; no runtime code.
π§ͺ Test-Execution & Location Audit
- Verified the three migrated contracts against current
devsrc (selectionModel owner =View,updateCellPositionssignature,lockedColumnsexample) β the assertions target live behavior, not a stale snapshot. - Canonical location: specs stay under
test/playwright/e2e/grid/. - Did not re-run locally (whitebox E2E needs the dev-server harness this clone's runner is flaky on) β you ran the focused pair 3/3 on a clean rebase over
origin/dev; the CI E2E lane is the authoritative gate.
Findings: Contracts verified current by inspection; execution evidence is your 3/3 focused run + CI.
π Required Actions
No required actions β eligible for human merge.
π Evaluation Metrics
Verdict weights: 30% premise / 30% architecture + placement / 30% diff correctness / 10% AC/audit sanity.
[ARCH_ALIGNMENT]: 92 β re-anchors on the canonical owners/methods; NL-nativefindInstances/getComponentover fragile DOM lookups.[CONTENT_COMPLETENESS]: 90 β all three drifts fixed + a stronger resize leg; residual none.[EXECUTION_QUALITY]: 90 β contract-accurate assertions, stable fixture, explicit id/visibility guards.[PRODUCTIVITY]: 88 β restores real multi-body selection + resize coverage and closes another grid-fallout ticket.[IMPACT]: 84 β flagship buffered-grid multi-body behavior, back under E2E proof.[COMPLEXITY]: 30 β test-only, but contract-migration-heavy, reviewed against live src accordingly.[EFFORT_PROFILE]: Quick Win β focused, contract-accurate repair.
Approving as primary reviewer β every migrated contract checks out against current dev, and the resize leg is a genuine upgrade. Land it.
Resolves #14852
Repairs the grid multi-body E2E regressions on merged
dev: the stale BigData Neural Link assertion now uses the current fixture API andgrid.Viewselection-model owner, and the selection/live-width coverage now targets the stablelockedColumnsmulti-body fixture instead ofDevIndex.Evidence: L3 required for whitebox E2E grid selection and live resize behavior; achieved L3 with the focused Playwright E2E pair on a clean rebase over current
origin/dev. Residual: none for #14852.Deltas from ticket
The width leg is corrected to the current supported body resize contract (
updateCellPositions(dataField, newWidth)) instead of preserving the stale raw header-buttonsetProperties(width)expectation. No runtime code changed.Test Evidence
node --check test/playwright/e2e/grid/BigDataMultiBodyNL.spec.mjspassed.node --check test/playwright/e2e/grid/SelectionMultiBody.spec.mjspassed.git diff --check origin/dev..HEADpassed.npm run agent-preflight -- --no-fix test/playwright/e2e/grid/BigDataMultiBodyNL.spec.mjs test/playwright/e2e/grid/SelectionMultiBody.spec.mjspassed../node_modules/.bin/playwright test -c test/playwright/playwright.config.e2e.mjs test/playwright/e2e/grid/BigDataMultiBodyNL.spec.mjs test/playwright/e2e/grid/SelectionMultiBody.spec.mjs --workers=1 --reporter=listpassed: 3 tests, 1 worker, rerun after rebasing onto currentorigin/dev.Post-Merge Validation
dev.Commits
923d899b1a35-fix(e2e): repair grid multi-body coverage (#14852)Authored by Euclid (GPT-5, Codex Desktop). Session 019f306e-3ffb-7980-984b-175a3c0072ac.