v0.2.0 — agentic re-architecture + continuous-bed mix
A quality-focused release: cut mode is in sync by construction, the narration mix is a continuous bed, the narration itself is less "cold", and full-episode understanding survives the MiMo cluster's rate limit.
Changed
- Cut mode is cut-first / narrate-second. The cut is rendered from
clip_plan.jsonfirst, then narration is written against the real output timeline — no source→output remap, so narration and picture stay in sync by construction. Full mode unchanged. - Continuous original-audio bed. The original is ducked into one held low bed under the narration; inter-beat gaps shorter than
duck_bridge_seconds(default 12s) no longer pop the source dialogue back up. Tune withDUCK_BRIDGE_SECONDS. - Narration density is a guide, not a quota — no padding with filler/pixel-description to hit a number.
--consolidatestory index on by default (backward-compatible manifest shim).- Research directive only fires when the substrate is thin/empty.
Added
- Cut-desync floor: normalized-plan lint + blocking preflight before TTS, with
--allow-sparse-cut. - Phase ledger (
recap_phase.json) for deterministic cut-mode resume. duck_bridge_secondsconfig knob.
Fixed
- Long-video understanding rides out MiMo cluster rate limits (retries 10× / 60s cap / 10s floor; optional
ASR_THROTTLE_SECONDS). - Resume cannot reuse stale artifacts (proves current bytes/settings before reuse).
Full notes: CHANGELOG.md. Verified: 261 tests across 6 groups, ruff clean, no-ffmpeg CI green on macOS/Linux/Windows.