{
  "status": "completed",
  "applicable_count": 4,
  "completed_count": 4,
  "failed_count": 0,
  "schema_version": 5,
  "config_hash": "275995055eed9183",
  "data": {
    "plans": {
      "bg_forest_scene": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_city_back_alley": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_rooftop_villa_unit": {
        "status": "ok",
        "plan": {
          "backgrounds": [
            {
              "applies_to_shots": [
                "S4_Shot1"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_l03_rooftop_exterior"
              ],
              "loc_id": "L03",
              "space_key_hint": "main",
              "state_class": "quiet",
              "state_label_raw": "dim dusk establishing view of old rooftop villa exterior",
              "sub_location_label": "낡은 빌라 옥탑방 외부 전경",
              "surface_role": "site_surface",
              "time_phase": "dusk",
              "bg_id": "L03B02"
            },
            {
              "applies_to_shots": [
                "S10_Shot4",
                "S10_Shot6"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_l03_rooftop_exterior"
              ],
              "loc_id": "L03",
              "space_key_hint": "main",
              "state_class": "intrusion",
              "state_label_raw": "night rooftop entry intrusion, flyer used at iron door, ominous window silhouette",
              "sub_location_label": "옥상 철문 현관과 창문 외곽",
              "surface_role": "transition_zone",
              "time_phase": "night",
              "bg_id": "L03B03"
            },
            {
              "applies_to_shots": [
                "S17_Shot1"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_l03_rooftop_exterior"
              ],
              "loc_id": "L03",
              "space_key_hint": "main",
              "state_class": "quiet",
              "state_label_raw": "blue dawn rooftop exterior with lit window and black cat",
              "sub_location_label": "새벽 옥탑방 창문 외부",
              "surface_role": "exterior_plate",
              "time_phase": "dawn",
              "bg_id": "L03B01"
            },
            {
              "applies_to_shots": [
                "S5_Shot3",
                "S5_Shot11",
                "S5_Shot12"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_l04_interior_main"
              ],
              "loc_id": "L04",
              "space_key_hint": "main",
              "state_class": "quiet",
              "state_label_raw": "daytime cramped rooftop room, TV news glow, domestic sink and small mark on wrist",
              "sub_location_label": "옥탑방 내부 전체",
              "surface_role": "interior_room",
              "time_phase": "day",
              "bg_id": "L04B01"
            },
            {
              "applies_to_shots": [
                "S12_Shot8",
                "S12_Shot13",
                "S12_Shot16"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_l04_interior_main"
              ],
              "loc_id": "L04",
              "space_key_hint": "main",
              "state_class": "blood_scene",
              "state_label_raw": "night interior murder scene, blood on floor, corpse behind curtain, photo in hand, red circle on wall",
              "sub_location_label": "수리영 방과 거실 주변",
              "surface_role": "interior_room",
              "time_phase": "night",
              "bg_id": "L04B05"
            },
            {
              "applies_to_shots": [
                "S14_Shot4",
                "S14_Shot5",
                "S14_Shot12"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_l04_interior_main"
              ],
              "loc_id": "L04",
              "space_key_hint": "main",
              "state_class": "clean_after",
              "state_label_raw": "night interior suddenly spotless after body and blood vanish, objects subtly displaced",
              "sub_location_label": "깨끗하게 정돈된 수리영 방과 집 안",
              "surface_role": "interior_room",
              "time_phase": "night",
              "bg_id": "L04B06"
            },
            {
              "applies_to_shots": [
                "S18_Shot10",
                "S18_Shot14"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_l04_interior_main"
              ],
              "loc_id": "L04",
              "space_key_hint": "main",
              "state_class": "dream_or_vision_state",
              "state_label_raw": "morning clean interior with hallucinated red circle in mirror and melting face in family photo",
              "sub_location_label": "욕실 거울과 거실 식탁 사진",
              "surface_role": "interior_room",
              "time_phase": "morning",
              "bg_id": "L04B04"
            },
            {
              "applies_to_shots": [
                "S25_Shot4"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_l04_interior_main"
              ],
              "loc_id": "L04",
              "space_key_hint": "main",
              "state_class": "evidence_display",
              "state_label_raw": "dusk bedroom doorway showing red circle mark with bloodied photo as clue",
              "sub_location_label": "수리영 방 벽면의 붉은 원과 사진",
              "surface_role": "interior_room",
              "time_phase": "dusk",
              "bg_id": "L04B02"
            },
            {
              "applies_to_shots": [
                "S25_Shot8",
                "S27_Shot1",
                "S27_Shot5"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_l04_interior_main"
              ],
              "loc_id": "L04",
              "space_key_hint": "main",
              "state_class": "ransacked",
              "state_label_raw": "dusk ransacked rooftop room, overturned furniture, open window, bleak half-open iron door",
              "sub_location_label": "난장판이 된 옥탑방 내부",
              "surface_role": "interior_room",
              "time_phase": "dusk",
              "bg_id": "L04B03"
            },
            {
              "applies_to_shots": [
                "S11_Shot2",
                "S13_Shot2",
                "S13_Shot5"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_l10_yard"
              ],
              "loc_id": "L10",
              "space_key_hint": "yard",
              "state_class": "arrival",
              "state_label_raw": "late-night villa yard arrivals, bicycle at stair base, police car siren and emotional confrontation",
              "sub_location_label": "다세대 빌라 마당과 계단 아래",
              "surface_role": "site_surface",
              "time_phase": "night",
              "bg_id": "L10B01"
            },
            {
              "applies_to_shots": [
                "S11_Shot4"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_l10_rooftop_entry"
              ],
              "loc_id": "L10",
              "space_key_hint": "rooftop",
              "state_class": "intrusion",
              "state_label_raw": "night rooftop approach to half-open iron entrance door after suspected break-in",
              "sub_location_label": "옥상 현관 철문 앞",
              "surface_role": "transition_zone",
              "time_phase": "night",
              "bg_id": "L10B02"
            }
          ],
          "floor_plans": [
            {
              "depends_on_fp": [],
              "fp_id": "fp_l03_rooftop_exterior",
              "loc_id": "L03",
              "scope": "Rooftop exterior, water tank, clothesline, entry door and window facade",
              "space_key_hint": "main",
              "sub_location": "rooftop_exterior"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_l04_interior_main",
              "loc_id": "L04",
              "scope": "Single rooftop unit interior: living area, sink, rooms, bath and entry",
              "space_key_hint": "main",
              "sub_location": "interior_main"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_l10_yard",
              "loc_id": "L10",
              "scope": "Villa yard surface with bicycle spot, police car access and stair base",
              "space_key_hint": "yard",
              "sub_location": "villa_yard"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_l10_rooftop_entry",
              "loc_id": "L10",
              "scope": "Rooftop landing and iron entrance door exterior approach",
              "space_key_hint": "rooftop",
              "sub_location": "rooftop_entry"
            }
          ],
          "group_id": "bg_rooftop_villa_unit",
          "rationale_summary": "L03/L04 single_space는 각 1개, L10은 마당·옥상 진입부로 분리. 시간대와 침입/혈흔/청소후/환시/난장 상태별로 배경을 묶음.",
          "gen_order": [
            "fp_l03_rooftop_exterior",
            "fp_l04_interior_main",
            "fp_l10_yard",
            "fp_l10_rooftop_entry",
            "L03B02",
            "L03B03",
            "L03B01",
            "L04B01",
            "L04B05",
            "L04B06",
            "L04B04",
            "L04B02",
            "L04B03",
            "L10B01",
            "L10B02"
          ]
        }
      },
      "bg_coastal_road": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_animal_shelter_room": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_large_mart": {
        "status": "ok",
        "plan": {
          "backgrounds": [
            {
              "applies_to_shots": [
                "S8_Shot3",
                "S8_Shot5"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_mart_sales_floor"
              ],
              "loc_id": "L08",
              "space_key_hint": "main",
              "state_class": "busy",
              "state_label_raw": "dusk large mart sales floor with employees stocking shelves and Su-ri-yeong questioning staff",
              "sub_location_label": "대형 마트 매장 내부",
              "surface_role": "interior_room",
              "time_phase": "dusk",
              "bg_id": "L08B01"
            },
            {
              "applies_to_shots": [
                "S19_Shot7",
                "S19_Shot8"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_mart_sales_floor"
              ],
              "loc_id": "L08",
              "space_key_hint": "main",
              "state_class": "quiet",
              "state_label_raw": "early morning sparse mart interior as Su-ri-yeong searches staff and checks CCTV direction",
              "sub_location_label": "이른 아침 한산한 마트 매장",
              "surface_role": "interior_room",
              "time_phase": "morning",
              "bg_id": "L08B02"
            },
            {
              "applies_to_shots": [
                "S20_Shot1",
                "S20_Shot3"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_security_office"
              ],
              "loc_id": "L14",
              "space_key_hint": "main",
              "state_class": "evidence_display",
              "state_label_raw": "dark security office with CCTV monitor playback, one area of footage obscured by heavy shadow",
              "sub_location_label": "마트 총무과 보안실",
              "surface_role": "interior_room",
              "time_phase": "day",
              "bg_id": "L14B01"
            }
          ],
          "floor_plans": [
            {
              "depends_on_fp": [],
              "fp_id": "fp_mart_sales_floor",
              "loc_id": "L08",
              "scope": "Open sales floor with aisles, shelves, staff encounter, and CCTV sightline",
              "space_key_hint": "main",
              "sub_location": "mart_sales_floor"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_security_office",
              "loc_id": "L14",
              "scope": "Security office desk, monitors, staff positions, and viewing area",
              "space_key_hint": "main",
              "sub_location": "security_office"
            }
          ],
          "group_id": "bg_large_mart",
          "rationale_summary": "Single-space locations keep one main plan each; L08 splits by dusk busy vs morning quiet, L14 by CCTV evidence display.",
          "gen_order": [
            "fp_mart_sales_floor",
            "fp_security_office",
            "L08B01",
            "L08B02",
            "L14B01"
          ]
        }
      },
      "bg_coastal_bus_stop": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_police_station": {
        "status": "ok",
        "plan": {
          "backgrounds": [
            {
              "applies_to_shots": [
                "S16_Shot3",
                "S16_Shot4"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_police_office"
              ],
              "loc_id": "L12",
              "space_key_hint": "main",
              "state_class": "quiet",
              "state_label_raw": "night duty office with Kim alone, tense phone-number tracking request",
              "sub_location_label": "경찰서 사무실 내부",
              "surface_role": "interior_room",
              "time_phase": "night",
              "bg_id": "L12B02"
            },
            {
              "applies_to_shots": [
                "S21_Shot5",
                "S21_Shot8",
                "S21_Shot10"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_police_office"
              ],
              "loc_id": "L12",
              "space_key_hint": "main",
              "state_class": "evidence_display",
              "state_label_raw": "day office desk and monitor showing murder photos, missing report papers, GPS location result",
              "sub_location_label": "경찰서 사무실 내부",
              "surface_role": "interior_room",
              "time_phase": "day",
              "bg_id": "L12B01"
            },
            {
              "applies_to_shots": [
                "S22_Shot1"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_police_station_front"
              ],
              "loc_id": "L13",
              "space_key_hint": "main",
              "state_class": "normal",
              "state_label_raw": "day police station front with parked bicycle as Suriyoung prepares to ride away",
              "sub_location_label": "경찰서 건물 앞",
              "surface_role": "exterior_plate",
              "time_phase": "day",
              "bg_id": "L13B01"
            }
          ],
          "floor_plans": [
            {
              "depends_on_fp": [],
              "fp_id": "fp_police_office",
              "loc_id": "L12",
              "scope": "Police office desks, duty area, monitor, evidence paperwork within one room",
              "space_key_hint": "main",
              "sub_location": "police_office"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_police_station_front",
              "loc_id": "L13",
              "scope": "Police station front apron with bicycle parking and street-side exit zone",
              "space_key_hint": "main",
              "sub_location": "police_station_front"
            }
          ],
          "group_id": "bg_police_station",
          "rationale_summary": "L12는 단일 사무실로 밤 당직/낮 증거표시 상태를 분리, L13은 건물 앞 자전거 출발용 외부 플레이트로 계획.",
          "gen_order": [
            "fp_police_office",
            "fp_police_station_front",
            "L12B02",
            "L12B01",
            "L13B01"
          ]
        }
      },
      "bg_pc_room": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_small_fishing_boat": {
        "status": "ok",
        "plan": {
          "backgrounds": [
            {
              "applies_to_shots": [
                "S26_Shot2"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_foggy_port_rocks"
              ],
              "loc_id": "L16",
              "space_key_hint": "main",
              "state_class": "quiet",
              "state_label_raw": "dusk after rain, empty fog-bound harbor rocks facing invisible sea",
              "sub_location_label": "안개 낀 포구와 갯바위",
              "surface_role": "site_surface",
              "time_phase": "dusk",
              "bg_id": "L16B02"
            },
            {
              "applies_to_shots": [
                "S26_Shot8",
                "S26_Shot12"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_foggy_port_rocks"
              ],
              "loc_id": "L16",
              "space_key_hint": "main",
              "state_class": "arrival",
              "state_label_raw": "dusk fog harbor after the old fishing boat arrives and mooring begins",
              "sub_location_label": "정박한 낡은 어선 주변 포구",
              "surface_role": "site_surface",
              "time_phase": "dusk",
              "bg_id": "L16B01"
            },
            {
              "applies_to_shots": [
                "S28_Shot5",
                "S28_Shot9"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_small_fishing_boat_deck"
              ],
              "loc_id": "L17",
              "space_key_hint": "main",
              "state_class": "busy",
              "state_label_raw": "dusk small fishing boat deck at sea, tense map and photo confrontation, sudden movement toward wheelhouse",
              "sub_location_label": "바다 위 소형 어선 갑판",
              "surface_role": "exterior_plate",
              "time_phase": "dusk",
              "bg_id": "L17B01"
            },
            {
              "applies_to_shots": [
                "S30_Shot3"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [],
              "loc_id": "L17",
              "space_key_hint": "main",
              "state_class": "dream_or_vision_state",
              "state_label_raw": "golden dusk sea with thick fog belt swallowing the boat bow in a surreal silhouette",
              "sub_location_label": "짙은 안개 속 바다와 어선 앞머리",
              "surface_role": "site_surface",
              "time_phase": "dusk",
              "bg_id": "L17B02"
            },
            {
              "applies_to_shots": [
                "S29_Shot4",
                "S29_Shot9"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_boat_wheelhouse_interior"
              ],
              "loc_id": "L18",
              "space_key_hint": "main",
              "state_class": "evidence_display",
              "state_label_raw": "dusk cramped wheelhouse interior with photo clue, many circles and a newly noticed red circle amid threatening confrontation",
              "sub_location_label": "소형 어선 조타실 내부",
              "surface_role": "interior_room",
              "time_phase": "dusk",
              "bg_id": "L18B01"
            }
          ],
          "floor_plans": [
            {
              "depends_on_fp": [],
              "fp_id": "fp_foggy_port_rocks",
              "loc_id": "L16",
              "scope": "Foggy harbor edge, rocks, mooring spot, approach to old fishing boat",
              "space_key_hint": "main",
              "sub_location": "foggy_port_rocks"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_small_fishing_boat_deck",
              "loc_id": "L17",
              "scope": "Small fishing boat deck, bow, rail, cabin exterior, surrounding sea sightlines",
              "space_key_hint": "main",
              "sub_location": "small_fishing_boat_deck"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_boat_wheelhouse_interior",
              "loc_id": "L18",
              "scope": "Cramped wheelhouse interior with controls, windows, wall markings and standing space",
              "space_key_hint": "main",
              "sub_location": "boat_wheelhouse_interior"
            }
          ],
          "group_id": "bg_small_fishing_boat",
          "rationale_summary": "단일공간 3곳은 각 1개 FP. 포구는 대기/도착, 갑판은 대치/몽환적 안개, 조타실은 단서 노출 상태로 분리.",
          "gen_order": [
            "fp_foggy_port_rocks",
            "fp_small_fishing_boat_deck",
            "fp_boat_wheelhouse_interior",
            "L16B02",
            "L16B01",
            "L17B01",
            "L17B02",
            "L18B01"
          ]
        }
      }
    },
    "background_catalog": {
      "L03B01": {
        "bg_id": "L03B01",
        "loc_id": "L03",
        "space_key": "main",
        "time_phase": "dawn",
        "state_class": "quiet",
        "surface_role": "exterior_plate",
        "semantic_key": "L03|main|dawn|quiet",
        "depends_on_fp": [
          "fp_l03_rooftop_exterior"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S17_Shot1"
        ],
        "sub_location_label": "새벽 옥탑방 창문 외부",
        "state_label_raw": "blue dawn rooftop exterior with lit window and black cat"
      },
      "L03B02": {
        "bg_id": "L03B02",
        "loc_id": "L03",
        "space_key": "main",
        "time_phase": "dusk",
        "state_class": "quiet",
        "surface_role": "site_surface",
        "semantic_key": "L03|main|dusk|quiet",
        "depends_on_fp": [
          "fp_l03_rooftop_exterior"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S4_Shot1"
        ],
        "sub_location_label": "낡은 빌라 옥탑방 외부 전경",
        "state_label_raw": "dim dusk establishing view of old rooftop villa exterior"
      },
      "L03B03": {
        "bg_id": "L03B03",
        "loc_id": "L03",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "intrusion",
        "surface_role": "transition_zone",
        "semantic_key": "L03|main|night|intrusion",
        "depends_on_fp": [
          "fp_l03_rooftop_exterior"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S10_Shot4",
          "S10_Shot6"
        ],
        "sub_location_label": "옥상 철문 현관과 창문 외곽",
        "state_label_raw": "night rooftop entry intrusion, flyer used at iron door, ominous window silhouette"
      },
      "L04B01": {
        "bg_id": "L04B01",
        "loc_id": "L04",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "quiet",
        "surface_role": "interior_room",
        "semantic_key": "L04|main|day|quiet",
        "depends_on_fp": [
          "fp_l04_interior_main"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S5_Shot3",
          "S5_Shot11",
          "S5_Shot12"
        ],
        "sub_location_label": "옥탑방 내부 전체",
        "state_label_raw": "daytime cramped rooftop room, TV news glow, domestic sink and small mark on wrist"
      },
      "L04B02": {
        "bg_id": "L04B02",
        "loc_id": "L04",
        "space_key": "main",
        "time_phase": "dusk",
        "state_class": "evidence_display",
        "surface_role": "interior_room",
        "semantic_key": "L04|main|dusk|evidence_display",
        "depends_on_fp": [
          "fp_l04_interior_main"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S25_Shot4"
        ],
        "sub_location_label": "수리영 방 벽면의 붉은 원과 사진",
        "state_label_raw": "dusk bedroom doorway showing red circle mark with bloodied photo as clue"
      },
      "L04B03": {
        "bg_id": "L04B03",
        "loc_id": "L04",
        "space_key": "main",
        "time_phase": "dusk",
        "state_class": "ransacked",
        "surface_role": "interior_room",
        "semantic_key": "L04|main|dusk|ransacked",
        "depends_on_fp": [
          "fp_l04_interior_main"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S25_Shot8",
          "S27_Shot1",
          "S27_Shot5"
        ],
        "sub_location_label": "난장판이 된 옥탑방 내부",
        "state_label_raw": "dusk ransacked rooftop room, overturned furniture, open window, bleak half-open iron door"
      },
      "L04B04": {
        "bg_id": "L04B04",
        "loc_id": "L04",
        "space_key": "main",
        "time_phase": "morning",
        "state_class": "dream_or_vision_state",
        "surface_role": "interior_room",
        "semantic_key": "L04|main|morning|dream_or_vision_state",
        "depends_on_fp": [
          "fp_l04_interior_main"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S18_Shot10",
          "S18_Shot14"
        ],
        "sub_location_label": "욕실 거울과 거실 식탁 사진",
        "state_label_raw": "morning clean interior with hallucinated red circle in mirror and melting face in family photo"
      },
      "L04B05": {
        "bg_id": "L04B05",
        "loc_id": "L04",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "blood_scene",
        "surface_role": "interior_room",
        "semantic_key": "L04|main|night|blood_scene",
        "depends_on_fp": [
          "fp_l04_interior_main"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S12_Shot8",
          "S12_Shot13",
          "S12_Shot16"
        ],
        "sub_location_label": "수리영 방과 거실 주변",
        "state_label_raw": "night interior murder scene, blood on floor, corpse behind curtain, photo in hand, red circle on wall"
      },
      "L04B06": {
        "bg_id": "L04B06",
        "loc_id": "L04",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "clean_after",
        "surface_role": "interior_room",
        "semantic_key": "L04|main|night|clean_after",
        "depends_on_fp": [
          "fp_l04_interior_main"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S14_Shot4",
          "S14_Shot5",
          "S14_Shot12"
        ],
        "sub_location_label": "깨끗하게 정돈된 수리영 방과 집 안",
        "state_label_raw": "night interior suddenly spotless after body and blood vanish, objects subtly displaced"
      },
      "L08B01": {
        "bg_id": "L08B01",
        "loc_id": "L08",
        "space_key": "main",
        "time_phase": "dusk",
        "state_class": "busy",
        "surface_role": "interior_room",
        "semantic_key": "L08|main|dusk|busy",
        "depends_on_fp": [
          "fp_mart_sales_floor"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S8_Shot3",
          "S8_Shot5"
        ],
        "sub_location_label": "대형 마트 매장 내부",
        "state_label_raw": "dusk large mart sales floor with employees stocking shelves and Su-ri-yeong questioning staff"
      },
      "L08B02": {
        "bg_id": "L08B02",
        "loc_id": "L08",
        "space_key": "main",
        "time_phase": "morning",
        "state_class": "quiet",
        "surface_role": "interior_room",
        "semantic_key": "L08|main|morning|quiet",
        "depends_on_fp": [
          "fp_mart_sales_floor"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S19_Shot7",
          "S19_Shot8"
        ],
        "sub_location_label": "이른 아침 한산한 마트 매장",
        "state_label_raw": "early morning sparse mart interior as Su-ri-yeong searches staff and checks CCTV direction"
      },
      "L10B01": {
        "bg_id": "L10B01",
        "loc_id": "L10",
        "space_key": "yard",
        "time_phase": "night",
        "state_class": "arrival",
        "surface_role": "site_surface",
        "semantic_key": "L10|yard|night|arrival",
        "depends_on_fp": [
          "fp_l10_yard"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S11_Shot2",
          "S13_Shot2",
          "S13_Shot5"
        ],
        "sub_location_label": "다세대 빌라 마당과 계단 아래",
        "state_label_raw": "late-night villa yard arrivals, bicycle at stair base, police car siren and emotional confrontation"
      },
      "L10B02": {
        "bg_id": "L10B02",
        "loc_id": "L10",
        "space_key": "rooftop",
        "time_phase": "night",
        "state_class": "intrusion",
        "surface_role": "transition_zone",
        "semantic_key": "L10|rooftop|night|intrusion",
        "depends_on_fp": [
          "fp_l10_rooftop_entry"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S11_Shot4"
        ],
        "sub_location_label": "옥상 현관 철문 앞",
        "state_label_raw": "night rooftop approach to half-open iron entrance door after suspected break-in"
      },
      "L12B01": {
        "bg_id": "L12B01",
        "loc_id": "L12",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "evidence_display",
        "surface_role": "interior_room",
        "semantic_key": "L12|main|day|evidence_display",
        "depends_on_fp": [
          "fp_police_office"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S21_Shot5",
          "S21_Shot8",
          "S21_Shot10"
        ],
        "sub_location_label": "경찰서 사무실 내부",
        "state_label_raw": "day office desk and monitor showing murder photos, missing report papers, GPS location result"
      },
      "L12B02": {
        "bg_id": "L12B02",
        "loc_id": "L12",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "quiet",
        "surface_role": "interior_room",
        "semantic_key": "L12|main|night|quiet",
        "depends_on_fp": [
          "fp_police_office"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S16_Shot3",
          "S16_Shot4"
        ],
        "sub_location_label": "경찰서 사무실 내부",
        "state_label_raw": "night duty office with Kim alone, tense phone-number tracking request"
      },
      "L13B01": {
        "bg_id": "L13B01",
        "loc_id": "L13",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "normal",
        "surface_role": "exterior_plate",
        "semantic_key": "L13|main|day|normal",
        "depends_on_fp": [
          "fp_police_station_front"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S22_Shot1"
        ],
        "sub_location_label": "경찰서 건물 앞",
        "state_label_raw": "day police station front with parked bicycle as Suriyoung prepares to ride away"
      },
      "L14B01": {
        "bg_id": "L14B01",
        "loc_id": "L14",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "evidence_display",
        "surface_role": "interior_room",
        "semantic_key": "L14|main|day|evidence_display",
        "depends_on_fp": [
          "fp_security_office"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S20_Shot1",
          "S20_Shot3"
        ],
        "sub_location_label": "마트 총무과 보안실",
        "state_label_raw": "dark security office with CCTV monitor playback, one area of footage obscured by heavy shadow"
      },
      "L16B01": {
        "bg_id": "L16B01",
        "loc_id": "L16",
        "space_key": "main",
        "time_phase": "dusk",
        "state_class": "arrival",
        "surface_role": "site_surface",
        "semantic_key": "L16|main|dusk|arrival",
        "depends_on_fp": [
          "fp_foggy_port_rocks"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S26_Shot8",
          "S26_Shot12"
        ],
        "sub_location_label": "정박한 낡은 어선 주변 포구",
        "state_label_raw": "dusk fog harbor after the old fishing boat arrives and mooring begins"
      },
      "L16B02": {
        "bg_id": "L16B02",
        "loc_id": "L16",
        "space_key": "main",
        "time_phase": "dusk",
        "state_class": "quiet",
        "surface_role": "site_surface",
        "semantic_key": "L16|main|dusk|quiet",
        "depends_on_fp": [
          "fp_foggy_port_rocks"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S26_Shot2"
        ],
        "sub_location_label": "안개 낀 포구와 갯바위",
        "state_label_raw": "dusk after rain, empty fog-bound harbor rocks facing invisible sea"
      },
      "L17B01": {
        "bg_id": "L17B01",
        "loc_id": "L17",
        "space_key": "main",
        "time_phase": "dusk",
        "state_class": "busy",
        "surface_role": "exterior_plate",
        "semantic_key": "L17|main|dusk|busy",
        "depends_on_fp": [
          "fp_small_fishing_boat_deck"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S28_Shot5",
          "S28_Shot9"
        ],
        "sub_location_label": "바다 위 소형 어선 갑판",
        "state_label_raw": "dusk small fishing boat deck at sea, tense map and photo confrontation, sudden movement toward wheelhouse"
      },
      "L17B02": {
        "bg_id": "L17B02",
        "loc_id": "L17",
        "space_key": "main",
        "time_phase": "dusk",
        "state_class": "dream_or_vision_state",
        "surface_role": "site_surface",
        "semantic_key": "L17|main|dusk|dream_or_vision_state",
        "depends_on_fp": [],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S30_Shot3"
        ],
        "sub_location_label": "짙은 안개 속 바다와 어선 앞머리",
        "state_label_raw": "golden dusk sea with thick fog belt swallowing the boat bow in a surreal silhouette"
      },
      "L18B01": {
        "bg_id": "L18B01",
        "loc_id": "L18",
        "space_key": "main",
        "time_phase": "dusk",
        "state_class": "evidence_display",
        "surface_role": "interior_room",
        "semantic_key": "L18|main|dusk|evidence_display",
        "depends_on_fp": [
          "fp_boat_wheelhouse_interior"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S29_Shot4",
          "S29_Shot9"
        ],
        "sub_location_label": "소형 어선 조타실 내부",
        "state_label_raw": "dusk cramped wheelhouse interior with photo clue, many circles and a newly noticed red circle amid threatening confrontation"
      }
    },
    "shot_background_map": {
      "S17_Shot1": "L03B01",
      "S4_Shot1": "L03B02",
      "S10_Shot4": "L03B03",
      "S10_Shot6": "L03B03",
      "S5_Shot3": "L04B01",
      "S5_Shot11": "L04B01",
      "S5_Shot12": "L04B01",
      "S25_Shot4": "L04B02",
      "S25_Shot8": "L04B03",
      "S27_Shot1": "L04B03",
      "S27_Shot5": "L04B03",
      "S18_Shot10": "L04B04",
      "S18_Shot14": "L04B04",
      "S12_Shot8": "L04B05",
      "S12_Shot13": "L04B05",
      "S12_Shot16": "L04B05",
      "S14_Shot4": "L04B06",
      "S14_Shot5": "L04B06",
      "S14_Shot12": "L04B06",
      "S8_Shot3": "L08B01",
      "S8_Shot5": "L08B01",
      "S19_Shot7": "L08B02",
      "S19_Shot8": "L08B02",
      "S11_Shot2": "L10B01",
      "S13_Shot2": "L10B01",
      "S13_Shot5": "L10B01",
      "S11_Shot4": "L10B02",
      "S21_Shot5": "L12B01",
      "S21_Shot8": "L12B01",
      "S21_Shot10": "L12B01",
      "S16_Shot3": "L12B02",
      "S16_Shot4": "L12B02",
      "S22_Shot1": "L13B01",
      "S20_Shot1": "L14B01",
      "S20_Shot3": "L14B01",
      "S26_Shot8": "L16B01",
      "S26_Shot12": "L16B01",
      "S26_Shot2": "L16B02",
      "S28_Shot5": "L17B01",
      "S28_Shot9": "L17B01",
      "S30_Shot3": "L17B02",
      "S29_Shot4": "L18B01",
      "S29_Shot9": "L18B01"
    },
    "bg_catalog_hash": "4d63094cd4bf1bb5",
    "shot_binding_hash": "c0627d8357285f2f",
    "diagnostics": {
      "w21b_surface_role_scope_filter": {
        "policy": "surface_role-aware background-first filter; interior_room remains floor-plan-bound; exterior/transition/site may be fp-less; transitive cascade depends_on_bg exact raw key.",
        "kept_floor_plans_count": 11,
        "kept_backgrounds_count": 22,
        "dropped_floor_plans_count": 1,
        "dropped_backgrounds_count": 0,
        "dropped_groups_count": 0,
        "dropped_floor_plans": [
          {
            "group_id": "bg_large_mart",
            "fp_id": "fp_mart_exterior_entrance",
            "loc_id": "L07",
            "is_indoor": false,
            "shot_count": 0,
            "referenced_by_kept_background": false,
            "reasons": [
              "no_kept_background_ref"
            ]
          }
        ],
        "dropped_backgrounds": [],
        "dropped_groups": []
      },
      "location_profile_pre_filter": {
        "bg_rooftop_villa_unit": {
          "raw_member_count": 4,
          "kept_member_count": 3,
          "filtered_members": [
            {
              "loc_id": "L09",
              "label": "옥탑방으로 이어지는 좁은 골목길",
              "shot_count": 0,
              "reason": "no_location_profile"
            }
          ]
        }
      }
    }
  },
  "step_id": "background_master_plan",
  "run_id": "b249da9c-ac65-4dea-a624-5894a30ad31b",
  "resolved_model": "gpt",
  "updated_at": "2026-06-19T02:54:59.017588+00:00",
  "project_config_snapshot": {}
}