Leaf of #15252 (the flagship film, roadmap cornerstone 4 — done signal "the film published"). The operator's brief of 2026-09-23 (relayed by @neo-gpt-emmy from her task, 09:06Z and 09:15Z; her public map https://github.com/neomjs/neo/issues/15252#issuecomment-5792193993): the video must OPEN with the multi-window tear-outs so the audience is not lost, be ONE continuous flow with object permanence, and reuse the existing witnesses and executors, adding only the missing connective behaviour. My peer-role answer (https://github.com/neomjs/neo/issues/15252#issuecomment-5792318156) aligned the spine and named three measured constraints the reorder has to honour.
The Problem
apps/workstation/tour/fiveBeatFilm.mjs at dev@be9d239d10 plays cold open (12 s, "The room is alive") → showcase (14 s, drop-zone previews) → morph (10 s) → tear-out (14 s) → second window (16 s) → reintegration (14 s) → perspectives/undo (16 s) → signature (10 s). The first window is born after 26 s of budget. The showcase is not decoration: it docks Commits INTO the home group so that the later stack return has a home to reach (measured 2026-09-23: a stack return needs the torn-out pane's stored home alive; when the showcase had emptied it, the return aimed at the matrix group and hung). Reordering is therefore choreography, not label shuffling: moving the hook ahead of the showcase removes the precondition the return relies on unless the hooked pane leaves a group that keeps at least one tab.
The Architectural Reality
The screenplay is data (fiveBeatFilm.mjs): scenes with runnable steps (op / pause / gate / cross-window cues) consumed by three readers — the viewer's "Start film tour" (TourController#startFilmTour, gates as host cues), the whitebox witness test/playwright/e2e/workstation/WorkstationFilmTourNL.spec.mjs (all eight scenes from one boot; autoGates arm), and the take to come. targetSeconds is a budget; record mode consumes pause.ms and awaits stepSettlement.
Measured driver constraints (2026-09-23, the nine diagnostic runs behind PR #19083): a tab folded into a tab bar's overflow menu has no drag handle; the twelve-tab heavy group does not re-arm re-entry (reentered flag); the stack return needs the torn-out pane's stored home alive; conversion-while-dragging needs the hook's vessel still open.
The dialogue leaf binds every utterance to a scene/cue id, so ids must survive the reorder unchanged.
The Fix
New order: cold open ≤ 3 s (the feed visibly alive, no room tour, no boot on camera) → morph on metrics out of right-top-tabs (a window born and retired inside one gesture — the film's first birth, within ~5 s) → tear-out of metrics for good (audit stays, so the home survives; a small group, never the heavy one) → second window: commits converts while dragged out of right-bottom-tabs and docks into the vessel → the stack comes home to right-top-tabs → the drop-zone showcase moves the travelled Metrics (the group's active tab after the return, so its handle is always rendered and inside the executor's 48 px window-edge margin — Commits, home as the group's last tab, was refused against that edge) from right-top-tabs to the feed's band (bottom-tabs) → perspective capture/restore, one undo/redo → signature (the hundred-thousand-row scroll, every window closed, the feed still growing). Scene ids and cue ids unchanged; targetSeconds re-budgeted to 97 s; apps/workstation/README.md names the new order. First commit = the replay: the film-tour witness on the reordered script, three runs, before the order is called approved.
Corrected 2026-09-23 after the first replay: the draft above had the committed tear-out first and the morph on Commits second. The morph cannot follow the committed tear-out: a re-entry re-arms only on a strip that still exists, and a single-tab group is removed when its tab leaves — commits out of right-bottom-tabs ended with reattachArmed=false placeholder=false itemRectsLen=1 (film-morph[1] host step settlement failed). After Metrics leaves, no two-tab group remains, so the morph on Metrics stays the first window beat and the committed tear-out its answer; the operator's "open with the tear-outs" is met by the three-second cold open.
Acceptance Criteria
AC-1 WorkstationFilmTourNL.spec.mjs plays all eight reordered scenes from one boot, 3/3 headless, with the same executor receipts as today (proof.born, reentered, applied, phase order); no windowOpen-false. Restated 2026-09-23 (PR #19107 review R1, @neo-gpt): this leaf delivers the screenplay and its headless replay. The headed 1/1 witness of the same spec at the merged head is transferred to #15252's take acceptance — owner Mnemosyne, [L3-deferred — operator handoff needed]: a headed run puts Chromium windows on the operator's display (asked 09:28Z and 10:08Z; the take needs the same window), so it runs in the take's hands-off window, before the take rolls.
AC-2 The first vessel is born within the first two scenes and no scene reboots or reloads the workspace; the signature closes every window the film opened and the feed is still growing (the existing receipt).
AC-3 Scene and cue ids are unchanged (the unit spec fiveBeatFilm.spec.mjs pins them), the dense tour and WorkstationNL.spec.mjs are untouched, and the README's tour section names the new order.
AC-4 The replay's three constraints are recorded on #15252 with the run receipts (home alive, no overflowed handle, vessel open at conversion).
Out of Scope
The dialogue leaf (@neo-gpt-emmy: lines, TTS, segment timing) and the take leaf (one display recording; needs the operator's hands-off window) — separate subs of #15252.
#16498 (native-return / F7 gate — inside the continuous evidence per Emmy, its own witness) · #19094 and the dense control's Canvas receipt flake (not on the film's path).
D#18730 (two-unrelated-root acceptance is engineering, not the film's world).
Related
#15252 (parent) · #19070 / PR #19083 (the wiring this reorders) · #16311 (screenplay v2, the narrative authority) · #15631 / #15671 (the July dialogue film) · #19086 / PR #19095 (the control's press fix)
Sweeps: live latest-20 open at 2026-09-23T09:26:03Z — none equivalent (#19070 closed by PR #19083 wired the film; no open reorder ticket); A2A claims in the last 60 min — Emmy's film DMs name the dialogue seam as hers and the map as a proposal, no claim on the screenplay; query_raw_memories on the take pipeline — the August capture laws (second-display pin, hide-before-launch, frame-zero) and the 08-08 treatment (one continuous world) stand; own open assignments (#19086, #15252) — this is #15252's next leaf.
Origin Session ID: 522f6841-f568-4800-bff8-7ee8e1f99dd3
Retrieval Hint: query_raw_memories("film opens with tear-out reorder fiveBeatFilm metrics right-top home alive replay")
Ownership: self-assigned — the screenplay is mine; the replay is the first commit.
tobiu referenced in commit e6b7b10 - "feat(workstation): the film opens on the tear-outs — a three-second cold open, then the morph and the committed birth (#19097) (#19107) on Sep 23, 2026, 12:37 PM
Context
Leaf of #15252 (the flagship film, roadmap cornerstone 4 — done signal "the film published"). The operator's brief of 2026-09-23 (relayed by @neo-gpt-emmy from her task, 09:06Z and 09:15Z; her public map https://github.com/neomjs/neo/issues/15252#issuecomment-5792193993): the video must OPEN with the multi-window tear-outs so the audience is not lost, be ONE continuous flow with object permanence, and reuse the existing witnesses and executors, adding only the missing connective behaviour. My peer-role answer (https://github.com/neomjs/neo/issues/15252#issuecomment-5792318156) aligned the spine and named three measured constraints the reorder has to honour.
The Problem
apps/workstation/tour/fiveBeatFilm.mjsatdev@be9d239d10plays cold open (12 s, "The room is alive") → showcase (14 s, drop-zone previews) → morph (10 s) → tear-out (14 s) → second window (16 s) → reintegration (14 s) → perspectives/undo (16 s) → signature (10 s). The first window is born after 26 s of budget. The showcase is not decoration: it docks Commits INTO the home group so that the later stack return has a home to reach (measured 2026-09-23: a stack return needs the torn-out pane's stored home alive; when the showcase had emptied it, the return aimed at the matrix group and hung). Reordering is therefore choreography, not label shuffling: moving the hook ahead of the showcase removes the precondition the return relies on unless the hooked pane leaves a group that keeps at least one tab.The Architectural Reality
fiveBeatFilm.mjs): scenes with runnablesteps(op/pause/gate/ cross-window cues) consumed by three readers — the viewer's "Start film tour" (TourController#startFilmTour, gates as host cues), the whitebox witnesstest/playwright/e2e/workstation/WorkstationFilmTourNL.spec.mjs(all eight scenes from one boot;autoGatesarm), and the take to come.targetSecondsis a budget; record mode consumespause.msand awaitsstepSettlement.reenteredflag); the stack return needs the torn-out pane's stored home alive; conversion-while-dragging needs the hook's vessel still open.scene/cueid, so ids must survive the reorder unchanged.The Fix
New order: cold open ≤ 3 s (the feed visibly alive, no room tour, no boot on camera) → morph on
metricsout ofright-top-tabs(a window born and retired inside one gesture — the film's first birth, within ~5 s) → tear-out ofmetricsfor good (audit stays, so the home survives; a small group, never the heavy one) → second window:commitsconverts while dragged out ofright-bottom-tabsand docks into the vessel → the stack comes home toright-top-tabs→ the drop-zone showcase moves the travelled Metrics (the group's active tab after the return, so its handle is always rendered and inside the executor's 48 px window-edge margin — Commits, home as the group's last tab, was refused against that edge) fromright-top-tabsto the feed's band (bottom-tabs) → perspective capture/restore, one undo/redo → signature (the hundred-thousand-row scroll, every window closed, the feed still growing). Scene ids and cue ids unchanged;targetSecondsre-budgeted to 97 s;apps/workstation/README.mdnames the new order. First commit = the replay: the film-tour witness on the reordered script, three runs, before the order is called approved.Corrected 2026-09-23 after the first replay: the draft above had the committed tear-out first and the morph on Commits second. The morph cannot follow the committed tear-out: a re-entry re-arms only on a strip that still exists, and a single-tab group is removed when its tab leaves —
commitsout ofright-bottom-tabsended withreattachArmed=false placeholder=false itemRectsLen=1(film-morph[1] host step settlement failed). After Metrics leaves, no two-tab group remains, so the morph on Metrics stays the first window beat and the committed tear-out its answer; the operator's "open with the tear-outs" is met by the three-second cold open.Acceptance Criteria
WorkstationFilmTourNL.spec.mjsplays all eight reordered scenes from one boot, 3/3 headless, with the same executor receipts as today (proof.born,reentered,applied, phase order); nowindowOpen-false. Restated 2026-09-23 (PR #19107 review R1, @neo-gpt): this leaf delivers the screenplay and its headless replay. The headed 1/1 witness of the same spec at the merged head is transferred to #15252's take acceptance — owner Mnemosyne,[L3-deferred — operator handoff needed]: a headed run puts Chromium windows on the operator's display (asked 09:28Z and 10:08Z; the take needs the same window), so it runs in the take's hands-off window, before the take rolls.fiveBeatFilm.spec.mjspins them), the dense tour andWorkstationNL.spec.mjsare untouched, and the README's tour section names the new order.Out of Scope
Related
#15252 (parent) · #19070 / PR #19083 (the wiring this reorders) · #16311 (screenplay v2, the narrative authority) · #15631 / #15671 (the July dialogue film) · #19086 / PR #19095 (the control's press fix)
Sweeps: live latest-20 open at 2026-09-23T09:26:03Z — none equivalent (#19070 closed by PR #19083 wired the film; no open reorder ticket); A2A claims in the last 60 min — Emmy's film DMs name the dialogue seam as hers and the map as a proposal, no claim on the screenplay;
query_raw_memorieson the take pipeline — the August capture laws (second-display pin, hide-before-launch, frame-zero) and the 08-08 treatment (one continuous world) stand; own open assignments (#19086, #15252) — this is #15252's next leaf.Origin Session ID: 522f6841-f568-4800-bff8-7ee8e1f99dd3 Retrieval Hint:
query_raw_memories("film opens with tear-out reorder fiveBeatFilm metrics right-top home alive replay")Ownership: self-assigned — the screenplay is mine; the replay is the first commit.
🪢 Mnemosyne (Claude Fable 5.1 · Claude Code) · session 522f6841-f568-4800-bff8-7ee8e1f99dd3