{
  "status": "completed",
  "applicable_count": 5,
  "completed_count": 5,
  "failed_count": 0,
  "schema_version": 5,
  "config_hash": "40fe7dfee524cec3",
  "data": {
    "plans": {
      "bg_mountain_forest": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_urban_alley": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_rooftop_residence": {
        "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": "normal",
              "state_label_raw": "clear daytime aerial establishing view of the aging villa rooftop and rooftop dwelling",
              "sub_location_label": "옥상 및 옥탑방 외부",
              "surface_role": "site_surface",
              "time_phase": "day",
              "bg_id": "L03B02"
            },
            {
              "applies_to_shots": [
                "S10_Shot3",
                "S10_Shot4"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_l03_rooftop_exterior"
              ],
              "loc_id": "L03",
              "space_key_hint": "main",
              "state_class": "intrusion",
              "state_label_raw": "nighttime rooftop intrusion with forced iron door and violent silhouettes behind the window",
              "sub_location_label": "옥탑방 철문과 외부 창문",
              "surface_role": "exterior_plate",
              "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 with a lit window, concrete parapet, and still deserted atmosphere",
              "sub_location_label": "옥탑방 외부 담벼락",
              "surface_role": "exterior_plate",
              "time_phase": "dawn",
              "bg_id": "L03B01"
            },
            {
              "applies_to_shots": [
                "S5_Shot1",
                "S5_Shot7",
                "S5_Shot8"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_l04_rooftop_home"
              ],
              "loc_id": "L04",
              "space_key_hint": "main",
              "state_class": "normal",
              "state_label_raw": "modest daytime rooftop home with thin sunlight, television, dining area, and domestic routine",
              "sub_location_label": "옥탑방 내부 주거 공간",
              "surface_role": "interior_room",
              "time_phase": "day",
              "bg_id": "L04B02"
            },
            {
              "applies_to_shots": [
                "S12_Shot6",
                "S12_Shot9"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_l04_rooftop_home"
              ],
              "loc_id": "L04",
              "space_key_hint": "main",
              "state_class": "blood_scene",
              "state_label_raw": "dim nighttime bedroom crime scene with pooled blood, bloody tracks, mutilated body, and crumpled photo",
              "sub_location_label": "수리영 방과 커튼 주변",
              "surface_role": "interior_room",
              "time_phase": "night",
              "bg_id": "L04B06"
            },
            {
              "applies_to_shots": [
                "S14_Shot2",
                "S14_Shot3"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_l04_rooftop_home"
              ],
              "loc_id": "L04",
              "space_key_hint": "main",
              "state_class": "clean_after",
              "state_label_raw": "nighttime room rendered unnaturally spotless after all blood, body, marks, and disturbed objects vanish",
              "sub_location_label": "깨끗하게 복원된 수리영 방",
              "surface_role": "interior_room",
              "time_phase": "night",
              "bg_id": "L04B07"
            },
            {
              "applies_to_shots": [
                "S18_Shot1"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_l04_rooftop_home"
              ],
              "loc_id": "L04",
              "space_key_hint": "main",
              "state_class": "quiet",
              "state_label_raw": "quiet daylight home after a sleepless night, empty and still while Suriyoung waits alone",
              "sub_location_label": "안방 및 조용한 집안",
              "surface_role": "interior_room",
              "time_phase": "day",
              "bg_id": "L04B03"
            },
            {
              "applies_to_shots": [
                "S18_Shot8",
                "S18_Shot11"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_l04_rooftop_home"
              ],
              "loc_id": "L04",
              "space_key_hint": "main",
              "state_class": "dream_or_vision_state",
              "state_label_raw": "daytime supernatural visions featuring a transient red circle and a melting face inside a family photo",
              "sub_location_label": "욕실과 거실의 환영 공간",
              "surface_role": "interior_room",
              "time_phase": "day",
              "bg_id": "L04B01"
            },
            {
              "applies_to_shots": [
                "S25_Shot4"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_l04_rooftop_home"
              ],
              "loc_id": "L04",
              "space_key_hint": "main",
              "state_class": "evidence_display",
              "state_label_raw": "ransacked dusk bedroom wall presenting a bloody old photograph pinned at the center of a red circle",
              "sub_location_label": "수리영 방 증거 표식 벽면",
              "surface_role": "interior_room",
              "time_phase": "dusk",
              "bg_id": "L04B04"
            },
            {
              "applies_to_shots": [
                "S25_Shot8",
                "S27_Shot1"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_l04_rooftop_home"
              ],
              "loc_id": "L04",
              "space_key_hint": "main",
              "state_class": "ransacked",
              "state_label_raw": "desolate dusk interior searched and torn apart, with footprints, open window, toppled chairs, and loose door",
              "sub_location_label": "난장판이 된 옥탑방 내부",
              "surface_role": "interior_room",
              "time_phase": "dusk",
              "bg_id": "L04B05"
            },
            {
              "applies_to_shots": [
                "S11_Shot3"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_l09_rooftop_stairs"
              ],
              "loc_id": "L09",
              "space_key_hint": "stairs",
              "state_class": "intrusion",
              "state_label_raw": "dark rooftop stair landing terminating at a suspicious half-open iron entrance door",
              "sub_location_label": "옥탑방 연결 계단 상부",
              "surface_role": "transition_zone",
              "time_phase": "night",
              "bg_id": "L09B02"
            },
            {
              "applies_to_shots": [
                "S13_Shot3",
                "S13_Shot4"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_l09_yard_parking"
              ],
              "loc_id": "L09",
              "space_key_hint": "yard",
              "state_class": "arrival",
              "state_label_raw": "nighttime villa yard and parking area during police arrival, sirens, shock, and urgent rooftop response",
              "sub_location_label": "빌라 외곽 마당 및 주차 구역",
              "surface_role": "site_surface",
              "time_phase": "night",
              "bg_id": "L09B01"
            }
          ],
          "floor_plans": [
            {
              "depends_on_fp": [],
              "fp_id": "fp_l03_rooftop_exterior",
              "loc_id": "L03",
              "scope": "Rooftop deck, parapet, water tank, clothesline, cabin facade, window, and iron entrance",
              "space_key_hint": "main",
              "sub_location": "rooftop_and_cabin_exterior"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_l04_rooftop_home",
              "loc_id": "L04",
              "scope": "Unified compact home including entry, living-dining area, bedrooms, kitchenette, and bathroom",
              "space_key_hint": "main",
              "sub_location": "rooftop_home_interior"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_l09_rooftop_stairs",
              "loc_id": "L09",
              "scope": "Exterior stair route and upper landing connecting the villa yard to the rooftop entrance",
              "space_key_hint": "stairs",
              "sub_location": "rooftop_access_stairs"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_l09_yard_parking",
              "loc_id": "L09",
              "scope": "Villa yard, parking bays, bicycle area, vehicle arrival points, and stair approach",
              "space_key_hint": "yard",
              "sub_location": "yard_and_parking"
            }
          ],
          "group_id": "bg_rooftop_residence",
          "rationale_summary": "L03·L04는 single-space로 각 1개 도면을 유지하고, L09는 실제로 분리된 마당과 계단만 분할했다. 침입, 혈흔, 완전 복원, 환영, 수색 흔적과 증거 표식을 별도 상태로 구분했다.",
          "gen_order": [
            "fp_l03_rooftop_exterior",
            "fp_l04_rooftop_home",
            "fp_l09_rooftop_stairs",
            "fp_l09_yard_parking",
            "L03B02",
            "L03B03",
            "L03B01",
            "L04B02",
            "L04B06",
            "L04B07",
            "L04B03",
            "L04B01",
            "L04B04",
            "L04B05",
            "L09B02",
            "L09B01"
          ]
        }
      },
      "bg_coastal_road": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_animal_shelter": {
        "status": "ok",
        "plan": {
          "backgrounds": [
            {
              "applies_to_shots": [
                "S7_Shot1",
                "S7_Shot3",
                "S7_Shot5"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_l06_shelter_main"
              ],
              "loc_id": "L06",
              "space_key_hint": "main",
              "state_class": "busy",
              "state_label_raw": "daytime working shelter with occupied wire kennels and ongoing vaccination and grooming duties",
              "sub_location_label": "유기견 보호원 실내 견사 및 작업 공간",
              "surface_role": "interior_room",
              "time_phase": "day",
              "bg_id": "L06B01"
            }
          ],
          "floor_plans": [
            {
              "depends_on_fp": [],
              "fp_id": "fp_l06_shelter_main",
              "loc_id": "L06",
              "scope": "Single shelter interior covering wire kennels and shared animal-care work areas",
              "space_key_hint": "main",
              "sub_location": "shelter_kennel_and_care_area"
            }
          ],
          "group_id": "bg_animal_shelter",
          "rationale_summary": "단일 공간 보호원 평면으로 견사와 관리 작업 구역을 통합하고, 세 샷 모두 주간 업무가 진행되는 busy 상태로 묶었다.",
          "gen_order": [
            "fp_l06_shelter_main",
            "L06B01"
          ]
        }
      },
      "bg_retail_store": {
        "status": "ok",
        "plan": {
          "backgrounds": [
            {
              "applies_to_shots": [
                "S8_Shot2"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_l08_store_interior"
              ],
              "loc_id": "L08",
              "space_key_hint": "main",
              "state_class": "busy",
              "state_label_raw": "dusk retail floor active with stocked aisles and employees arranging merchandise",
              "sub_location_label": "대형 마트 상품 진열대 사이",
              "surface_role": "interior_room",
              "time_phase": "dusk",
              "bg_id": "L08B01"
            },
            {
              "applies_to_shots": [
                "S8_Shot4"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [],
              "loc_id": "L08",
              "space_key_hint": "main",
              "state_class": "busy_exit",
              "state_label_raw": "dusk street-side store exit amid neon-lit commercial traffic",
              "sub_location_label": "마트 출구 앞 번화가 길가",
              "surface_role": "transition_zone",
              "time_phase": "dusk",
              "bg_id": "L08B02"
            },
            {
              "applies_to_shots": [
                "S19_Shot1"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_l08_store_interior"
              ],
              "loc_id": "L08",
              "space_key_hint": "main",
              "state_class": "quiet",
              "state_label_raw": "early morning retail floor with sparse customers and subdued activity",
              "sub_location_label": "이른 아침 대형 마트 매장",
              "surface_role": "interior_room",
              "time_phase": "morning",
              "bg_id": "L08B04"
            },
            {
              "applies_to_shots": [
                "S19_Shot4"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [],
              "loc_id": "L08",
              "space_key_hint": "main",
              "state_class": "normal",
              "state_label_raw": "morning outside the store near the facade and CCTV coverage area",
              "sub_location_label": "마트 외부 CCTV 확인 지점",
              "surface_role": "exterior_plate",
              "time_phase": "morning",
              "bg_id": "L08B03"
            },
            {
              "applies_to_shots": [
                "S20_Shot3"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_l12_admin_office"
              ],
              "loc_id": "L12",
              "space_key_hint": "main",
              "state_class": "evidence_display",
              "state_label_raw": "administrative security room focused on dark, indistinct CCTV footage displayed on monitors",
              "sub_location_label": "마트 총무과 CCTV 확인 공간",
              "surface_role": "interior_room",
              "time_phase": "day",
              "bg_id": "L12B01"
            }
          ],
          "floor_plans": [
            {
              "depends_on_fp": [],
              "fp_id": "fp_l08_store_interior",
              "loc_id": "L08",
              "scope": "Single store layout covering sales aisles, displays, circulation, and main entrance threshold",
              "space_key_hint": "main",
              "sub_location": "store_sales_floor"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_l12_admin_office",
              "loc_id": "L12",
              "scope": "Administrative security office with CCTV workstations, monitors, and observer positions",
              "space_key_hint": "main",
              "sub_location": "admin_security_room"
            }
          ],
          "group_id": "bg_retail_store",
          "rationale_summary": "Single-space profiles require one plan per location. Variants separate busy dusk sales, exit transition, quiet morning interior, exterior CCTV area, and evidence viewing.",
          "gen_order": [
            "fp_l08_store_interior",
            "fp_l12_admin_office",
            "L08B01",
            "L08B02",
            "L08B04",
            "L08B03",
            "L12B01"
          ]
        }
      },
      "bg_police_station": {
        "status": "ok",
        "plan": {
          "backgrounds": [
            {
              "applies_to_shots": [
                "S16_Shot1"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_police_station_office"
              ],
              "loc_id": "L11",
              "space_key_hint": "main",
              "state_class": "quiet",
              "state_label_raw": "night duty office with one detective present and an ominously quiet atmosphere",
              "sub_location_label": "경찰서 사무실 당직 공간",
              "surface_role": "interior_room",
              "time_phase": "night",
              "bg_id": "L11B02"
            },
            {
              "applies_to_shots": [
                "S21_Shot5",
                "S21_Shot6",
                "S21_Shot10"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_police_station_office"
              ],
              "loc_id": "L11",
              "space_key_hint": "main",
              "state_class": "evidence_display",
              "state_label_raw": "daytime office briefly emptied, with murder photographs and phone-location evidence exposed on desks and monitor",
              "sub_location_label": "혜수와 김형사의 책상 주변",
              "surface_role": "interior_room",
              "time_phase": "day",
              "bg_id": "L11B01"
            }
          ],
          "floor_plans": [
            {
              "depends_on_fp": [],
              "fp_id": "fp_police_station_office",
              "loc_id": "L11",
              "scope": "Single police office plan covering desks, monitors, work area, and entry circulation.",
              "space_key_hint": "main",
              "sub_location": "police_station_office"
            }
          ],
          "group_id": "bg_police_station",
          "rationale_summary": "단일 공간 원칙에 따라 사무실 평면 1개를 사용하고, 야간 당직의 정적 상태와 주간에 사진·위치정보가 노출된 증거 제시 상태를 분리했다.",
          "gen_order": [
            "fp_police_station_office",
            "L11B02",
            "L11B01"
          ]
        }
      },
      "bg_computer_cafe": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_foggy_harbor": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_small_fishing_boat": {
        "status": "ok",
        "plan": {
          "backgrounds": [
            {
              "applies_to_shots": [
                "S28_Shot3",
                "S28_Shot4"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_l16_deck"
              ],
              "loc_id": "L16",
              "space_key_hint": "main",
              "state_class": "evidence_display",
              "state_label_raw": "dusk deck confrontation centered on the old photograph marked Geumwol",
              "sub_location_label": "소형 어선 갑판",
              "surface_role": "exterior_plate",
              "time_phase": "dusk",
              "bg_id": "L16B01"
            },
            {
              "applies_to_shots": [
                "S30_Shot1"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [],
              "loc_id": "L16",
              "space_key_hint": "main",
              "state_class": "normal",
              "state_label_raw": "small fishing boat advancing into a vast fog wall under golden sunset light",
              "sub_location_label": "바다에서 바라본 어선 갑판과 선체",
              "surface_role": "site_surface",
              "time_phase": "dusk",
              "bg_id": "L16B02"
            },
            {
              "applies_to_shots": [
                "S29_Shot4"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_l17_wheelhouse"
              ],
              "loc_id": "L17",
              "space_key_hint": "main",
              "state_class": "evidence_display",
              "state_label_raw": "dusk wheelhouse with the old photograph presented as critical evidence",
              "sub_location_label": "소형 어선 조타실 내부",
              "surface_role": "interior_room",
              "time_phase": "dusk",
              "bg_id": "L17B02"
            },
            {
              "applies_to_shots": [
                "S29_Shot5"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_l17_wheelhouse"
              ],
              "loc_id": "L17",
              "space_key_hint": "main",
              "state_class": "normal",
              "state_label_raw": "dusk wheelhouse during Inwoo's pale, stunned reaction to the revealed name",
              "sub_location_label": "소형 어선 조타실 내부",
              "surface_role": "interior_room",
              "time_phase": "dusk",
              "bg_id": "L17B03"
            },
            {
              "applies_to_shots": [
                "S29_Shot8"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_l17_wheelhouse"
              ],
              "loc_id": "L17",
              "space_key_hint": "main",
              "state_class": "dream_or_vision_state",
              "state_label_raw": "ominous dusk wheelhouse as Suriyoung loses consciousness and collapses",
              "sub_location_label": "소형 어선 조타실 내부",
              "surface_role": "interior_room",
              "time_phase": "dusk",
              "bg_id": "L17B01"
            }
          ],
          "floor_plans": [
            {
              "depends_on_fp": [],
              "fp_id": "fp_l16_deck",
              "loc_id": "L16",
              "scope": "Complete open deck layout, wheelhouse access, rails, bow and working zones",
              "space_key_hint": "main",
              "sub_location": "fishing_boat_deck"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_l17_wheelhouse",
              "loc_id": "L17",
              "scope": "Enclosed wheelhouse with helm, controls, windows, entry and standing area",
              "space_key_hint": "main",
              "sub_location": "fishing_boat_wheelhouse"
            }
          ],
          "group_id": "bg_small_fishing_boat",
          "rationale_summary": "갑판과 조타실은 각 단일 plan으로 유지하고, 사진 증거·실신 상태·안개 진입 establishing을 별도 dusk variant로 구분했다.",
          "gen_order": [
            "fp_l16_deck",
            "fp_l17_wheelhouse",
            "L16B01",
            "L16B02",
            "L17B02",
            "L17B03",
            "L17B01"
          ]
        }
      },
      "bg_open_sea": {
        "status": "prev_shot_only",
        "plan": null
      }
    },
    "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 with a lit window, concrete parapet, and still deserted atmosphere"
      },
      "L03B02": {
        "bg_id": "L03B02",
        "loc_id": "L03",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "normal",
        "surface_role": "site_surface",
        "semantic_key": "L03|main|day|normal",
        "depends_on_fp": [
          "fp_l03_rooftop_exterior"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S4_Shot1"
        ],
        "sub_location_label": "옥상 및 옥탑방 외부",
        "state_label_raw": "clear daytime aerial establishing view of the aging villa rooftop and rooftop dwelling"
      },
      "L03B03": {
        "bg_id": "L03B03",
        "loc_id": "L03",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "intrusion",
        "surface_role": "exterior_plate",
        "semantic_key": "L03|main|night|intrusion",
        "depends_on_fp": [
          "fp_l03_rooftop_exterior"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S10_Shot3",
          "S10_Shot4"
        ],
        "sub_location_label": "옥탑방 철문과 외부 창문",
        "state_label_raw": "nighttime rooftop intrusion with forced iron door and violent silhouettes behind the window"
      },
      "L04B01": {
        "bg_id": "L04B01",
        "loc_id": "L04",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "dream_or_vision_state",
        "surface_role": "interior_room",
        "semantic_key": "L04|main|day|dream_or_vision_state",
        "depends_on_fp": [
          "fp_l04_rooftop_home"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S18_Shot8",
          "S18_Shot11"
        ],
        "sub_location_label": "욕실과 거실의 환영 공간",
        "state_label_raw": "daytime supernatural visions featuring a transient red circle and a melting face inside a family photo"
      },
      "L04B02": {
        "bg_id": "L04B02",
        "loc_id": "L04",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "normal",
        "surface_role": "interior_room",
        "semantic_key": "L04|main|day|normal",
        "depends_on_fp": [
          "fp_l04_rooftop_home"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S5_Shot1",
          "S5_Shot7",
          "S5_Shot8"
        ],
        "sub_location_label": "옥탑방 내부 주거 공간",
        "state_label_raw": "modest daytime rooftop home with thin sunlight, television, dining area, and domestic routine"
      },
      "L04B03": {
        "bg_id": "L04B03",
        "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_rooftop_home"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S18_Shot1"
        ],
        "sub_location_label": "안방 및 조용한 집안",
        "state_label_raw": "quiet daylight home after a sleepless night, empty and still while Suriyoung waits alone"
      },
      "L04B04": {
        "bg_id": "L04B04",
        "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_rooftop_home"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S25_Shot4"
        ],
        "sub_location_label": "수리영 방 증거 표식 벽면",
        "state_label_raw": "ransacked dusk bedroom wall presenting a bloody old photograph pinned at the center of a red circle"
      },
      "L04B05": {
        "bg_id": "L04B05",
        "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_rooftop_home"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S25_Shot8",
          "S27_Shot1"
        ],
        "sub_location_label": "난장판이 된 옥탑방 내부",
        "state_label_raw": "desolate dusk interior searched and torn apart, with footprints, open window, toppled chairs, and loose door"
      },
      "L04B06": {
        "bg_id": "L04B06",
        "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_rooftop_home"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S12_Shot6",
          "S12_Shot9"
        ],
        "sub_location_label": "수리영 방과 커튼 주변",
        "state_label_raw": "dim nighttime bedroom crime scene with pooled blood, bloody tracks, mutilated body, and crumpled photo"
      },
      "L04B07": {
        "bg_id": "L04B07",
        "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_rooftop_home"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S14_Shot2",
          "S14_Shot3"
        ],
        "sub_location_label": "깨끗하게 복원된 수리영 방",
        "state_label_raw": "nighttime room rendered unnaturally spotless after all blood, body, marks, and disturbed objects vanish"
      },
      "L06B01": {
        "bg_id": "L06B01",
        "loc_id": "L06",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "busy",
        "surface_role": "interior_room",
        "semantic_key": "L06|main|day|busy",
        "depends_on_fp": [
          "fp_l06_shelter_main"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S7_Shot1",
          "S7_Shot3",
          "S7_Shot5"
        ],
        "sub_location_label": "유기견 보호원 실내 견사 및 작업 공간",
        "state_label_raw": "daytime working shelter with occupied wire kennels and ongoing vaccination and grooming duties"
      },
      "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_l08_store_interior"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S8_Shot2"
        ],
        "sub_location_label": "대형 마트 상품 진열대 사이",
        "state_label_raw": "dusk retail floor active with stocked aisles and employees arranging merchandise"
      },
      "L08B02": {
        "bg_id": "L08B02",
        "loc_id": "L08",
        "space_key": "main",
        "time_phase": "dusk",
        "state_class": "busy_exit",
        "surface_role": "transition_zone",
        "semantic_key": "L08|main|dusk|busy_exit",
        "depends_on_fp": [],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S8_Shot4"
        ],
        "sub_location_label": "마트 출구 앞 번화가 길가",
        "state_label_raw": "dusk street-side store exit amid neon-lit commercial traffic"
      },
      "L08B03": {
        "bg_id": "L08B03",
        "loc_id": "L08",
        "space_key": "main",
        "time_phase": "morning",
        "state_class": "normal",
        "surface_role": "exterior_plate",
        "semantic_key": "L08|main|morning|normal",
        "depends_on_fp": [],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S19_Shot4"
        ],
        "sub_location_label": "마트 외부 CCTV 확인 지점",
        "state_label_raw": "morning outside the store near the facade and CCTV coverage area"
      },
      "L08B04": {
        "bg_id": "L08B04",
        "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_l08_store_interior"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S19_Shot1"
        ],
        "sub_location_label": "이른 아침 대형 마트 매장",
        "state_label_raw": "early morning retail floor with sparse customers and subdued activity"
      },
      "L09B01": {
        "bg_id": "L09B01",
        "loc_id": "L09",
        "space_key": "yard",
        "time_phase": "night",
        "state_class": "arrival",
        "surface_role": "site_surface",
        "semantic_key": "L09|yard|night|arrival",
        "depends_on_fp": [
          "fp_l09_yard_parking"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S13_Shot3",
          "S13_Shot4"
        ],
        "sub_location_label": "빌라 외곽 마당 및 주차 구역",
        "state_label_raw": "nighttime villa yard and parking area during police arrival, sirens, shock, and urgent rooftop response"
      },
      "L09B02": {
        "bg_id": "L09B02",
        "loc_id": "L09",
        "space_key": "stairs",
        "time_phase": "night",
        "state_class": "intrusion",
        "surface_role": "transition_zone",
        "semantic_key": "L09|stairs|night|intrusion",
        "depends_on_fp": [
          "fp_l09_rooftop_stairs"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S11_Shot3"
        ],
        "sub_location_label": "옥탑방 연결 계단 상부",
        "state_label_raw": "dark rooftop stair landing terminating at a suspicious half-open iron entrance door"
      },
      "L11B01": {
        "bg_id": "L11B01",
        "loc_id": "L11",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "evidence_display",
        "surface_role": "interior_room",
        "semantic_key": "L11|main|day|evidence_display",
        "depends_on_fp": [
          "fp_police_station_office"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S21_Shot5",
          "S21_Shot6",
          "S21_Shot10"
        ],
        "sub_location_label": "혜수와 김형사의 책상 주변",
        "state_label_raw": "daytime office briefly emptied, with murder photographs and phone-location evidence exposed on desks and monitor"
      },
      "L11B02": {
        "bg_id": "L11B02",
        "loc_id": "L11",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "quiet",
        "surface_role": "interior_room",
        "semantic_key": "L11|main|night|quiet",
        "depends_on_fp": [
          "fp_police_station_office"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S16_Shot1"
        ],
        "sub_location_label": "경찰서 사무실 당직 공간",
        "state_label_raw": "night duty office with one detective present and an ominously quiet atmosphere"
      },
      "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_l12_admin_office"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S20_Shot3"
        ],
        "sub_location_label": "마트 총무과 CCTV 확인 공간",
        "state_label_raw": "administrative security room focused on dark, indistinct CCTV footage displayed on monitors"
      },
      "L16B01": {
        "bg_id": "L16B01",
        "loc_id": "L16",
        "space_key": "main",
        "time_phase": "dusk",
        "state_class": "evidence_display",
        "surface_role": "exterior_plate",
        "semantic_key": "L16|main|dusk|evidence_display",
        "depends_on_fp": [
          "fp_l16_deck"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S28_Shot3",
          "S28_Shot4"
        ],
        "sub_location_label": "소형 어선 갑판",
        "state_label_raw": "dusk deck confrontation centered on the old photograph marked Geumwol"
      },
      "L16B02": {
        "bg_id": "L16B02",
        "loc_id": "L16",
        "space_key": "main",
        "time_phase": "dusk",
        "state_class": "normal",
        "surface_role": "site_surface",
        "semantic_key": "L16|main|dusk|normal",
        "depends_on_fp": [],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S30_Shot1"
        ],
        "sub_location_label": "바다에서 바라본 어선 갑판과 선체",
        "state_label_raw": "small fishing boat advancing into a vast fog wall under golden sunset light"
      },
      "L17B01": {
        "bg_id": "L17B01",
        "loc_id": "L17",
        "space_key": "main",
        "time_phase": "dusk",
        "state_class": "dream_or_vision_state",
        "surface_role": "interior_room",
        "semantic_key": "L17|main|dusk|dream_or_vision_state",
        "depends_on_fp": [
          "fp_l17_wheelhouse"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S29_Shot8"
        ],
        "sub_location_label": "소형 어선 조타실 내부",
        "state_label_raw": "ominous dusk wheelhouse as Suriyoung loses consciousness and collapses"
      },
      "L17B02": {
        "bg_id": "L17B02",
        "loc_id": "L17",
        "space_key": "main",
        "time_phase": "dusk",
        "state_class": "evidence_display",
        "surface_role": "interior_room",
        "semantic_key": "L17|main|dusk|evidence_display",
        "depends_on_fp": [
          "fp_l17_wheelhouse"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S29_Shot4"
        ],
        "sub_location_label": "소형 어선 조타실 내부",
        "state_label_raw": "dusk wheelhouse with the old photograph presented as critical evidence"
      },
      "L17B03": {
        "bg_id": "L17B03",
        "loc_id": "L17",
        "space_key": "main",
        "time_phase": "dusk",
        "state_class": "normal",
        "surface_role": "interior_room",
        "semantic_key": "L17|main|dusk|normal",
        "depends_on_fp": [
          "fp_l17_wheelhouse"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S29_Shot5"
        ],
        "sub_location_label": "소형 어선 조타실 내부",
        "state_label_raw": "dusk wheelhouse during Inwoo's pale, stunned reaction to the revealed name"
      }
    },
    "shot_background_map": {
      "S17_Shot1": "L03B01",
      "S4_Shot1": "L03B02",
      "S10_Shot3": "L03B03",
      "S10_Shot4": "L03B03",
      "S18_Shot8": "L04B01",
      "S18_Shot11": "L04B01",
      "S5_Shot1": "L04B02",
      "S5_Shot7": "L04B02",
      "S5_Shot8": "L04B02",
      "S18_Shot1": "L04B03",
      "S25_Shot4": "L04B04",
      "S25_Shot8": "L04B05",
      "S27_Shot1": "L04B05",
      "S12_Shot6": "L04B06",
      "S12_Shot9": "L04B06",
      "S14_Shot2": "L04B07",
      "S14_Shot3": "L04B07",
      "S7_Shot1": "L06B01",
      "S7_Shot3": "L06B01",
      "S7_Shot5": "L06B01",
      "S8_Shot2": "L08B01",
      "S8_Shot4": "L08B02",
      "S19_Shot4": "L08B03",
      "S19_Shot1": "L08B04",
      "S13_Shot3": "L09B01",
      "S13_Shot4": "L09B01",
      "S11_Shot3": "L09B02",
      "S21_Shot5": "L11B01",
      "S21_Shot6": "L11B01",
      "S21_Shot10": "L11B01",
      "S16_Shot1": "L11B02",
      "S20_Shot3": "L12B01",
      "S28_Shot3": "L16B01",
      "S28_Shot4": "L16B01",
      "S30_Shot1": "L16B02",
      "S29_Shot8": "L17B01",
      "S29_Shot4": "L17B02",
      "S29_Shot5": "L17B03"
    },
    "bg_catalog_hash": "43d9bfce0742896e",
    "shot_binding_hash": "8c4a1d0d9a4ecdab",
    "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": 10,
        "kept_backgrounds_count": 25,
        "dropped_floor_plans_count": 1,
        "dropped_backgrounds_count": 0,
        "dropped_groups_count": 0,
        "dropped_floor_plans": [
          {
            "group_id": "bg_retail_store",
            "fp_id": "fp_l07_retail_streetscape",
            "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_police_station": {
          "raw_member_count": 2,
          "kept_member_count": 1,
          "filtered_members": [
            {
              "loc_id": "L13",
              "label": "경찰서 외부",
              "shot_count": 0,
              "reason": "no_location_profile"
            }
          ]
        }
      }
    }
  },
  "step_id": "background_master_plan",
  "run_id": "8c6b329e-5a70-4737-bf8a-d654cddc6b19",
  "resolved_model": "gpt",
  "updated_at": "2026-07-15T13:24:48.866200+00:00",
  "project_config_snapshot": {}
}