v2.45.0
The edit engine — Phase E, the final phase of the analysis + edit-engine program. Three evidence-driven loops on one shared skeleton: evidence query → dry-run plan with per-decision rationale → confirm token → versioned timeline ops → metric readback → brain_edits rows.
Added
- New
edit_engineMCP tool (compound tool count: 34):plan_selects/execute_selects— shots ranked by deep-tiereditorial.select_potentialand best moments (clip-level fallback), story-spine order, duration budget; execution builds a NEW selects timeline. Additive.plan_tighten/execute_tighten— dead-air lifts from transcript-gap evidence; execution assembles a tightened VARIANT timeline from keep ranges (true partial trims) — the original is never mutated.plan_swap/execute_swap— alternates via the visual-similarity index, filtered to shots that fill the slot exactly; in-place replacement on the version-archived timeline.list_plans/get_plan— fingerprinted plans undermemory/edit_plans/; stale or tampered plans refuse to execute.
src/utils/edit_engine.py(DB-only planning layer) +tests/live_edit_engine_validation.py(disposable-project live harness).
Fixed
- Analysis-store frames fall back to time-containment shot mapping when reports omit
frame_indices_used.
Validation
- Full offline suite: 1118 tests (13 new); 3 known live-Resolve environmental failures only.
- Live pilot on a disposable synthetic-media Resolve project: 20/20 checks — selects assembled, tighten removed exactly the 15.2s of transcript dead air while keeping the spoken 4.8s, swap replaced the item with a 0.92-cosine alternate, brain_edits rationale rows present for all loops, timeline versions archived.