Skip to content

v2.41.0

Choose a tag to compare

@samuelgursky samuelgursky released this 10 Jun 15:08

DB-canonical clip analysis (C1) — Phase A of the analysis + edit-engine program.

The per-project SQLite DB (_soul/timeline_brain.sqlite, schema v9) is now the source of truth for clip analysis; analysis.json becomes a derived export written in lockstep.

Added

  • Schema v9: clips, clip_aliases, analysis_reports (canonical full payload), shots, subjective_fields + field_changelog (per-field provenance), transcript_segments, frames, qc_observations.
  • src/utils/analysis_store.py: transactional ingest, export with human-correction overlay (human rows always win and survive re-analysis), alias-based clip lookup, shot ids stable under one-second boundary jitter, round-trip guard verified against a real sample analysis root.
  • media_analysis actions db_status and db_ingest (one-shot migration of existing JSON reports + corrections.json sidecars into the DB).

Changed

  • Analysis write path: execute_plan and commit_vision write DB rows first, then export the JSON. Panel clip/shot endpoints read DB-first with JSON fallback for pre-v9 reports and job-linked report dirs.
  • update_clip_field / update_shot_field / revert_field mirror corrections into the DB as row-level provenance (the sidecar remains for compatibility).

Fixed

  • Eight V2 actions unreachable from MCP dispatch since v2.24.0 (get_panel_state, set_panel_state, session_start_context, update_shot_field, update_clip_field, get_field_history, revert_field, list_corrections) — checked inside the dispatch block but missing from its membership set; the control panel proxied to the helpers directly, which masked it.
  • The action-list drift guard now inspects async tool functions and fails on unreachable actions inside membership blocks; four reachable-but-unadvertised actions are now listed in the unknown-action error.

Validation

  • Full offline suite: 1066 tests (12 new), 3 known live-Resolve environmental failures only (present on clean baseline).
  • Round-trip guard on the real 2026-05-17 sample root; live headless pipeline run on synthetic media verifying rows-then-export parity, row-level corrections, and DB-first panel reads.