Garnet Team — Step 2: Pacing Review & Runtime Verification
Film: The Winding Hour
Author: garnet-editor (Post-Production Lead)
Date: 2026-05-22
Status: COMPLETE — 1 voice gap fix required (see Section 4)
1. Mathematical Runtime Verification
Method: Python script (step2-runtime-verify.py) parsing all 26 shots from scene_list.md.
Results
| Metric | Value | Target | Status |
|---|---|---|---|
| Total shots | 26 | — | — |
| Shot content | 233s | — | — |
| Scene boundary gaps | 6 × 1.5s = 9s | — | — |
| Total runtime | 242s (4:02) | 3:00–5:00 | ✅ PASS |
| Shortest shot | 6s | ≥1.5s | ✅ PASS |
| Longest shot | 12s | ≤15s | ✅ PASS |
| Average shot duration | 9.0s | — | — |
| Consecutive SILENT | None | — | ✅ PASS |
Per-Act Breakdown
| Act | Scenes | Duration | % of Runtime | Shots |
|---|---|---|---|---|
| Act I — The Slowing | 1–2 | ~64s | 27% | 7 |
| Act II — The Climb | 3–5 | ~96s | 39% | 11 |
| Act III — The Winding | 6–7 | ~82s | 34% | 8 |
Editorial assessment: The asymmetry is correct. Act II (the climb + 3 memory flashes + clock-stop) gets the most screen time. Act III (winding + sunrise) is slightly longer than I estimated in Step 1, but this is appropriate — the winding needs room for tenderness, and the sunrise payoff needs space to land. The 27/39/34 split is solid.
Runtime headroom: At 4:02, we have ~58s of buffer before hitting the 5:00 ceiling. This is important because:
- Crossfade transitions add overlap but don’t significantly change total length
- Opening titles and closing credits will add ~15-20s
- TTS overrun (1.5-2.5x reported) may require extending some shots
- Projected final runtime with titles: ~4:20-4:30 — well within target
2. Pacing Review
Shot Duration Distribution
| Duration | Count | Shots |
|---|---|---|
| 6s | 2 | 3D, 5D |
| 7s | 1 | 3C |
| 8s | 9 | 1B, 1C, 2B, 2D, 4A, 4C, 5A, 5B, 6A, 6D |
| 10s | 8 | 1A, 2A, 2C, 3A, 5C, 6B, 6E, 7A, 7B |
| 12s | 3 | 4B, 6C, 7C |
Assessment: GOOD. The distribution clusters around 8-10s, which is ideal for expressionist pacing — enough dwell time for the eye to read the painted shadows and impossible geometry. The 6s and 7s shots are correctly placed in high-momentum passages (post-memory-flash transitions, the climactic silence window).
Pacing Concerns
| Flag | Shot | Issue | Severity | Recommendation |
|---|---|---|---|---|
| ⚠️ | 5D | 6s [SILENT] following the clock-stop silence (5C 5s-10s) | LOW | Acceptable — the [SILENT] here is an editorial breath after the film’s most powerful moment. Aldric setting down the horse and climbing the last stairs is pure physical action. The narrator’s absence reinforces the silence’s power. No change needed. |
| ℹ️ | 7C | 12s final shot with VO ending at 4s + 8s visual hold/fade | INFO | Correct by design. The held visual with tick only is the lullaby landing. The 3s fade-to-black gives the audience a gentle release. No change needed. |
| ℹ️ | 6C | 12s — longest non-final shot | INFO | Justified. The winding is the emotional climax and needs room: Aldric’s dialogue (3.5s) + 1s gap + narrator’s full description (6.5s). No change needed. |
No Flags For:
- ✅ No shots exceed 15s
- ✅ No cuts faster than 1.5s (shortest is 6s; Act III exception not triggered since all Act III shots ≥8s)
- ✅ No consecutive [SILENT] shots
- ✅ Single [SILENT] shot (5D, 6s) is appropriately brief and contextually justified
3. Musical Arc (Cross-Reference)
Full Musical Arc definition posted separately at /workspace/shared-dirs/garnet-team/step2-musical-arc.md. Summary:
| Movement | Act Coverage | Tempo | Instrumentation | Key Feature |
|---|---|---|---|---|
| I — “The Workshop” | Act I (Scenes 1-2) | 72 BPM steady | Solo music box, prepared piano, metallic percussion | Lullaby motif, matches healthy tick |
| II — “The Staircase” | Act II (Scenes 3-5) | 60→40 BPM decelerating | Fragmented music box, sustained cello, glass tones | Melody dissolves; hard cutouts at 3 amber flashes |
| (silence) | Clock-stop (Shot 5C 5s-10s) | — | Nothing | Complete absence |
| III — “The Winding” | Act III (Scenes 6-7) | 40→72 BPM rebuilding | Warm strings, harp, full lullaby return | Melody completes; sunrise coda |
Score cut-out points (Guardrail #9 — no score during memory flashes):
- Shot 3C, 2s-4s (Amber Flash #1)
- Shot 4C, 1s-4s (Amber Flash #2)
- Shot 5C, 0.5s-4s (Amber Flash #3)
- Shot 5C, 5s-10s (Climactic silence — score already absent by this point)
4. Voice Isolation Verification
Method
Python script verified all 23 cross-shot voice transitions and all 5 within-shot (SEQUENCED) gaps against the playbook’s minimum gap table:
| Transition Type | Minimum Gap |
|---|---|
| Same voice track, same scene | 0.5s |
| Same voice track, across scene boundary | 1.0s |
| Different voice tracks, same scene | 0.75s |
| Different voice tracks, across scene boundary | 1.5s |
Results
- Within-shot gaps (SEQUENCED): 5/5 PASS ✅
- Cross-shot gaps: 22/23 PASS, 1 FAIL ❌
❌ FAILURE: Shot 5B → Shot 5C
| Detail | Value |
|---|---|
| Shots | 5B (Aldric DLG ends 7.5s, shot is 8s) → 5C (Narrator VO starts 0s) |
| Transition type | Cross-track (ALDRIC→NARRATOR), within scene |
| Actual gap | 0.50s |
| Required minimum | 0.75s |
| Shortfall | 0.25s |
Recommended Fix
Shift 5C VO start from 0s to 0.5s. This creates a 1.0s total gap (0.25s margin above minimum).
Creative justification: 5C is the golden flood / clock-stop shot. The amber flash starts at 0.5s. Aligning the narrator’s line (“The warmth held. Five heartbeats. Six. Seven.”) with the amber onset at 0.5s is actually stronger editorially — the narrator and the visual mode shift arrive together.
Updated 5C timing:
- VO: “The warmth held. Five heartbeats. Six. Seven.” → 0.5s–4.5s (was 0s–4s)
- Amber flash: 0.5s–4s (unchanged)
- Silence window: 5s–10s (unchanged)
Impact on runtime: +0.5s VO shift within existing 10s shot. Total runtime unchanged.
@garnet-creative: Please apply this fix to scene_list.md.
5. Narrator Coverage Analysis
| Metric | Value |
|---|---|
| Total narrator VO time | 153s |
| Narrator coverage of runtime | 63% |
| Aldric dialogue time | ~17s across 5 moments |
| Total voice time | ~170s (70% of runtime) |
| Non-voice time (visual/ambient only) | ~72s (30%) |
Assessment: STRONG. 63% narrator coverage is ideal for a fairy-tale register — the story is always being told, but there’s enough breathing room for the visual and ambient layers to carry their weight. The 30% non-voice time is distributed across shot tails (visual holds after VO ends), the climactic silence (5s), and the single SILENT shot (6s). This ratio keeps the audience comprehending the story while never feeling over-narrated.
6. Summary & Verdict
| Check | Result |
|---|---|
| Runtime (3:00–5:00) | ✅ PASS — 4:02 |
| Shot duration limits | ✅ PASS — all 6-12s |
| No consecutive SILENT | ✅ PASS |
| Musical Arc defined | ✅ COMPLETE |
| Voice isolation (within-shot) | ✅ PASS — 5/5 |
| Voice isolation (cross-shot) | ❌ 1 FAIL — 5B→5C gap 0.50s < 0.75s |
| Pacing flags | ✅ No actionable issues |
Overall: CONDITIONAL PASS. One voice gap fix needed (5C VO shift to 0.5s start). Once applied, all gates clear.
Addendum: Shot 5C Split (Post-Tech-Review)
Change: Shot 5C (10s) split into 5C-i (5s, [VO], amber flash) and 5C-ii (5s, [SILENT], clock-stop silence). Hard cut at the clock-stop moment. Total shot count: 27.
Voice isolation: Unaffected. 5C-i VO ends at 4.5s. Next voice is 6A (NARRATOR, 0s) after 5C-ii (5s) + 5D (6s) + 1.5s scene gap = 13.0s total gap. ✅
Consecutive SILENT flag: 5C-ii [SILENT] → 5D [SILENT] = 11s without voice track. ACCEPTED with conditions:
- Veo ambient audio must carry narrative weight in both shots (oppressive silence in 5C-ii, urgent footsteps/breathing in 5D)
- No further extension beyond 11s total voiceless window — Guardrail #8 ceiling
Runtime impact: None. Total remains 242s (4:02).
garnet-editor — Garnet Team Post-Production Lead