{
  "project": "tartarus",
  "episode": "ep_001",
  "schema_version": "audit-v1",
  "_comment": "Synthetic plan that exercises every (builder x modifier) shape. Each shot block is intentionally minimal \u2014 only the fields audit assertions consult. Refs and start_frames point at 1x1 synthetic PNGs under audit_fixtures/refs/ and audit_fixtures/start_frames/.",
  "shots": [
    {
      "shot_id": "EP001_SH01",
      "kind": "single",
      "modality": "video_i2v",
      "model": "seeddance-2.0",
      "duration_s": 3.0,
      "raw": {
        "aspect_ratio": "9:16"
      },
      "routing_data": {
        "has_dialogue": false,
        "is_voiceover": false
      },
      "audio_data": {
        "dialogue": []
      },
      "asset_data": {
        "characters": [
          "jade"
        ],
        "location_id": "audit_fixture_corridor"
      },
      "prompt_skeleton": {
        "action": "The protagonist walks.",
        "shot_type": "WS"
      },
      "start_frame": "audit_fixtures/start_frames/EP001_SH01.png",
      "reference_images": [
        "audit_fixtures/refs/jade_hero.png"
      ]
    },
    {
      "shot_id": "EP001_SH02",
      "kind": "single",
      "modality": "video_i2v",
      "model": "seeddance-2.0",
      "duration_s": 4.0,
      "raw": {
        "aspect_ratio": "9:16"
      },
      "routing_data": {
        "has_dialogue": true,
        "is_voiceover": false
      },
      "audio_data": {
        "dialogue": [
          {
            "text": "Panel's corroded.",
            "is_voiceover": false,
            "character_id": "jade"
          }
        ]
      },
      "asset_data": {
        "characters": [
          "jade"
        ],
        "location_id": "audit_fixture_corridor"
      },
      "prompt_skeleton": {
        "action": "The protagonist speaks.",
        "shot_type": "CU"
      },
      "start_frame": "audit_fixtures/start_frames/EP001_SH02.png",
      "reference_images": [
        "audit_fixtures/refs/jade_closeup.png"
      ]
    },
    {
      "shot_id": "EP001_SH03",
      "kind": "single",
      "modality": "video_i2v",
      "model": "seeddance-2.0",
      "duration_s": 5.0,
      "raw": {
        "aspect_ratio": "9:16"
      },
      "routing_data": {
        "has_dialogue": true,
        "is_voiceover": true
      },
      "audio_data": {
        "dialogue": [
          {
            "text": "I remember the dark.",
            "is_voiceover": true,
            "character_id": "jade"
          }
        ]
      },
      "asset_data": {
        "characters": [
          "jade"
        ],
        "location_id": "audit_fixture_corridor"
      },
      "prompt_skeleton": {
        "action": "Corridor pans across debris.",
        "shot_type": "WS"
      },
      "start_frame": "audit_fixtures/start_frames/EP001_SH01.png",
      "reference_images": [
        "audit_fixtures/refs/corridor_hero.png"
      ]
    },
    {
      "shot_id": "EP001_SH04",
      "kind": "single",
      "modality": "video_i2v",
      "model": "seeddance-2.0",
      "duration_s": 3.5,
      "raw": {
        "aspect_ratio": "16:9"
      },
      "routing_data": {
        "has_dialogue": false,
        "is_voiceover": false
      },
      "audio_data": {
        "dialogue": []
      },
      "asset_data": {
        "characters": [],
        "location_id": "bridge"
      },
      "prompt_skeleton": {
        "action": "Empty bridge, lights flicker.",
        "shot_type": "WS"
      },
      "start_frame": null,
      "reference_images": []
    },
    {
      "shot_id": "EP001_SH05",
      "kind": "single",
      "modality": "video_i2v",
      "model": "kling-v3",
      "duration_s": 4.0,
      "raw": {
        "aspect_ratio": "9:16"
      },
      "routing_data": {
        "has_dialogue": false,
        "is_voiceover": false
      },
      "audio_data": {
        "dialogue": []
      },
      "asset_data": {
        "characters": [
          "jade"
        ],
        "location_id": "audit_fixture_corridor"
      },
      "prompt_skeleton": {
        "action": "The protagonist runs.",
        "shot_type": "MS"
      },
      "start_frame": "audit_fixtures/start_frames/EP001_SH05.png",
      "reference_images": [
        "audit_fixtures/refs/jade_three_quarter.png"
      ]
    },
    {
      "shot_id": "EP001_SH06",
      "kind": "single",
      "modality": "video_i2v",
      "model": "kling-o3",
      "duration_s": 5.0,
      "raw": {
        "aspect_ratio": "9:16"
      },
      "routing_data": {
        "has_dialogue": false,
        "is_voiceover": false
      },
      "audio_data": {
        "dialogue": []
      },
      "asset_data": {
        "characters": [
          "jade"
        ],
        "location_id": "audit_fixture_corridor"
      },
      "prompt_skeleton": {
        "action": "The protagonist crouches.",
        "shot_type": "MS"
      },
      "start_frame": "audit_fixtures/start_frames/EP001_SH05.png",
      "reference_images": [
        "audit_fixtures/refs/jade_three_quarter.png"
      ],
      "elements_payload": {
        "characters": [
          {
            "element_id": "jade_elem",
            "ref": "audit_fixtures/refs/jade_hero.png"
          }
        ],
        "scenes": [
          {
            "element_id": "corridor_elem",
            "ref": "audit_fixtures/refs/corridor_hero.png"
          }
        ]
      }
    },
    {
      "shot_id": "EP001_SH07",
      "kind": "single",
      "modality": "video_i2v",
      "model": "kling-v3",
      "duration_s": 3.0,
      "raw": {
        "aspect_ratio": "9:16"
      },
      "routing_data": {
        "has_dialogue": false,
        "is_voiceover": false
      },
      "audio_data": {
        "dialogue": []
      },
      "asset_data": {
        "characters": [],
        "location_id": "bridge"
      },
      "prompt_skeleton": {
        "action": "Establishing shot of bridge interior.",
        "shot_type": "WS"
      },
      "start_frame": null,
      "reference_images": []
    },
    {
      "shot_id": "EP001_SH08",
      "kind": "single",
      "modality": "video_i2v",
      "model": "wan-2.7-i2v",
      "duration_s": 4.0,
      "raw": {
        "aspect_ratio": "9:16"
      },
      "routing_data": {
        "has_dialogue": false,
        "is_voiceover": false
      },
      "audio_data": {
        "dialogue": []
      },
      "asset_data": {
        "characters": [
          "jade"
        ],
        "location_id": "audit_fixture_corridor"
      },
      "prompt_skeleton": {
        "action": "The protagonist turns.",
        "shot_type": "MS"
      },
      "start_frame": "audit_fixtures/start_frames/EP001_SH05.png",
      "reference_images": []
    },
    {
      "shot_id": "EP001_SH09",
      "kind": "single",
      "modality": "video_i2v",
      "model": "wan-2.7-r2v",
      "duration_s": 4.0,
      "raw": {
        "aspect_ratio": "9:16"
      },
      "routing_data": {
        "has_dialogue": false,
        "is_voiceover": false
      },
      "audio_data": {
        "dialogue": []
      },
      "asset_data": {
        "characters": [
          "jade"
        ],
        "location_id": "audit_fixture_corridor"
      },
      "prompt_skeleton": {
        "action": "The protagonist reaches.",
        "shot_type": "MS"
      },
      "start_frame": null,
      "reference_images": [
        "audit_fixtures/refs/jade_hero.png"
      ]
    },
    {
      "shot_id": "EP001_SH10",
      "kind": "single",
      "modality": "video_i2v",
      "model": "happy-horse-i2v",
      "duration_s": 3.0,
      "raw": {
        "aspect_ratio": "9:16"
      },
      "routing_data": {
        "has_dialogue": false,
        "is_voiceover": false
      },
      "audio_data": {
        "dialogue": []
      },
      "asset_data": {
        "characters": [
          "jade"
        ],
        "location_id": "audit_fixture_corridor"
      },
      "prompt_skeleton": {
        "action": "The protagonist blinks.",
        "shot_type": "ECU"
      },
      "start_frame": "audit_fixtures/start_frames/EP001_SH05.png",
      "reference_images": []
    },
    {
      "shot_id": "EP001_SH12",
      "kind": "single",
      "modality": "video_i2v",
      "model": "veo-3.1",
      "duration_s": 5.0,
      "raw": {
        "aspect_ratio": "9:16"
      },
      "routing_data": {
        "has_dialogue": false,
        "is_voiceover": false
      },
      "audio_data": {
        "dialogue": []
      },
      "asset_data": {
        "characters": [
          "jade"
        ],
        "location_id": "audit_fixture_corridor"
      },
      "prompt_skeleton": {
        "action": "The protagonist exhales.",
        "shot_type": "CU"
      },
      "start_frame": "audit_fixtures/start_frames/EP001_SH12.png",
      "reference_images": []
    },
    {
      "shot_id": "EP001_SH14",
      "kind": "single",
      "modality": "image_t2i",
      "model": "nbp",
      "duration_s": 0,
      "raw": {
        "aspect_ratio": "9:16"
      },
      "routing_data": {
        "has_dialogue": false,
        "is_voiceover": false
      },
      "audio_data": {
        "dialogue": []
      },
      "asset_data": {
        "characters": [
          "jade"
        ],
        "location_id": "audit_fixture_corridor"
      },
      "prompt_skeleton": {
        "action": "Keyframe: protagonist mid-stride.",
        "shot_type": "MS"
      },
      "start_frame": null,
      "reference_images": [
        "audit_fixtures/refs/jade_hero.png"
      ]
    },
    {
      "shot_id": "EP001_SH15",
      "kind": "single",
      "modality": "image_t2i",
      "model": "flash",
      "duration_s": 0,
      "raw": {
        "aspect_ratio": "9:16"
      },
      "routing_data": {
        "has_dialogue": false,
        "is_voiceover": false
      },
      "audio_data": {
        "dialogue": []
      },
      "asset_data": {
        "characters": [
          "jade"
        ],
        "location_id": "bridge"
      },
      "prompt_skeleton": {
        "action": "Previz: bridge wide.",
        "shot_type": "WS"
      },
      "start_frame": null,
      "reference_images": [
        "audit_fixtures/refs/bridge_hero.png"
      ]
    },
    {
      "shot_id": "EP001_SH16",
      "kind": "single",
      "modality": "image_t2i",
      "model": "seedream-v4.5",
      "duration_s": 0,
      "raw": {
        "aspect_ratio": "1:1"
      },
      "routing_data": {
        "has_dialogue": false,
        "is_voiceover": false
      },
      "audio_data": {
        "dialogue": []
      },
      "asset_data": {
        "characters": [
          "jade"
        ],
        "location_id": "audit_fixture_corridor"
      },
      "prompt_skeleton": {
        "action": "Keyframe: protagonist closeup.",
        "shot_type": "CU"
      },
      "start_frame": null,
      "reference_images": [
        "audit_fixtures/refs/jade_closeup.png"
      ]
    },
    {
      "shot_id": "EP001_SH18",
      "kind": "single",
      "modality": "image_t2i",
      "model": "gemini-3-pro-image-preview",
      "duration_s": 0,
      "raw": {
        "aspect_ratio": "9:16"
      },
      "routing_data": {
        "has_dialogue": false,
        "is_voiceover": false
      },
      "audio_data": {
        "dialogue": []
      },
      "asset_data": {
        "characters": [
          "jade"
        ],
        "location_id": "audit_fixture_corridor"
      },
      "prompt_skeleton": {
        "action": "Keyframe pose study.",
        "shot_type": "MS"
      },
      "start_frame": null,
      "reference_images": [
        "audit_fixtures/refs/jade_three_quarter.png"
      ]
    },
    {
      "shot_id": "EP001_SH30",
      "kind": "batch_member",
      "modality": "r2v_multi",
      "model": "seeddance-2.0",
      "duration_s": 3.0,
      "raw": {
        "aspect_ratio": "9:16"
      },
      "routing_data": {
        "has_dialogue": false,
        "is_voiceover": false
      },
      "audio_data": {
        "dialogue": []
      },
      "asset_data": {
        "characters": [
          "jade"
        ],
        "location_id": "audit_fixture_corridor"
      },
      "prompt_skeleton": {
        "action": "The protagonist walks.",
        "shot_type": "WS"
      }
    },
    {
      "shot_id": "EP001_SH31",
      "kind": "batch_member",
      "modality": "r2v_multi",
      "model": "seeddance-2.0",
      "duration_s": 4.5,
      "raw": {
        "aspect_ratio": "9:16"
      },
      "routing_data": {
        "has_dialogue": true,
        "is_voiceover": false
      },
      "audio_data": {
        "dialogue": [
          {
            "text": "Panel's corroded.",
            "is_voiceover": false,
            "character_id": "jade"
          }
        ]
      },
      "asset_data": {
        "characters": [
          "jade"
        ],
        "location_id": "audit_fixture_corridor"
      },
      "prompt_skeleton": {
        "action": "The protagonist speaks.",
        "shot_type": "MS"
      }
    },
    {
      "shot_id": "EP001_SH32",
      "kind": "batch_member",
      "modality": "r2v_multi",
      "model": "seeddance-2.0",
      "duration_s": 7.5,
      "raw": {
        "aspect_ratio": "9:16"
      },
      "routing_data": {
        "has_dialogue": false,
        "is_voiceover": false
      },
      "audio_data": {
        "dialogue": []
      },
      "asset_data": {
        "characters": [
          "jade"
        ],
        "location_id": "audit_fixture_corridor"
      },
      "prompt_skeleton": {
        "action": "The protagonist exits frame.",
        "shot_type": "WS"
      }
    },
    {
      "shot_id": "EP001_SH40",
      "kind": "batch_member",
      "modality": "r2v_multi",
      "model": "seeddance-2.0",
      "duration_s": 1.0,
      "raw": {
        "aspect_ratio": "9:16",
        "anchor_duration_s": 1.0
      },
      "routing_data": {
        "has_dialogue": false,
        "is_voiceover": false
      },
      "audio_data": {
        "dialogue": []
      },
      "asset_data": {
        "characters": [
          "jade"
        ],
        "location_id": "audit_fixture_corridor"
      },
      "prompt_skeleton": {
        "action": "Anchor: protagonist hero pose.",
        "shot_type": "MS"
      }
    },
    {
      "shot_id": "EP001_SH41",
      "kind": "batch_member",
      "modality": "r2v_multi",
      "model": "seeddance-2.0",
      "duration_s": 5.0,
      "raw": {
        "aspect_ratio": "9:16"
      },
      "routing_data": {
        "has_dialogue": false,
        "is_voiceover": false
      },
      "audio_data": {
        "dialogue": []
      },
      "asset_data": {
        "characters": [
          "jade"
        ],
        "location_id": "audit_fixture_corridor"
      },
      "prompt_skeleton": {
        "action": "The protagonist moves through corridor.",
        "shot_type": "MS"
      }
    },
    {
      "shot_id": "EP001_SH50",
      "kind": "batch_member",
      "modality": "r2v_multi",
      "model": "seeddance-2.0",
      "duration_s": 4.0,
      "raw": {
        "aspect_ratio": "16:9"
      },
      "routing_data": {
        "has_dialogue": false,
        "is_voiceover": false
      },
      "audio_data": {
        "dialogue": []
      },
      "asset_data": {
        "characters": [],
        "location_id": "bridge"
      },
      "prompt_skeleton": {
        "action": "Bridge interior wide.",
        "shot_type": "WS"
      }
    },
    {
      "shot_id": "EP001_SH51",
      "kind": "batch_member",
      "modality": "r2v_multi",
      "model": "seeddance-2.0",
      "duration_s": 4.0,
      "raw": {
        "aspect_ratio": "16:9"
      },
      "routing_data": {
        "has_dialogue": false,
        "is_voiceover": false
      },
      "audio_data": {
        "dialogue": []
      },
      "asset_data": {
        "characters": [],
        "location_id": "bridge"
      },
      "prompt_skeleton": {
        "action": "Bridge interior push-in.",
        "shot_type": "MS"
      }
    },
    {
      "shot_id": "EP001_SH60",
      "kind": "single",
      "modality": "audio_t2a",
      "model": "elevenlabs-multilingual-v2",
      "duration_s": 4.0,
      "raw": {},
      "routing_data": {
        "has_dialogue": true,
        "is_voiceover": false
      },
      "audio_data": {
        "dialogue": [
          {
            "text": "Panel's corroded.",
            "is_voiceover": false,
            "character_id": "jade"
          }
        ]
      },
      "asset_data": {
        "characters": [
          "jade"
        ],
        "location_id": "audit_fixture_corridor"
      },
      "voice_id": "voice_jade_v1",
      "delivery_note": "tense, low"
    },
    {
      "shot_id": "EP001_SH61",
      "kind": "single",
      "modality": "audio_t2a",
      "model": "elevenlabs-multilingual-v2",
      "duration_s": 5.0,
      "raw": {},
      "routing_data": {
        "has_dialogue": true,
        "is_voiceover": true
      },
      "audio_data": {
        "dialogue": [
          {
            "text": "I remember the dark.",
            "is_voiceover": true,
            "character_id": "jade"
          }
        ]
      },
      "asset_data": {
        "characters": [
          "jade"
        ],
        "location_id": "audit_fixture_corridor"
      },
      "voice_id": "voice_jade_v1",
      "delivery_note": "reflective"
    },
    {
      "shot_id": "EP001_SH70",
      "kind": "single",
      "modality": "lipsync_post",
      "model": "sync-so-v1",
      "duration_s": 4.0,
      "raw": {},
      "routing_data": {
        "has_dialogue": true,
        "is_voiceover": false
      },
      "audio_data": {
        "dialogue": [
          {
            "text": "Panel's corroded.",
            "is_voiceover": false,
            "character_id": "jade"
          }
        ]
      },
      "asset_data": {
        "characters": [
          "jade"
        ],
        "location_id": "audit_fixture_corridor"
      },
      "video_path": "audit_fixtures/start_frames/EP001_SH02.png",
      "audio_path": "audit_fixtures/refs/jade_hero.png",
      "sync_mode": "loose"
    },
    {
      "shot_id": "EP001_SH71",
      "kind": "single",
      "modality": "lipsync_post",
      "model": "sync-so-v1",
      "duration_s": 5.0,
      "raw": {},
      "routing_data": {
        "has_dialogue": true,
        "is_voiceover": false
      },
      "audio_data": {
        "dialogue": [
          {
            "text": "Open the hatch.",
            "is_voiceover": false,
            "character_id": "jade"
          }
        ]
      },
      "asset_data": {
        "characters": [
          "jade"
        ],
        "location_id": "audit_fixture_corridor"
      },
      "video_path": "audit_fixtures/start_frames/EP001_SH05.png",
      "audio_path": "audit_fixtures/refs/jade_closeup.png",
      "sync_mode": "tight"
    },
    {
      "shot_id": "EP001_SH10_AUDIT",
      "kind": "single",
      "modality": "video_i2v",
      "model": "seeddance-2.0",
      "duration_s": 4.0,
      "raw": {
        "aspect_ratio": "9:16"
      },
      "routing_data": {
        "has_dialogue": true,
        "is_voiceover": false
      },
      "audio_data": {
        "dialogue": []
      },
      "asset_data": {
        "characters": [
          {
            "char_id": "JADE",
            "role": "protagonist"
          }
        ],
        "location_id": "Int_Lower_Decks_Corridor"
      },
      "prompt_skeleton": {
        "action": "Solo close on protagonist.",
        "shot_type": "CU"
      },
      "start_frame": "audit_fixtures/start_frames/EP001_SH01.png",
      "reference_images": [
        "audit_fixtures/refs/jade_hero.png"
      ],
      "has_dialogue": true,
      "_audit_cli_surface": "shot_flag",
      "expected_tag_prefix": "SOLO_"
    },
    {
      "shot_id": "EP001_SH33_AUDIT",
      "kind": "single",
      "modality": "video_i2v",
      "model": "seeddance-2.0",
      "duration_s": 4.0,
      "raw": {
        "aspect_ratio": "9:16"
      },
      "routing_data": {
        "has_dialogue": true,
        "is_voiceover": false
      },
      "audio_data": {
        "dialogue": []
      },
      "asset_data": {
        "characters": [
          {
            "char_id": "JADE"
          },
          {
            "char_id": "WREN"
          }
        ],
        "location_id": "Int_Pod_Shaft"
      },
      "prompt_skeleton": {
        "action": "Two-shot in pod shaft.",
        "shot_type": "MS"
      },
      "start_frame": "audit_fixtures/start_frames/EP001_SH01.png",
      "reference_images": [
        "audit_fixtures/refs/jade_hero.png",
        "audit_fixtures/refs/wren_hero.png"
      ],
      "has_dialogue": true,
      "_audit_cli_surface": "shot_flag",
      "expected_tag_prefix": "DUO_"
    },
    {
      "shot_id": "EP001_SH40_AUDIT",
      "kind": "single",
      "modality": "video_i2v",
      "model": "seeddance-2.0",
      "duration_s": 4.0,
      "raw": {
        "aspect_ratio": "9:16"
      },
      "routing_data": {
        "has_dialogue": false,
        "is_voiceover": false
      },
      "audio_data": {
        "dialogue": []
      },
      "asset_data": {
        "characters": [],
        "location_id": "Int_Bridge"
      },
      "prompt_skeleton": {
        "action": "Empty bridge \u2014 env insert.",
        "shot_type": "WS"
      },
      "start_frame": "audit_fixtures/start_frames/EP001_SH01.png",
      "reference_images": [
        "audit_fixtures/refs/jade_hero.png"
      ],
      "has_dialogue": false,
      "_audit_cli_surface": "shot_flag",
      "expected_tag_prefix": "SOLO_ENV"
    },
    {
      "shot_id": "EP001_SH16_18_AUDIT",
      "kind": "batch",
      "shot_ids": [
        "EP001_SH16",
        "EP001_SH17",
        "EP001_SH18"
      ],
      "modality": "video_i2v",
      "model": "seeddance-2.0",
      "duration_s": 12.0,
      "raw": {
        "aspect_ratio": "9:16"
      },
      "routing_data": {
        "has_dialogue": false,
        "is_voiceover": false
      },
      "audio_data": {
        "dialogue": []
      },
      "asset_data": {
        "characters": [
          {
            "char_id": "WREN"
          }
        ],
        "location_id": "Int_Lower_Decks_Corridor"
      },
      "prompt_skeleton": {
        "action": "Wren clears corridor.",
        "shot_type": "MS"
      },
      "start_frame": "audit_fixtures/start_frames/EP001_SH01.png",
      "reference_images": [
        "audit_fixtures/refs/wren_hero.png"
      ],
      "r2v_multi": true,
      "_audit_cli_surface": "shots_flag",
      "expected_tag_prefix": "A_WREN"
    },
    {
      "shot_id": "EP001_PASS_008_SH16_17_18_A_WREN",
      "kind": "single",
      "modality": "video_i2v",
      "model": "seeddance-2.0",
      "duration_s": 12.0,
      "raw": {
        "aspect_ratio": "9:16"
      },
      "routing_data": {
        "has_dialogue": false,
        "is_voiceover": false
      },
      "audio_data": {
        "dialogue": []
      },
      "asset_data": {
        "characters": [
          {
            "char_id": "WREN"
          }
        ],
        "location_id": "Int_Lower_Decks_Corridor"
      },
      "prompt_skeleton": {
        "action": "Coverage pass.",
        "shot_type": "MS"
      },
      "start_frame": "audit_fixtures/start_frames/EP001_SH01.png",
      "reference_images": [
        "audit_fixtures/refs/wren_hero.png"
      ],
      "_audit_cli_surface": "generate_cli"
    },
    {
      "shot_id": "EP001_RUN_OVERNIGHT_DRY",
      "kind": "single",
      "modality": "video_i2v",
      "model": "seeddance-2.0",
      "duration_s": 0.0,
      "raw": {},
      "routing_data": {
        "has_dialogue": false,
        "is_voiceover": false
      },
      "audio_data": {
        "dialogue": []
      },
      "asset_data": {
        "characters": [],
        "location_id": "Int_Bridge"
      },
      "prompt_skeleton": {
        "action": "Dry-run smoke.",
        "shot_type": "WS"
      },
      "start_frame": "audit_fixtures/start_frames/EP001_SH01.png",
      "reference_images": [
        "audit_fixtures/refs/jade_hero.png"
      ],
      "_audit_cli_surface": "run_overnight_dry"
    },
    {
      "shot_id": "EP001_SH22_24_AUDIT_PER_SHOT",
      "kind": "batch",
      "shot_ids": [
        "EP001_SH22",
        "EP001_SH24"
      ],
      "modality": "video_i2v",
      "model": "seeddance-2.0",
      "duration_s": 8.0,
      "raw": {
        "aspect_ratio": "9:16"
      },
      "routing_data": {
        "has_dialogue": false,
        "is_voiceover": false
      },
      "audio_data": {
        "dialogue": []
      },
      "asset_data": {
        "characters": [
          {
            "char_id": "JADE"
          }
        ],
        "location_id": "Int_Lower_Decks_Corridor"
      },
      "prompt_skeleton": {
        "action": "Per-shot dispatch smoke.",
        "shot_type": "MS"
      },
      "start_frame": "audit_fixtures/start_frames/EP001_SH01.png",
      "reference_images": [
        "audit_fixtures/refs/jade_hero.png"
      ],
      "per_shot": true,
      "_audit_cli_surface": "shots_flag_per_shot_opt_in"
    },
    {
      "shot_id": "EP001_SH50_AUDIT_AUDIO_ON",
      "kind": "single",
      "modality": "video_i2v",
      "model": "seeddance-2.0",
      "duration_s": 4.0,
      "raw": {
        "aspect_ratio": "9:16"
      },
      "routing_data": {
        "has_dialogue": true,
        "is_voiceover": false
      },
      "audio_data": {
        "dialogue": []
      },
      "asset_data": {
        "characters": [
          {
            "char_id": "JADE"
          }
        ],
        "location_id": "Int_Lower_Decks_Corridor"
      },
      "prompt_skeleton": {
        "action": "Dialogue scene, audio-on default.",
        "shot_type": "CU"
      },
      "start_frame": "audit_fixtures/start_frames/EP001_SH01.png",
      "reference_images": [
        "audit_fixtures/refs/jade_hero.png"
      ],
      "has_dialogue": true,
      "explicit_generate_audio_override": false,
      "expected_generate_audio": true,
      "_audit_cli_surface": "shot_flag"
    },
    {
      "shot_id": "AUDIT_FX_2CHAR",
      "kind": "single",
      "modality": "video_i2v",
      "model": "seeddance-2.0",
      "duration_s": 4.0,
      "raw": {
        "aspect_ratio": "9:16"
      },
      "routing_data": {
        "has_dialogue": false,
        "is_voiceover": false
      },
      "audio_data": {
        "dialogue": []
      },
      "asset_data": {
        "characters": [
          {
            "char_id": "JADE"
          },
          {
            "char_id": "WREN"
          }
        ],
        "location_id": "Int_Pod_Shaft"
      },
      "prompt_skeleton": {
        "action": "Two-shot in pod shaft.",
        "shot_type": "MS"
      },
      "start_frame": "audit_fixtures/start_frames/EP001_SH01.png",
      "reference_images": [
        "audit_fixtures/refs/jade_hero.png",
        "audit_fixtures/refs/wren_hero.png"
      ],
      "has_dialogue": false,
      "_audit_cli_surface": "shot_flag",
      "expected_tag_prefix": "DUO_"
    },
    {
      "shot_id": "AUDIT_FX_3CHAR",
      "kind": "single",
      "modality": "video_i2v",
      "model": "seeddance-2.0",
      "duration_s": 4.0,
      "raw": {
        "aspect_ratio": "9:16"
      },
      "routing_data": {
        "has_dialogue": false,
        "is_voiceover": false
      },
      "audio_data": {
        "dialogue": []
      },
      "asset_data": {
        "characters": [
          {
            "char_id": "JADE"
          },
          {
            "char_id": "WREN"
          },
          {
            "char_id": "VAREK"
          }
        ],
        "location_id": "Int_Pod_Shaft"
      },
      "prompt_skeleton": {
        "action": "Three-shot tense standoff in pod shaft.",
        "shot_type": "MS"
      },
      "start_frame": "audit_fixtures/start_frames/EP001_SH01.png",
      "reference_images": [
        "audit_fixtures/refs/jade_hero.png",
        "audit_fixtures/refs/wren_hero.png",
        "audit_fixtures/refs/varek_hero.png"
      ],
      "has_dialogue": false,
      "_audit_cli_surface": "shot_flag",
      "expected_tag_prefix": "MULTI_CHAR"
    },
    {
      "shot_id": "AUDIT_FX_2CHAR_R2V",
      "kind": "single",
      "modality": "r2v_multi",
      "model": "seedance-r2v",
      "duration_s": 8.0,
      "raw": {
        "aspect_ratio": "9:16"
      },
      "routing_data": {
        "has_dialogue": false,
        "is_voiceover": false
      },
      "audio_data": {
        "dialogue": []
      },
      "asset_data": {
        "characters": [
          {
            "char_id": "JADE"
          },
          {
            "char_id": "WREN"
          }
        ],
        "location_id": "Int_Pod_Shaft"
      },
      "prompt_skeleton": {
        "action": "Two-shot reference-to-video in pod shaft.",
        "shot_type": "MS"
      },
      "reference_images": [
        "audit_fixtures/refs/jade_hero.png",
        "audit_fixtures/refs/wren_hero.png"
      ],
      "has_dialogue": false,
      "_audit_cli_surface": "shot_flag",
      "expected_tag_prefix": "DUO_"
    },
    {
      "shot_id": "AUDIT_FX_DIALOGUE",
      "kind": "single",
      "modality": "video_i2v",
      "model": "seeddance-2.0",
      "duration_s": 4.0,
      "raw": {
        "aspect_ratio": "9:16"
      },
      "routing_data": {
        "has_dialogue": true,
        "is_voiceover": false
      },
      "audio_data": {
        "dialogue": [
          {
            "text": "I'm not gonna lose myself.",
            "speaker": "JADE"
          }
        ]
      },
      "asset_data": {
        "characters": [
          {
            "char_id": "JADE"
          }
        ],
        "location_id": "Int_Pod_Shaft"
      },
      "prompt_skeleton": {
        "action": "Close on the protagonist's face as she steadies her breath.",
        "shot_type": "CU"
      },
      "start_frame": "audit_fixtures/start_frames/EP001_SH01.png",
      "reference_images": [
        "audit_fixtures/refs/jade_hero.png"
      ],
      "has_dialogue": true,
      "_audit_cli_surface": "shot_flag",
      "expected_tag_prefix": "SOLO_"
    }
  ],
  "batches": [
    {
      "batch_id": "BATCH_001",
      "modality": "r2v_multi",
      "model": "seeddance-2.0",
      "shot_ids": [
        "EP001_SH30",
        "EP001_SH31",
        "EP001_SH32"
      ],
      "shared_characters": [
        "jade"
      ],
      "shared_location": "audit_fixture_corridor",
      "format_mode": "shot_label",
      "tag": "A_JADE",
      "pass_counter": 14,
      "reference_images": [
        "audit_fixtures/refs/jade_hero.png",
        "audit_fixtures/refs/jade_front.png",
        "audit_fixtures/refs/jade_profile.png",
        "audit_fixtures/refs/jade_three_quarter.png",
        "audit_fixtures/refs/jade_back.png",
        "audit_fixtures/refs/jade_closeup.png",
        "audit_fixtures/refs/corridor_hero.png"
      ]
    },
    {
      "batch_id": "BATCH_002",
      "modality": "r2v_multi",
      "model": "seeddance-2.0",
      "shot_ids": [
        "EP001_SH40",
        "EP001_SH41"
      ],
      "shared_characters": [
        "jade"
      ],
      "shared_location": "audit_fixture_corridor",
      "format_mode": "shot_label",
      "anchor_duration_s": 1.0,
      "tag": "ANCHOR_JADE",
      "pass_counter": 15,
      "reference_images": [
        "audit_fixtures/refs/jade_hero.png",
        "audit_fixtures/refs/corridor_hero.png"
      ]
    },
    {
      "batch_id": "BATCH_003",
      "modality": "r2v_multi",
      "model": "seeddance-2.0",
      "shot_ids": [
        "EP001_SH50",
        "EP001_SH51"
      ],
      "shared_characters": [],
      "shared_location": "bridge",
      "format_mode": "timeline",
      "tag": "ENV_BRIDGE",
      "pass_counter": 16,
      "reference_images": [
        "audit_fixtures/refs/bridge_hero.png"
      ]
    }
  ],
  "mock_state": {
    "characters": {
      "jade": {
        "voice_id": "voice_jade_v1",
        "canonical_refs": {
          "hero": "audit_fixtures/refs/jade_hero.png",
          "front": "audit_fixtures/refs/jade_front.png",
          "profile": "audit_fixtures/refs/jade_profile.png",
          "three_quarter": "audit_fixtures/refs/jade_three_quarter.png",
          "back": "audit_fixtures/refs/jade_back.png",
          "closeup": "audit_fixtures/refs/jade_closeup.png"
        }
      }
    },
    "locations": {
      "audit_fixture_corridor": {
        "hero_ref": "audit_fixtures/refs/corridor_hero.png"
      },
      "bridge": {
        "hero_ref": "audit_fixtures/refs/bridge_hero.png"
      }
    },
    "gate_results": {
      "EP001_SH01": {
        "hero_frame_ok": true
      },
      "EP001_SH02": {
        "hero_frame_ok": true
      },
      "EP001_SH05": {
        "hero_frame_ok": true
      },
      "EP001_SH12": {
        "hero_frame_ok": true
      }
    }
  }
}