Sub of #15252. The operator's pacing steer (2026-09-23 13:5xZ, relayed by @neo-gpt-emmy): little text fits into 22 seconds while the UI can show a lot — rails, pin/unpin, splitters, pop-outs, a native popup dragged back across animated drop zones; the Qt-like drop-zone motion is part of the attraction. Our earlier plan let speech set scene length: #19112 / PR #19115 grew a 10 s stationary born hold and #19123 / PR #19124 (withdrawn) a 7 s post-receipt pause from measured utterances. The plan inverts here: the picture sets the pace, and a short benefit exchange rides several actions. The coauthored lines and their measured seconds (attempt 20260923T133000Z-opening-02, in the production record) stay valid as the voice's durations, not as holds.
The Problem
The merged screenplay parks the picture: a 10 s hold on a born vessel and pauses sized to lines. And three of the attractions the operator named have no scene-owned interaction in the film at all: the edge rails (reveal, pin, unpin), the native popup dragged back over the main window's animated drop zones, and a splitter resize with its live conserved-pair preview. A tour that narrates them without performing them would be an edit trick.
The missing beats are already witnessed outside the film: the native titlebar return in WorkstationNativeTitlebarDragNL.spec.mjs (Browser.setWindowBounds moves with a settle poll; the hold is the gesture, #18119; the drop reads the zone under the popup's corner, #18059); rail reveal and pin in DockPinCollapseNL.spec.mjs and the dense control's reveal arms; the splitter's live preview (#17849) under a real pointer drag in the dense tour's resizeSplit through the real boundary beat.
TourRunner starts a cue and its pause concurrently and awaits host settlement; pause steps hold settled results (#19112's ledger). Holds inside a gesture (birthDwellMs) are the driver's option and default to zero.
The film witness (WorkstationFilmTourNL.spec.mjs) replays the continuous journey; the unit spec pins the order and the budget sum.
The Fix
One purposeful rearrangement, one persistent session, in this order:
Cold open (≤ 2 s): the living room; a splitter drag is the first motion.
Pop-out: Metrics leaves past the window's edge, is born mid-gesture and committed; the born hold shrinks to what it takes to read "that is a window" (≤ 1.5 s). The morph (return before release) leaves the opening.
Second window: Commits converts while dragging into the vessel; the drop-zone previews glow inside a real OS window; commit — two windows composing.
The native return: the vessel dragged by its OS frame back over the main window; root edge chips and previews animate as it crosses them; the hold is the gesture; the stack comes home and the empty vessel closes. New cue native-return with an executor that mirrors the witness's move helper.
Rails: a pane pins to its edge rail from its header action; a click on the rail tab slides the reveal in; the pin brings it back. New cue rail, scene-owned, real clicks.
Resize: a splitter drag with the live preview; the layout settles.
Perspectives, undo, redo fast, then the living signature.
Speech spans actions and never parks them: "Meet Workstation." over the cold open; "Let's give the charts their own window." over the pop-out; "Now I can keep them in view while I work." over the second window; "And when I'm done —" / "— it all comes home." over the native return. Pauses are only as long as an outcome takes to read (≤ 1 s); silence where the motion carries it. Process: a silent choreography rehearsal first — the headless replay's per-beat durations judge the pace — then the voice is chosen, cut and placed over that flow.
Acceptance Criteria
AC-1 The screenplay's opening plays beats 1–7 in one session; holds inside gestures ≤ 1.5 s, pauses ≤ 1 s unless a named outcome needs longer to read, and the 10 s born hold from #19112 is re-paced to the picture. (Shipped by #19152 / PR #19153 at dev@94cdee6cdd: the hold is 1.5 s, every cue-free pause 1 s with the close 2 s, the morph plays after the rails, the tear-out opens; a unit arm pins the bounds. Beat 4 shipped by #19170 / PR #19181 at dev@65958cae03: the whole two-item stack rides one native frame home. Beat 6 shipped by #19174 / PR #19182 at dev@202699d10c: the cold open's first motion is a real splitter drag to 52/48, and film-resize after the rails commits 42/58, both proven by the witness's drive receipts.)
AC-2 Two new cues, native-return and rail, exist with scene-owned executors, unit lifecycle controls (destroy during the move or the reveal releases input and leaves no vessel or overlay behind), and the vocabulary arm that pins the cue list. (rail shipped by #19127 / PR #19128 at dev@50760eb422, with a settle that dismisses an open reveal through the rail's state machine and brings a fold home through the document, and the vocabulary arm. native-return shipped by #19170 / PR #19181 at dev@65958cae03 (@neo-gpt-emmy): the whole two-item stack transfers before the vessel closes, the driver's destroy arms sit in GestureDriver.spec.mjs (nativeReturnFixture), the cue's screenplay pin in fiveBeatFilm.spec.mjs.)
AC-3 The film replay (WorkstationFilmTourNL.spec.mjs -g 'under autoGates') is a two-tier witness at the PR head. Headless, on the seat's own bridge, it stays green through every beat a headless Chromium can perform: the resize drives, the tear-out, the second-window compose and the rail's reveal/pin receipts asserted; headless Chromium refuses the native frame move, so the replay stops at the native-return beat by construction since PR #19181. Headed, on a measured display, it plays the whole journey with the native return's adoption and vessel close asserted. (Headless: green through the second-window compose at e7f95d9043, 3 of 3, stopping at the native return. Headed: green at e7f95d9043 in 43.8 s, the head that merged as dev@202699d10c. Met 2026-09-25: the tracked arm headed on the film-stage display at dev@79f81045b3, 1 of 1 in 45.0 s with every assertion, the native return's adoption and vessel close included, beside the instrumented series 4 of 4; the two resize rows are on #15252, issuecomment-5830856672.)
AC-4 A silent rehearsal receipt (per-beat durations from the replay log) is posted on #15252 before any voice is placed; scene and cue ids stay stable anchors for the cut. (Posted 2026-09-24: https://github.com/neomjs/neo/issues/15252#issuecomment-5813519075 — 34 s of tour time; ids unchanged.)
AC-5 The unit pin moves with the budgets in the same change; the sum stays inside the 90–150 s envelope. (111 → 93 s in #19152; 93 → 97 s with the resize scene in #19174 / PR #19182; pinned.)
Out of Scope
Voice generation and measurement (Emmy's lane); the take, native capture and the cut (#15252); the dense tour (denseWorkstation.mjs).
Ownership
Screenplay, sequence and pacing: mine. The native-return executor sits in NativeGestureDriver.mjs, @neo-gpt-emmy's seam — the fork is with her (mirror the witness's Browser.setWindowBounds helper as a driver step, or drive it from TourController with the window manager's geometry stream); the rail cue is either of us. Leaves split from here as the pieces land.
Sweeps: live latest-20 open at 2026-09-23T14:02:16Z — none equivalent; A2A — the operator's steer relayed 13:57Z is the only traffic on this surface; own open assignments (#19101, #15252) — the parent only.
Origin Session ID: 522f6841-f568-4800-bff8-7ee8e1f99dd3
Retrieval Hint: query_raw_memories("film opening visual-first one purposeful rearrangement native-return rail cue picture sets the pace")
Context
Sub of #15252. The operator's pacing steer (2026-09-23 13:5xZ, relayed by @neo-gpt-emmy): little text fits into 22 seconds while the UI can show a lot — rails, pin/unpin, splitters, pop-outs, a native popup dragged back across animated drop zones; the Qt-like drop-zone motion is part of the attraction. Our earlier plan let speech set scene length: #19112 / PR #19115 grew a 10 s stationary born hold and #19123 / PR #19124 (withdrawn) a 7 s post-receipt pause from measured utterances. The plan inverts here: the picture sets the pace, and a short benefit exchange rides several actions. The coauthored lines and their measured seconds (attempt
20260923T133000Z-opening-02, in the production record) stay valid as the voice's durations, not as holds.The Problem
The merged screenplay parks the picture: a 10 s hold on a born vessel and pauses sized to lines. And three of the attractions the operator named have no scene-owned interaction in the film at all: the edge rails (reveal, pin, unpin), the native popup dragged back over the main window's animated drop zones, and a splitter resize with its live conserved-pair preview. A tour that narrates them without performing them would be an edit trick.
The Architectural Reality
overflow,scroll,canvas-update,cross-zone-showcase,theme,gate,tear-out,convert-while-dragging,stack-return,perspective-capture,perspective-restore,undo,redo(apps/workstation/tour/cueVocabulary.mjs). Gesture executors:executeTearOutStep,executeCrossWindowDockStep,executeStackReturnStep(NativeGestureDriver.mjs) andexecuteCrossZoneShowcaseStep(GestureDriver.mjs).WorkstationNativeTitlebarDragNL.spec.mjs(Browser.setWindowBoundsmoves with a settle poll; the hold is the gesture, #18119; the drop reads the zone under the popup's corner, #18059); rail reveal and pin inDockPinCollapseNL.spec.mjsand the dense control's reveal arms; the splitter's live preview (#17849) under a real pointer drag in the dense tour'sresizeSplit through the real boundarybeat.TourRunnerstarts a cue and its pause concurrently and awaits host settlement;pausesteps hold settled results (#19112's ledger). Holds inside a gesture (birthDwellMs) are the driver's option and default to zero.WorkstationFilmTourNL.spec.mjs) replays the continuous journey; the unit spec pins the order and the budget sum.The Fix
One purposeful rearrangement, one persistent session, in this order:
native-returnwith an executor that mirrors the witness's move helper.rail, scene-owned, real clicks.Speech spans actions and never parks them: "Meet Workstation." over the cold open; "Let's give the charts their own window." over the pop-out; "Now I can keep them in view while I work." over the second window; "And when I'm done —" / "— it all comes home." over the native return. Pauses are only as long as an outcome takes to read (≤ 1 s); silence where the motion carries it. Process: a silent choreography rehearsal first — the headless replay's per-beat durations judge the pace — then the voice is chosen, cut and placed over that flow.
Acceptance Criteria
dev@94cdee6cdd: the hold is 1.5 s, every cue-free pause 1 s with the close 2 s, the morph plays after the rails, the tear-out opens; a unit arm pins the bounds. Beat 4 shipped by #19170 / PR #19181 atdev@65958cae03: the whole two-item stack rides one native frame home. Beat 6 shipped by #19174 / PR #19182 atdev@202699d10c: the cold open's first motion is a real splitter drag to 52/48, andfilm-resizeafter the rails commits 42/58, both proven by the witness's drive receipts.)native-returnandrail, exist with scene-owned executors, unit lifecycle controls (destroy during the move or the reveal releases input and leaves no vessel or overlay behind), and the vocabulary arm that pins the cue list. (railshipped by #19127 / PR #19128 atdev@50760eb422, with a settle that dismisses an open reveal through the rail's state machine and brings a fold home through the document, and the vocabulary arm.native-returnshipped by #19170 / PR #19181 atdev@65958cae03(@neo-gpt-emmy): the whole two-item stack transfers before the vessel closes, the driver's destroy arms sit inGestureDriver.spec.mjs(nativeReturnFixture), the cue's screenplay pin infiveBeatFilm.spec.mjs.)WorkstationFilmTourNL.spec.mjs -g 'under autoGates') is a two-tier witness at the PR head. Headless, on the seat's own bridge, it stays green through every beat a headless Chromium can perform: the resize drives, the tear-out, the second-window compose and the rail's reveal/pin receipts asserted; headless Chromium refuses the native frame move, so the replay stops at thenative-returnbeat by construction since PR #19181. Headed, on a measured display, it plays the whole journey with the native return's adoption and vessel close asserted. (Headless: green through the second-window compose ate7f95d9043, 3 of 3, stopping at the native return. Headed: green ate7f95d9043in 43.8 s, the head that merged asdev@202699d10c. Met 2026-09-25: the tracked arm headed on the film-stage display atdev@79f81045b3, 1 of 1 in 45.0 s with every assertion, the native return's adoption and vessel close included, beside the instrumented series 4 of 4; the two resize rows are on #15252, issuecomment-5830856672.)Out of Scope
denseWorkstation.mjs).Ownership
Screenplay, sequence and pacing: mine. The
native-returnexecutor sits inNativeGestureDriver.mjs, @neo-gpt-emmy's seam — the fork is with her (mirror the witness'sBrowser.setWindowBoundshelper as a driver step, or drive it fromTourControllerwith the window manager's geometry stream); therailcue is either of us. Leaves split from here as the pieces land.Related
#15252 · #19112 / PR #19115 · #19123 / PR #19124 (withdrawn) · #19097 / PR #19107 · #18119 · #18059 · #17849
Sweeps: live latest-20 open at 2026-09-23T14:02:16Z — none equivalent; A2A — the operator's steer relayed 13:57Z is the only traffic on this surface; own open assignments (#19101, #15252) — the parent only.
Origin Session ID: 522f6841-f568-4800-bff8-7ee8e1f99dd3 Retrieval Hint:
query_raw_memories("film opening visual-first one purposeful rearrangement native-return rail cue picture sets the pace")🪢 Mnemosyne (Claude Fable 5.1 · Claude Code) · session 522f6841-f568-4800-bff8-7ee8e1f99dd3