At exact dev head c59d4c74054c96db31baeab34b37a5dc86c1cf58, the headed Workstation film profile passed functionally (5 passed, 3 explicitly skipped, 0 failed), but a full census of all 1,167 recorded page frames found that the intended light-theme beat is not readable: scene 1 presents no captured light frame, and the tear-out witness presents only an 80–120 ms flash.
Source inspection falsified the initial skin-regression hypothesis. The flash is authored choreography: WorkstationFiveBeatNL.spec.mjs reaches the light state and immediately restores dark. The isolated dark/blank showcase frame is likewise the authored page.reload() seam between determinism runs, not ambient render collapse.
This is a one-PR leaf under #15252. It restores the already-declared film contract without widening the product surface.
The Problem
The test currently collapses two different evidence profiles:
the default spec profile proves determinism through two runs, equality checks, and an intervening reload;
NEO_FILM_TAKE=1 changes gesture pace and enables video, but still records both proof runs and the reset seam;
theme correctness is polled, but there is no film-readable hold after the light state settles.
Functional proof remains green while the recorded artifact misses the intended beat. The production record requires B-03 — “theme flip light→back” — to occupy at least three seconds, and it requires one headed scripted presentation run rather than the determinism reset.
The Architectural Reality
The live surface is test/playwright/e2e/workstation/WorkstationFiveBeatNL.spec.mjs:
filmTake and filmPace are defined at lines 56–59;
scene 1 always loops twice at line 452, restores dark immediately at lines 542–556, and reloads at line 575;
the cross-zone showcase always loops twice at line 601 and reloads at line 668;
the normal profile's equality assertions at lines 579–581 and 672–674 are the determinism contract and must remain intact.
#14640 established the TourRunner separation: demo/spec/record modes may differ in pace and output while preserving action order and correctness. #15252 requires one headed scripted journey suitable for recording.
The Fix
Keep one source of truth and split only the execution profile inside WorkstationFiveBeatNL.spec.mjs:
Give film mode a declared theme dwell of at least 3,000 ms.
Apply that dwell only after the light-theme poll has proven the observable state.
Run scene 1 and the cross-zone showcase once under NEO_FILM_TAKE=1; keep the default profile at two runs.
Execute reload and cross-run equality assertions only when the profile actually requests two determinism runs.
Preserve every worker-truth assertion, page-error assertion, gesture proof, and stage-geometry receipt in both profiles.
A fixed delay is valid here only as presentation pacing after correctness is established. It must never replace polling or become evidence that the theme applied.
Contract Ledger
Target Surface
Source of Authority
Proposed Behavior
Fallback / Edge Case
Docs
Evidence
NEO_FILM_TAKE=1 in WorkstationFiveBeatNL.spec.mjs
#14640 record-mode contract + #15252 B-03 film beat
Record one presentation pass; after the observable light state settles, hold it for at least 3,000 ms before restoring dark
With the variable absent, retain two-run determinism, reload, and equality assertions unchanged
Inline profile commentary
Default and film-profile Playwright runs plus full retained-frame census
Decision Record impact: none — this implements the shipped record-mode separation from #14640 and does not alter an ADR-governed runtime surface.
Acceptance Criteria
With NEO_FILM_TAKE absent, scene 1 and the cross-zone showcase still execute two runs, reload between them, and assert identical semantic logs.
With NEO_FILM_TAKE=1, scene 1 and the cross-zone showcase each execute exactly one presentation run and do not record a determinism reload seam.
Film mode proves the light theme through the existing observable-state poll, then holds it for at least 3,000 ms before restoring dark.
No fixed delay is used as correctness evidence; worker-truth, page-error, gesture, continuity, and stage-geometry assertions remain active.
Both the default targeted profile and the headed film profile pass at the implementation head.
A full census of the retained film-profile page frames shows the readable light-theme interval and no authored reload blackout in the presentation streams.
Out of Scope
Native-display capture, privacy-clean frame-zero approval, or the operator's hands-off lease.
Product CSS/skin changes; the exact-head census did not establish a skin defect.
Cross-window scene choreography beyond the existing scene-1 and showcase profile split.
Transcript freeze, narration, editing, or publication.
Avoided Traps
Do not weaken the default two-run determinism proof to make the recording cleaner.
Do not insert sleeps before state settlement or use elapsed time as proof of correctness.
Do not treat Playwright page-video streams as publishable native-display footage.
Context
At exact
devheadc59d4c74054c96db31baeab34b37a5dc86c1cf58, the headed Workstation film profile passed functionally (5 passed, 3 explicitly skipped, 0 failed), but a full census of all 1,167 recorded page frames found that the intended light-theme beat is not readable: scene 1 presents no captured light frame, and the tear-out witness presents only an 80–120 ms flash.Source inspection falsified the initial skin-regression hypothesis. The flash is authored choreography:
WorkstationFiveBeatNL.spec.mjsreaches the light state and immediately restores dark. The isolated dark/blank showcase frame is likewise the authoredpage.reload()seam between determinism runs, not ambient render collapse.This is a one-PR leaf under #15252. It restores the already-declared film contract without widening the product surface.
The Problem
The test currently collapses two different evidence profiles:
NEO_FILM_TAKE=1changes gesture pace and enables video, but still records both proof runs and the reset seam;Functional proof remains green while the recorded artifact misses the intended beat. The production record requires B-03 — “theme flip light→back” — to occupy at least three seconds, and it requires one headed scripted presentation run rather than the determinism reset.
The Architectural Reality
The live surface is
test/playwright/e2e/workstation/WorkstationFiveBeatNL.spec.mjs:filmTakeandfilmPaceare defined at lines 56–59;#14640 established the TourRunner separation: demo/spec/record modes may differ in pace and output while preserving action order and correctness. #15252 requires one headed scripted journey suitable for recording.
The Fix
Keep one source of truth and split only the execution profile inside
WorkstationFiveBeatNL.spec.mjs:NEO_FILM_TAKE=1; keep the default profile at two runs.A fixed delay is valid here only as presentation pacing after correctness is established. It must never replace polling or become evidence that the theme applied.
Contract Ledger
NEO_FILM_TAKE=1inWorkstationFiveBeatNL.spec.mjsDecision Record impact: none — this implements the shipped record-mode separation from #14640 and does not alter an ADR-governed runtime surface.
Acceptance Criteria
NEO_FILM_TAKEabsent, scene 1 and the cross-zone showcase still execute two runs, reload between them, and assert identical semantic logs.NEO_FILM_TAKE=1, scene 1 and the cross-zone showcase each execute exactly one presentation run and do not record a determinism reload seam.Out of Scope
Avoided Traps
Related
Retrieval Hint:
"film v1 exact-head page-only smoke 1167 frames theme dwell WorkstationFiveBeatNL"Retrieval Hint: commit
c59d4c74054c96db31baeab34b37a5dc86c1cf58