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>
This commit is contained in:
Melbar
2026-05-06 00:05:59 +02:00
parent 54d3f04616
commit a7b103b4fe
9 changed files with 15 additions and 19 deletions
+1 -1
View File
File diff suppressed because one or more lines are too long
+4 -4
View File
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.
Binary file not shown.
+10 -14
View File
@@ -19,7 +19,7 @@ video { width: 100%; border-radius: 6px; box-shadow: 0 4px 6px rgba(0,0,0,0.5);
.code-hint { background: #000; padding: 10px; border-radius: 4px; font-family: monospace; font-size: 0.9em; margin-top: 15px; color: #a3e635; }
</style></head><body>
<h1>AI Trailer Generator — Match Report</h1>
<div class='stats'>Total Beats: 25 | Matched: 20</div>
<div class='stats'>Total Beats: 25 | Matched: 19</div>
<script>
function syncBeat(row) {
const vids = row.querySelectorAll('video');
@@ -330,12 +330,12 @@ document.addEventListener('DOMContentLoaded', () => document.querySelectorAll('.
<p><b>Type:</b> UNKNOWN</p>
<p><b>Trailer:</b> 57.08s &rarr; 61.48s</p>
<p style='color: #fbbf24; font-weight: bold; font-size: 1.1em;'>PROVISIONAL MATCH</p>
<p><b>Scene ID:</b> 309</p>
<p><b>Movie In:</b> 2626.93s</p>
<p><b>Source Dur:</b> 4.00s</p>
<p><b>Scene ID:</b> 17</p>
<p><b>Movie In:</b> 130.32s</p>
<p><b>Source Dur:</b> 4.08s</p>
<p><b>Segments:</b> 2 matched visual islands</p>
<p><b>Unmatched Tail:</b> 0.08s placeholder</p>
<p><b>Score:</b> <span class='score'>0.555</span></p>
<p><b>Score:</b> <span class='score'>0.613</span></p>
<p style='color: #fbbf24; font-size: 0.9em;'>Some trailer frames are still unmatched; report fills only those gaps with placeholder black.</p>
<p style='color: #fbbf24; font-size: 0.9em;'>⚠️ Score below 0.80. Verify visually.</p>
<div class='code-hint'>python cli.py rematch --beat 15</div>
@@ -400,18 +400,14 @@ document.addEventListener('DOMContentLoaded', () => document.querySelectorAll('.
<h3>Beat 019</h3>
<p><b>Type:</b> UNKNOWN</p>
<p><b>Trailer:</b> 70.76s &rarr; 72.52s</p>
<p style='color: #fbbf24; font-weight: bold; font-size: 1.1em;'>PROVISIONAL MATCH</p>
<p><b>Scene ID:</b> 126</p>
<p><b>Movie In:</b> 1008.54s</p>
<p><b>Source Dur:</b> 0.88s</p>
<p><b>Unmatched Tail:</b> 0.48s placeholder</p>
<p><b>Score:</b> <span class='score'>0.403</span></p>
<p style='color: #fbbf24; font-size: 0.9em;'>Some trailer frames are still unmatched; report fills only those gaps with placeholder black.</p>
<p style='color: #fbbf24; font-size: 0.9em;'>⚠️ Score below 0.80. Verify visually.</p>
<p class='status-miss'>NO MATCH</p>
<div class='code-hint'>python cli.py rematch --beat 19</div>
</div>
<div class='videos'>
<div class='compare'><p>Frame-Locked Compare</p><video src='beat_019_compare.mp4' controls loop muted autoplay></video></div>
<div class='video-container'>
<div class='video-col'><p>Reference Trailer</p><video src='beat_019_ref.mp4' controls loop muted autoplay></video></div>
<div class='video-col'><p>Matched Source</p><div style='width: 100%; aspect-ratio: 16/9; background: #222; display: flex; align-items: center; justify-content: center; border-radius: 6px; color: #555;'>No Match</div></div>
</div>
</div>
</div>
<div class='beat-row'>