{
  "status": "completed",
  "applicable_count": 18,
  "completed_count": 18,
  "failed_count": 0,
  "schema_version": 5,
  "config_hash": "5296df5ace886c6e",
  "data": {
    "plans": {
      "bg_seabed_debris": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_collection_vessel": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_scrap_dump_truck": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_upscale_house_approach": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_compact_car_cabin": {
        "status": "ok",
        "plan": {
          "group_id": "bg_compact_car_cabin",
          "rationale_summary": "L08은 차량 실내 단일 평면도로 유지한다. 실내 준비 장면과 조용한 주택가 외부를 구분하며, Shot11은 지정 loc_id를 유지하되 실제 묘사에 맞춰 외부 플레이트로 처리한다.",
          "floor_plans": [
            {
              "fp_id": "fp_car_cabin",
              "loc_id": "L08",
              "space_key_hint": "main",
              "sub_location": "car_cabin",
              "scope": "Front cabin with driver and passenger seats, steering wheel, dashboard, doors and windows.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L08",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "normal",
              "surface_role": "interior_room",
              "sub_location_label": "정차한 자동차 앞좌석",
              "state_label_raw": "낮의 정차 차량 실내. 운전석과 조수석 사이 구겨진 도면을 펼칠 공간을 확보하고, 차창 너머 길 건너 고급주택의 방향과 시선을 일관되게 유지한다.",
              "depends_on_fp": [
                "fp_car_cabin"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S4_Shot2",
                "S4_Shot5"
              ],
              "bg_id": "L08B01"
            },
            {
              "loc_id": "L08",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "quiet",
              "surface_role": "exterior_plate",
              "sub_location_label": "길 건너 고급주택 앞길",
              "state_label_raw": "낮의 조용한 고급주택 앞길. 차량에서 내린 현우의 통신 확인 근접 구도 뒤로 주택 외관과 도로변이 보이는 외부 배경이며, 차량 실내는 아니다.",
              "depends_on_fp": [],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S4_Shot11"
              ],
              "bg_id": "L08B02"
            }
          ],
          "gen_order": [
            "fp_car_cabin",
            "L08B01",
            "L08B02"
          ]
        }
      },
      "bg_abandoned_parts_warehouse": {
        "status": "ok",
        "plan": {
          "group_id": "bg_abandoned_parts_warehouse",
          "rationale_summary": "단일 창고 평면과 낮의 고요한 실내 배경을 공유한다. 반쯤 열린 문과 로봇 잔해 더미, B-200의 어두운 은신처 및 아기새를 감춘 상자의 위치를 일관되게 유지한다.",
          "floor_plans": [
            {
              "fp_id": "fp_abandoned_parts_warehouse",
              "loc_id": "L100",
              "space_key_hint": "main",
              "sub_location": "warehouse_interior",
              "scope": "Warehouse interior with half-open door, machinery, robot scrap corner and concealed bird box.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L100",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "quiet",
              "surface_role": "interior_room",
              "sub_location_label": "폐 기계부품 창고 내부의 로봇 잔해 옆 은신처",
              "state_label_raw": "낮빛이 반쯤 열린 문으로 들어오지만 B-200의 구석은 어둡게 유지되는 고요한 창고. 거대한 기계 부품과 고장 난 로봇 더미가 둘러싸며, 찰리와 나란히 앉는 자리 가까이에 아기새를 가린 상자가 있다. 마지막 숏에서는 상자를 치워 새들이 드러나며, 공간과 조명 상태는 유지된다.",
              "depends_on_fp": [
                "fp_abandoned_parts_warehouse"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S64_Shot7",
                "S64_Shot11",
                "S64_Shot17"
              ],
              "bg_id": "L100B01"
            }
          ],
          "gen_order": [
            "fp_abandoned_parts_warehouse",
            "L100B01"
          ]
        }
      },
      "bg_militia_transport_cabin": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_village_outskirts_airspace": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_collapsed_department_store": {
        "status": "ok",
        "plan": {
          "group_id": "bg_collapsed_department_store",
          "rationale_summary": "장소별 main 평면 1개로 외부 잔해, 상층 붕괴 구멍, 지하 식품 코너를 연결한다. 낮의 어두운 실내를 유지하고 바닥 붕괴와 밧줄 구조 도착을 구분한다. 지진 피해를 약탈로 해석하지 않는다.",
          "floor_plans": [
            {
              "fp_id": "fp_store_rubble_grounds",
              "loc_id": "L107",
              "space_key_hint": "main",
              "sub_location": "rubble_grounds",
              "scope": "Exterior rubble footprint, approach, pools, entry fissure and elevated observer ledge.",
              "depends_on_fp": []
            },
            {
              "fp_id": "fp_store_upper_floor",
              "loc_id": "L108",
              "space_key_hint": "main",
              "sub_location": "upper_floor_escalator_void",
              "scope": "Upper interior, directory, descending escalator, collapse void and rescue foothold.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L107",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "quiet",
              "surface_role": "site_surface",
              "sub_location_label": "백화점 외부 잔해와 진입 틈새",
              "state_label_raw": "낮, 반쯤 붕괴한 백화점 외부. 넓은 이끼, 고인 웅덩이, 무성한 나무와 꽃이 아름답지만 음산한 정적을 만든다. 높은 잔해의 관찰 지점에서 두 사람이 들어가는 틈새가 내려다보인다. 방사능 수치 0은 환경 정화의 발견이며 외부 공간의 물리적 변화는 없다.",
              "depends_on_fp": [
                "fp_store_rubble_grounds"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S65_Shot3",
                "S65_Shot12",
                "S65_Shot14"
              ],
              "bg_id": "L107B01"
            },
            {
              "loc_id": "L108",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "normal",
              "surface_role": "interior_room",
              "sub_location_label": "상층 에스컬레이터 인접 붕괴 바닥",
              "state_label_raw": "낮이지만 어두운 지진 폐허 내부의 구조 붕괴 상태. 바닥이 무너지며 거대한 구멍이 열리고 부서진 바닥 조각과 두 사람이 지하의 어둠으로 추락한다. 약탈 흔적이 아닌 지진 손상과 추가 바닥 붕괴이며, 구조 밧줄은 아직 없다.",
              "depends_on_fp": [
                "fp_store_upper_floor"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S66_Shot13"
              ],
              "bg_id": "L108B02"
            },
            {
              "loc_id": "L108",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "arrival",
              "surface_role": "interior_room",
              "sub_location_label": "상층 붕괴 구멍과 구조 지점",
              "state_label_raw": "낮의 어두운 상층 내부, 붕괴 후 남은 동일한 바닥 구멍에 구조자가 도착한 상태. 굵은 밧줄이 구멍을 통해 지하로 내려오며, 이후 구멍 앞의 남은 바닥에 한수가 서 있다. 구멍 가장자리와 주변 잔해 배치를 유지한다.",
              "depends_on_fp": [
                "fp_store_upper_floor"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S66_Shot38",
                "S66_Shot46"
              ],
              "bg_id": "L108B01"
            }
          ],
          "gen_order": [
            "fp_store_rubble_grounds",
            "fp_store_upper_floor",
            "L107B01",
            "L108B02",
            "L108B01"
          ]
        }
      },
      "bg_open_companion_truck": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_military_hospital": {
        "status": "ok",
        "plan": {
          "group_id": "bg_military_hospital",
          "rationale_summary": "각 location에 단일 평면도를 둔다. 샷의 L113 배정을 유지하고 문턱 너머 병상 시선을 연결한다. L114 병실은 장면 근거로 별도 계획하며, 밤의 정적인 치료 상태를 유지한다.",
          "floor_plans": [
            {
              "fp_id": "fp_hospital_corridor_threshold",
              "loc_id": "L113",
              "space_key_hint": "main",
              "sub_location": "corridor_ward_threshold",
              "scope": "Hospital corridor and ward doorway, including sightlines into the patient room.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L113",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "quiet",
              "surface_role": "transition_zone",
              "sub_location_label": "군 병원 복도·병실 문 앞과 문 너머 병상 시선",
              "state_label_raw": "밤의 조용한 병실 문 앞. 문 너머 박철진의 병상과 장관의 대면 시선을 연결하며, 전신 및 얼굴 클로즈업의 배경 연속성을 유지한다.",
              "depends_on_fp": [
                "fp_hospital_corridor_threshold"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S70_Shot8",
                "S70_Shot10",
                "S70_Shot14"
              ],
              "bg_id": "L113B01"
            }
          ],
          "gen_order": [
            "fp_hospital_corridor_threshold",
            "L113B01"
          ]
        }
      },
      "bg_dawn_highway": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_coastal_ridge_clearing": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_mainland_research_house": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_command_suv": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_coastal_pursuit_road": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_harbor_clinic": {
        "status": "ok",
        "plan": {
          "group_id": "bg_harbor_clinic",
          "rationale_summary": "치료 침대와 재회 공간은 한 진료실 평면으로 통합한다. 밤의 안정·재회와 응급 협의를 구분한다. 외부는 single_space 규칙에 따라 거리·보건소 앞 평면만 두며 미배정 배경은 만들지 않는다.",
          "floor_plans": [
            {
              "fp_id": "fp_clinic_treatment_room",
              "loc_id": "L125",
              "space_key_hint": "main",
              "sub_location": "treatment_room",
              "scope": "Treatment room with patient bed, bedside gathering space, central aisle and entrance.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L125",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "quiet",
              "surface_role": "interior_room",
              "sub_location_label": "보건소 진료실의 침대 곁과 중앙 통로",
              "state_label_raw": "밤, 응급치료 후 앰버가 잠든 조용한 진료실. 침대 곁 위로와 중앙 공간의 재회가 같은 배치 안에서 이어진다.",
              "depends_on_fp": [
                "fp_clinic_treatment_room"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S73_Shot6",
                "S73_Shot12"
              ],
              "bg_id": "L125B02"
            },
            {
              "loc_id": "L125",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "busy",
              "surface_role": "interior_room",
              "sub_location_label": "동일 진료실의 앰버 침대와 협의 공간",
              "state_label_raw": "밤, 동일한 침대와 통로 배치를 유지하며 고열의 앰버 곁에 의사와 일행이 모여 긴급히 치료·이송을 협의하는 상태. 병원 전체의 혼잡이나 시설 손상은 없다.",
              "depends_on_fp": [
                "fp_clinic_treatment_room"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S76_Shot1",
                "S76_Shot7",
                "S76_Shot11"
              ],
              "bg_id": "L125B01"
            }
          ],
          "gen_order": [
            "fp_clinic_treatment_room",
            "L125B02",
            "L125B01"
          ]
        }
      },
      "bg_harbor_restaurant": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_abandoned_airport": {
        "status": "ok",
        "plan": {
          "group_id": "bg_abandoned_airport",
          "rationale_summary": "입력 loc_id를 유지하고 위치별 main 평면을 하나씩 둔다. 실제 숏의 물리 공간에 따라 격납고 내부·진입부와 낮 활주로 외부를 구분하며, 방치·도착·가동·출발 후 상태를 분리한다.",
          "floor_plans": [
            {
              "fp_id": "fp_l128_hangar_entry",
              "loc_id": "L128",
              "space_key_hint": "main",
              "sub_location": "hangar_entry_and_storage",
              "scope": "Open hangar doorway, entry path and visible aircraft storage interior.",
              "depends_on_fp": []
            },
            {
              "fp_id": "fp_l129_hangar",
              "loc_id": "L129",
              "space_key_hint": "main",
              "sub_location": "hangar_aircraft_bay",
              "scope": "Hangar aircraft bays, circulation aisles, overhead lighting and main door.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L128",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "quiet",
              "surface_role": "interior_room",
              "sub_location_label": "열린 대문 너머 격납고 내부 전경",
              "state_label_raw": "밤, 열린 격납고 문을 통해 드러나는 거대한 내부와 먼지 쌓인 다수의 폐경비행기. 정지된 방치 상태.",
              "depends_on_fp": [
                "fp_l128_hangar_entry"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S75_Shot4"
              ],
              "bg_id": "L128B02"
            },
            {
              "loc_id": "L128",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "arrival",
              "surface_role": "transition_zone",
              "sub_location_label": "격납고 입구의 안쪽 진입 동선",
              "state_label_raw": "밤, 신부가 급히 진입하는 열린 격납고 문턱과 내부 방향의 통로. 뒤편 폐경비행기 배치는 내부 전경과 동일.",
              "depends_on_fp": [
                "fp_l128_hangar_entry"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S75_Shot10"
              ],
              "bg_id": "L128B01"
            },
            {
              "loc_id": "L129",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "busy",
              "surface_role": "interior_room",
              "sub_location_label": "격납고 경비행기 사이",
              "state_label_raw": "밤, 수리가 성공해 여러 경비행기의 엔진이 가동되고 검은 매연이 남은 격납고. 전력 요동과 전구 파손의 흔적을 유지하는 환희의 순간.",
              "depends_on_fp": [
                "fp_l129_hangar"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S77_Shot22"
              ],
              "bg_id": "L129B03"
            },
            {
              "loc_id": "L129",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "busy_exit",
              "surface_role": "exterior_plate",
              "sub_location_label": "헬기 탑승 지점 옆 지상",
              "state_label_raw": "낮, 헬기 출발을 앞둔 외부 계류장. 현우가 내려 찰리 곁에 서는 공간으로, 낡고 갈라진 포장면과 헬기 주변의 작별 동선을 확보.",
              "depends_on_fp": [],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S77_Shot39"
              ],
              "bg_id": "L129B01"
            },
            {
              "loc_id": "L129",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "quiet",
              "surface_role": "exterior_plate",
              "sub_location_label": "활주로 끝을 향하는 외부 보행 구간",
              "state_label_raw": "낮, 헬기가 떠난 뒤 조용해진 폐공항 활주로. 갈라진 포장과 이끼, 멀어지는 활주로 원근을 유지하며 두 사람의 뒷모습을 위한 열린 보행 공간.",
              "depends_on_fp": [],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S77_Shot56"
              ],
              "bg_id": "L129B02"
            }
          ],
          "gen_order": [
            "fp_l128_hangar_entry",
            "fp_l129_hangar",
            "L128B02",
            "L128B01",
            "L129B03",
            "L129B01",
            "L129B02"
          ]
        }
      },
      "bg_refugee_scrap_dump": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_escape_helicopter": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_fishing_vessel": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_stormy_sea_surface": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_sinking_site_underwater": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_island_research_complex": {
        "status": "ok",
        "plan": {
          "group_id": "bg_island_research_complex",
          "rationale_summary": "각 location에 main 평면도 1개를 유지한다. 병실과 자동문 연결부는 물리적 역할을 구분하고, 실험실은 오전 연구 상태와 적색 침입 경보를 분리한다. 무배정 공간은 평면도만 계획한다.",
          "floor_plans": [
            {
              "fp_id": "fp_shelter_room",
              "loc_id": "L139",
              "space_key_hint": "main",
              "sub_location": "shelter_room_and_access",
              "scope": "Ward/lodging, sea window, changing and shower areas, call station, corridor and automatic door.",
              "depends_on_fp": []
            },
            {
              "fp_id": "fp_main_laboratory",
              "loc_id": "L142",
              "space_key_hint": "main",
              "sub_location": "glass_walled_laboratory",
              "scope": "Glass-walled lab, stainless restraint bed, researcher stations, storage and entry clearance.",
              "depends_on_fp": []
            },
            {
              "fp_id": "fp_director_room",
              "loc_id": "L144",
              "space_key_hint": "main",
              "sub_location": "director_room",
              "scope": "Director's office, desk with family photograph, doorway and confrontation sightlines.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L139",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "quiet",
              "surface_role": "interior_room",
              "sub_location_label": "임시보호소 병실·숙소와 화상통화 자리",
              "state_label_raw": "고요한 낮의 보호실. 흰 침대와 강한 형광등, 창밖 에메랄드빛 제주 바다. 통화 모니터의 연결·종료는 같은 공간의 화면 상태로 처리한다.",
              "depends_on_fp": [
                "fp_shelter_room"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S81_Shot4",
                "S81_Shot6",
                "S83_Shot8",
                "S83_Shot9",
                "S83_Shot10"
              ],
              "bg_id": "L139B02"
            },
            {
              "loc_id": "L139",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "arrival",
              "surface_role": "transition_zone",
              "sub_location_label": "보호소에서 연구 구역으로 이어지는 자동문",
              "state_label_raw": "연구원 카드 인증 뒤 거대한 자동문이 양옆으로 열리는 도착 순간. 문틈 너머에서 눈부신 실내광이 쏟아진다.",
              "depends_on_fp": [
                "fp_shelter_room"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S81_Shot11"
              ],
              "bg_id": "L139B01"
            },
            {
              "loc_id": "L144",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "normal",
              "surface_role": "interior_room",
              "sub_location_label": "메인 센터 소장실",
              "state_label_raw": "밤의 소장실, 정돈된 기존 사무실 상태를 유지한다. 문가의 현우와 소영 사이 항의 장면의 시선축을 확보하며 파손이나 경보는 없다.",
              "depends_on_fp": [
                "fp_director_room"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S86_Shot2",
                "S86_Shot7"
              ],
              "bg_id": "L144B01"
            },
            {
              "loc_id": "L142",
              "space_key_hint": "main",
              "time_phase": "morning",
              "state_class": "busy",
              "surface_role": "interior_room",
              "sub_location_label": "유리벽 실험 구역의 스테인리스 침대",
              "state_label_raw": "오전 연구 진행 중인 차가운 실험실. 거대한 찰리를 수용하는 스테인리스 침대와 결박 장치, 주변 연구원 자리 유지. 이후 손 결박 해제와 작별 장면도 동일 배경이다.",
              "depends_on_fp": [
                "fp_main_laboratory"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S88_Shot11",
                "S88_Shot37"
              ],
              "bg_id": "L142B01"
            },
            {
              "loc_id": "L142",
              "space_key_hint": "main",
              "time_phase": "morning",
              "state_class": "intrusion",
              "surface_role": "interior_room",
              "sub_location_label": "적색경보가 작동한 메인 실험실",
              "state_label_raw": "같은 오전 실험실에 침입 적색경보가 작동한다. 붉은 경보광과 천장 방향의 시선 공간을 확보하며 기존 침대·유리벽·장비 배치는 유지한다.",
              "depends_on_fp": [
                "fp_main_laboratory"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S88_Shot45"
              ],
              "bg_id": "L142B02"
            }
          ],
          "gen_order": [
            "fp_shelter_room",
            "fp_main_laboratory",
            "fp_director_room",
            "L139B02",
            "L139B01",
            "L144B01",
            "L142B01",
            "L142B02"
          ]
        }
      },
      "bg_special_operations_headquarters": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_island_panorama": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_coastal_landing_beach": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_executive_command_helicopter": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_offshore_rock_retreat": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_refugee_courthouse": {
        "status": "ok",
        "plan": {
          "group_id": "bg_refugee_courthouse",
          "rationale_summary": "각 location에 단일 main 평면을 둔다. 낮 법정 소동과 밤 흑백 회상을 분리하며, 회상은 입력 L19를 유지하되 법정 평면에 연결하지 않는다. 외부 쓰레기 더미는 밤의 동일 배경으로 통합한다.",
          "floor_plans": [
            {
              "fp_id": "fp_courthouse_interior",
              "loc_id": "L19",
              "space_key_hint": "main",
              "sub_location": "courtroom",
              "scope": "Courtroom with worn judge's table, chair, document stacks, entrance and confrontation area.",
              "depends_on_fp": []
            },
            {
              "fp_id": "fp_courthouse_refuse_area",
              "loc_id": "L21",
              "space_key_hint": "main",
              "sub_location": "exterior_refuse_area",
              "scope": "Outdoor refuse area mapping rubbish heaps, waking spot and passage beside the courthouse.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L19",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "busy",
              "surface_role": "interior_room",
              "sub_location_label": "허름한 법정의 재판관 탁자 앞 바닥",
              "state_label_raw": "낮의 법정 소동. 낡은 탁자와 쌓인 서류, 재판관이 의자에서 떨어진 자리의 몸싸움 공간. 광범위한 파손이나 혈흔은 추가하지 않는다.",
              "depends_on_fp": [
                "fp_courthouse_interior"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S8_Shot12"
              ],
              "bg_id": "L19B01"
            },
            {
              "loc_id": "L19",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "dream_or_vision_state",
              "surface_role": "exterior_plate",
              "sub_location_label": "악몽 속 미국 도시 거리 — 입력상 L19에 귀속된 회상",
              "state_label_raw": "밤의 미국 도시 거리 회상. 흑백과 툭툭 끊기는 화면, 무릎 꿇린 가족과 복면 무장자들, 총구 섬광. 법정 내부가 아닌 독립된 거리 배경이다.",
              "depends_on_fp": [],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S8_Shot18",
                "S8_Shot22"
              ],
              "bg_id": "L19B02"
            },
            {
              "loc_id": "L21",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "quiet",
              "surface_role": "exterior_plate",
              "sub_location_label": "난민 재판소 밖 황폐한 쓰레기 더미",
              "state_label_raw": "밤의 황폐하고 인적 없는 쓰레기 더미. 악몽에서 깨어나는 자리부터 지갑 속 신분증 확인과 빈 지갑 투척까지 동일한 주변 배치와 야간 조명을 유지한다.",
              "depends_on_fp": [
                "fp_courthouse_refuse_area"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S9_Shot1",
                "S9_Shot6",
                "S9_Shot8"
              ],
              "bg_id": "L21B01"
            }
          ],
          "gen_order": [
            "fp_courthouse_interior",
            "fp_courthouse_refuse_area",
            "L19B01",
            "L19B02",
            "L21B01"
          ]
        }
      },
      "bg_riot_street_flashback": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_back_alley_restaurant": {
        "status": "ok",
        "plan": {
          "group_id": "bg_back_alley_restaurant",
          "rationale_summary": "단일 식당 평면에 외진 거래 테이블과 출입 동선을 통합한다. 세 쇼트 모두 같은 밤의 조용한 실내 상태를 공유하며, 손과 얼굴의 액션 차이는 배경 변형으로 분리하지 않는다.",
          "floor_plans": [
            {
              "fp_id": "fp_back_alley_restaurant",
              "loc_id": "L22",
              "space_key_hint": "main",
              "sub_location": "restaurant_interior",
              "scope": "Restaurant interior with secluded transaction table, opposing seats and entrance access.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L22",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "quiet",
              "surface_role": "interior_room",
              "sub_location_label": "허름한 골목 식당 안 외진 테이블",
              "state_label_raw": "밤의 외진 거래 자리. 낡은 식당 실내와 테이블 배치를 유지하고, 돈 봉투를 사이에 둔 대면의 측면·손·얼굴 구도에 일관된 배경 제공. 사이렌은 소리만 들리며 실내 상태 변화 없음.",
              "depends_on_fp": [
                "fp_back_alley_restaurant"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S10_Shot3",
                "S10_Shot4",
                "S10_Shot6"
              ],
              "bg_id": "L22B01"
            }
          ],
          "gen_order": [
            "fp_back_alley_restaurant",
            "L22B01"
          ]
        }
      },
      "bg_refugee_camp_gate": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_container_home_entrance": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_electronics_junk_shop": {
        "status": "ok",
        "plan": {
          "group_id": "bg_electronics_junk_shop",
          "rationale_summary": "고물상 전체를 단일 평면으로 통합하고 수리대·컴퓨터·전화·출입구의 관계를 고정한다. 낮의 일상, 현상금 기사 표시, 무장 수하의 침입, 살해 직후 상태만 구분한다.",
          "floor_plans": [
            {
              "fp_id": "fp_junk_shop",
              "loc_id": "L27",
              "space_key_hint": "main",
              "sub_location": "electronics_junk_shop",
              "scope": "Entire shop: appliance piles, repair desk, computer, telephone and entrance sightline.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L27",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "evidence_display",
              "surface_role": "interior_room",
              "sub_location_label": "수리대 컴퓨터 모니터",
              "state_label_raw": "낮, 컴퓨터에 실종 로봇 기사와 굵게 표시된 5억 원 현상금이 보이는 화면 중심 배경. 주변 수리대와 고물 배치는 유지.",
              "depends_on_fp": [
                "fp_junk_shop"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S15_Shot9"
              ],
              "bg_id": "L27B02"
            },
            {
              "loc_id": "L27",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "normal",
              "surface_role": "interior_room",
              "sub_location_label": "고물상 수리대와 출입구 방향",
              "state_label_raw": "낮, 가전제품과 고물이 빽빽이 쌓인 영업 중 고물상. 출입구를 향한 시선과 전화 사용 구도를 공유하며 물리적 배경 변화는 없음.",
              "depends_on_fp": [
                "fp_junk_shop"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S15_Shot15",
                "S15_Shot18"
              ],
              "bg_id": "L27B04"
            },
            {
              "loc_id": "L27",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "intrusion",
              "surface_role": "interior_room",
              "sub_location_label": "수리대 앞 대면 공간",
              "state_label_raw": "낮, 수하들이 들어와 제보 보상을 협상하다 총구를 겨누는 위협 상태. 수리 중인 TV와 기존 고물 더미는 그대로이며 난장판이나 총격 흔적은 아직 없음.",
              "depends_on_fp": [
                "fp_junk_shop"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S17_Shot5",
                "S17_Shot9"
              ],
              "bg_id": "L27B03"
            },
            {
              "loc_id": "L27",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "blood_scene",
              "surface_role": "interior_room",
              "sub_location_label": "살해 직후 수리대 주변",
              "state_label_raw": "낮, 책상에 엎어진 마츠다의 시신이 무전하는 수하 뒤로 보이는 살해 직후 상태. 기존 집기 배치를 유지하고 명시되지 않은 혈흔이나 파손은 추가하지 않음.",
              "depends_on_fp": [
                "fp_junk_shop"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S17_Shot12"
              ],
              "bg_id": "L27B01"
            }
          ],
          "gen_order": [
            "fp_junk_shop",
            "L27B02",
            "L27B04",
            "L27B03",
            "L27B01"
          ]
        }
      },
      "bg_container_home_with_yard": {
        "status": "ok",
        "plan": {
          "group_id": "bg_container_home_with_yard",
          "rationale_summary": "앞마당과 컨테이너 내부를 각각 단일 평면으로 구성한다. 낮의 물놀이 마당과 라울의 긴급 귀가 상태를 구분하고, 내부 철문·문턱·잠자리·찰리의 빈 구석 간 시선 관계를 유지한다.",
          "floor_plans": [
            {
              "fp_id": "fp_container_front_yard",
              "loc_id": "L28",
              "space_key_hint": "main",
              "sub_location": "container_front_yard",
              "scope": "Front yard layout with hose-washing area, distant observer positions and container frontage",
              "depends_on_fp": []
            },
            {
              "fp_id": "fp_container_interior",
              "loc_id": "L29",
              "space_key_hint": "main",
              "sub_location": "container_interior",
              "scope": "Single container room with steel doorway, threshold, sleeping area and Charlie's vacant corner",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L28",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "normal",
              "surface_role": "exterior_plate",
              "sub_location_label": "컨테이너 앞 물놀이 마당과 떨어진 관찰 지점",
              "state_label_raw": "낮의 평상시 앞마당. 호스 물줄기로 젖은 세척 구역과 현우·페드로가 찰리를 바라보는 떨어진 지점의 공간 관계 유지. 찰리의 몸이 깨끗해진 것이며 마당 청소 후 상태는 아님.",
              "depends_on_fp": [
                "fp_container_front_yard"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S16_Shot4",
                "S16_Shot8"
              ],
              "bg_id": "L28B01"
            },
            {
              "loc_id": "L29",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "arrival",
              "surface_role": "interior_room",
              "sub_location_label": "컨테이너 내부 철문 입구·앰버의 잠자리·찰리의 빈 구석",
              "state_label_raw": "낮, 라울이 급히 들어오며 철문이 열린 직후의 실내. 문턱과 앰버의 잠자리, 찰리가 보이지 않는 빈 구석을 연결한다. 민병대의 파괴는 다른 집의 사건이므로 이 실내에는 파손을 추가하지 않는다.",
              "depends_on_fp": [
                "fp_container_interior"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S21_Shot2",
                "S21_Shot6"
              ],
              "bg_id": "L29B01"
            }
          ],
          "gen_order": [
            "fp_container_front_yard",
            "fp_container_interior",
            "L28B01",
            "L29B01"
          ]
        }
      },
      "bg_militia_city_office": {
        "status": "ok",
        "plan": {
          "group_id": "bg_militia_city_office",
          "rationale_summary": "단일 사무실의 책상·스피커폰·맞은편 벽을 하나의 평면으로 고정한다. 인물의 위협 행동은 공간 상태 변화와 구분하며, 단검과 지도·다트는 샷별 소품 연속성으로 관리한다. 시간 미표기인 53씬도 주간으로 계획한다.",
          "floor_plans": [
            {
              "fp_id": "fp_militia_city_office",
              "loc_id": "L30",
              "space_key_hint": "main",
              "sub_location": "park_cheoljin_office",
              "scope": "Office desk, speakerphone, visitor standing area, rear wall and bowing clearance.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L30",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "normal",
              "surface_role": "interior_room",
              "sub_location_label": "박철진의 민병대 사무실",
              "state_label_raw": "주간의 정상 사용 중인 사무실. 책상과 스피커폰, 방문객 뒤 벽의 위치를 유지하고 전신 인사를 위한 여유 공간을 확보한다. S18_Shot2에는 투척 전 벽, S18_Shot7·8에는 윤성찬 뒤 벽에 박힌 단검을 반영한다. 53씬에는 책상 위에 펼친 한반도 지도와 다트를 배치하며, S53_Shot3에는 막 꽂힌 다트를 반영한다. 분노와 위협은 인물 연기이며 실내 파손이나 난장판으로 확대하지 않는다.",
              "depends_on_fp": [
                "fp_militia_city_office"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S18_Shot2",
                "S18_Shot7",
                "S18_Shot8",
                "S53_Shot3",
                "S53_Shot6"
              ],
              "bg_id": "L30B01"
            }
          ],
          "gen_order": [
            "fp_militia_city_office",
            "L30B01"
          ]
        }
      },
      "bg_luxury_sedan": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_detention_visiting_room": {
        "status": "ok",
        "plan": {
          "group_id": "bg_detention_visiting_room",
          "rationale_summary": "단일 면회실 평면과 낮의 정적인 배경을 공유한다. 중앙 철제 테이블과 출입 동선을 유지하며, 인물의 상처와 찰리 사진은 배경 훼손이나 별도 환경 상태로 분리하지 않는다.",
          "floor_plans": [
            {
              "fp_id": "fp_detention_visiting_room",
              "loc_id": "L33",
              "space_key_hint": "main",
              "sub_location": "visiting_room",
              "scope": "Entire visiting room with central metal table, facing seats, and entrance circulation.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L33",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "quiet",
              "surface_role": "interior_room",
              "sub_location_label": "구치소 면회실 중앙 철제 테이블",
              "state_label_raw": "낮의 차갑고 정적인 넓은 면회실. 중앙 철제 테이블을 사이에 둔 대화의 공간 연속성을 유지하며, 인물의 피멍과 제시되는 사진 외에 실내 상태 변화는 없다.",
              "depends_on_fp": [
                "fp_detention_visiting_room"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S23_Shot1",
                "S23_Shot7",
                "S23_Shot11"
              ],
              "bg_id": "L33B01"
            }
          ],
          "gen_order": [
            "fp_detention_visiting_room",
            "L33B01"
          ]
        }
      },
      "bg_priest_van": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_church_entrance_exterior": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_refugee_district_airspace": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_camp_administration_yard": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_militia_combat_helicopter": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_escape_car": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_flooded_refugee_district": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_unattended_store": {
        "status": "ok",
        "plan": {
          "group_id": "bg_unattended_store",
          "rationale_summary": "각 위치를 단일 main 평면으로 유지한다. 낮의 적막한 거리와 온전한 점포 외관을 대비시키고, 내부는 ATM 파손 이후의 상태를 유지하며 진열대·출입문·재회 동선을 연결한다.",
          "floor_plans": [
            {
              "fp_id": "fp_store_approach",
              "loc_id": "L54",
              "space_key_hint": "main",
              "sub_location": "street_and_storefront",
              "scope": "Street crossing, storefront threshold, and escape route oriented toward the flooded refugee camp.",
              "depends_on_fp": []
            },
            {
              "fp_id": "fp_unattended_store",
              "loc_id": "L55",
              "space_key_hint": "main",
              "sub_location": "sales_floor",
              "scope": "Unified sales floor with entrance, shelves, medicine corner, ATM, and hiding and reunion routes.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L54",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "quiet",
              "surface_role": "exterior_plate",
              "sub_location_label": "난민촌 외곽 도심 거리와 건너편 무인점포",
              "state_label_raw": "낮의 인적 드문 삭막한 거리. 경찰은 없고 건너편 무인점포 유리창은 온전하다. 난민촌 방향을 돌아보는 축과 도심으로 이동하는 축을 일관되게 유지하며 거리 자체의 침수는 추가하지 않는다.",
              "depends_on_fp": [
                "fp_store_approach"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S40_Shot2",
                "S40_Shot5",
                "S40_Shot7"
              ],
              "bg_id": "L54B01"
            },
            {
              "loc_id": "L55",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "ransacked",
              "surface_role": "interior_room",
              "sub_location_label": "무인점포 판매장·ATM·진열대 뒤 은신 구역",
              "state_label_raw": "낮의 무인점포에서 물품이 일부 반출되고 ATM 전면이 주먹에 관통되는 상태. 파손은 ATM에 국한하며 진열대와 출입문은 유지한다. 관통 순간 이후 재회 장면까지 ATM의 뚫린 패널과 물품 반출 흔적을 연속적으로 보존한다.",
              "depends_on_fp": [
                "fp_unattended_store"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S41_Shot18",
                "S41_Shot33",
                "S41_Shot36"
              ],
              "bg_id": "L55B01"
            }
          ],
          "gen_order": [
            "fp_store_approach",
            "fp_unattended_store",
            "L54B01",
            "L55B01"
          ]
        }
      },
      "bg_defense_minister_office": {
        "status": "ok",
        "plan": {
          "group_id": "bg_defense_minister_office",
          "rationale_summary": "단일 집무실 평면과 정상 주간 배경을 공유한다. 43씬 시간은 주간으로 가정하며, 교차편집 속 박철진 샷도 제공된 L56 배정을 유지하되 별도 사무실 구조는 만들지 않는다.",
          "floor_plans": [
            {
              "fp_id": "fp_defense_minister_office",
              "loc_id": "L56",
              "space_key_hint": "main",
              "sub_location": "minister_office",
              "scope": "Entire office with minister's desk, telephone, visitor seating and standing clearance.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L56",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "normal",
              "surface_role": "interior_room",
              "sub_location_label": "국방장관 집무실 전체",
              "state_label_raw": "정상 주간 집무실. 책상과 전화기, 방문객 대면 공간의 배치를 유지한다. 통화 명령과 병력 지원 협상은 인물 연기로 구분하며 배경 상태 변화는 없다. 43씬의 주간 조명은 연속성 가정이다.",
              "depends_on_fp": [
                "fp_defense_minister_office"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S43_Shot8",
                "S43_Shot9",
                "S43_Shot14",
                "S54_Shot4",
                "S54_Shot6"
              ],
              "bg_id": "L56B01"
            }
          ],
          "gen_order": [
            "fp_defense_minister_office",
            "L56B01"
          ]
        }
      },
      "bg_camper_storage_warehouse": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_rainy_city_road": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_abandoned_library_exterior": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_roadside_service_station": {
        "status": "ok",
        "plan": {
          "group_id": "bg_roadside_service_station",
          "rationale_summary": "각 location에 통합 평면 1개를 둔다. 샷의 L67 배정은 유지하되, 장면상 실내 대치와 주행·사고 지점 외부 시야의 불일치를 명시하고 물리적 배경 역할을 구분한다.",
          "floor_plans": [
            {
              "fp_id": "fp_fueling_and_confrontation",
              "loc_id": "L67",
              "space_key_hint": "main",
              "sub_location": "fueling_area_and_shot_mapped_confrontation",
              "scope": "Fueling forecourt plus the shop confrontation interior assigned here by the shot metadata.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L67",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "intrusion",
              "surface_role": "interior_room",
              "sub_location_label": "마트 내부 총구 대치 구역 — 입력상 L67",
              "state_label_raw": "낮, 약품 진열대 부근의 무장 위협. 장면상 마트 실내이나 입력 샷의 L67 배정을 유지한다. 발포 전이므로 천장 탄흔과 무너진 진열대는 아직 없다.",
              "depends_on_fp": [
                "fp_fueling_and_confrontation"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S49_Shot16"
              ],
              "bg_id": "L67B02"
            },
            {
              "loc_id": "L67",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "normal",
              "surface_role": "exterior_plate",
              "sub_location_label": "깨진 조수석 창문 너머 추격 도로 — 입력상 L67",
              "state_label_raw": "낮의 주행 도로 외부 플레이트. 장면상 주유소를 벗어난 추격 구간이며 주유소 평면에 종속시키지 않는다. 도로 자체는 파괴 전 상태이고 찰리의 가슴 발광과 깨진 차량 창문은 전경 요소다.",
              "depends_on_fp": [],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S49_Shot40"
              ],
              "bg_id": "L67B03"
            },
            {
              "loc_id": "L67",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "dream_or_vision_state",
              "surface_role": "exterior_plate",
              "sub_location_label": "전복 차량의 창밖 사고 지점, 현우의 주관적 시야 — 입력상 L67",
              "state_label_raw": "낮, 쓰레기 둔덕에 전복된 차량의 깨진 창문 너머 외부. 의식을 잃어가는 현우의 흐릿한 시야로 대비와 초점이 무너지며 태진과 은영의 실루엣이 보인다. 태진을 미연으로 오인하는 주관적 지각 상태.",
              "depends_on_fp": [],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S49_Shot47"
              ],
              "bg_id": "L67B01"
            }
          ],
          "gen_order": [
            "fp_fueling_and_confrontation",
            "L67B02",
            "L67B03",
            "L67B01"
          ]
        }
      },
      "bg_auto_repair_complex": {
        "status": "ok",
        "plan": {
          "group_id": "bg_auto_repair_complex",
          "rationale_summary": "각 single_space에 통합 평면 1개를 둔다. 낮과 다음날 아침을 구분하며, S51_Shot32는 표기된 식당이 아닌 실제 묘사된 L72 마당의 출발 배경으로 배치한다.",
          "floor_plans": [
            {
              "fp_id": "fp_repair_workspace",
              "loc_id": "L70",
              "space_key_hint": "main",
              "sub_location": "warehouse_repair_workspace",
              "scope": "Recovery corner, repair bay, tool storage, speakers and entrance within one connected workspace.",
              "depends_on_fp": []
            },
            {
              "fp_id": "fp_container_diner",
              "loc_id": "L71",
              "space_key_hint": "main",
              "sub_location": "container_diner",
              "scope": "Container interior with dining tables, doorway, circulation and overnight resting position.",
              "depends_on_fp": []
            },
            {
              "fp_id": "fp_repair_yard",
              "loc_id": "L72",
              "space_key_hint": "main",
              "sub_location": "repair_yard",
              "scope": "Yard layout connecting repair bay, diner access, camper parking and dirt exit route.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L70",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "normal",
              "surface_role": "interior_room",
              "sub_location_label": "카센터 창고의 회복 자리와 연결된 정비 작업 공간",
              "state_label_raw": "낮, 록밴드 포스터가 붙은 회복 자리에서 캠핑카 정비 구역이 이어진다. 큰 스피커와 손 닿는 펜치, 출입문 위치를 일관되게 유지한다.",
              "depends_on_fp": [
                "fp_repair_workspace"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S50_Shot2",
                "S50_Shot7",
                "S50_Shot14"
              ],
              "bg_id": "L70B01"
            },
            {
              "loc_id": "L71",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "normal",
              "surface_role": "interior_room",
              "sub_location_label": "컨테이너 간이식당 식탁과 입구 사이",
              "state_label_raw": "낮 식사 중인 간이식당. 국밥 그릇이 놓인 식탁과 입구 사이에 앰버가 달려와 현우를 안을 수 있는 동선을 확보한다.",
              "depends_on_fp": [
                "fp_container_diner"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S51_Shot4"
              ],
              "bg_id": "L71B01"
            },
            {
              "loc_id": "L71",
              "space_key_hint": "main",
              "time_phase": "morning",
              "state_class": "normal",
              "surface_role": "interior_room",
              "sub_location_label": "컨테이너 간이식당 내부의 밤샘 휴식 자리",
              "state_label_raw": "다음날 아침, 현우가 막 깨어난 휴식 자리. 전날과 같은 컨테이너 내부 구조를 유지하고 편지가 얼굴 앞에 제시되는 근접 구도를 지원한다.",
              "depends_on_fp": [
                "fp_container_diner"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S51_Shot22"
              ],
              "bg_id": "L71B02"
            },
            {
              "loc_id": "L72",
              "space_key_hint": "main",
              "time_phase": "morning",
              "state_class": "busy_exit",
              "surface_role": "exterior_plate",
              "sub_location_label": "카센터 마당의 캠핑카 출발 동선",
              "state_label_raw": "다음날 아침, 캠핑카가 마당을 빠르게 가로질러 출발하며 뒷바퀴 뒤로 거친 흙먼지를 흩뿌리는 외부 전경.",
              "depends_on_fp": [
                "fp_repair_yard"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S51_Shot32"
              ],
              "bg_id": "L72B01"
            }
          ],
          "gen_order": [
            "fp_repair_workspace",
            "fp_container_diner",
            "fp_repair_yard",
            "L70B01",
            "L71B01",
            "L71B02",
            "L72B01"
          ]
        }
      },
      "bg_spring_cave_flashback": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_water_channel_flashback": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_departure_ridge_flashback": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_corporate_command_office": {
        "status": "ok",
        "plan": {
          "group_id": "bg_corporate_command_office",
          "rationale_summary": "L95의 단일 공간 규칙에 따라 회장실·지휘 공간을 하나의 평면으로 통합한다. 모든 샷은 지정된 L95를 유지하며, 야간의 정적이고 은밀한 지휘 상태를 공유한다.",
          "floor_plans": [
            {
              "fp_id": "fp_corporate_command_office",
              "loc_id": "L95",
              "space_key_hint": "main",
              "sub_location": "chairman_command_office",
              "scope": "Unified chairman command office with executive desk, speakerphone and facing briefing position.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L95",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "quiet",
              "surface_role": "interior_room",
              "sub_location_label": "유빅사 회장실·지휘 사무실",
              "state_label_raw": "어두운 야간 회장실의 은밀한 지휘 상태. 책상 위 스피커폰과 책상 맞은편 보고 위치를 중심으로 정적인 공간과 일관된 시선축을 유지한다.",
              "depends_on_fp": [
                "fp_corporate_command_office"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S87_Shot5",
                "S87_Shot6",
                "S87_Shot9"
              ],
              "bg_id": "L95B01"
            }
          ],
          "gen_order": [
            "fp_corporate_command_office",
            "L95B01"
          ]
        }
      },
      "bg_village_food_warehouse": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_open_travel_truck": {
        "status": "prev_shot_only",
        "plan": null
      }
    },
    "background_catalog": {
      "L08B01": {
        "bg_id": "L08B01",
        "loc_id": "L08",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "normal",
        "surface_role": "interior_room",
        "semantic_key": "L08|main|day|normal",
        "depends_on_fp": [
          "fp_car_cabin"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S4_Shot2",
          "S4_Shot5"
        ],
        "sub_location_label": "정차한 자동차 앞좌석",
        "state_label_raw": "낮의 정차 차량 실내. 운전석과 조수석 사이 구겨진 도면을 펼칠 공간을 확보하고, 차창 너머 길 건너 고급주택의 방향과 시선을 일관되게 유지한다."
      },
      "L08B02": {
        "bg_id": "L08B02",
        "loc_id": "L08",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "quiet",
        "surface_role": "exterior_plate",
        "semantic_key": "L08|main|day|quiet",
        "depends_on_fp": [],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S4_Shot11"
        ],
        "sub_location_label": "길 건너 고급주택 앞길",
        "state_label_raw": "낮의 조용한 고급주택 앞길. 차량에서 내린 현우의 통신 확인 근접 구도 뒤로 주택 외관과 도로변이 보이는 외부 배경이며, 차량 실내는 아니다."
      },
      "L100B01": {
        "bg_id": "L100B01",
        "loc_id": "L100",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "quiet",
        "surface_role": "interior_room",
        "semantic_key": "L100|main|day|quiet",
        "depends_on_fp": [
          "fp_abandoned_parts_warehouse"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S64_Shot7",
          "S64_Shot11",
          "S64_Shot17"
        ],
        "sub_location_label": "폐 기계부품 창고 내부의 로봇 잔해 옆 은신처",
        "state_label_raw": "낮빛이 반쯤 열린 문으로 들어오지만 B-200의 구석은 어둡게 유지되는 고요한 창고. 거대한 기계 부품과 고장 난 로봇 더미가 둘러싸며, 찰리와 나란히 앉는 자리 가까이에 아기새를 가린 상자가 있다. 마지막 숏에서는 상자를 치워 새들이 드러나며, 공간과 조명 상태는 유지된다."
      },
      "L107B01": {
        "bg_id": "L107B01",
        "loc_id": "L107",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "quiet",
        "surface_role": "site_surface",
        "semantic_key": "L107|main|day|quiet",
        "depends_on_fp": [
          "fp_store_rubble_grounds"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S65_Shot3",
          "S65_Shot12",
          "S65_Shot14"
        ],
        "sub_location_label": "백화점 외부 잔해와 진입 틈새",
        "state_label_raw": "낮, 반쯤 붕괴한 백화점 외부. 넓은 이끼, 고인 웅덩이, 무성한 나무와 꽃이 아름답지만 음산한 정적을 만든다. 높은 잔해의 관찰 지점에서 두 사람이 들어가는 틈새가 내려다보인다. 방사능 수치 0은 환경 정화의 발견이며 외부 공간의 물리적 변화는 없다."
      },
      "L108B01": {
        "bg_id": "L108B01",
        "loc_id": "L108",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "arrival",
        "surface_role": "interior_room",
        "semantic_key": "L108|main|day|arrival",
        "depends_on_fp": [
          "fp_store_upper_floor"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S66_Shot38",
          "S66_Shot46"
        ],
        "sub_location_label": "상층 붕괴 구멍과 구조 지점",
        "state_label_raw": "낮의 어두운 상층 내부, 붕괴 후 남은 동일한 바닥 구멍에 구조자가 도착한 상태. 굵은 밧줄이 구멍을 통해 지하로 내려오며, 이후 구멍 앞의 남은 바닥에 한수가 서 있다. 구멍 가장자리와 주변 잔해 배치를 유지한다."
      },
      "L108B02": {
        "bg_id": "L108B02",
        "loc_id": "L108",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "normal",
        "surface_role": "interior_room",
        "semantic_key": "L108|main|day|normal",
        "depends_on_fp": [
          "fp_store_upper_floor"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S66_Shot13"
        ],
        "sub_location_label": "상층 에스컬레이터 인접 붕괴 바닥",
        "state_label_raw": "낮이지만 어두운 지진 폐허 내부의 구조 붕괴 상태. 바닥이 무너지며 거대한 구멍이 열리고 부서진 바닥 조각과 두 사람이 지하의 어둠으로 추락한다. 약탈 흔적이 아닌 지진 손상과 추가 바닥 붕괴이며, 구조 밧줄은 아직 없다."
      },
      "L113B01": {
        "bg_id": "L113B01",
        "loc_id": "L113",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "quiet",
        "surface_role": "transition_zone",
        "semantic_key": "L113|main|night|quiet",
        "depends_on_fp": [
          "fp_hospital_corridor_threshold"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S70_Shot8",
          "S70_Shot10",
          "S70_Shot14"
        ],
        "sub_location_label": "군 병원 복도·병실 문 앞과 문 너머 병상 시선",
        "state_label_raw": "밤의 조용한 병실 문 앞. 문 너머 박철진의 병상과 장관의 대면 시선을 연결하며, 전신 및 얼굴 클로즈업의 배경 연속성을 유지한다."
      },
      "L125B01": {
        "bg_id": "L125B01",
        "loc_id": "L125",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "busy",
        "surface_role": "interior_room",
        "semantic_key": "L125|main|night|busy",
        "depends_on_fp": [
          "fp_clinic_treatment_room"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S76_Shot1",
          "S76_Shot7",
          "S76_Shot11"
        ],
        "sub_location_label": "동일 진료실의 앰버 침대와 협의 공간",
        "state_label_raw": "밤, 동일한 침대와 통로 배치를 유지하며 고열의 앰버 곁에 의사와 일행이 모여 긴급히 치료·이송을 협의하는 상태. 병원 전체의 혼잡이나 시설 손상은 없다."
      },
      "L125B02": {
        "bg_id": "L125B02",
        "loc_id": "L125",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "quiet",
        "surface_role": "interior_room",
        "semantic_key": "L125|main|night|quiet",
        "depends_on_fp": [
          "fp_clinic_treatment_room"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S73_Shot6",
          "S73_Shot12"
        ],
        "sub_location_label": "보건소 진료실의 침대 곁과 중앙 통로",
        "state_label_raw": "밤, 응급치료 후 앰버가 잠든 조용한 진료실. 침대 곁 위로와 중앙 공간의 재회가 같은 배치 안에서 이어진다."
      },
      "L128B01": {
        "bg_id": "L128B01",
        "loc_id": "L128",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "arrival",
        "surface_role": "transition_zone",
        "semantic_key": "L128|main|night|arrival",
        "depends_on_fp": [
          "fp_l128_hangar_entry"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S75_Shot10"
        ],
        "sub_location_label": "격납고 입구의 안쪽 진입 동선",
        "state_label_raw": "밤, 신부가 급히 진입하는 열린 격납고 문턱과 내부 방향의 통로. 뒤편 폐경비행기 배치는 내부 전경과 동일."
      },
      "L128B02": {
        "bg_id": "L128B02",
        "loc_id": "L128",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "quiet",
        "surface_role": "interior_room",
        "semantic_key": "L128|main|night|quiet",
        "depends_on_fp": [
          "fp_l128_hangar_entry"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S75_Shot4"
        ],
        "sub_location_label": "열린 대문 너머 격납고 내부 전경",
        "state_label_raw": "밤, 열린 격납고 문을 통해 드러나는 거대한 내부와 먼지 쌓인 다수의 폐경비행기. 정지된 방치 상태."
      },
      "L129B01": {
        "bg_id": "L129B01",
        "loc_id": "L129",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "busy_exit",
        "surface_role": "exterior_plate",
        "semantic_key": "L129|main|day|busy_exit",
        "depends_on_fp": [],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S77_Shot39"
        ],
        "sub_location_label": "헬기 탑승 지점 옆 지상",
        "state_label_raw": "낮, 헬기 출발을 앞둔 외부 계류장. 현우가 내려 찰리 곁에 서는 공간으로, 낡고 갈라진 포장면과 헬기 주변의 작별 동선을 확보."
      },
      "L129B02": {
        "bg_id": "L129B02",
        "loc_id": "L129",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "quiet",
        "surface_role": "exterior_plate",
        "semantic_key": "L129|main|day|quiet",
        "depends_on_fp": [],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S77_Shot56"
        ],
        "sub_location_label": "활주로 끝을 향하는 외부 보행 구간",
        "state_label_raw": "낮, 헬기가 떠난 뒤 조용해진 폐공항 활주로. 갈라진 포장과 이끼, 멀어지는 활주로 원근을 유지하며 두 사람의 뒷모습을 위한 열린 보행 공간."
      },
      "L129B03": {
        "bg_id": "L129B03",
        "loc_id": "L129",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "busy",
        "surface_role": "interior_room",
        "semantic_key": "L129|main|night|busy",
        "depends_on_fp": [
          "fp_l129_hangar"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S77_Shot22"
        ],
        "sub_location_label": "격납고 경비행기 사이",
        "state_label_raw": "밤, 수리가 성공해 여러 경비행기의 엔진이 가동되고 검은 매연이 남은 격납고. 전력 요동과 전구 파손의 흔적을 유지하는 환희의 순간."
      },
      "L139B01": {
        "bg_id": "L139B01",
        "loc_id": "L139",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "arrival",
        "surface_role": "transition_zone",
        "semantic_key": "L139|main|day|arrival",
        "depends_on_fp": [
          "fp_shelter_room"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S81_Shot11"
        ],
        "sub_location_label": "보호소에서 연구 구역으로 이어지는 자동문",
        "state_label_raw": "연구원 카드 인증 뒤 거대한 자동문이 양옆으로 열리는 도착 순간. 문틈 너머에서 눈부신 실내광이 쏟아진다."
      },
      "L139B02": {
        "bg_id": "L139B02",
        "loc_id": "L139",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "quiet",
        "surface_role": "interior_room",
        "semantic_key": "L139|main|day|quiet",
        "depends_on_fp": [
          "fp_shelter_room"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S81_Shot4",
          "S81_Shot6",
          "S83_Shot8",
          "S83_Shot9",
          "S83_Shot10"
        ],
        "sub_location_label": "임시보호소 병실·숙소와 화상통화 자리",
        "state_label_raw": "고요한 낮의 보호실. 흰 침대와 강한 형광등, 창밖 에메랄드빛 제주 바다. 통화 모니터의 연결·종료는 같은 공간의 화면 상태로 처리한다."
      },
      "L142B01": {
        "bg_id": "L142B01",
        "loc_id": "L142",
        "space_key": "main",
        "time_phase": "morning",
        "state_class": "busy",
        "surface_role": "interior_room",
        "semantic_key": "L142|main|morning|busy",
        "depends_on_fp": [
          "fp_main_laboratory"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S88_Shot11",
          "S88_Shot37"
        ],
        "sub_location_label": "유리벽 실험 구역의 스테인리스 침대",
        "state_label_raw": "오전 연구 진행 중인 차가운 실험실. 거대한 찰리를 수용하는 스테인리스 침대와 결박 장치, 주변 연구원 자리 유지. 이후 손 결박 해제와 작별 장면도 동일 배경이다."
      },
      "L142B02": {
        "bg_id": "L142B02",
        "loc_id": "L142",
        "space_key": "main",
        "time_phase": "morning",
        "state_class": "intrusion",
        "surface_role": "interior_room",
        "semantic_key": "L142|main|morning|intrusion",
        "depends_on_fp": [
          "fp_main_laboratory"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S88_Shot45"
        ],
        "sub_location_label": "적색경보가 작동한 메인 실험실",
        "state_label_raw": "같은 오전 실험실에 침입 적색경보가 작동한다. 붉은 경보광과 천장 방향의 시선 공간을 확보하며 기존 침대·유리벽·장비 배치는 유지한다."
      },
      "L144B01": {
        "bg_id": "L144B01",
        "loc_id": "L144",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "normal",
        "surface_role": "interior_room",
        "semantic_key": "L144|main|night|normal",
        "depends_on_fp": [
          "fp_director_room"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S86_Shot2",
          "S86_Shot7"
        ],
        "sub_location_label": "메인 센터 소장실",
        "state_label_raw": "밤의 소장실, 정돈된 기존 사무실 상태를 유지한다. 문가의 현우와 소영 사이 항의 장면의 시선축을 확보하며 파손이나 경보는 없다."
      },
      "L19B01": {
        "bg_id": "L19B01",
        "loc_id": "L19",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "busy",
        "surface_role": "interior_room",
        "semantic_key": "L19|main|day|busy",
        "depends_on_fp": [
          "fp_courthouse_interior"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S8_Shot12"
        ],
        "sub_location_label": "허름한 법정의 재판관 탁자 앞 바닥",
        "state_label_raw": "낮의 법정 소동. 낡은 탁자와 쌓인 서류, 재판관이 의자에서 떨어진 자리의 몸싸움 공간. 광범위한 파손이나 혈흔은 추가하지 않는다."
      },
      "L19B02": {
        "bg_id": "L19B02",
        "loc_id": "L19",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "dream_or_vision_state",
        "surface_role": "exterior_plate",
        "semantic_key": "L19|main|night|dream_or_vision_state",
        "depends_on_fp": [],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S8_Shot18",
          "S8_Shot22"
        ],
        "sub_location_label": "악몽 속 미국 도시 거리 — 입력상 L19에 귀속된 회상",
        "state_label_raw": "밤의 미국 도시 거리 회상. 흑백과 툭툭 끊기는 화면, 무릎 꿇린 가족과 복면 무장자들, 총구 섬광. 법정 내부가 아닌 독립된 거리 배경이다."
      },
      "L21B01": {
        "bg_id": "L21B01",
        "loc_id": "L21",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "quiet",
        "surface_role": "exterior_plate",
        "semantic_key": "L21|main|night|quiet",
        "depends_on_fp": [
          "fp_courthouse_refuse_area"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S9_Shot1",
          "S9_Shot6",
          "S9_Shot8"
        ],
        "sub_location_label": "난민 재판소 밖 황폐한 쓰레기 더미",
        "state_label_raw": "밤의 황폐하고 인적 없는 쓰레기 더미. 악몽에서 깨어나는 자리부터 지갑 속 신분증 확인과 빈 지갑 투척까지 동일한 주변 배치와 야간 조명을 유지한다."
      },
      "L22B01": {
        "bg_id": "L22B01",
        "loc_id": "L22",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "quiet",
        "surface_role": "interior_room",
        "semantic_key": "L22|main|night|quiet",
        "depends_on_fp": [
          "fp_back_alley_restaurant"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S10_Shot3",
          "S10_Shot4",
          "S10_Shot6"
        ],
        "sub_location_label": "허름한 골목 식당 안 외진 테이블",
        "state_label_raw": "밤의 외진 거래 자리. 낡은 식당 실내와 테이블 배치를 유지하고, 돈 봉투를 사이에 둔 대면의 측면·손·얼굴 구도에 일관된 배경 제공. 사이렌은 소리만 들리며 실내 상태 변화 없음."
      },
      "L27B01": {
        "bg_id": "L27B01",
        "loc_id": "L27",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "blood_scene",
        "surface_role": "interior_room",
        "semantic_key": "L27|main|day|blood_scene",
        "depends_on_fp": [
          "fp_junk_shop"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S17_Shot12"
        ],
        "sub_location_label": "살해 직후 수리대 주변",
        "state_label_raw": "낮, 책상에 엎어진 마츠다의 시신이 무전하는 수하 뒤로 보이는 살해 직후 상태. 기존 집기 배치를 유지하고 명시되지 않은 혈흔이나 파손은 추가하지 않음."
      },
      "L27B02": {
        "bg_id": "L27B02",
        "loc_id": "L27",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "evidence_display",
        "surface_role": "interior_room",
        "semantic_key": "L27|main|day|evidence_display",
        "depends_on_fp": [
          "fp_junk_shop"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S15_Shot9"
        ],
        "sub_location_label": "수리대 컴퓨터 모니터",
        "state_label_raw": "낮, 컴퓨터에 실종 로봇 기사와 굵게 표시된 5억 원 현상금이 보이는 화면 중심 배경. 주변 수리대와 고물 배치는 유지."
      },
      "L27B03": {
        "bg_id": "L27B03",
        "loc_id": "L27",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "intrusion",
        "surface_role": "interior_room",
        "semantic_key": "L27|main|day|intrusion",
        "depends_on_fp": [
          "fp_junk_shop"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S17_Shot5",
          "S17_Shot9"
        ],
        "sub_location_label": "수리대 앞 대면 공간",
        "state_label_raw": "낮, 수하들이 들어와 제보 보상을 협상하다 총구를 겨누는 위협 상태. 수리 중인 TV와 기존 고물 더미는 그대로이며 난장판이나 총격 흔적은 아직 없음."
      },
      "L27B04": {
        "bg_id": "L27B04",
        "loc_id": "L27",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "normal",
        "surface_role": "interior_room",
        "semantic_key": "L27|main|day|normal",
        "depends_on_fp": [
          "fp_junk_shop"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S15_Shot15",
          "S15_Shot18"
        ],
        "sub_location_label": "고물상 수리대와 출입구 방향",
        "state_label_raw": "낮, 가전제품과 고물이 빽빽이 쌓인 영업 중 고물상. 출입구를 향한 시선과 전화 사용 구도를 공유하며 물리적 배경 변화는 없음."
      },
      "L28B01": {
        "bg_id": "L28B01",
        "loc_id": "L28",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "normal",
        "surface_role": "exterior_plate",
        "semantic_key": "L28|main|day|normal",
        "depends_on_fp": [
          "fp_container_front_yard"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S16_Shot4",
          "S16_Shot8"
        ],
        "sub_location_label": "컨테이너 앞 물놀이 마당과 떨어진 관찰 지점",
        "state_label_raw": "낮의 평상시 앞마당. 호스 물줄기로 젖은 세척 구역과 현우·페드로가 찰리를 바라보는 떨어진 지점의 공간 관계 유지. 찰리의 몸이 깨끗해진 것이며 마당 청소 후 상태는 아님."
      },
      "L29B01": {
        "bg_id": "L29B01",
        "loc_id": "L29",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "arrival",
        "surface_role": "interior_room",
        "semantic_key": "L29|main|day|arrival",
        "depends_on_fp": [
          "fp_container_interior"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S21_Shot2",
          "S21_Shot6"
        ],
        "sub_location_label": "컨테이너 내부 철문 입구·앰버의 잠자리·찰리의 빈 구석",
        "state_label_raw": "낮, 라울이 급히 들어오며 철문이 열린 직후의 실내. 문턱과 앰버의 잠자리, 찰리가 보이지 않는 빈 구석을 연결한다. 민병대의 파괴는 다른 집의 사건이므로 이 실내에는 파손을 추가하지 않는다."
      },
      "L30B01": {
        "bg_id": "L30B01",
        "loc_id": "L30",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "normal",
        "surface_role": "interior_room",
        "semantic_key": "L30|main|day|normal",
        "depends_on_fp": [
          "fp_militia_city_office"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S18_Shot2",
          "S18_Shot7",
          "S18_Shot8",
          "S53_Shot3",
          "S53_Shot6"
        ],
        "sub_location_label": "박철진의 민병대 사무실",
        "state_label_raw": "주간의 정상 사용 중인 사무실. 책상과 스피커폰, 방문객 뒤 벽의 위치를 유지하고 전신 인사를 위한 여유 공간을 확보한다. S18_Shot2에는 투척 전 벽, S18_Shot7·8에는 윤성찬 뒤 벽에 박힌 단검을 반영한다. 53씬에는 책상 위에 펼친 한반도 지도와 다트를 배치하며, S53_Shot3에는 막 꽂힌 다트를 반영한다. 분노와 위협은 인물 연기이며 실내 파손이나 난장판으로 확대하지 않는다."
      },
      "L33B01": {
        "bg_id": "L33B01",
        "loc_id": "L33",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "quiet",
        "surface_role": "interior_room",
        "semantic_key": "L33|main|day|quiet",
        "depends_on_fp": [
          "fp_detention_visiting_room"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S23_Shot1",
          "S23_Shot7",
          "S23_Shot11"
        ],
        "sub_location_label": "구치소 면회실 중앙 철제 테이블",
        "state_label_raw": "낮의 차갑고 정적인 넓은 면회실. 중앙 철제 테이블을 사이에 둔 대화의 공간 연속성을 유지하며, 인물의 피멍과 제시되는 사진 외에 실내 상태 변화는 없다."
      },
      "L54B01": {
        "bg_id": "L54B01",
        "loc_id": "L54",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "quiet",
        "surface_role": "exterior_plate",
        "semantic_key": "L54|main|day|quiet",
        "depends_on_fp": [
          "fp_store_approach"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S40_Shot2",
          "S40_Shot5",
          "S40_Shot7"
        ],
        "sub_location_label": "난민촌 외곽 도심 거리와 건너편 무인점포",
        "state_label_raw": "낮의 인적 드문 삭막한 거리. 경찰은 없고 건너편 무인점포 유리창은 온전하다. 난민촌 방향을 돌아보는 축과 도심으로 이동하는 축을 일관되게 유지하며 거리 자체의 침수는 추가하지 않는다."
      },
      "L55B01": {
        "bg_id": "L55B01",
        "loc_id": "L55",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "ransacked",
        "surface_role": "interior_room",
        "semantic_key": "L55|main|day|ransacked",
        "depends_on_fp": [
          "fp_unattended_store"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S41_Shot18",
          "S41_Shot33",
          "S41_Shot36"
        ],
        "sub_location_label": "무인점포 판매장·ATM·진열대 뒤 은신 구역",
        "state_label_raw": "낮의 무인점포에서 물품이 일부 반출되고 ATM 전면이 주먹에 관통되는 상태. 파손은 ATM에 국한하며 진열대와 출입문은 유지한다. 관통 순간 이후 재회 장면까지 ATM의 뚫린 패널과 물품 반출 흔적을 연속적으로 보존한다."
      },
      "L56B01": {
        "bg_id": "L56B01",
        "loc_id": "L56",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "normal",
        "surface_role": "interior_room",
        "semantic_key": "L56|main|day|normal",
        "depends_on_fp": [
          "fp_defense_minister_office"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S43_Shot8",
          "S43_Shot9",
          "S43_Shot14",
          "S54_Shot4",
          "S54_Shot6"
        ],
        "sub_location_label": "국방장관 집무실 전체",
        "state_label_raw": "정상 주간 집무실. 책상과 전화기, 방문객 대면 공간의 배치를 유지한다. 통화 명령과 병력 지원 협상은 인물 연기로 구분하며 배경 상태 변화는 없다. 43씬의 주간 조명은 연속성 가정이다."
      },
      "L67B01": {
        "bg_id": "L67B01",
        "loc_id": "L67",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "dream_or_vision_state",
        "surface_role": "exterior_plate",
        "semantic_key": "L67|main|day|dream_or_vision_state",
        "depends_on_fp": [],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S49_Shot47"
        ],
        "sub_location_label": "전복 차량의 창밖 사고 지점, 현우의 주관적 시야 — 입력상 L67",
        "state_label_raw": "낮, 쓰레기 둔덕에 전복된 차량의 깨진 창문 너머 외부. 의식을 잃어가는 현우의 흐릿한 시야로 대비와 초점이 무너지며 태진과 은영의 실루엣이 보인다. 태진을 미연으로 오인하는 주관적 지각 상태."
      },
      "L67B02": {
        "bg_id": "L67B02",
        "loc_id": "L67",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "intrusion",
        "surface_role": "interior_room",
        "semantic_key": "L67|main|day|intrusion",
        "depends_on_fp": [
          "fp_fueling_and_confrontation"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S49_Shot16"
        ],
        "sub_location_label": "마트 내부 총구 대치 구역 — 입력상 L67",
        "state_label_raw": "낮, 약품 진열대 부근의 무장 위협. 장면상 마트 실내이나 입력 샷의 L67 배정을 유지한다. 발포 전이므로 천장 탄흔과 무너진 진열대는 아직 없다."
      },
      "L67B03": {
        "bg_id": "L67B03",
        "loc_id": "L67",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "normal",
        "surface_role": "exterior_plate",
        "semantic_key": "L67|main|day|normal",
        "depends_on_fp": [],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S49_Shot40"
        ],
        "sub_location_label": "깨진 조수석 창문 너머 추격 도로 — 입력상 L67",
        "state_label_raw": "낮의 주행 도로 외부 플레이트. 장면상 주유소를 벗어난 추격 구간이며 주유소 평면에 종속시키지 않는다. 도로 자체는 파괴 전 상태이고 찰리의 가슴 발광과 깨진 차량 창문은 전경 요소다."
      },
      "L70B01": {
        "bg_id": "L70B01",
        "loc_id": "L70",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "normal",
        "surface_role": "interior_room",
        "semantic_key": "L70|main|day|normal",
        "depends_on_fp": [
          "fp_repair_workspace"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S50_Shot2",
          "S50_Shot7",
          "S50_Shot14"
        ],
        "sub_location_label": "카센터 창고의 회복 자리와 연결된 정비 작업 공간",
        "state_label_raw": "낮, 록밴드 포스터가 붙은 회복 자리에서 캠핑카 정비 구역이 이어진다. 큰 스피커와 손 닿는 펜치, 출입문 위치를 일관되게 유지한다."
      },
      "L71B01": {
        "bg_id": "L71B01",
        "loc_id": "L71",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "normal",
        "surface_role": "interior_room",
        "semantic_key": "L71|main|day|normal",
        "depends_on_fp": [
          "fp_container_diner"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S51_Shot4"
        ],
        "sub_location_label": "컨테이너 간이식당 식탁과 입구 사이",
        "state_label_raw": "낮 식사 중인 간이식당. 국밥 그릇이 놓인 식탁과 입구 사이에 앰버가 달려와 현우를 안을 수 있는 동선을 확보한다."
      },
      "L71B02": {
        "bg_id": "L71B02",
        "loc_id": "L71",
        "space_key": "main",
        "time_phase": "morning",
        "state_class": "normal",
        "surface_role": "interior_room",
        "semantic_key": "L71|main|morning|normal",
        "depends_on_fp": [
          "fp_container_diner"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S51_Shot22"
        ],
        "sub_location_label": "컨테이너 간이식당 내부의 밤샘 휴식 자리",
        "state_label_raw": "다음날 아침, 현우가 막 깨어난 휴식 자리. 전날과 같은 컨테이너 내부 구조를 유지하고 편지가 얼굴 앞에 제시되는 근접 구도를 지원한다."
      },
      "L72B01": {
        "bg_id": "L72B01",
        "loc_id": "L72",
        "space_key": "main",
        "time_phase": "morning",
        "state_class": "busy_exit",
        "surface_role": "exterior_plate",
        "semantic_key": "L72|main|morning|busy_exit",
        "depends_on_fp": [
          "fp_repair_yard"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S51_Shot32"
        ],
        "sub_location_label": "카센터 마당의 캠핑카 출발 동선",
        "state_label_raw": "다음날 아침, 캠핑카가 마당을 빠르게 가로질러 출발하며 뒷바퀴 뒤로 거친 흙먼지를 흩뿌리는 외부 전경."
      },
      "L95B01": {
        "bg_id": "L95B01",
        "loc_id": "L95",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "quiet",
        "surface_role": "interior_room",
        "semantic_key": "L95|main|night|quiet",
        "depends_on_fp": [
          "fp_corporate_command_office"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S87_Shot5",
          "S87_Shot6",
          "S87_Shot9"
        ],
        "sub_location_label": "유빅사 회장실·지휘 사무실",
        "state_label_raw": "어두운 야간 회장실의 은밀한 지휘 상태. 책상 위 스피커폰과 책상 맞은편 보고 위치를 중심으로 정적인 공간과 일관된 시선축을 유지한다."
      }
    },
    "shot_background_map": {
      "S4_Shot2": "L08B01",
      "S4_Shot5": "L08B01",
      "S4_Shot11": "L08B02",
      "S64_Shot7": "L100B01",
      "S64_Shot11": "L100B01",
      "S64_Shot17": "L100B01",
      "S65_Shot3": "L107B01",
      "S65_Shot12": "L107B01",
      "S65_Shot14": "L107B01",
      "S66_Shot38": "L108B01",
      "S66_Shot46": "L108B01",
      "S66_Shot13": "L108B02",
      "S70_Shot8": "L113B01",
      "S70_Shot10": "L113B01",
      "S70_Shot14": "L113B01",
      "S76_Shot1": "L125B01",
      "S76_Shot7": "L125B01",
      "S76_Shot11": "L125B01",
      "S73_Shot6": "L125B02",
      "S73_Shot12": "L125B02",
      "S75_Shot10": "L128B01",
      "S75_Shot4": "L128B02",
      "S77_Shot39": "L129B01",
      "S77_Shot56": "L129B02",
      "S77_Shot22": "L129B03",
      "S81_Shot11": "L139B01",
      "S81_Shot4": "L139B02",
      "S81_Shot6": "L139B02",
      "S83_Shot8": "L139B02",
      "S83_Shot9": "L139B02",
      "S83_Shot10": "L139B02",
      "S88_Shot11": "L142B01",
      "S88_Shot37": "L142B01",
      "S88_Shot45": "L142B02",
      "S86_Shot2": "L144B01",
      "S86_Shot7": "L144B01",
      "S8_Shot12": "L19B01",
      "S8_Shot18": "L19B02",
      "S8_Shot22": "L19B02",
      "S9_Shot1": "L21B01",
      "S9_Shot6": "L21B01",
      "S9_Shot8": "L21B01",
      "S10_Shot3": "L22B01",
      "S10_Shot4": "L22B01",
      "S10_Shot6": "L22B01",
      "S17_Shot12": "L27B01",
      "S15_Shot9": "L27B02",
      "S17_Shot5": "L27B03",
      "S17_Shot9": "L27B03",
      "S15_Shot15": "L27B04",
      "S15_Shot18": "L27B04",
      "S16_Shot4": "L28B01",
      "S16_Shot8": "L28B01",
      "S21_Shot2": "L29B01",
      "S21_Shot6": "L29B01",
      "S18_Shot2": "L30B01",
      "S18_Shot7": "L30B01",
      "S18_Shot8": "L30B01",
      "S53_Shot3": "L30B01",
      "S53_Shot6": "L30B01",
      "S23_Shot1": "L33B01",
      "S23_Shot7": "L33B01",
      "S23_Shot11": "L33B01",
      "S40_Shot2": "L54B01",
      "S40_Shot5": "L54B01",
      "S40_Shot7": "L54B01",
      "S41_Shot18": "L55B01",
      "S41_Shot33": "L55B01",
      "S41_Shot36": "L55B01",
      "S43_Shot8": "L56B01",
      "S43_Shot9": "L56B01",
      "S43_Shot14": "L56B01",
      "S54_Shot4": "L56B01",
      "S54_Shot6": "L56B01",
      "S49_Shot47": "L67B01",
      "S49_Shot16": "L67B02",
      "S49_Shot40": "L67B03",
      "S50_Shot2": "L70B01",
      "S50_Shot7": "L70B01",
      "S50_Shot14": "L70B01",
      "S51_Shot4": "L71B01",
      "S51_Shot22": "L71B02",
      "S51_Shot32": "L72B01",
      "S87_Shot5": "L95B01",
      "S87_Shot6": "L95B01",
      "S87_Shot9": "L95B01"
    },
    "bg_catalog_hash": "0a0af626eababd73",
    "shot_binding_hash": "cd45a8119cd11a83",
    "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": 27,
        "kept_backgrounds_count": 42,
        "dropped_floor_plans_count": 7,
        "dropped_backgrounds_count": 2,
        "dropped_groups_count": 0,
        "dropped_floor_plans": [
          {
            "group_id": "bg_collapsed_department_store",
            "fp_id": "fp_store_basement_food",
            "loc_id": "L109",
            "is_indoor": true,
            "shot_count": 0,
            "referenced_by_kept_background": false,
            "reasons": [
              "no_kept_background_ref"
            ]
          },
          {
            "group_id": "bg_military_hospital",
            "fp_id": "fp_park_patient_room",
            "loc_id": "L114",
            "is_indoor": true,
            "shot_count": 0,
            "referenced_by_kept_background": false,
            "reasons": [
              "no_kept_background_ref"
            ]
          },
          {
            "group_id": "bg_harbor_clinic",
            "fp_id": "fp_clinic_street_front",
            "loc_id": "L126",
            "is_indoor": false,
            "shot_count": 0,
            "referenced_by_kept_background": false,
            "reasons": [
              "no_kept_background_ref"
            ]
          },
          {
            "group_id": "bg_island_research_complex",
            "fp_id": "fp_research_dining",
            "loc_id": "L143",
            "is_indoor": true,
            "shot_count": 0,
            "referenced_by_kept_background": false,
            "reasons": [
              "no_kept_background_ref"
            ]
          },
          {
            "group_id": "bg_island_research_complex",
            "fp_id": "fp_control_room",
            "loc_id": "L149",
            "is_indoor": true,
            "shot_count": 0,
            "referenced_by_kept_background": false,
            "reasons": [
              "no_kept_background_ref"
            ]
          },
          {
            "group_id": "bg_roadside_service_station",
            "fp_id": "fp_service_station_approach",
            "loc_id": "L66",
            "is_indoor": false,
            "shot_count": 0,
            "referenced_by_kept_background": false,
            "reasons": [
              "no_kept_background_ref"
            ]
          },
          {
            "group_id": "bg_roadside_service_station",
            "fp_id": "fp_service_station_mart",
            "loc_id": "L68",
            "is_indoor": true,
            "shot_count": 0,
            "referenced_by_kept_background": false,
            "reasons": [
              "no_kept_background_ref"
            ]
          }
        ],
        "dropped_backgrounds": [
          {
            "loc_id": "L109",
            "space_key_hint": "main",
            "time_phase": "day",
            "state_class": "quiet",
            "surface_role": "interior_room",
            "applies_to_shots": [],
            "reasons": [
              "no_consuming_shot"
            ]
          },
          {
            "loc_id": "L114",
            "space_key_hint": "main",
            "time_phase": "night",
            "state_class": "quiet",
            "surface_role": "interior_room",
            "applies_to_shots": [],
            "reasons": [
              "no_consuming_shot"
            ]
          }
        ],
        "dropped_groups": []
      },
      "location_profile_pre_filter": {
        "bg_island_research_complex": {
          "raw_member_count": 6,
          "kept_member_count": 5,
          "filtered_members": [
            {
              "loc_id": "L152",
              "label": "제주도 연구소 외벽·폭격 지점",
              "shot_count": 0,
              "reason": "no_location_profile"
            }
          ]
        }
      }
    }
  },
  "step_id": "background_master_plan",
  "run_id": "e225ac46-71f3-4720-87f9-458ca5a0b2b4",
  "resolved_model": "gpt",
  "updated_at": "2026-09-20T17:50:16.153455+00:00",
  "project_config_snapshot": {}
}