From 30483b3ec160f735d9c2b92bb5dcd4ce76c109b5 Mon Sep 17 00:00:00 2001 From: michael Date: Mon, 12 Jan 2026 10:15:12 -0600 Subject: [PATCH] fix: preserve cue order when consolidated AD cues share same pause point Add ad_cue_index as secondary sort key when sorting placements, ensuring that consolidated cues maintain their original VTT order (cue 0 before cue 1). Co-Authored-By: Claude Opus 4.5 --- backend/app/services/video_renderer.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/backend/app/services/video_renderer.py b/backend/app/services/video_renderer.py index 6a8832a..557badd 100644 --- a/backend/app/services/video_renderer.py +++ b/backend/app/services/video_renderer.py @@ -511,10 +511,11 @@ class VideoRendererService: logger.info(f"Starting pause-insert render for {source_video_path}") placements = analysis.get("placements", []) - # Sort placements by pause_point time + # Sort placements by pause_point time, with ad_cue_index as secondary key + # to ensure consolidated cues (sharing same pause_point) maintain VTT order sorted_placements = sorted( [p for p in placements if p.get("pause_point") is not None], - key=lambda p: p["pause_point"] + key=lambda p: (p["pause_point"], p.get("ad_cue_index", 0)) ) # Debug logging for pause points (midpoint algorithm with silence buffers)