LearnNewsExamplesServices
Frontmatter
id19112
titleHold newborn film windows for the measured dialogue
stateClosed
labels
enhancementaitestingdashboard
assigneesneo-gpt-emmy
createdAtSep 23, 2026, 1:10 PM
updatedAtSep 23, 2026, 2:46 PM
githubUrlhttps://github.com/neomjs/neo/issues/19112
authorneo-gpt-emmy
commentsCount0
parentIssue15252
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAtSep 23, 2026, 2:46 PM

Hold newborn film windows for the measured dialogue

Closed v13.2.0/archive-v13-2-0-chunk-23 enhancementaitestingdashboard
neo-gpt-emmy
neo-gpt-emmy commented on Sep 23, 2026, 1:10 PM

Context

Sub of #15252, the continuous flagship film. The tear-out-first screenplay is merged through #19097 / PR #19107 at e6b7b10556ce4e8cbe4a757e35b013c02f52ae9e. Dialogue draft 2 is recorded on the parent; voices are Emmy/marin and Mnemosyne/nova, using the recovered July production pipeline.

The first timing rehearsal generated 23 immutable utterance WAVs. Measurements: the mid-birth Emmy line is 4.000 s, the following Mnemosyne question 2.350 s, and the re-entry invitation 2.800 s. The full audio-only listening preview is 67.500 s with declared turn gaps; that is not a finished film duration or visual acceptance receipt.

The Problem

NativeGestureDriver.executeTearOutStep has no stationary post-birth hold. After the real birth gate, it performs the survival moves and immediately re-enters or releases. The narration can therefore describe a window and a held pointer after that visual state has already ended.

Changing the cue's pause.ms does not solve this: TourRunner starts the cue and pause concurrently, then awaits host settlement. targetSeconds is a screenplay budget, not a runtime timer. Slowing the entire pointer path would conflate a deliberate visual hold with gesture motion.

The Architectural Reality

  • apps/workstation/tour/NativeGestureDriver.mjs#executeTearOutStep owns the witnessed pointer bracket and native birth/re-entry/release phases.
  • GestureDriver.runGesture retains dispatched-input cleanup, and driver.trap(driver.timeout(...)) is already the cancellable pacing idiom used by the preview dwell.
  • apps/workstation/tour/fiveBeatFilm.mjs owns app-specific cue options; stable scene/cue IDs bind the separate dialogue assets.
  • Existing cue-free pause steps can hold a settled result. A new narration engine or runner vocabulary is unnecessary.
  • test/playwright/unit/apps/workstation/GestureDriver.spec.mjs owns driver lifecycle/cleanup controls; the existing film whitebox witness owns the continuous real journey.

The Fix

Add an optional, default-zero birthDwellMs to the existing tear-out executor. Place it after confirmed birth/survival and before re-entry or terminal release. Keep the pointer down without synthesizing movement during the hold. Use the existing registered timeout/trap and cleanup path so cancellation/destruction cannot leave input pressed.

Use the measured dialogue map to set the film's hold and ordinary post-receipt pauses. Preserve the opening's short introduction and all existing scene/cue IDs. Correct the cold-open wording or timing against its measured duration before calling the combined rehearsal ready; the current eight-word line measures 4.650 s against a ≤3 s target.

Contract Ledger

Surface Authority Behavior Fallback Docs Evidence
New executeTearOutStep option birthDwellMs existing native gesture executor a positive duration holds the already-born vessel with pointer down before re-entry/release omitted/zero preserves existing timing; destruction cancels wait and releases input through existing cleanup method JSDoc phase-order and destroy-during-hold controls
Film cue pacing existing fiveBeatFilmScript hold durations come from actual utterance measurements; settled-result holds use pause-only steps optional commentary may be shortened/omitted, never invent a visual outcome screenplay header + parent timing receipt exact-head continuous replay; unchanged cue identities
Dialogue assets parent dialogue draft and recorded voice decisions immutable WAVs, measured durations, hashes and cue bindings in private production artifacts changed line creates a successor attempt parent public receipt, existing owner record decode/format/content checks; final perceptual/picture QA stays with the take

Acceptance Criteria

  • The default-zero path preserves the existing tear-out/morph behavior.
  • With a positive hold, no re-entry move or terminal pointer-up occurs until the hold settles; birth still precedes the hold.
  • Destroying/cancelling during the hold settles the run and releases input without late scripted moves.
  • The film uses the measured hold without changing scene/cue IDs or weakening ownership/painted-liveness assertions.
  • A focused real film replay remains green; native display capture and whole-media acceptance stay explicitly on #15252.
  • The parent receives a hash-bound dialogue/timing rehearsal receipt with cold-open duration and mid-gesture timing limits stated.

Out of Scope

Final video capture/publication; whole-film acceptance; new runtime audio playback or a generalized narration runner; the independent renderer issue #19110; unrelated-root isolation #19103.

Avoided Traps

A longer cue-bearing pause does not create a mid-gesture hold. Poll-attempt ceilings are not pacing. A successful audio decode is not a full perceptual listen or a picture-sync proof. Keep old attempts immutable and reuse the July pipeline.

Decision Record impact

none — app-owned choreography pacing on existing gesture/lifecycle primitives.

Related

Parent #15252 · #19097 · #16498.

Live latest-open sweep: latest 20 open Engine issues checked at 2026-09-23 11:08 UTC; no equivalent. A2A all-status last-30 sweep: Mnemosyne owns #19110, the screenplay reorder is merged, no competing gesture-hold claim. Own-assignment sweep: #16151 and #15526, neither overlaps. MC sweep on Workstation film dialogue/pointer/birth/pacing recovered today's coauthor split and prior film intake; this is the missing timing carriage, not a replacement film project. Structural map: N/A — modifies existing app/test files; the private generator is a lift of the prior film pipeline.

Origin Session ID: ef03b71d-0375-4160-8fde-ad4d19616eff

Retrieval Hint: Workstation film birthDwellMs measured dialogue pointer held born 4.000 2.350 2.800

Ownership: Emmy's implementation and dialogue timing lane; Mnemosyne retains the screenplay/take and coauthors the lines.

tobiu cross-referenced by PR #19115 on Sep 23, 2026, 1:38 PM
tobiu referenced in commit a1302b0 - "feat(workstation): hold film gestures for measured dialogue (#19112) (#19115) on Sep 23, 2026, 2:46 PM
tobiu closed this issue on Sep 23, 2026, 2:46 PM