Context
test/playwright/e2e/dashboard/DockMotionNL.spec.mjs › a rail-click reveal SLIDES has been quarantined since 2026-10-13 (e2eCiSelection.mjs BRAIN_QUARANTINES, accountable: me). The quarantine reads: "hosted, intermittent on both attempts: the entry witness records no sample of the revealed overlay"; its exit is "a diagnosis lands as a fix or a ticket".
Observed in runs 38422728929 (job 115384271007) and 38339077604 (job 115105930716): every attempt fails at the samples assertion with Expected: > 5, Received: 0, while the signal bracket's appear and clear both pass. Red attempts ran shorter than green ones: about 2.2–2.35 s of App Worker lifetime, against 2.6–2.7 s. The ~0.4 s gap is roughly the 280 ms reveal plus its settle. A launch-args A/B (38292768089) was red in both arms.
The Problem
expectSignalBracket counts any .neo-dashboard-dock-animating element. The test's setup step, setItemAutoHidden, returns from executeDockOperation (src/ai/client/DockService.mjs ~776–786) while that setup's own projection motion is still signalled (the workspace FLIP and the header overflow). Unlike the addTab test (settle poll at ~l. 319–322), the SLIDES test arms its witness and bracket with no settle. When the setup's signal is still up, the bracket sees it appear and clear, and readMotionSamples stops the witness before the overlay paints. Result: 0 samples, with a reveal that did happen. This is inferred from the code and the duration split; the run's trace artifact can confirm it.
The Architectural Reality
The reveal overlay carries its own signal: RevealOverlay#beginRevealMotion → MotionSignal.enter(this) → addCls('neo-dashboard-dock-animating') (src/dashboard/dock/interaction/RevealOverlay.mjs ~236–250, src/dashboard/dock/projection/MotionSignal.mjs:106). So .neo-dashboard-dock-reveal-overlay.neo-dashboard-dock-animating names exactly the motion under test.
The Fix (test-only)
expectSignalBracket takes a selector option, default SIGNAL. The SLIDES test brackets the overlay's own signal.
- The SLIDES test waits for the setup motion to settle before it starts the witness, as the addTab test does.
- The samples assertion reports
gaps: gaps with 0 samples means the read was too early, and 0 gaps means rAF never ticked.
- Its
BRAIN_QUARANTINES entry is removed.
Acceptance Criteria
Out of Scope
- The sibling resizeSplit GLIDES test uses the same any-element bracket and once read only 5 samples hosted (
38333432524). It is not diagnosed here.
Related
#19655 (hosted Workstation NL tier).
Sweeps at 10:45Z: live latest-20 open issues (no motion/reveal match), A2A claims (none).
Origin Session ID: 1cc54e4a-b230-43bc-ac83-7519d425f6e7
Context
test/playwright/e2e/dashboard/DockMotionNL.spec.mjs› a rail-click reveal SLIDES has been quarantined since 2026-10-13 (e2eCiSelection.mjsBRAIN_QUARANTINES, accountable: me). The quarantine reads: "hosted, intermittent on both attempts: the entry witness records no sample of the revealed overlay"; its exit is "a diagnosis lands as a fix or a ticket".Observed in runs
38422728929(job115384271007) and38339077604(job115105930716): every attempt fails at the samples assertion withExpected: > 5, Received: 0, while the signal bracket's appear and clear both pass. Red attempts ran shorter than green ones: about 2.2–2.35 s of App Worker lifetime, against 2.6–2.7 s. The ~0.4 s gap is roughly the 280 ms reveal plus its settle. A launch-args A/B (38292768089) was red in both arms.The Problem
expectSignalBracketcounts any.neo-dashboard-dock-animatingelement. The test's setup step,setItemAutoHidden, returns fromexecuteDockOperation(src/ai/client/DockService.mjs~776–786) while that setup's own projection motion is still signalled (the workspace FLIP and the header overflow). Unlike the addTab test (settle poll at ~l. 319–322), the SLIDES test arms its witness and bracket with no settle. When the setup's signal is still up, the bracket sees it appear and clear, andreadMotionSamplesstops the witness before the overlay paints. Result: 0 samples, with a reveal that did happen. This is inferred from the code and the duration split; the run's trace artifact can confirm it.The Architectural Reality
The reveal overlay carries its own signal:
RevealOverlay#beginRevealMotion→MotionSignal.enter(this)→addCls('neo-dashboard-dock-animating')(src/dashboard/dock/interaction/RevealOverlay.mjs~236–250,src/dashboard/dock/projection/MotionSignal.mjs:106). So.neo-dashboard-dock-reveal-overlay.neo-dashboard-dock-animatingnames exactly the motion under test.The Fix (test-only)
expectSignalBrackettakes aselectoroption, defaultSIGNAL. The SLIDES test brackets the overlay's own signal.gaps: gaps with 0 samples means the read was too early, and 0 gaps means rAF never ticked.BRAIN_QUARANTINESentry is removed.Acceptance Criteria
.neo-dashboard-dock-reveal-overlay.neo-dashboard-dock-animatingand settles the setup's signal before it starts the witness.gaps.Out of Scope
38333432524). It is not diagnosed here.Related
#19655 (hosted Workstation NL tier).
Sweeps at 10:45Z: live latest-20 open issues (no motion/reveal match), A2A claims (none).
Origin Session ID: 1cc54e4a-b230-43bc-ac83-7519d425f6e7