diff --git a/packages/producer/src/services/distributed/plan.test.ts b/packages/producer/src/services/distributed/plan.test.ts index 19f788b8a..cf7152128 100644 --- a/packages/producer/src/services/distributed/plan.test.ts +++ b/packages/producer/src/services/distributed/plan.test.ts @@ -74,9 +74,9 @@ describe("distributed warning policy", () => { expect(job.warnings.map((warning) => warning.code)).toEqual(["audio_processing_failed"]); }); - it("records distributed audio degradation in best-effort mode", () => { + it("rejects distributed audio degradation in best-effort mode", () => { const job = createJob("best-effort"); - expect(() => applyDistributedAudioWarningPolicy(job, "mix failed")).not.toThrow(); + expect(() => applyDistributedAudioWarningPolicy(job, "mix failed")).toThrow(RenderQualityError); expect(job.warnings.map((warning) => warning.code)).toEqual(["audio_processing_failed"]); }); }); diff --git a/packages/producer/src/services/render/renderEventPublisher.test.ts b/packages/producer/src/services/render/renderEventPublisher.test.ts index 5c7ba0ca5..f7f6d129c 100644 --- a/packages/producer/src/services/render/renderEventPublisher.test.ts +++ b/packages/producer/src/services/render/renderEventPublisher.test.ts @@ -128,7 +128,7 @@ describe("updateJobStatus", () => { expect(job.warnings).toHaveLength(1); }); - it("preserves best-effort behavior when strictness is omitted", () => { + it("blocks audio processing failures when strictness is omitted", () => { const job = createRenderJob({ fps: 30, quality: "high" }); const log = { error: vi.fn(), warn: vi.fn(), info: vi.fn(), debug: vi.fn() }; expect(() => @@ -143,7 +143,7 @@ describe("updateJobStatus", () => { ], log, ), - ).not.toThrow(); + ).toThrow(RenderQualityError); expect(job.config.strictness).toBe("best-effort"); expect(job.warnings).toHaveLength(1); }); diff --git a/packages/producer/src/services/renderOrchestrator.ts b/packages/producer/src/services/renderOrchestrator.ts index cdd68428e..b8cfc34f0 100644 --- a/packages/producer/src/services/renderOrchestrator.ts +++ b/packages/producer/src/services/renderOrchestrator.ts @@ -558,7 +558,10 @@ export function applyRenderWarningPolicy( strictness, warningCodes: job.warnings.map((warning) => warning.code), }); - if (strictness === "strict") { + const hasAudioProcessingFailure = job.warnings.some( + (warning) => warning.code === "audio_processing_failed", + ); + if (strictness === "strict" || hasAudioProcessingFailure) { throw new RenderQualityError(job.warnings); } }