Skip to content

The whole-video production preview: one sheet, segments in playback order - #23

Merged
leochenpm merged 1 commit into
sync/manifest-single-planfrom
sync/production-preview
Aug 12, 2026
Merged

The whole-video production preview: one sheet, segments in playback order#23
leochenpm merged 1 commit into
sync/manifest-single-planfrom
sync/production-preview

Conversation

@leochenpm

Copy link
Copy Markdown
Collaborator

Batch 10 of the release_1.6.5 sync. Stacked on #22. Re-mapped by hand from Orkas commits 3b9451d78 ("put every segment in the production preview, media included"), c072d58ef ("lead the production preview with the whole-video sheet"), 2182ad89a ("review an assembled video as one video").

Why

Batch 6 (#19) landed the rule — an assembled production is ONE video; the stop count never grows with the segment count — but OSS had no tool that produces a whole-video look: contact sheets were per-composition only, so the only honest presentations were per-segment sheets (four links to four children) or nothing.

What

  • ovs plan preview <plan.json> --video <draft> --out-dir <dir> (+ MCP plan_preview): probes the assembled draft, samples the cover plus one frame per primary segment at the midpoint of its window — target_sec proportions scaled to the real duration, so planned-vs-produced drift shifts midpoints proportionally instead of seeking past the end — extracts the frames, and composes ONE contact sheet. Capped at 24 segments with the truncation reported, never silent.
  • stage-assemble leads Gate D with this sheet; per-segment sheets and per-segment approval stops are named anti-patterns. orchestration's AUTO stop-economics rule now points at the command that makes it executable.
  • Deliberately not ported: upstream's production-scope batched QA phases and uncaptured_segment_ids — those need a production state machine OSS doesn't have. The review-side value lands without it.

Verification

Full OVS_E2E=1 suite 283/284. Unit: midpoint scaling (20s planned on a 10s cut halves every window), last-seekable clamp, cover-only degradation, cap reporting. Real ffmpeg: a 4s assembled clip → cover + two segment frames on disk + one SVG sheet naming both.

🤖 Generated with Claude Code

https://claude.ai/code/session_01VL7mRpmEphLAbcH7YmABnV

…in playback order

Sync of the assembled-production review contract from Orkas
release_1.6.5 (3b9451d78, c072d58ef, 2182ad89a), re-mapped onto the ovs
surface as a new capability rather than host state:

- New productionPreview(plan, video, outDir): probes the assembled
  draft, samples the cover plus one frame per PRIMARY segment at the
  midpoint of its window (target_sec proportions scaled to the REAL
  duration, so planned-vs-produced drift shifts midpoints instead of
  seeking past the end), extracts the frames, and composes ONE contact
  sheet. Pure planner buildProductionPreviewPlan is unit-tested; the
  sheet is capped at 24 segments with the truncation reported, never
  silent. Exposed as `ovs plan preview` + MCP plan_preview.
- stage-assemble Step 4 leads Gate D with this sheet: never per-segment
  contact sheets ("four links to four children is not a look at the
  video"), never per-segment approval stops. orchestration's AUTO rule
  (from the batch-6 stop economics) now points at the command that
  makes it executable.

Deliberately NOT ported: upstream's production-scope batched QA phases
and uncaptured_segment_ids state — those need a production state
machine OSS does not have; the review-side value lands here without it.

Verified: full OVS_E2E=1 suite 283/284. Unit cases: midpoint scaling
(20s planned on a 10s cut halves every window), last-seekable clamp,
cover-only degradation, cap reporting. Real-ffmpeg case: 4s assembled
clip → cover + two segment frames on disk + one SVG sheet naming both.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VL7mRpmEphLAbcH7YmABnV
@leochenpm
leochenpm merged commit 5e0ba67 into sync/manifest-single-plan Aug 12, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant