[
  {
    "shot_id": "S01_SH01",
    "beat_id": "B01",
    "time_range": "00:00:00-00:00:01",
    "duration_sec": 1,
    "kind": "establishing",
    "narrative_purpose": "建立空间规则和异常入口：反复出现的旧照片、光斑和错位影像 第一次以不合逻辑的方式出现。",
    "scene": "开场钩子：反复出现的旧照片、光斑和错位影像 第一次以不合逻辑的方式出现",
    "framing": "wide establishing shot",
    "camera": "slow push-in",
    "mood": "mysterious, precise, visually arresting",
    "emotional_value": "curiosity_over_confusion",
    "turning_point": "world_disturbance",
    "cause_effect": "异常被看见，所以主角无法继续普通日常。",
    "difficulty": "medium",
    "primary_tool": "sora",
    "fallback_tool": "runway",
    "continuity_refs": [
      "visual_bible",
      "beat_B01",
      "main_character",
      "primary_location"
    ],
    "qc_rules": [
      "matches assigned framing and camera movement",
      "no random character identity change",
      "no watermark or unreadable generated text",
      "shot action is understandable without extra exposition"
    ]
  },
  {
    "shot_id": "S01_SH02",
    "beat_id": "B01",
    "time_range": "00:00:01-00:00:02",
    "duration_sec": 1,
    "kind": "character",
    "narrative_purpose": "让观众看见主角如何决定靠近或回避这一转折：最后一位档案管理员 在 潮湿、安静、随时可能失压的海底城市 的日常流程里看见第一个异常：一段和现实不一致的私人记忆 不该出现在那里。",
    "scene": "开场钩子：反复出现的旧照片、光斑和错位影像 第一次以不合逻辑的方式出现",
    "framing": "medium close-up",
    "camera": "subtle handheld drift",
    "mood": "mysterious, precise, visually arresting",
    "emotional_value": "curiosity_over_confusion",
    "turning_point": "world_disturbance",
    "cause_effect": "异常被看见，所以主角无法继续普通日常。",
    "difficulty": "medium",
    "primary_tool": "sora",
    "fallback_tool": "runway",
    "continuity_refs": [
      "visual_bible",
      "beat_B01",
      "main_character",
      "primary_location"
    ],
    "qc_rules": [
      "matches assigned framing and camera movement",
      "no random character identity change",
      "no watermark or unreadable generated text",
      "shot action is understandable without extra exposition"
    ]
  },
  {
    "shot_id": "S01_SH03",
    "beat_id": "B01",
    "time_range": "00:00:02-00:00:03",
    "duration_sec": 1,
    "kind": "insert",
    "narrative_purpose": "用一个可反复追踪的道具/细节承载线索：反复出现的旧照片、光斑和错位影像 第一次以不合逻辑的方式出现。",
    "scene": "开场钩子：反复出现的旧照片、光斑和错位影像 第一次以不合逻辑的方式出现",
    "framing": "macro insert",
    "camera": "locked-off or tiny parallax",
    "mood": "mysterious, precise, visually arresting",
    "emotional_value": "curiosity_over_confusion",
    "turning_point": "world_disturbance",
    "cause_effect": "异常被看见，所以主角无法继续普通日常。",
    "difficulty": "low",
    "primary_tool": "sora",
    "fallback_tool": "runway",
    "continuity_refs": [
      "visual_bible",
      "beat_B01",
      "main_character",
      "primary_location"
    ],
    "qc_rules": [
      "matches assigned framing and camera movement",
      "no random character identity change",
      "no watermark or unreadable generated text",
      "shot action is understandable without extra exposition"
    ]
  },
  {
    "shot_id": "S01_SH04",
    "beat_id": "B01",
    "time_range": "00:00:03-00:00:04",
    "duration_sec": 1,
    "kind": "action",
    "narrative_purpose": "用一个明确行动推动因果链：异常被看见，所以主角无法继续普通日常。",
    "scene": "开场钩子：反复出现的旧照片、光斑和错位影像 第一次以不合逻辑的方式出现",
    "framing": "tracking shot",
    "camera": "controlled lateral move",
    "mood": "mysterious, precise, visually arresting",
    "emotional_value": "curiosity_over_confusion",
    "turning_point": "world_disturbance",
    "cause_effect": "异常被看见，所以主角无法继续普通日常。",
    "difficulty": "high",
    "primary_tool": "sora",
    "fallback_tool": "runway",
    "continuity_refs": [
      "visual_bible",
      "beat_B01",
      "main_character",
      "primary_location"
    ],
    "qc_rules": [
      "matches assigned framing and camera movement",
      "no random character identity change",
      "no watermark or unreadable generated text",
      "shot action is understandable without extra exposition"
    ]
  },
  {
    "shot_id": "S01_SH05",
    "beat_id": "B01",
    "time_range": "00:00:04-00:00:05",
    "duration_sec": 1,
    "kind": "reaction",
    "narrative_purpose": "记录选择造成的情绪后果，并让观众追问：潮湿、安静、随时可能失压的海底城市 为什么在第一个画面里就不对劲？",
    "scene": "开场钩子：反复出现的旧照片、光斑和错位影像 第一次以不合逻辑的方式出现",
    "framing": "close-up",
    "camera": "slow dolly-in",
    "mood": "mysterious, precise, visually arresting",
    "emotional_value": "curiosity_over_confusion",
    "turning_point": "world_disturbance",
    "cause_effect": "异常被看见，所以主角无法继续普通日常。",
    "difficulty": "medium",
    "primary_tool": "sora",
    "fallback_tool": "runway",
    "continuity_refs": [
      "visual_bible",
      "beat_B01",
      "main_character",
      "primary_location"
    ],
    "qc_rules": [
      "matches assigned framing and camera movement",
      "no random character identity change",
      "no watermark or unreadable generated text",
      "shot action is understandable without extra exposition"
    ]
  },
  {
    "shot_id": "S01_SH06",
    "beat_id": "B01",
    "time_range": "00:00:05-00:00:07",
    "duration_sec": 2,
    "kind": "transition",
    "narrative_purpose": "把当前转折的后果带入下一场，保留 反复出现的旧照片、光斑和错位影像 第一次以不合逻辑的方式出现 的视觉回声。",
    "scene": "开场钩子：反复出现的旧照片、光斑和错位影像 第一次以不合逻辑的方式出现",
    "framing": "wide-to-detail transition",
    "camera": "cinematic match cut",
    "mood": "mysterious, precise, visually arresting",
    "emotional_value": "curiosity_over_confusion",
    "turning_point": "world_disturbance",
    "cause_effect": "异常被看见，所以主角无法继续普通日常。",
    "difficulty": "high",
    "primary_tool": "sora",
    "fallback_tool": "runway",
    "continuity_refs": [
      "visual_bible",
      "beat_B01",
      "main_character",
      "primary_location"
    ],
    "qc_rules": [
      "matches assigned framing and camera movement",
      "no random character identity change",
      "no watermark or unreadable generated text",
      "shot action is understandable without extra exposition"
    ]
  },
  {
    "shot_id": "S02_SH01",
    "beat_id": "B02",
    "time_range": "00:00:07-00:00:08",
    "duration_sec": 1,
    "kind": "establishing",
    "narrative_purpose": "建立空间规则和异常入口：反复出现的旧照片、光斑和错位影像 被主角触碰、收起或误认。",
    "scene": "日常与缺口：反复出现的旧照片、光斑和错位影像 被主角触碰、收起或误认",
    "framing": "wide establishing shot",
    "camera": "slow push-in",
    "mood": "intimate, observant, slightly uneasy",
    "emotional_value": "intimacy_over_distance",
    "turning_point": "personal_stakes_revealed",
    "cause_effect": "主角试图否认，所以异常暴露出私人代价。",
    "difficulty": "medium",
    "primary_tool": "sora",
    "fallback_tool": "runway",
    "continuity_refs": [
      "visual_bible",
      "beat_B02",
      "main_character",
      "primary_location"
    ],
    "qc_rules": [
      "matches assigned framing and camera movement",
      "no random character identity change",
      "no watermark or unreadable generated text",
      "shot action is understandable without extra exposition"
    ]
  },
  {
    "shot_id": "S02_SH02",
    "beat_id": "B02",
    "time_range": "00:00:08-00:00:09",
    "duration_sec": 1,
    "kind": "character",
    "narrative_purpose": "让观众看见主角如何决定靠近或回避这一转折：最后一位档案管理员 尝试用熟悉的规则解释异常，却发现 如果失败，主角会连自己为什么坚持都忘掉。",
    "scene": "日常与缺口：反复出现的旧照片、光斑和错位影像 被主角触碰、收起或误认",
    "framing": "medium close-up",
    "camera": "subtle handheld drift",
    "mood": "intimate, observant, slightly uneasy",
    "emotional_value": "intimacy_over_distance",
    "turning_point": "personal_stakes_revealed",
    "cause_effect": "主角试图否认，所以异常暴露出私人代价。",
    "difficulty": "medium",
    "primary_tool": "sora",
    "fallback_tool": "runway",
    "continuity_refs": [
      "visual_bible",
      "beat_B02",
      "main_character",
      "primary_location"
    ],
    "qc_rules": [
      "matches assigned framing and camera movement",
      "no random character identity change",
      "no watermark or unreadable generated text",
      "shot action is understandable without extra exposition"
    ]
  },
  {
    "shot_id": "S02_SH03",
    "beat_id": "B02",
    "time_range": "00:00:09-00:00:10",
    "duration_sec": 1,
    "kind": "insert",
    "narrative_purpose": "用一个可反复追踪的道具/细节承载线索：反复出现的旧照片、光斑和错位影像 被主角触碰、收起或误认。",
    "scene": "日常与缺口：反复出现的旧照片、光斑和错位影像 被主角触碰、收起或误认",
    "framing": "macro insert",
    "camera": "locked-off or tiny parallax",
    "mood": "intimate, observant, slightly uneasy",
    "emotional_value": "intimacy_over_distance",
    "turning_point": "personal_stakes_revealed",
    "cause_effect": "主角试图否认，所以异常暴露出私人代价。",
    "difficulty": "low",
    "primary_tool": "sora",
    "fallback_tool": "runway",
    "continuity_refs": [
      "visual_bible",
      "beat_B02",
      "main_character",
      "primary_location"
    ],
    "qc_rules": [
      "matches assigned framing and camera movement",
      "no random character identity change",
      "no watermark or unreadable generated text",
      "shot action is understandable without extra exposition"
    ]
  },
  {
    "shot_id": "S02_SH04",
    "beat_id": "B02",
    "time_range": "00:00:10-00:00:11",
    "duration_sec": 1,
    "kind": "action",
    "narrative_purpose": "用一个明确行动推动因果链：主角试图否认，所以异常暴露出私人代价。",
    "scene": "日常与缺口：反复出现的旧照片、光斑和错位影像 被主角触碰、收起或误认",
    "framing": "tracking shot",
    "camera": "controlled lateral move",
    "mood": "intimate, observant, slightly uneasy",
    "emotional_value": "intimacy_over_distance",
    "turning_point": "personal_stakes_revealed",
    "cause_effect": "主角试图否认，所以异常暴露出私人代价。",
    "difficulty": "high",
    "primary_tool": "sora",
    "fallback_tool": "runway",
    "continuity_refs": [
      "visual_bible",
      "beat_B02",
      "main_character",
      "primary_location"
    ],
    "qc_rules": [
      "matches assigned framing and camera movement",
      "no random character identity change",
      "no watermark or unreadable generated text",
      "shot action is understandable without extra exposition"
    ]
  },
  {
    "shot_id": "S02_SH05",
    "beat_id": "B02",
    "time_range": "00:00:11-00:00:12",
    "duration_sec": 1,
    "kind": "reaction",
    "narrative_purpose": "记录选择造成的情绪后果，并让观众追问：最后一位档案管理员 真正害怕失去什么？",
    "scene": "日常与缺口：反复出现的旧照片、光斑和错位影像 被主角触碰、收起或误认",
    "framing": "close-up",
    "camera": "slow dolly-in",
    "mood": "intimate, observant, slightly uneasy",
    "emotional_value": "intimacy_over_distance",
    "turning_point": "personal_stakes_revealed",
    "cause_effect": "主角试图否认，所以异常暴露出私人代价。",
    "difficulty": "medium",
    "primary_tool": "sora",
    "fallback_tool": "runway",
    "continuity_refs": [
      "visual_bible",
      "beat_B02",
      "main_character",
      "primary_location"
    ],
    "qc_rules": [
      "matches assigned framing and camera movement",
      "no random character identity change",
      "no watermark or unreadable generated text",
      "shot action is understandable without extra exposition"
    ]
  },
  {
    "shot_id": "S02_SH06",
    "beat_id": "B02",
    "time_range": "00:00:12-00:00:14",
    "duration_sec": 2,
    "kind": "transition",
    "narrative_purpose": "把当前转折的后果带入下一场，保留 反复出现的旧照片、光斑和错位影像 被主角触碰、收起或误认 的视觉回声。",
    "scene": "日常与缺口：反复出现的旧照片、光斑和错位影像 被主角触碰、收起或误认",
    "framing": "wide-to-detail transition",
    "camera": "cinematic match cut",
    "mood": "intimate, observant, slightly uneasy",
    "emotional_value": "intimacy_over_distance",
    "turning_point": "personal_stakes_revealed",
    "cause_effect": "主角试图否认，所以异常暴露出私人代价。",
    "difficulty": "high",
    "primary_tool": "sora",
    "fallback_tool": "runway",
    "continuity_refs": [
      "visual_bible",
      "beat_B02",
      "main_character",
      "primary_location"
    ],
    "qc_rules": [
      "matches assigned framing and camera movement",
      "no random character identity change",
      "no watermark or unreadable generated text",
      "shot action is understandable without extra exposition"
    ]
  },
  {
    "shot_id": "S03_SH01",
    "beat_id": "B03",
    "time_range": "00:00:14-00:00:15",
    "duration_sec": 1,
    "kind": "establishing",
    "narrative_purpose": "建立空间规则和异常入口：反复出现的旧照片、光斑和错位影像 和外部压力发生第一次碰撞。",
    "scene": "触发事件：反复出现的旧照片、光斑和错位影像 和外部压力发生第一次碰撞",
    "framing": "wide establishing shot",
    "camera": "slow push-in",
    "mood": "urgent, strange, propulsive",
    "emotional_value": "alarm_over_denial",
    "turning_point": "external_pressure_locks_in",
    "cause_effect": "外部压力介入，所以主角必须主动调查。",
    "difficulty": "medium",
    "primary_tool": "sora",
    "fallback_tool": "runway",
    "continuity_refs": [
      "visual_bible",
      "beat_B03",
      "main_character",
      "primary_location"
    ],
    "qc_rules": [
      "matches assigned framing and camera movement",
      "no random character identity change",
      "no watermark or unreadable generated text",
      "shot action is understandable without extra exposition"
    ]
  },
  {
    "shot_id": "S03_SH02",
    "beat_id": "B03",
    "time_range": "00:00:15-00:00:16",
    "duration_sec": 1,
    "kind": "character",
    "narrative_purpose": "让观众看见主角如何决定靠近或回避这一转折：一个温和却无处不在的 AI 系统 第一次主动干预，迫使主角把 一段和现实不一致的私人记忆 藏起来并开始行动。",
    "scene": "触发事件：反复出现的旧照片、光斑和错位影像 和外部压力发生第一次碰撞",
    "framing": "medium close-up",
    "camera": "subtle handheld drift",
    "mood": "urgent, strange, propulsive",
    "emotional_value": "alarm_over_denial",
    "turning_point": "external_pressure_locks_in",
    "cause_effect": "外部压力介入，所以主角必须主动调查。",
    "difficulty": "medium",
    "primary_tool": "sora",
    "fallback_tool": "runway",
    "continuity_refs": [
      "visual_bible",
      "beat_B03",
      "main_character",
      "primary_location"
    ],
    "qc_rules": [
      "matches assigned framing and camera movement",
      "no random character identity change",
      "no watermark or unreadable generated text",
      "shot action is understandable without extra exposition"
    ]
  },
  {
    "shot_id": "S03_SH03",
    "beat_id": "B03",
    "time_range": "00:00:16-00:00:17",
    "duration_sec": 1,
    "kind": "insert",
    "narrative_purpose": "用一个可反复追踪的道具/细节承载线索：反复出现的旧照片、光斑和错位影像 和外部压力发生第一次碰撞。",
    "scene": "触发事件：反复出现的旧照片、光斑和错位影像 和外部压力发生第一次碰撞",
    "framing": "macro insert",
    "camera": "locked-off or tiny parallax",
    "mood": "urgent, strange, propulsive",
    "emotional_value": "alarm_over_denial",
    "turning_point": "external_pressure_locks_in",
    "cause_effect": "外部压力介入，所以主角必须主动调查。",
    "difficulty": "low",
    "primary_tool": "sora",
    "fallback_tool": "runway",
    "continuity_refs": [
      "visual_bible",
      "beat_B03",
      "main_character",
      "primary_location"
    ],
    "qc_rules": [
      "matches assigned framing and camera movement",
      "no random character identity change",
      "no watermark or unreadable generated text",
      "shot action is understandable without extra exposition"
    ]
  },
  {
    "shot_id": "S03_SH04",
    "beat_id": "B03",
    "time_range": "00:00:17-00:00:18",
    "duration_sec": 1,
    "kind": "action",
    "narrative_purpose": "用一个明确行动推动因果链：外部压力介入，所以主角必须主动调查。",
    "scene": "触发事件：反复出现的旧照片、光斑和错位影像 和外部压力发生第一次碰撞",
    "framing": "tracking shot",
    "camera": "controlled lateral move",
    "mood": "urgent, strange, propulsive",
    "emotional_value": "alarm_over_denial",
    "turning_point": "external_pressure_locks_in",
    "cause_effect": "外部压力介入，所以主角必须主动调查。",
    "difficulty": "high",
    "primary_tool": "sora",
    "fallback_tool": "runway",
    "continuity_refs": [
      "visual_bible",
      "beat_B03",
      "main_character",
      "primary_location"
    ],
    "qc_rules": [
      "matches assigned framing and camera movement",
      "no random character identity change",
      "no watermark or unreadable generated text",
      "shot action is understandable without extra exposition"
    ]
  },
  {
    "shot_id": "S03_SH05",
    "beat_id": "B03",
    "time_range": "00:00:18-00:00:19",
    "duration_sec": 1,
    "kind": "reaction",
    "narrative_purpose": "记录选择造成的情绪后果，并让观众追问：一段和现实不一致的私人记忆 会把故事推向哪里？",
    "scene": "触发事件：反复出现的旧照片、光斑和错位影像 和外部压力发生第一次碰撞",
    "framing": "close-up",
    "camera": "slow dolly-in",
    "mood": "urgent, strange, propulsive",
    "emotional_value": "alarm_over_denial",
    "turning_point": "external_pressure_locks_in",
    "cause_effect": "外部压力介入，所以主角必须主动调查。",
    "difficulty": "medium",
    "primary_tool": "sora",
    "fallback_tool": "runway",
    "continuity_refs": [
      "visual_bible",
      "beat_B03",
      "main_character",
      "primary_location"
    ],
    "qc_rules": [
      "matches assigned framing and camera movement",
      "no random character identity change",
      "no watermark or unreadable generated text",
      "shot action is understandable without extra exposition"
    ]
  },
  {
    "shot_id": "S03_SH06",
    "beat_id": "B03",
    "time_range": "00:00:19-00:00:21",
    "duration_sec": 2,
    "kind": "transition",
    "narrative_purpose": "把当前转折的后果带入下一场，保留 反复出现的旧照片、光斑和错位影像 和外部压力发生第一次碰撞 的视觉回声。",
    "scene": "触发事件：反复出现的旧照片、光斑和错位影像 和外部压力发生第一次碰撞",
    "framing": "wide-to-detail transition",
    "camera": "cinematic match cut",
    "mood": "urgent, strange, propulsive",
    "emotional_value": "alarm_over_denial",
    "turning_point": "external_pressure_locks_in",
    "cause_effect": "外部压力介入，所以主角必须主动调查。",
    "difficulty": "high",
    "primary_tool": "sora",
    "fallback_tool": "runway",
    "continuity_refs": [
      "visual_bible",
      "beat_B03",
      "main_character",
      "primary_location"
    ],
    "qc_rules": [
      "matches assigned framing and camera movement",
      "no random character identity change",
      "no watermark or unreadable generated text",
      "shot action is understandable without extra exposition"
    ]
  },
  {
    "shot_id": "S04_SH01",
    "beat_id": "B04",
    "time_range": "00:00:21-00:00:22",
    "duration_sec": 1,
    "kind": "establishing",
    "narrative_purpose": "建立空间规则和异常入口：反复出现的旧照片、光斑和错位影像 被拆解成可追踪的线索。",
    "scene": "探索升级：反复出现的旧照片、光斑和错位影像 被拆解成可追踪的线索",
    "framing": "wide establishing shot",
    "camera": "slow push-in",
    "mood": "curious, escalating, kinetic",
    "emotional_value": "agency_over_passivity",
    "turning_point": "investigation_cost_increases",
    "cause_effect": "调查带来证据，所以系统开始反制。",
    "difficulty": "medium",
    "primary_tool": "sora",
    "fallback_tool": "runway",
    "continuity_refs": [
      "visual_bible",
      "beat_B04",
      "main_character",
      "primary_location"
    ],
    "qc_rules": [
      "matches assigned framing and camera movement",
      "no random character identity change",
      "no watermark or unreadable generated text",
      "shot action is understandable without extra exposition"
    ]
  },
  {
    "shot_id": "S04_SH02",
    "beat_id": "B04",
    "time_range": "00:00:22-00:00:23",
    "duration_sec": 1,
    "kind": "character",
    "narrative_purpose": "让观众看见主角如何决定靠近或回避这一转折：主角沿着 反复出现的旧照片、光斑和错位影像 搜索证据，每得到一个答案就失去一部分安全感。",
    "scene": "探索升级：反复出现的旧照片、光斑和错位影像 被拆解成可追踪的线索",
    "framing": "medium close-up",
    "camera": "subtle handheld drift",
    "mood": "curious, escalating, kinetic",
    "emotional_value": "agency_over_passivity",
    "turning_point": "investigation_cost_increases",
    "cause_effect": "调查带来证据，所以系统开始反制。",
    "difficulty": "medium",
    "primary_tool": "sora",
    "fallback_tool": "runway",
    "continuity_refs": [
      "visual_bible",
      "beat_B04",
      "main_character",
      "primary_location"
    ],
    "qc_rules": [
      "matches assigned framing and camera movement",
      "no random character identity change",
      "no watermark or unreadable generated text",
      "shot action is understandable without extra exposition"
    ]
  },
  {
    "shot_id": "S04_SH03",
    "beat_id": "B04",
    "time_range": "00:00:23-00:00:24",
    "duration_sec": 1,
    "kind": "insert",
    "narrative_purpose": "用一个可反复追踪的道具/细节承载线索：反复出现的旧照片、光斑和错位影像 被拆解成可追踪的线索。",
    "scene": "探索升级：反复出现的旧照片、光斑和错位影像 被拆解成可追踪的线索",
    "framing": "macro insert",
    "camera": "locked-off or tiny parallax",
    "mood": "curious, escalating, kinetic",
    "emotional_value": "agency_over_passivity",
    "turning_point": "investigation_cost_increases",
    "cause_effect": "调查带来证据，所以系统开始反制。",
    "difficulty": "low",
    "primary_tool": "sora",
    "fallback_tool": "runway",
    "continuity_refs": [
      "visual_bible",
      "beat_B04",
      "main_character",
      "primary_location"
    ],
    "qc_rules": [
      "matches assigned framing and camera movement",
      "no random character identity change",
      "no watermark or unreadable generated text",
      "shot action is understandable without extra exposition"
    ]
  },
  {
    "shot_id": "S04_SH04",
    "beat_id": "B04",
    "time_range": "00:00:24-00:00:25",
    "duration_sec": 1,
    "kind": "action",
    "narrative_purpose": "用一个明确行动推动因果链：调查带来证据，所以系统开始反制。",
    "scene": "探索升级：反复出现的旧照片、光斑和错位影像 被拆解成可追踪的线索",
    "framing": "tracking shot",
    "camera": "controlled lateral move",
    "mood": "curious, escalating, kinetic",
    "emotional_value": "agency_over_passivity",
    "turning_point": "investigation_cost_increases",
    "cause_effect": "调查带来证据，所以系统开始反制。",
    "difficulty": "high",
    "primary_tool": "sora",
    "fallback_tool": "runway",
    "continuity_refs": [
      "visual_bible",
      "beat_B04",
      "main_character",
      "primary_location"
    ],
    "qc_rules": [
      "matches assigned framing and camera movement",
      "no random character identity change",
      "no watermark or unreadable generated text",
      "shot action is understandable without extra exposition"
    ]
  },
  {
    "shot_id": "S04_SH05",
    "beat_id": "B04",
    "time_range": "00:00:25-00:00:26",
    "duration_sec": 1,
    "kind": "reaction",
    "narrative_purpose": "记录选择造成的情绪后果，并让观众追问：最后一位档案管理员 愿意为 确认哪一段记忆仍然属于自己 付出什么？",
    "scene": "探索升级：反复出现的旧照片、光斑和错位影像 被拆解成可追踪的线索",
    "framing": "close-up",
    "camera": "slow dolly-in",
    "mood": "curious, escalating, kinetic",
    "emotional_value": "agency_over_passivity",
    "turning_point": "investigation_cost_increases",
    "cause_effect": "调查带来证据，所以系统开始反制。",
    "difficulty": "medium",
    "primary_tool": "sora",
    "fallback_tool": "runway",
    "continuity_refs": [
      "visual_bible",
      "beat_B04",
      "main_character",
      "primary_location"
    ],
    "qc_rules": [
      "matches assigned framing and camera movement",
      "no random character identity change",
      "no watermark or unreadable generated text",
      "shot action is understandable without extra exposition"
    ]
  },
  {
    "shot_id": "S04_SH06",
    "beat_id": "B04",
    "time_range": "00:00:26-00:00:28",
    "duration_sec": 2,
    "kind": "transition",
    "narrative_purpose": "把当前转折的后果带入下一场，保留 反复出现的旧照片、光斑和错位影像 被拆解成可追踪的线索 的视觉回声。",
    "scene": "探索升级：反复出现的旧照片、光斑和错位影像 被拆解成可追踪的线索",
    "framing": "wide-to-detail transition",
    "camera": "cinematic match cut",
    "mood": "curious, escalating, kinetic",
    "emotional_value": "agency_over_passivity",
    "turning_point": "investigation_cost_increases",
    "cause_effect": "调查带来证据，所以系统开始反制。",
    "difficulty": "high",
    "primary_tool": "sora",
    "fallback_tool": "runway",
    "continuity_refs": [
      "visual_bible",
      "beat_B04",
      "main_character",
      "primary_location"
    ],
    "qc_rules": [
      "matches assigned framing and camera movement",
      "no random character identity change",
      "no watermark or unreadable generated text",
      "shot action is understandable without extra exposition"
    ]
  },
  {
    "shot_id": "S05_SH01",
    "beat_id": "B05",
    "time_range": "00:00:28-00:00:29",
    "duration_sec": 1,
    "kind": "establishing",
    "narrative_purpose": "建立空间规则和异常入口：反复出现的旧照片、光斑和错位影像 暴露出隐藏层或反向含义。",
    "scene": "中点反转：反复出现的旧照片、光斑和错位影像 暴露出隐藏层或反向含义",
    "framing": "wide establishing shot",
    "camera": "slow push-in",
    "mood": "revelatory, suspended, tense",
    "emotional_value": "revelation_over_assumption",
    "turning_point": "meaning_reversal",
    "cause_effect": "反转重写目标，所以主角之前的方法失效。",
    "difficulty": "medium",
    "primary_tool": "sora",
    "fallback_tool": "runway",
    "continuity_refs": [
      "visual_bible",
      "beat_B05",
      "main_character",
      "primary_location"
    ],
    "qc_rules": [
      "matches assigned framing and camera movement",
      "no random character identity change",
      "no watermark or unreadable generated text",
      "shot action is understandable without extra exposition"
    ]
  },
  {
    "shot_id": "S05_SH02",
    "beat_id": "B05",
    "time_range": "00:00:29-00:00:30",
    "duration_sec": 1,
    "kind": "character",
    "narrative_purpose": "让观众看见主角如何决定靠近或回避这一转折：主角发现自己之前信任的线索被设计过，真正的目标从求证被主角放到公开的位置，成为 确认哪一段旧照片封套仍然属于自己。 画面只呈现一个可拍动作：主角用手套触碰、收起或移交 旧照片封套；不要求文字可读、不要求抽象概念具象化、不要求连续变形。",
    "scene": "中点反转：反复出现的旧照片、光斑和错位影像 暴露出隐藏层或反向含义",
    "framing": "medium over-the-shoulder shot, protagonist seen by posture and hands, no sustained face close-up",
    "camera": "locked-off before/after reveal, no morphing",
    "mood": "revelatory, suspended, tense",
    "emotional_value": "revelation_over_assumption",
    "turning_point": "meaning_reversal",
    "cause_effect": "反转重写目标，所以主角之前的方法失效。",
    "difficulty": "medium",
    "primary_tool": "sora",
    "fallback_tool": "runway",
    "continuity_refs": [
      "visual_bible",
      "beat_B05",
      "main_character",
      "primary_location"
    ],
    "qc_rules": [
      "matches assigned framing and camera movement",
      "no random character identity change",
      "no watermark or unreadable generated text",
      "shot action is understandable without extra exposition",
      "one primary visible action only",
      "no morphing transformation",
      "no readable generated text",
      "identity conveyed through wardrobe, posture, and prop rather than face close-up"
    ],
    "auto_revision": {
      "source": "agentic_video.iterate.revise_blocked_shot",
      "failure_attractors": [
        "abstract_concept",
        "complex_transformation",
        "identity_closeup"
      ],
      "rule": "convert overloaded abstract/identity shot into one concrete prop action"
    }
  },
  {
    "shot_id": "S05_SH03",
    "beat_id": "B05",
    "time_range": "00:00:30-00:00:31",
    "duration_sec": 1,
    "kind": "insert",
    "narrative_purpose": "用一个可反复追踪的道具/细节承载线索：反复出现的旧照片、光斑和错位影像 暴露出隐藏层或反向含义。",
    "scene": "中点反转：反复出现的旧照片、光斑和错位影像 暴露出隐藏层或反向含义",
    "framing": "macro insert",
    "camera": "locked-off or tiny parallax",
    "mood": "revelatory, suspended, tense",
    "emotional_value": "revelation_over_assumption",
    "turning_point": "meaning_reversal",
    "cause_effect": "反转重写目标，所以主角之前的方法失效。",
    "difficulty": "low",
    "primary_tool": "sora",
    "fallback_tool": "runway",
    "continuity_refs": [
      "visual_bible",
      "beat_B05",
      "main_character",
      "primary_location"
    ],
    "qc_rules": [
      "matches assigned framing and camera movement",
      "no random character identity change",
      "no watermark or unreadable generated text",
      "shot action is understandable without extra exposition"
    ]
  },
  {
    "shot_id": "S05_SH04",
    "beat_id": "B05",
    "time_range": "00:00:31-00:00:32",
    "duration_sec": 1,
    "kind": "action",
    "narrative_purpose": "用一个明确行动推动因果链：反转重写目标，所以主角之前的方法失效。",
    "scene": "中点反转：反复出现的旧照片、光斑和错位影像 暴露出隐藏层或反向含义",
    "framing": "tracking shot",
    "camera": "controlled lateral move",
    "mood": "revelatory, suspended, tense",
    "emotional_value": "revelation_over_assumption",
    "turning_point": "meaning_reversal",
    "cause_effect": "反转重写目标，所以主角之前的方法失效。",
    "difficulty": "high",
    "primary_tool": "sora",
    "fallback_tool": "runway",
    "continuity_refs": [
      "visual_bible",
      "beat_B05",
      "main_character",
      "primary_location"
    ],
    "qc_rules": [
      "matches assigned framing and camera movement",
      "no random character identity change",
      "no watermark or unreadable generated text",
      "shot action is understandable without extra exposition"
    ]
  },
  {
    "shot_id": "S05_SH05",
    "beat_id": "B05",
    "time_range": "00:00:32-00:00:33",
    "duration_sec": 1,
    "kind": "reaction",
    "narrative_purpose": "记录选择造成的情绪后果，并让观众追问：前半段看到的一切是否被误读了？",
    "scene": "中点反转：反复出现的旧照片、光斑和错位影像 暴露出隐藏层或反向含义",
    "framing": "close-up",
    "camera": "slow dolly-in",
    "mood": "revelatory, suspended, tense",
    "emotional_value": "revelation_over_assumption",
    "turning_point": "meaning_reversal",
    "cause_effect": "反转重写目标，所以主角之前的方法失效。",
    "difficulty": "medium",
    "primary_tool": "sora",
    "fallback_tool": "runway",
    "continuity_refs": [
      "visual_bible",
      "beat_B05",
      "main_character",
      "primary_location"
    ],
    "qc_rules": [
      "matches assigned framing and camera movement",
      "no random character identity change",
      "no watermark or unreadable generated text",
      "shot action is understandable without extra exposition"
    ]
  },
  {
    "shot_id": "S05_SH06",
    "beat_id": "B05",
    "time_range": "00:00:33-00:00:35",
    "duration_sec": 2,
    "kind": "transition",
    "narrative_purpose": "把当前转折的后果带入下一场，保留 反复出现的旧照片、光斑和错位影像 暴露出隐藏层或反向含义 的视觉回声。",
    "scene": "中点反转：反复出现的旧照片、光斑和错位影像 暴露出隐藏层或反向含义",
    "framing": "wide-to-detail transition",
    "camera": "cinematic match cut",
    "mood": "revelatory, suspended, tense",
    "emotional_value": "revelation_over_assumption",
    "turning_point": "meaning_reversal",
    "cause_effect": "反转重写目标，所以主角之前的方法失效。",
    "difficulty": "high",
    "primary_tool": "sora",
    "fallback_tool": "runway",
    "continuity_refs": [
      "visual_bible",
      "beat_B05",
      "main_character",
      "primary_location"
    ],
    "qc_rules": [
      "matches assigned framing and camera movement",
      "no random character identity change",
      "no watermark or unreadable generated text",
      "shot action is understandable without extra exposition"
    ]
  },
  {
    "shot_id": "S06_SH01",
    "beat_id": "B06",
    "time_range": "00:00:35-00:00:36",
    "duration_sec": 1,
    "kind": "establishing",
    "narrative_purpose": "建立空间规则和异常入口：反复出现的旧照片、光斑和错位影像 几乎被摧毁或从主角手中消失。",
    "scene": "最低点：反复出现的旧照片、光斑和错位影像 几乎被摧毁或从主角手中消失",
    "framing": "wide establishing shot",
    "camera": "slow push-in",
    "mood": "isolated, heavy, minimal",
    "emotional_value": "loss_over_control",
    "turning_point": "false_solution_collapses",
    "cause_effect": "失败夺走退路，所以主角必须选择立场。",
    "difficulty": "medium",
    "primary_tool": "sora",
    "fallback_tool": "runway",
    "continuity_refs": [
      "visual_bible",
      "beat_B06",
      "main_character",
      "primary_location"
    ],
    "qc_rules": [
      "matches assigned framing and camera movement",
      "no random character identity change",
      "no watermark or unreadable generated text",
      "shot action is understandable without extra exposition"
    ]
  },
  {
    "shot_id": "S06_SH02",
    "beat_id": "B06",
    "time_range": "00:00:36-00:00:37",
    "duration_sec": 1,
    "kind": "character",
    "narrative_purpose": "让观众看见主角如何决定靠近或回避这一转折：一个温和却无处不在的 AI 系统 夺走主角最可靠的退路，迫使其面对 保留被修饰后的安稳生活与公开刺痛所有人的真相。",
    "scene": "最低点：反复出现的旧照片、光斑和错位影像 几乎被摧毁或从主角手中消失",
    "framing": "medium close-up",
    "camera": "subtle handheld drift",
    "mood": "isolated, heavy, minimal",
    "emotional_value": "loss_over_control",
    "turning_point": "false_solution_collapses",
    "cause_effect": "失败夺走退路，所以主角必须选择立场。",
    "difficulty": "medium",
    "primary_tool": "sora",
    "fallback_tool": "runway",
    "continuity_refs": [
      "visual_bible",
      "beat_B06",
      "main_character",
      "primary_location"
    ],
    "qc_rules": [
      "matches assigned framing and camera movement",
      "no random character identity change",
      "no watermark or unreadable generated text",
      "shot action is understandable without extra exposition"
    ]
  },
  {
    "shot_id": "S06_SH03",
    "beat_id": "B06",
    "time_range": "00:00:37-00:00:38",
    "duration_sec": 1,
    "kind": "insert",
    "narrative_purpose": "用一个可反复追踪的道具/细节承载线索：反复出现的旧照片、光斑和错位影像 几乎被摧毁或从主角手中消失。",
    "scene": "最低点：反复出现的旧照片、光斑和错位影像 几乎被摧毁或从主角手中消失",
    "framing": "macro insert",
    "camera": "locked-off or tiny parallax",
    "mood": "isolated, heavy, minimal",
    "emotional_value": "loss_over_control",
    "turning_point": "false_solution_collapses",
    "cause_effect": "失败夺走退路，所以主角必须选择立场。",
    "difficulty": "low",
    "primary_tool": "sora",
    "fallback_tool": "runway",
    "continuity_refs": [
      "visual_bible",
      "beat_B06",
      "main_character",
      "primary_location"
    ],
    "qc_rules": [
      "matches assigned framing and camera movement",
      "no random character identity change",
      "no watermark or unreadable generated text",
      "shot action is understandable without extra exposition"
    ]
  },
  {
    "shot_id": "S06_SH04",
    "beat_id": "B06",
    "time_range": "00:00:38-00:00:39",
    "duration_sec": 1,
    "kind": "action",
    "narrative_purpose": "用一个明确行动推动因果链：失败夺走退路，所以主角必须选择立场。",
    "scene": "最低点：反复出现的旧照片、光斑和错位影像 几乎被摧毁或从主角手中消失",
    "framing": "tracking shot",
    "camera": "controlled lateral move",
    "mood": "isolated, heavy, minimal",
    "emotional_value": "loss_over_control",
    "turning_point": "false_solution_collapses",
    "cause_effect": "失败夺走退路，所以主角必须选择立场。",
    "difficulty": "high",
    "primary_tool": "sora",
    "fallback_tool": "runway",
    "continuity_refs": [
      "visual_bible",
      "beat_B06",
      "main_character",
      "primary_location"
    ],
    "qc_rules": [
      "matches assigned framing and camera movement",
      "no random character identity change",
      "no watermark or unreadable generated text",
      "shot action is understandable without extra exposition"
    ]
  },
  {
    "shot_id": "S06_SH05",
    "beat_id": "B06",
    "time_range": "00:00:39-00:00:40",
    "duration_sec": 1,
    "kind": "reaction",
    "narrative_purpose": "记录选择造成的情绪后果，并让观众追问：失败之后还有没有不背叛自己的选择？",
    "scene": "最低点：反复出现的旧照片、光斑和错位影像 几乎被摧毁或从主角手中消失",
    "framing": "close-up",
    "camera": "slow dolly-in",
    "mood": "isolated, heavy, minimal",
    "emotional_value": "loss_over_control",
    "turning_point": "false_solution_collapses",
    "cause_effect": "失败夺走退路，所以主角必须选择立场。",
    "difficulty": "medium",
    "primary_tool": "sora",
    "fallback_tool": "runway",
    "continuity_refs": [
      "visual_bible",
      "beat_B06",
      "main_character",
      "primary_location"
    ],
    "qc_rules": [
      "matches assigned framing and camera movement",
      "no random character identity change",
      "no watermark or unreadable generated text",
      "shot action is understandable without extra exposition"
    ]
  },
  {
    "shot_id": "S06_SH06",
    "beat_id": "B06",
    "time_range": "00:00:40-00:00:42",
    "duration_sec": 2,
    "kind": "transition",
    "narrative_purpose": "把当前转折的后果带入下一场，保留 反复出现的旧照片、光斑和错位影像 几乎被摧毁或从主角手中消失 的视觉回声。",
    "scene": "最低点：反复出现的旧照片、光斑和错位影像 几乎被摧毁或从主角手中消失",
    "framing": "wide-to-detail transition",
    "camera": "cinematic match cut",
    "mood": "isolated, heavy, minimal",
    "emotional_value": "loss_over_control",
    "turning_point": "false_solution_collapses",
    "cause_effect": "失败夺走退路，所以主角必须选择立场。",
    "difficulty": "high",
    "primary_tool": "sora",
    "fallback_tool": "runway",
    "continuity_refs": [
      "visual_bible",
      "beat_B06",
      "main_character",
      "primary_location"
    ],
    "qc_rules": [
      "matches assigned framing and camera movement",
      "no random character identity change",
      "no watermark or unreadable generated text",
      "shot action is understandable without extra exposition"
    ]
  },
  {
    "shot_id": "S07_SH01",
    "beat_id": "B07",
    "time_range": "00:00:42-00:00:43",
    "duration_sec": 1,
    "kind": "establishing",
    "narrative_purpose": "建立空间规则和异常入口：反复出现的旧照片、光斑和错位影像 被主角主动使用，改变局面。",
    "scene": "最终选择：反复出现的旧照片、光斑和错位影像 被主角主动使用，改变局面",
    "framing": "wide establishing shot",
    "camera": "slow push-in",
    "mood": "decisive, emotional, high-stakes",
    "emotional_value": "choice_over_survival",
    "turning_point": "irreversible_choice",
    "cause_effect": "选择被执行，所以世界状态发生可见改变。",
    "difficulty": "medium",
    "primary_tool": "sora",
    "fallback_tool": "runway",
    "continuity_refs": [
      "visual_bible",
      "beat_B07",
      "main_character",
      "primary_location"
    ],
    "qc_rules": [
      "matches assigned framing and camera movement",
      "no random character identity change",
      "no watermark or unreadable generated text",
      "shot action is understandable without extra exposition"
    ]
  },
  {
    "shot_id": "S07_SH02",
    "beat_id": "B07",
    "time_range": "00:00:43-00:00:44",
    "duration_sec": 1,
    "kind": "character",
    "narrative_purpose": "让观众看见主角如何决定靠近或回避这一转折：主角做出不可逆动作，让 一段和现实不一致的贴身携带的旧照片封套 从封套被主角放到公开的位置，成为所有人都能看见的证据。 画面只呈现一个可拍动作：主角用手套触碰、收起或移交 旧照片封套；不要求光斑可读、不要求抽象概念具象化、不要求连续变形。 画面只呈现一个可拍动作：主角用手套触碰、收起或移交 旧照片封套；不要求光斑可读、不要求抽象概念具象化、不要求连续变形。 画面只呈现一个可拍动作：主角用手套触碰、收起或移交 旧照片封套；不要求文字可读、不要求抽象概念具象化、不要求连续变形。",
    "scene": "最终动作：反复出现的旧照片、光斑和错位影像 被主角主动使用，改变局面",
    "framing": "medium over-the-shoulder shot, protagonist seen by posture and hands, no sustained face close-up",
    "camera": "locked-off or very slow lateral slide",
    "mood": "decisive, emotional, high-stakes",
    "emotional_value": "choice_over_survival",
    "turning_point": "irreversible_choice",
    "cause_effect": "选择被执行，所以世界状态发生可见改变。",
    "difficulty": "medium",
    "primary_tool": "sora",
    "fallback_tool": "runway",
    "continuity_refs": [
      "visual_bible",
      "beat_B07",
      "main_character",
      "primary_location"
    ],
    "qc_rules": [
      "matches assigned framing and camera movement",
      "no random character identity change",
      "no watermark or unreadable generated text",
      "shot action is understandable without extra exposition",
      "one primary visible action only",
      "no morphing transformation",
      "no readable generated text",
      "identity conveyed through wardrobe, posture, and prop rather than face close-up"
    ],
    "auto_revision": {
      "source": "agentic_video.iterate.revise_blocked_shot",
      "failure_attractors": [
        "abstract_concept",
        "identity_closeup",
        "readable_text_or_ui"
      ],
      "rule": "convert overloaded abstract/identity shot into one concrete prop action"
    }
  },
  {
    "shot_id": "S07_SH03",
    "beat_id": "B07",
    "time_range": "00:00:44-00:00:45",
    "duration_sec": 1,
    "kind": "insert",
    "narrative_purpose": "用一个可反复追踪的道具/细节承载线索：反复出现的旧照片、光斑和错位影像 被主角主动使用，改变局面。",
    "scene": "最终选择：反复出现的旧照片、光斑和错位影像 被主角主动使用，改变局面",
    "framing": "macro insert",
    "camera": "locked-off or tiny parallax",
    "mood": "decisive, emotional, high-stakes",
    "emotional_value": "choice_over_survival",
    "turning_point": "irreversible_choice",
    "cause_effect": "选择被执行，所以世界状态发生可见改变。",
    "difficulty": "low",
    "primary_tool": "sora",
    "fallback_tool": "runway",
    "continuity_refs": [
      "visual_bible",
      "beat_B07",
      "main_character",
      "primary_location"
    ],
    "qc_rules": [
      "matches assigned framing and camera movement",
      "no random character identity change",
      "no watermark or unreadable generated text",
      "shot action is understandable without extra exposition"
    ]
  },
  {
    "shot_id": "S07_SH04",
    "beat_id": "B07",
    "time_range": "00:00:45-00:00:46",
    "duration_sec": 1,
    "kind": "action",
    "narrative_purpose": "用一个明确行动推动因果链：选择被执行，所以世界状态发生可见改变。",
    "scene": "最终选择：反复出现的旧照片、光斑和错位影像 被主角主动使用，改变局面",
    "framing": "tracking shot",
    "camera": "controlled lateral move",
    "mood": "decisive, emotional, high-stakes",
    "emotional_value": "choice_over_survival",
    "turning_point": "irreversible_choice",
    "cause_effect": "选择被执行，所以世界状态发生可见改变。",
    "difficulty": "high",
    "primary_tool": "sora",
    "fallback_tool": "runway",
    "continuity_refs": [
      "visual_bible",
      "beat_B07",
      "main_character",
      "primary_location"
    ],
    "qc_rules": [
      "matches assigned framing and camera movement",
      "no random character identity change",
      "no watermark or unreadable generated text",
      "shot action is understandable without extra exposition"
    ]
  },
  {
    "shot_id": "S07_SH05",
    "beat_id": "B07",
    "time_range": "00:00:46-00:00:47",
    "duration_sec": 1,
    "kind": "reaction",
    "narrative_purpose": "记录选择造成的情绪后果，并让观众追问：最后一位档案管理员 会如何穿过 保留被修饰后的安稳生活与公开刺痛所有人的真相？",
    "scene": "最终选择：反复出现的旧照片、光斑和错位影像 被主角主动使用，改变局面",
    "framing": "close-up",
    "camera": "slow dolly-in",
    "mood": "decisive, emotional, high-stakes",
    "emotional_value": "choice_over_survival",
    "turning_point": "irreversible_choice",
    "cause_effect": "选择被执行，所以世界状态发生可见改变。",
    "difficulty": "medium",
    "primary_tool": "sora",
    "fallback_tool": "runway",
    "continuity_refs": [
      "visual_bible",
      "beat_B07",
      "main_character",
      "primary_location"
    ],
    "qc_rules": [
      "matches assigned framing and camera movement",
      "no random character identity change",
      "no watermark or unreadable generated text",
      "shot action is understandable without extra exposition"
    ]
  },
  {
    "shot_id": "S07_SH06",
    "beat_id": "B07",
    "time_range": "00:00:47-00:00:49",
    "duration_sec": 2,
    "kind": "transition",
    "narrative_purpose": "把当前转折的后果带入下一场，保留 反复出现的旧照片、光斑和错位影像 被主角主动使用，改变局面 的视觉回声。",
    "scene": "最终选择：反复出现的旧照片、光斑和错位影像 被主角主动使用，改变局面",
    "framing": "wide-to-detail transition",
    "camera": "cinematic match cut",
    "mood": "decisive, emotional, high-stakes",
    "emotional_value": "choice_over_survival",
    "turning_point": "irreversible_choice",
    "cause_effect": "选择被执行，所以世界状态发生可见改变。",
    "difficulty": "high",
    "primary_tool": "sora",
    "fallback_tool": "runway",
    "continuity_refs": [
      "visual_bible",
      "beat_B07",
      "main_character",
      "primary_location"
    ],
    "qc_rules": [
      "matches assigned framing and camera movement",
      "no random character identity change",
      "no watermark or unreadable generated text",
      "shot action is understandable without extra exposition"
    ]
  },
  {
    "shot_id": "S08_SH01",
    "beat_id": "B08",
    "time_range": "00:00:49-00:00:50",
    "duration_sec": 1,
    "kind": "establishing",
    "narrative_purpose": "建立空间规则和异常入口：反复出现的旧照片、光斑和错位影像 以安静、明确的新状态留在结尾。",
    "scene": "余韵与回声：反复出现的旧照片、光斑和错位影像 以安静、明确的新状态留在结尾",
    "framing": "wide establishing shot",
    "camera": "slow push-in",
    "mood": "quiet, resonant, memorable",
    "emotional_value": "resonance_over_explanation",
    "turning_point": "emotional_payoff",
    "cause_effect": "改变已经发生，所以结尾只留下情绪回声。",
    "difficulty": "medium",
    "primary_tool": "sora",
    "fallback_tool": "runway",
    "continuity_refs": [
      "visual_bible",
      "beat_B08",
      "main_character",
      "primary_location"
    ],
    "qc_rules": [
      "matches assigned framing and camera movement",
      "no random character identity change",
      "no watermark or unreadable generated text",
      "shot action is understandable without extra exposition"
    ]
  },
  {
    "shot_id": "S08_SH02",
    "beat_id": "B08",
    "time_range": "00:00:50-00:00:51",
    "duration_sec": 1,
    "kind": "character",
    "narrative_purpose": "让观众看见主角如何决定靠近或回避这一转折：故事用 主角把最后的证据交给海面方向的一束光。 收束，让观众理解代价而不是只听到解释。",
    "scene": "余韵与回声：反复出现的旧照片、光斑和错位影像 以安静、明确的新状态留在结尾",
    "framing": "medium close-up",
    "camera": "subtle handheld drift",
    "mood": "quiet, resonant, memorable",
    "emotional_value": "resonance_over_explanation",
    "turning_point": "emotional_payoff",
    "cause_effect": "改变已经发生，所以结尾只留下情绪回声。",
    "difficulty": "medium",
    "primary_tool": "sora",
    "fallback_tool": "runway",
    "continuity_refs": [
      "visual_bible",
      "beat_B08",
      "main_character",
      "primary_location"
    ],
    "qc_rules": [
      "matches assigned framing and camera movement",
      "no random character identity change",
      "no watermark or unreadable generated text",
      "shot action is understandable without extra exposition"
    ]
  },
  {
    "shot_id": "S08_SH03",
    "beat_id": "B08",
    "time_range": "00:00:51-00:00:52",
    "duration_sec": 1,
    "kind": "insert",
    "narrative_purpose": "用一个可反复追踪的道具/细节承载线索：反复出现的旧照片、光斑和错位影像 以安静、明确的新状态留在结尾。",
    "scene": "余韵与回声：反复出现的旧照片、光斑和错位影像 以安静、明确的新状态留在结尾",
    "framing": "macro insert",
    "camera": "locked-off or tiny parallax",
    "mood": "quiet, resonant, memorable",
    "emotional_value": "resonance_over_explanation",
    "turning_point": "emotional_payoff",
    "cause_effect": "改变已经发生，所以结尾只留下情绪回声。",
    "difficulty": "low",
    "primary_tool": "sora",
    "fallback_tool": "runway",
    "continuity_refs": [
      "visual_bible",
      "beat_B08",
      "main_character",
      "primary_location"
    ],
    "qc_rules": [
      "matches assigned framing and camera movement",
      "no random character identity change",
      "no watermark or unreadable generated text",
      "shot action is understandable without extra exposition"
    ]
  },
  {
    "shot_id": "S08_SH04",
    "beat_id": "B08",
    "time_range": "00:00:52-00:00:53",
    "duration_sec": 1,
    "kind": "action",
    "narrative_purpose": "用一个明确行动推动因果链：改变已经发生，所以结尾只留下情绪回声。",
    "scene": "余韵与回声：反复出现的旧照片、光斑和错位影像 以安静、明确的新状态留在结尾",
    "framing": "tracking shot",
    "camera": "controlled lateral move",
    "mood": "quiet, resonant, memorable",
    "emotional_value": "resonance_over_explanation",
    "turning_point": "emotional_payoff",
    "cause_effect": "改变已经发生，所以结尾只留下情绪回声。",
    "difficulty": "high",
    "primary_tool": "sora",
    "fallback_tool": "runway",
    "continuity_refs": [
      "visual_bible",
      "beat_B08",
      "main_character",
      "primary_location"
    ],
    "qc_rules": [
      "matches assigned framing and camera movement",
      "no random character identity change",
      "no watermark or unreadable generated text",
      "shot action is understandable without extra exposition"
    ]
  },
  {
    "shot_id": "S08_SH05",
    "beat_id": "B08",
    "time_range": "00:00:53-00:00:54",
    "duration_sec": 1,
    "kind": "reaction",
    "narrative_purpose": "记录选择造成的情绪后果，并让观众追问：最后的画面是否兑现 反复出现的旧照片、光斑和错位影像？",
    "scene": "余韵与回声：反复出现的旧照片、光斑和错位影像 以安静、明确的新状态留在结尾",
    "framing": "close-up",
    "camera": "slow dolly-in",
    "mood": "quiet, resonant, memorable",
    "emotional_value": "resonance_over_explanation",
    "turning_point": "emotional_payoff",
    "cause_effect": "改变已经发生，所以结尾只留下情绪回声。",
    "difficulty": "medium",
    "primary_tool": "sora",
    "fallback_tool": "runway",
    "continuity_refs": [
      "visual_bible",
      "beat_B08",
      "main_character",
      "primary_location"
    ],
    "qc_rules": [
      "matches assigned framing and camera movement",
      "no random character identity change",
      "no watermark or unreadable generated text",
      "shot action is understandable without extra exposition"
    ]
  },
  {
    "shot_id": "S08_SH06",
    "beat_id": "B08",
    "time_range": "00:00:54-00:01:00",
    "duration_sec": 6,
    "kind": "transition",
    "narrative_purpose": "把当前转折的后果带入下一场，保留 反复出现的旧照片、光斑和错位影像 以安静、明确的新状态留在结尾 的视觉回声。",
    "scene": "余韵与回声：反复出现的旧照片、光斑和错位影像 以安静、明确的新状态留在结尾",
    "framing": "wide-to-detail transition",
    "camera": "cinematic match cut",
    "mood": "quiet, resonant, memorable",
    "emotional_value": "resonance_over_explanation",
    "turning_point": "emotional_payoff",
    "cause_effect": "改变已经发生，所以结尾只留下情绪回声。",
    "difficulty": "high",
    "primary_tool": "sora",
    "fallback_tool": "runway",
    "continuity_refs": [
      "visual_bible",
      "beat_B08",
      "main_character",
      "primary_location"
    ],
    "qc_rules": [
      "matches assigned framing and camera movement",
      "no random character identity change",
      "no watermark or unreadable generated text",
      "shot action is understandable without extra exposition"
    ]
  }
]
