LearnNewsExamplesServices
Frontmatter
id19568
titleFilm tour: the machine-speed cues move at hand tempo
stateClosed
labels
enhancementaidashboard
assigneesneo-fable
createdAtOct 10, 2026, 10:10 PM
updatedAtOct 10, 2026, 11:13 PM
githubUrlhttps://github.com/neomjs/neo/issues/19568
authorneo-fable
commentsCount0
parentIssue15252
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAtOct 10, 2026, 11:13 PM

Film tour: the machine-speed cues move at hand tempo

Closed v13.2.0/archive-v13-2-0-chunk-24 enhancementaidashboard
neo-fable
neo-fable commented on Oct 10, 2026, 10:10 PM

Context

The first clean take of the film at dev 1c43d51e26 (#15252, take 2026-10-10T19-59-33-683Z, 2026-10-10 20:0xZ) runs ≈ 45 s of picture from the first motion to the close. The screenplay's targetSeconds sum to 91 s, but they are budgets: the captured gestures own their durations, and several cues run at machine speed. The operator's goal for the film is 1:30–2:30, the approved narration (A6) is 83 s of speech and is not to be trimmed, and a video under about a minute risks being listed as a YouTube Short. The picture has to carry the narration.

Design authority: the operator, 2026-10-10 ("the goal for the video was 1m30 to 2m30. so trimming voice narratives is absolutely NOT what we want"), within the 2026-09-23 pacing rule (the picture sets the pace; speech rides the motion; no held gesture is stretched to fit a line; #19124 was withdrawn for that shape).

The Problem

The take's cue clock (recorder seconds): tour start 2.55 · tear-out birth 5.37 · committed 7.42 · journey 8.44 → compose 21.38 · native return 22.39 → whole room 25.18 · rails 26.20 · resize 32.40 · showcase 33.31 · perspective captured 38.64 · split 39.15 · read 40.16 · restore 41.18 · mutation 41.94 · undo 42.44 · redo 43.47 · 100k midpoint 44.22 · close 45.74 → end ≈ 47.7.

Machine-speed stretches: the perspectives scene performs capture → split → read → restore → mutation → undo → redo in 4.9 s; the resize scene's boundary drag takes 0.9 s; the native return crosses its targets in 2.8 s; the showcase's drags between its two dwells run at pointer-sample speed. A hand does none of these at that speed, and a viewer cannot read the outcomes.

The Architectural Reality

  • apps/workstation/tour/fiveBeatFilm.mjs carries per-cue pacing options: filmPace (moveDelay: 33, moveSteps: 24, curve, birthAttempts) on the tear-out and the journey, explicit moveDelay/moveSteps on the resize and rail cues, dwellDelay/moveDelay/moveSteps on the showcase, revealDelay on the rail; the executors in apps/workstation/tour/GestureDriver.mjs default to moveDelay 16 × moveSteps 12 (≈ 0.2 s per leg). The document operations of the perspectives scene (perspective-capture, splitNode, perspective-restore, addTab, undo, redo) are instant.
  • Measured in the runner (correction, 20:3xZ): a pause step's ms is a FLOOR the runner waits while the host performs the cue in parallel (TourRunner fires the beat, TourController#onTourBeat runs the cue, the runner's ms wait overlaps it) — not a wait after the outcome. A cue's picture time is its gesture; a cue-free pause after an instant document operation is the only time a viewer gets to read that outcome. The resize scene measured 0.9 s because its 800 ms floor and its 0.8 s drag overlapped. The perspectives scene had no beat at all between the addTab mutation and the undo: the undo landed on the mutation's own frame.
  • The headless witness test/playwright/e2e/workstation/WorkstationFilmTourNL.spec.mjs runs the same screenplay and logs each beat's time; it polled at 1 s, too coarse to verify a pacing change, so its poll becomes the clock's resolution (100 ms) and it logs the controller's own elapsedMs.
  • The picture additions are sibling leaves of the same plan of record on #15252 (a third window, the perspective across windows — #19569, the light-theme switch, the maximize beat, the rail reveal held for its content); this leaf is pacing only.

The Fix

In fiveBeatFilm.mjs, bring the machine-speed cues to hand tempo through the existing options, with no new cue types and no engine change:

  • pointer walks at hand tempo — a sample every 33 ms with the leg's moveSteps sized to about a second of travel: both resizes 48 samples (one leg, ≈ 1.5 s of re-flow), the showcase's walks 30 samples at 33 ms (≈ 1 s per leg between the two 1.5 s dwells), the native return 16 samples per leg (each sample also pays a window move's round trip);
  • the perspectives scene's outcomes each get a reading beat of 1.5 s — one bound shared with the born hold and the showcase dwell (the 2026-09-23 cue-free cap of 1 s becomes 1.5 s; a beat is sized to the outcome, never to a line) — including a new beat after the mutation, before the undo;
  • the screenplay's header records the operator's brief (the narration whole and at its own rate; the picture sized to carry it) in place of "the voice is cut to the motion";
  • targetSeconds stay the budgets they are (91 s inside the 90–150 s envelope): restating them to the measured picture would put the sum under the envelope's floor that the addition leaves restore; the measured clock lives in the PR and the production record, not in the source. (Correction of the original fix sentence, 20:3xZ.)

Acceptance Criteria

Restated 20:3xZ to the shapes the rules yield; the original ≥ 12 s / ≥ 9 s figures were sized from the speech (14.35 s / 7.05 s), which is exactly the sizing the pacing rule bans — the narration's remainder is carried by the addition leaves, not by longer stills.

  • Every pointer walk runs at hand tempo (33 ms rhythm, a leg about a second) and every cue-free reading beat is at most 1.5 s, both pinned by the unit spec; every gesture stays one continuous motion (no stretched hold, no frozen frame).
  • The headless film tour's beat log (100 ms clock) shows the native return ≥ 4 s, the resize ≥ 2 s, the showcase's two dwells with hand-tempo walks between them, and the perspectives scene (capture → redo) with a reading beat after every outcome including the mutation. Measured: native return 6.0 s (was 4.0), resize 2.4 s (was ≤ 2.0), showcase 7.2 s (was 5.0), perspectives 9.9 s (was 6.0); total 56.2 s against the 47.0 s headless baseline.
  • The film tour witness and the popup-overlap witness stay green; the tour's total from the first motion to the close is recorded in the PR against the baseline.
  • Post-merge: a headed take at the merged head whose clock the A6 clips are bound to (#15252).

Out of Scope

  • The picture additions (sibling leaves on #15252).
  • The rail step's intermittent pin-geometry failure under the OS recorder (defect-note e1a1d18219d9bfc9).

Related

#15252 (the film epic; the plan of record of 2026-10-10 20:0xZ) · #14800 (the v13.2 cut) · #19530 (the showcase dwells) · #19124 (withdrawn: speech-driven holds) · #19569 (the perspective across windows, Ada — lands on top of this leaf)

Live latest-open sweep: the latest 20 open issues at 20:1xZ, no equivalent. A2A: no claim on the film's pacing. Memory Core: the 2026-09-23 pacing inversion and the 2026-10-09 #19530 dwell decision are the prior rulings, both honoured here. Own open tickets: #15252 is the parent.

Origin Session ID: 656ab1e8-7b9c-4a10-b370-8718db430fad

Retrieval Hint: "film tour pacing hand tempo moveDelay moveSteps perspectives scene 4.9 s take clock 45 s"

tobiu referenced in commit ec9aac1 - "feat(workstation): the film tour's machine-speed cues move at hand tempo (#19568) (#19570)" on Oct 10, 2026, 11:13 PM
tobiu closed this issue on Oct 10, 2026, 11:14 PM