From b31dde35b13a3c23c677ba3b648d01a7d735f5be Mon Sep 17 00:00:00 2001 From: Val Date: Tue, 18 Aug 2026 14:45:12 -0700 Subject: [PATCH] fix(producer): clamp embedded video/audio windows to the scene (#3332) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Browser probe end reflects full source duration, not the scene slot. Never extend a compile-time end — only fill missing or shrink — so long recordings sliced across short scenes don't inflate extraction windows and time out black on Cloud Run (ARC-13403). --- .../src/services/render/stages/probeStage.ts | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/packages/producer/src/services/render/stages/probeStage.ts b/packages/producer/src/services/render/stages/probeStage.ts index 785b769bd..7b4de32b2 100644 --- a/packages/producer/src/services/render/stages/probeStage.ts +++ b/packages/producer/src/services/render/stages/probeStage.ts @@ -508,11 +508,9 @@ export async function runProbeStage(input: ProbeStageInput): Promise 0 && - (existing.end <= 0 || Math.abs(existing.end - projectedEnd) > BROWSER_MEDIA_EPSILON) - ) { - existing.end = projectedEnd; + if (projectedEnd > 0) { + existing.end = + existing.end <= 0 ? projectedEnd : Math.min(existing.end, projectedEnd); } if ( el.mediaStart > 0 && @@ -554,11 +552,9 @@ export async function runProbeStage(input: ProbeStageInput): Promise 0 && - (existing.end <= 0 || Math.abs(existing.end - projectedEnd) > BROWSER_MEDIA_EPSILON) - ) { - existing.end = projectedEnd; + if (projectedEnd > 0) { + existing.end = + existing.end <= 0 ? projectedEnd : Math.min(existing.end, projectedEnd); } if ( el.mediaStart > 0 &&