Context
WorkstationFiveBeatNL › scene 5 — the signature: full journey in ONE run is the flagship journey's own scene. On hosted CI it fails often, it is neither quarantined nor ticketed, and it reddens unrelated PRs: dependabot bumps, a spec-only fix, and three dev pushes.
Measured (every hosted E2E (Brain-gated tier) run since 2026-10-17, shard 10/10 job logs per attempt, test-level marks):
| sample |
failed |
passed |
32 shard-10 jobs on 29 heads, excluding neo#19871 |
20 of 44 test attempts |
24 |
| jobs red (both attempts failed) |
8 (incl. dev 74ed8d1d, 18adbb52, a4eafc17) |
— |
| first failure → retry also failed |
8 of 12 |
— |
Retries fail together, so the cause is tied to the runner, not to timing.
The Problem
Every failure stops at the same assertion: the stack-return step, after the vessel-dock beat, reports main workspace did not reach one semantic + rendered stack-return claim. The claim trace shows the main window as a candidate with intersects: false, so the gesture never claimed main at all.
Here is what the failure JSON records (run 39322381695, attempt 2):
| fact |
value |
aimed.rect (main's right-top-tabs, client coords) |
x 2304, y 121, w 220, h 240 |
windows.main.innerRect |
x 10, y 10, w 1280, h 800 (the spec's emulated viewport) |
A node inside a 1280-wide viewport should not be measured at x 2304. Two readings fit these numbers, and the evidence does not yet decide between them:
- Uniform 2× scale: all four values are exactly twice a plausible in-viewport rect (1152 / 60.5 / 110 / 120).
- Horizontal offset only: y 121 and h 240 are plausible as they are for a top-right tabs node in an 800-px viewport, and a 220-px zone is also what the quarantined
showcase dwell previews align with their zones test measures ("the tab-into preview reads 110 px against its 220 px zone", where 110 may be an edge-half preview, not a scale). Then only x is wrong: the dock layout overflows or is translated.
Neither reading has been observed. Either way the aim leaves main, and the claim correctly refuses.
The Architectural Reality
apps/workstation/tour/NativeGestureDriver.mjs executeStackReturnStep (~l. 755–775) aims at WindowManager.get(me.windowId).innerRect.{x,y} + the centre of returnHost.getDomRect([returnNode.id], me.windowId). It mixes window geometry with a DOM rect and assumes both use one CSS-pixel space.
src/manager/DragCoordinator.mjs claim candidates (~l. 990) test Window.get(windowId).innerRect.intersects(screenX, screenY). So a doubled DOM rect sends the pointer outside main, and no zone is asked.
- The spec emulates
viewport 1280×800 and screen 1920×1080 in ordinary mode (WorkstationFiveBeatNL.spec.mjs l. 75–76, 507–514).
The Fix
Diagnose first, then fix the coordinate space at the place the scale enters:
- Instrument: at aim time, the stack-return proof records main's
devicePixelRatio, visualViewport.scale, innerWidth/innerHeight, the document's and the dock root's clientWidth/scrollWidth/scrollLeft, and the raw getBoundingClientRect() of the return node, beside innerRect. A failing hosted run then tells the two readings apart: a scale shows in the ratios, an offset in the scroll widths.
- Fix by observed cause: the aim and the claim must agree on one coordinate space and on one laid-out main. Fix the producer of the wrong value (lost emulation, a scaled document, a twice-converted rect, or an overflowing layout), not the test's tolerance.
- If the same cause explains the showcase-dwell quarantine, lift that quarantine in the same PR.
Acceptance Criteria
Out of Scope
- The other workstation quarantines (film tour hop 3, reclaim embodiment, DockMotion reveal), unless the diagnosis proves they share this cause.
neo#19871's own diff. Its reds on scene 5 are this defect (its parent head passed 2 of 2; the base fails at the rate above).
Related
- Parent: #19655 (hosted Workstation NL tier).
neo#19871 and neo#19873 were both red on this scene on 10-19. #19873 is spec-only and touches another file.
Sweeps: live latest-20 open issues and the A2A lane-claims of the last hour, checked immediately before filing; no equivalent found. Memory Core (FiveBeat scene 5 stack-return claim intersects false innerRect hosted): no prior diagnosis. Issues/PRs mentioning FiveBeat: only closed predecessors (#18674, #19594).
Retrieval Hint: "FiveBeat scene 5 stack return aims outside main intersects false hosted"
Revised 2026-10-20 ~09:00Z by the author: the first version presented the 2× scale as the leading reading; the offset reading fits the same numbers.
Origin Session ID: c0d45e7f-5685-4c1a-93e4-68c8b40b13da
Context
WorkstationFiveBeatNL› scene 5 — the signature: full journey in ONE run is the flagship journey's own scene. On hosted CI it fails often, it is neither quarantined nor ticketed, and it reddens unrelated PRs: dependabot bumps, a spec-only fix, and threedevpushes.Measured (every hosted
E2E (Brain-gated tier)run since 2026-10-17, shard 10/10 job logs per attempt, test-level marks):neo#19871dev74ed8d1d,18adbb52,a4eafc17)Retries fail together, so the cause is tied to the runner, not to timing.
The Problem
Every failure stops at the same assertion: the stack-return step, after the vessel-dock beat, reports
main workspace did not reach one semantic + rendered stack-return claim. The claim trace shows the main window as a candidate withintersects: false, so the gesture never claimed main at all.Here is what the failure JSON records (run
39322381695, attempt 2):aimed.rect(main'sright-top-tabs, client coords)windows.main.innerRectA node inside a 1280-wide viewport should not be measured at x 2304. Two readings fit these numbers, and the evidence does not yet decide between them:
showcase dwell previews align with their zonestest measures ("the tab-into preview reads 110 px against its 220 px zone", where 110 may be an edge-half preview, not a scale). Then only x is wrong: the dock layout overflows or is translated.Neither reading has been observed. Either way the aim leaves main, and the claim correctly refuses.
The Architectural Reality
apps/workstation/tour/NativeGestureDriver.mjsexecuteStackReturnStep(~l. 755–775) aims atWindowManager.get(me.windowId).innerRect.{x,y}+ the centre ofreturnHost.getDomRect([returnNode.id], me.windowId). It mixes window geometry with a DOM rect and assumes both use one CSS-pixel space.src/manager/DragCoordinator.mjsclaim candidates (~l. 990) testWindow.get(windowId).innerRect.intersects(screenX, screenY). So a doubled DOM rect sends the pointer outside main, and no zone is asked.viewport 1280×800andscreen 1920×1080in ordinary mode (WorkstationFiveBeatNL.spec.mjsl. 75–76, 507–514).The Fix
Diagnose first, then fix the coordinate space at the place the scale enters:
devicePixelRatio,visualViewport.scale,innerWidth/innerHeight, the document's and the dock root'sclientWidth/scrollWidth/scrollLeft, and the rawgetBoundingClientRect()of the return node, besideinnerRect. A failing hosted run then tells the two readings apart: a scale shows in the ratios, an offset in the scroll widths.Acceptance Criteria
e2eCiSelection.mjssubstitutes for the fix.Out of Scope
neo#19871's own diff. Its reds on scene 5 are this defect (its parent head passed 2 of 2; the base fails at the rate above).Related
neo#19871andneo#19873were both red on this scene on 10-19.#19873is spec-only and touches another file.Sweeps: live latest-20 open issues and the A2A lane-claims of the last hour, checked immediately before filing; no equivalent found. Memory Core (
FiveBeat scene 5 stack-return claim intersects false innerRect hosted): no prior diagnosis. Issues/PRs mentioning FiveBeat: only closed predecessors (#18674,#19594).Retrieval Hint:
"FiveBeat scene 5 stack return aims outside main intersects false hosted"Revised 2026-10-20 ~09:00Z by the author: the first version presented the 2× scale as the leading reading; the offset reading fits the same numbers.
Origin Session ID: c0d45e7f-5685-4c1a-93e4-68c8b40b13da