From 88c21ccd8b07f18a405ddda895aa503b15be6967 Mon Sep 17 00:00:00 2001 From: vanceingalls Date: Sat, 11 Jul 2026 01:57:33 +0000 Subject: [PATCH] feat(cli): capture_parallel_stream telemetry on success and failure paths --- packages/cli/src/telemetry/events.test.ts | 16 ++++++++++++++++ packages/cli/src/telemetry/events.ts | 3 +++ .../src/telemetry/renderObservability.test.ts | 14 ++++++++++++++ .../cli/src/telemetry/renderObservability.ts | 1 + 4 files changed, 34 insertions(+) diff --git a/packages/cli/src/telemetry/events.test.ts b/packages/cli/src/telemetry/events.test.ts index d153d4204..9df3498cf 100644 --- a/packages/cli/src/telemetry/events.test.ts +++ b/packages/cli/src/telemetry/events.test.ts @@ -361,6 +361,22 @@ describe("render telemetry events", () => { }), ); }); + + it("carries capture_parallel_stream on render_error via the shared payload", () => { + trackRenderError({ + fps: 30, + quality: "standard", + docker: false, + errorMessage: "worker crashed", + captureParallelStream: "beginframe", + }); + + expect(trackEvent).toHaveBeenCalledWith( + "render_error", + expect.objectContaining({ capture_parallel_stream: "beginframe" }), + undefined, + ); + }); }); describe("trackRenderFeedback", () => { diff --git a/packages/cli/src/telemetry/events.ts b/packages/cli/src/telemetry/events.ts index 2b8f4b904..c6273b2de 100644 --- a/packages/cli/src/telemetry/events.ts +++ b/packages/cli/src/telemetry/events.ts @@ -53,6 +53,8 @@ export interface RenderObservabilityTelemetryPayload { captureDePreRouterWorkers?: number; captureDeSelfVerifyFallback?: boolean; captureDeFallbackReason?: string; + /** Non-DE parallel-streaming router outcome ("screenshot" | "beginframe"). */ + captureParallelStream?: string; observabilityExtractVideoCount?: number; observabilityExtractedVideoCount?: number; observabilityExtractTotalFrames?: number; @@ -104,6 +106,7 @@ function renderObservabilityEventProperties(props: RenderObservabilityTelemetryP de_pre_router_workers: props.captureDePreRouterWorkers, de_self_verify_fallback: props.captureDeSelfVerifyFallback, de_fallback_reason: props.captureDeFallbackReason, + capture_parallel_stream: props.captureParallelStream, observability_extract_video_count: props.observabilityExtractVideoCount, observability_extracted_video_count: props.observabilityExtractedVideoCount, observability_extract_total_frames: props.observabilityExtractTotalFrames, diff --git a/packages/cli/src/telemetry/renderObservability.test.ts b/packages/cli/src/telemetry/renderObservability.test.ts index de5386945..8b5b3c99f 100644 --- a/packages/cli/src/telemetry/renderObservability.test.ts +++ b/packages/cli/src/telemetry/renderObservability.test.ts @@ -82,3 +82,17 @@ describe("renderObservabilityTelemetryPayload — DE inversion/router cohort (fa expect(payload.captureDeFallbackReason).toBeUndefined(); }); }); + +describe("renderObservabilityTelemetryPayload — non-DE parallel-stream router", () => { + it("maps the router outcome", () => { + const payload = renderObservabilityTelemetryPayload( + makeSummary({ captureParallelStream: "beginframe" }), + ); + expect(payload.captureParallelStream).toBe("beginframe"); + }); + + it("stays undefined when the router never fired", () => { + const payload = renderObservabilityTelemetryPayload(makeSummary({})); + expect(payload.captureParallelStream).toBeUndefined(); + }); +}); diff --git a/packages/cli/src/telemetry/renderObservability.ts b/packages/cli/src/telemetry/renderObservability.ts index 45288ce86..25e17f118 100644 --- a/packages/cli/src/telemetry/renderObservability.ts +++ b/packages/cli/src/telemetry/renderObservability.ts @@ -46,6 +46,7 @@ export function renderObservabilityTelemetryPayload( captureDePreRouterWorkers: capture.dePreRouterWorkers, captureDeSelfVerifyFallback: capture.deSelfVerifyFallback, captureDeFallbackReason: capture.deFallbackReason, + captureParallelStream: capture.captureParallelStream, observabilityExtractVideoCount: extraction?.videoCount, observabilityExtractedVideoCount: extraction?.extractedVideoCount, observabilityExtractTotalFrames: extraction?.totalFramesExtracted,