@@ -20,6 +20,7 @@ import { tmpdir } from "node:os";
2020import { join } from "node:path" ;
2121import { recomputePlanHashFromPlanDir } from "../render/stages/freezePlan.js" ;
2222import { RenderQualityError } from "../renderOrchestrator.js" ;
23+ import { CURRENT_PLAN_PROTOCOL } from "./planProtocol.js" ;
2324import {
2425 applyDistributedAudioWarningPolicy ,
2526 buildChunkSlices ,
@@ -345,6 +346,7 @@ describe("plan() — golden planDir + planHash determinism", () => {
345346
346347 // ── PlanResult contract ─────────────────────────────────────────────
347348 expect ( result . planDir ) . toBe ( planDir ) ;
349+ expect ( result . planProtocol ) . toEqual ( CURRENT_PLAN_PROTOCOL ) ;
348350 expect ( result . planHash ) . toMatch ( / ^ [ 0 - 9 a - f ] { 64 } $ / ) ;
349351 expect ( result . chunkCount ) . toBe ( 1 ) ;
350352 expect ( result . totalFrames ) . toBe ( 30 ) ; // 1s @ 30fps
@@ -373,6 +375,7 @@ describe("plan() — golden planDir + planHash determinism", () => {
373375 unknown
374376 > ;
375377 expect ( planJson . planHash ) . toBe ( result . planHash ) ;
378+ expect ( planJson . protocol ) . toEqual ( CURRENT_PLAN_PROTOCOL ) ;
376379 expect ( planJson . hasAudio ) . toBe ( false ) ;
377380 expect ( planJson . totalFrames ) . toBe ( result . totalFrames ) ;
378381 } ,
@@ -460,8 +463,18 @@ describe("plan() — golden planDir + planHash determinism", () => {
460463 expect ( recomputed ) . toBe ( result . planHash ) ;
461464 const planJson = JSON . parse ( readFileSync ( join ( planDir , "plan.json" ) , "utf-8" ) ) as {
462465 planHash : string ;
466+ protocol ?: unknown ;
463467 } ;
464468 expect ( planJson . planHash ) . toBe ( result . planHash ) ;
469+ expect ( planJson . protocol ) . toEqual ( CURRENT_PLAN_PROTOCOL ) ;
470+
471+ delete planJson . protocol ;
472+ writeFileSync ( join ( planDir , "plan.json" ) , `${ JSON . stringify ( planJson , null , 2 ) } \n` , "utf-8" ) ;
473+ expect ( recomputePlanHashFromPlanDir ( planDir ) ) . toBe ( result . planHash ) ;
474+
475+ planJson . protocol = CURRENT_PLAN_PROTOCOL ;
476+ writeFileSync ( join ( planDir , "plan.json" ) , `${ JSON . stringify ( planJson , null , 2 ) } \n` , "utf-8" ) ;
477+ expect ( recomputePlanHashFromPlanDir ( planDir ) ) . toBe ( result . planHash ) ;
465478 } ,
466479 TIMEOUT_MS ,
467480 ) ;
0 commit comments