Files
cxwandClaude Fable 5 8dac21a3b4 fix(edit,render): report audio that outlives the video, and scope the cover family to the delivered opening
Sync of the two remaining delivery-QA gaps from Orkas release_1.6.5
(f7668adb6 adapted, 274678ccf/bafbdcda8 cover scoping), each reshaped
to what OSS's pipeline actually does:

- mix A/V mismatch: upstream hard-fails on TRUNCATED narration because
  its mix uses -shortest. OSS's mix has no -shortest and amix runs to
  the longest input, so the failure shape here is the opposite — the
  written file carries audio past the video's end (sound over a frozen
  or absent picture). mix() now probes its own OUTPUT and reports
  av_mismatch {video/audio/overrun} past 0.3s, appends a plain-language
  warning, and the coverage 'over' message stops claiming a truncation
  that never happens. stage-assemble tier 3 names the rule: never
  deliver a file whose sound outlives its picture.
- Cover family scoped to the delivered opening: cover semantics are a
  whole-video property — frame 0 of the DELIVERED video is its poster —
  yet every AUTO middle segment was cover-blocked over a poster it will
  never be. `ovs draft --not-opening` (MCP not_opening) skips the cover
  contract in designContractIssues, the rendered cover checks in
  runContractHtmlQa, and downgrades the first-frame label from
  EMPTY_HOOK_FRAME to BLANK_SAMPLE_FRAME — still an error, because a
  blank first frame on a middle segment is a visible gap at the cut.
  stage-assemble passes the flag for every non-opening compose child.

Deliberately NOT ported (again, with the reason recorded): the
narration-map audio-coverage check (D22) — narration-map.json has no
writer anywhere in OSS, so a check against fields nobody produces would
be dead code; it needs the map writer first.

Verified: full OVS_E2E=1 suite 287/288. Real-ffmpeg case proves the
overrun file is written and reported ('over' + av_mismatch, no
"truncated" claim); unit cases pin cover-family skip vs non-cover gaps
for non-opening segments; a draft integration shows the middle segment
moving past E_DESIGN_CONTRACT_BLOCKED to the next real gate while the
opening posture still blocks.

Co-Authored-By: Claude Fable 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01VL7mRpmEphLAbcH7YmABnV
2026-08-12 11:29:50 +08:00
..