Scope correction — 2026-08-30
The original receipt below is real, but its midpoint-scroll attribution does not reproduce under the production settlement contract.
A focused rAF/Neural-Link witness produced this matrix:
| surface |
ref |
result |
cold direct scrollScaleGrid(50000) |
current dev |
1/1 green |
first scene through the production TourRunner (entry → resize → overflow → midpoint, including settleTourStep) |
current dev |
5/5 green |
| complete production tour, non-invasive rAF census |
current dev |
1/1 green |
| complete production tour, non-invasive rAF census |
PR #17869 exact head 96f848f708 |
4/4 green |
canonical WorkstationNL full journey |
PR #17869 exact head 96f848f708 |
blank-grid oracle green in 3/3; one run failed only on #17872's independent Security-stage oracle |
A deliberately incomplete reduction — navigateOverflowMenu() followed by scrollScaleGrid() without the production settleTourStep barrier — does reproduce three blank frames. In those frames the worker has already moved the pool to rows 49990…50026 at ~2.5Mpx while the native View remains at scrollTop=0. That is a valid causal control for the update-collision class, but it is not the production ordering and cannot justify an Engine fix by itself.
The original red had the opposite geometry: the native scrollport had retained ~2.5Mpx while pooled rows appeared near index 0 (rowsTop ≈ -2.5Mpx). That better fits a later dock projection resetting the already-scrolled pool, not the midpoint command. This ticket therefore remains open as a post-midpoint full-tour diagnosis. No source change is admissible until a production-path red is caption/progress-banded to the responsible beat.
Context
PR #17869 moved the Workstation film-density gate out of the 2,000-line full-tour witness and let that tour reach its later choreography assertions. One exact-head run at 96f848f708 failed after every density and splitter assertion had passed.
Observed in that run:
{
"blankFrames": 3,
"rowCount": 39,
"visibleRows": 0,
"wrapperTop": 193,
"wrapperBottom": 1145,
"rowsTop": -2499807,
"rowsBottom": -2497857
}Three sampled frames carried a populated row pool entirely outside the visible wrapper. The run recovered later; final state was not the failure.
Live latest-open and A2A claim sweeps found no equivalent owner before filing. Closed #16402 remains the nearest historical symptom predecessor, not a presumed shared cause.
The Problem
One full Workstation tour painted a transient blank 100k Matrix after the midpoint cue. The existing monitor accumulated blank frames for the entire remaining tour, so the receipt proves a user-visible blank but does not identify which later beat caused it.
The current evidence supports an intermittent update-collision class:
- worker-first / native-old is reproducible only when the projection barrier is deliberately omitted;
- the original production red was native-new / rows-old;
- properly settled midpoint and full-tour controls are currently green.
The bug is therefore “a later full-tour projection can lose continuity of an already-scrolled pooled grid,” not “the midpoint scroll command is broken.”
The Architectural Reality
src/grid/View.mjs#syncBodies owns the worker-side row-pool projection and vertical-scroll SSOT.
src/grid/ScrollManager.mjs ingests native scroll events and routes settled scroll state.
src/main/addon/GridRowScrollPinning.mjs protects explicit thumb-drag lag; it is not active for this programmatic cue.
apps/workstation/view/Workspace.mjs#scrollScaleGrid updates View scroll + pooled rows in one VDOM cycle.
Workspace#settleTourStep is a load-bearing barrier between surface cues and later dock projections.
WorkstationNL.spec.mjs samples the grid throughout the whole tour; its unbanded counter cannot assign a later blank to the midpoint merely because midpoint happened first.
The Fix
Diagnosis first:
- Keep the non-invasive rAF census identity-agnostic across the entry projection.
- Tag every sample with tour caption/progress plus native scroll, row ids/rects, and pin offset.
- Capture the first production-path blank and name the exact later beat.
- At that beat, add worker View/Body/mounted-range state and the relevant VDOM delta/update-collision receipt.
- Repair only the first layer that regresses from the already-settled midpoint state.
No source patch is justified while the properly settled path remains green.
Acceptance Criteria
Out of Scope
- Film-stage edge extents (#17865 / PR #17869).
- The Security pane's independent fixed-stage burst recurrence (#17872).
- Treating the omitted
settleTourStep reduction as a production defect.
- Timing allowances, retries, fake/predicted
scrollTop, or a broad grid-scroll rewrite.
Decision Record impact
none — restores the existing pooled-grid projection contract once the owning transition is known.
Related
Parent: #15252. Symptom predecessor: #16402. Related: #17865 · #17872 · PR #17869.
Origin Session ID: 6243a442-7ced-4c0f-81c6-99b0f8358e63
Retrieval Hint: Workstation full tour post-midpoint blank rowsTop -2499807 caption progress projection reset
Context
PR #17869 moved the Workstation film-density gate out of the 2,000-line full-tour witness and let that tour reach its later choreography assertions. One exact-head run at
96f848f708failed after every density and splitter assertion had passed.Observed in that run:
{ "blankFrames": 3, "rowCount": 39, "visibleRows": 0, "wrapperTop": 193, "wrapperBottom": 1145, "rowsTop": -2499807, "rowsBottom": -2497857 }Three sampled frames carried a populated row pool entirely outside the visible wrapper. The run recovered later; final state was not the failure.
Live latest-open and A2A claim sweeps found no equivalent owner before filing. Closed #16402 remains the nearest historical symptom predecessor, not a presumed shared cause.
The Problem
One full Workstation tour painted a transient blank 100k Matrix after the midpoint cue. The existing monitor accumulated blank frames for the entire remaining tour, so the receipt proves a user-visible blank but does not identify which later beat caused it.
The current evidence supports an intermittent update-collision class:
The bug is therefore “a later full-tour projection can lose continuity of an already-scrolled pooled grid,” not “the midpoint scroll command is broken.”
The Architectural Reality
src/grid/View.mjs#syncBodiesowns the worker-side row-pool projection and vertical-scroll SSOT.src/grid/ScrollManager.mjsingests native scroll events and routes settled scroll state.src/main/addon/GridRowScrollPinning.mjsprotects explicit thumb-drag lag; it is not active for this programmatic cue.apps/workstation/view/Workspace.mjs#scrollScaleGridupdates View scroll + pooled rows in one VDOM cycle.Workspace#settleTourStepis a load-bearing barrier between surface cues and later dock projections.WorkstationNL.spec.mjssamples the grid throughout the whole tour; its unbanded counter cannot assign a later blank to the midpoint merely because midpoint happened first.The Fix
Diagnosis first:
No source patch is justified while the properly settled path remains green.
Acceptance Criteria
blankFrames === 0assertion passes in at least three consecutive exact-head runs without weakening or delay padding.Out of Scope
settleTourStepreduction as a production defect.scrollTop, or a broad grid-scroll rewrite.Decision Record impact
none — restores the existing pooled-grid projection contract once the owning transition is known.
Related
Parent: #15252. Symptom predecessor: #16402. Related: #17865 · #17872 · PR #17869.
Origin Session ID: 6243a442-7ced-4c0f-81c6-99b0f8358e63
Retrieval Hint:
Workstation full tour post-midpoint blank rowsTop -2499807 caption progress projection reset