Commit Graph

79 Commits

Author SHA1 Message Date
Melbar f63d65fcd2 Handle fade-led segment phase ties 2026-05-09 10:11:36 +02:00
Melbar c08ba97d37 Improve multi-shot phase retune 2026-05-09 09:36:11 +02:00
Melbar a275b2efb6 Retune weak multi-shot segment phases 2026-05-09 05:10:38 +02:00
Melbar fab6c53698 Remove legacy match report 2026-05-09 04:33:53 +02:00
Melbar c5b7d61451 Restore visible beat 14 cutter candidate 2026-05-09 04:31:14 +02:00
Melbar acafe538b2 Tighten cutter phase span validation 2026-05-08 14:56:44 +02:00
Melbar 10e27afc8d Make cutter report the only generated review report 2026-05-08 14:29:49 +02:00
Melbar e335fffe92 Mask timecode in phase refine and guard cutter scene starts 2026-05-08 14:18:27 +02:00
Melbar bdc9e4ab31 Clamp cutter clips to source scene start 2026-05-08 14:11:02 +02:00
Melbar 430a81a988 Constrain hi-res phase refine and update beat 14 2026-05-08 13:45:09 +02:00
Melbar 5611902eb5 Update cutter report for beat 14 compare clip 2026-05-08 13:21:35 +02:00
Melbar 4eeecca80d Fix cutter compare fallback for single-shot matches 2026-05-08 13:18:56 +02:00
Melbar 5407f08fbc Auto-update cutter report 2026-05-08 12:46
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-08 12:46:57 +02:00
Melbar 0baedb3a17 Auto-update cutter report 2026-05-08 12:22
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-08 12:22:35 +02:00
Melbar d83fced8d2 Fix multi-shot matching: increase cut correlation threshold to properly segment multi-island beats 2026-05-08 12:16:09 +02:00
Melbar 4fe1d35f1a Fix multi-shot matching: Always use continuity seed for first island to prevent wrong scene jumps 2026-05-08 11:50:13 +02:00
Melbar 730b5ef3c0 Auto-update cutter report 2026-05-08 11:31
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-08 11:31:15 +02:00
Melbar f20f89b06b Add hi-res phase refinement for intra-scene phase matching (Beat 03 investigation) 2026-05-08 10:52:11 +02:00
Melbar 18c8c89ee6 Auto-update cutter report 2026-05-08 10:31
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-08 10:31:59 +02:00
Melbar 9b524c9329 Auto-update cutter report 2026-05-08 10:18
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-08 10:18:12 +02:00
Melbar 1e5ffffd91 Auto-update cutter report 2026-05-08 10:04
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-08 10:04:18 +02:00
Melbar 8fd0442724 Auto-update cutter report 2026-05-08 09:40
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-08 09:40:51 +02:00
Melbar 18a67387f6 Auto-update cutter report 2026-05-08 09:25
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-08 09:25:43 +02:00
Melbar 7ffe4adc3b Auto-update cutter report 2026-05-08 09:10
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-08 09:10:33 +02:00
Melbar 92a12276ee Auto-update cutter report 2026-05-06 20:53
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-06 20:53:01 +02:00
Melbar 64b53c0e82 Auto-update cutter report 2026-05-06 20:28
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-06 20:28:39 +02:00
Melbar 8096f9b4d8 Auto-update cutter report 2026-05-06 20:10
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-06 20:10:55 +02:00
Melbar e960b1c080 Auto-update cutter report 2026-05-06 19:40
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-06 19:40:19 +02:00
Melbar c972894972 Fix: prevent tail-trimming of valid matches at hard scene boundaries in global_scan.py 2026-05-06 19:06:33 +02:00
Melbar 72e22969b4 Auto-update cutter report 2026-05-06 19:00
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-06 19:00:08 +02:00
Melbar 9d3c5d5afd Auto-update cutter report 2026-05-06 18:47
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-06 18:47:39 +02:00
Melbar 0375580373 Auto-update cutter report 2026-05-06 18:33
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-06 18:33:17 +02:00
Melbar e3a4c22b71 Auto-update cutter report 2026-05-06 17:34
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-06 17:34:37 +02:00
Melbar c71ed2b701 Auto-update cutter report 2026-05-06 14:07
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-06 14:07:48 +02:00
Melbar 49412c54a6 Auto-update cutter report 2026-05-06 13:58
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-06 13:58:00 +02:00
Melbar 533ab49d62 Auto-update cutter report 2026-05-06 13:25
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-06 13:25:40 +02:00
Melbar f1e9636a83 Auto-update cutter report 2026-05-06 13:05
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-06 13:05:24 +02:00
Melbar cd10e2bc03 Auto-update cutter report 2026-05-06 12:48
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-06 12:48:55 +02:00
Melbar c118428167 gitignore: exclude .code-workspace and .claude/ session data
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-06 12:45:36 +02:00
Melbar 45769aa366 Refactor report pipeline: redesign HTML, add motion alignment, remove legacy reporter
- scripts/generate_cutter_report.py: complete HTML redesign with glassmorphism
  dark-mode style, compare video links in markdown output
- cli.py: cmd_report now calls _regenerate_cutter_report directly; also writes
  legacy match_report.html; removes dependency on src/pipeline/reporter.py
- src/cv/global_scan.py: add motion-phase alignment refinement step after
  initial in-point search (align_in_point_by_motion, threshold +0.015)
- Remove HANDOVER.md and src/pipeline/reporter.py (superseded)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-06 12:44:10 +02:00
Melbar 3b90905d07 Auto-update cutter report 2026-05-06 12:30
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-06 12:30:03 +02:00
Melbar 07f47ebe2b Auto-update cutter report 2026-05-06 10:52
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-06 10:52:14 +02:00
Melbar 2f8b0585e2 Auto-update cutter report 2026-05-06 10:44
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-06 10:44:20 +02:00
Melbar d287952572 Auto-update cutter report 2026-05-06 10:29
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-06 10:29:06 +02:00
Melbar e2c30d0062 Auto-update cutter report 2026-05-06 09:21
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-06 09:21:11 +02:00
Melbar fab6aa9388 Remove legacy _seg*.mp4 files replaced by new compare clip pipeline
Old per-segment source clips (beat_10, beat_12, beat_15) are obsolete —
generate_cutter_report.py now produces beat_NN_compare.mp4 side-by-side clips.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-06 07:53:20 +02:00
Melbar 64e0132cc7 Upgrade CUTTER_REPORT: Frame-Locked Compare, full metadata, auto-commit+push
generate_cutter_report.py:
- Frame-Locked Compare video (trailer left / source right, single MP4) per
  beat replaces two separate side-by-side clips; rendered via accurate
  double-seek + black-fill segmented source reconstruction
- Generation timestamp now includes HH:MM:SS (Uhrzeit-Angabe)
- Per-beat segment list for multi-shot beats (TC, duration, offset, scene,
  score per segment)
- Score warning badge (yellow) if score < 0.65
- python cli.py rematch --beat N command hint in every card
- Overview table links to each beat card via #anchor
- Cleaner dark/light CSS using design tokens (--fg/--bg/--card/--bd)
- --no-clips flag (replaces --with-clips; default is now with clips)

cli.py:
- _auto_commit_push_reports(): after every report regeneration, stages the
  report output files (CUTTER_REPORT.*, output/cutter_clips/, output/report/)
  and auto-commits + pushes to origin/main so remote is always current
- Removed the legacy match_report.html call from _regenerate_cutter_report
  (CUTTER_REPORT now supersedes it)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-06 07:39:02 +02:00
Melbar 4afb438a4d Beat 15: phase-correct coffee in-point to 2618.80s (scene 309, 00:45:27)
Actor-focused multi-frame temporal scan showed the correct action phase
(left woman back to camera, right woman in profile) at t=2618.8s vs
the previously used 2615.5s where both women were in different positions.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-06 07:26:25 +02:00
Melbar a7b103b4fe Beat 15: correct knife match to scene 17 (t=130.32s) + coffee to scene 309 (t=2615.52s)
Template scan of entire source found the knife/letter-opener close-up at
t=130-133s in the film (scene 17, 127.76-133.04s).  Previous wrong match was
pointing at scene 309 (the coffee/window scene) for both shots because the
strong continuity seed from beat 14 overwhelmed the global search.

Two-segment provisional match written to cache manually:
  seg[0] knife: scene 17  in=130.32s  dur=2.80s  score=0.72 (confirmed)
  seg[1] coffee: scene 309 in=2615.52s dur=1.28s  score=0.38 (provisional)

Regenerated CUTTER_REPORT and match_report with correct beat 15 clips/stills.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-06 00:05:59 +02:00
Melbar 54d3f04616 Fix matching regressions, cache guard, and multi-shot algorithm for beat 15
- config.toml: revert scoreable_luma/contrast thresholds to 24/58/24 (lowering
  them let cross-fade blend frames contaminate content-validation templates,
  dropping scores below provisional_content_threshold)
- src/cv/global_scan.py: _is_dark_reference_frame now requires contrast<30 so
  genuine dark silhouette frames are not rejected as scoreable; two-path
  _is_scoreable_reference_frame separates standard vs fade-content scoring
- cli.py: _keeps_cached_match() guard prevents a weaker single-span rematch
  from overwriting a better multi-segment provisional cache entry
- cli.py: _fade_content_shots() restricted to between-island gaps only—
  pre-island black leaders were incorrectly emitted as matchable shots
- cli.py: island[0] of _match_unmatched_visual_segments() now uses no
  continuity seed so an insert cut at the start of a multi-shot beat is not
  forced toward the previous beat's scene
- scripts/generate_cutter_report.py: fix ffmpeg concat demuxer on Windows—
  use part.absolute().as_posix() so paths in the concat txt are absolute and
  not double-resolved relative to the concat file's directory

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-06 00:05:37 +02:00