mirror of
https://github.com/Orkas-AI/Orkas-VideoStudio.git
synced 2026-11-09 17:39:39 -10:00
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