- Phase realign for matched results: drop the "long scene" gate (>1.6x
segment, >=6s) in favor of "scene has any meaningful slack beyond the
segment". Already-confirmed segments in tight scenes are still skipped to
protect strong matches. A repair is only committed if the new score is
not meaningfully worse than the original (>=score-0.02).
- Recovery stage for unmatched beats: vibe-check (CV) feeds top-K candidate
scenes into the semantic action-window search; CV alignment + vision phase
validate gate decide whether the candidate becomes a provisional match.
Beats without scoreable visual content (logos, title cards, full fades)
remain unmatched by design.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
For segmented beats, the repair stage now searches for the source action
window using the segment's own description first; the full beat context is
used only as a fallback or when it scores noticeably higher. The trailer-
offset shift is applied only when the beat context is actually chosen.
Also harden vision-call retries to catch read-side network errors
(TimeoutError, socket.timeout, ConnectionError, OSError) and wrap the
filter/repair loop so a transient vision failure preserves the previously
cached match instead of dropping it.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>