{
  "status": "completed",
  "applicable_count": 4,
  "completed_count": 4,
  "failed_count": 0,
  "schema_version": 1,
  "config_hash": "e0ce5a21cab5c061",
  "data": {
    "plans": {
      "bg_forest": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_back_alley": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_crime_scene": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_rooftop_villa": {
        "status": "ok",
        "plan": {
          "backgrounds": [
            {
              "applies_to_shots": [
                "S4_Shot1"
              ],
              "bg_id": "bg_rooftop_exterior_day_normal",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_rooftop_exterior"
              ],
              "loc_id": "L04",
              "state_label": "day_normal",
              "sub_location": "rooftop_exterior"
            },
            {
              "applies_to_shots": [
                "S10_Shot4",
                "S10_Shot5"
              ],
              "bg_id": "bg_rooftop_exterior_night_intrusion",
              "depends_on_bg": [
                "bg_rooftop_exterior_day_normal"
              ],
              "depends_on_fp": [
                "fp_rooftop_exterior"
              ],
              "loc_id": "L04",
              "state_label": "night_intrusion_half_open_iron_door_shadow",
              "sub_location": "rooftop_exterior"
            },
            {
              "applies_to_shots": [
                "S17_Shot1"
              ],
              "bg_id": "bg_rooftop_exterior_dawn_lit_window",
              "depends_on_bg": [
                "bg_rooftop_exterior_night_intrusion"
              ],
              "depends_on_fp": [
                "fp_rooftop_exterior"
              ],
              "loc_id": "L04",
              "state_label": "dawn_lit_window_quiet",
              "sub_location": "rooftop_exterior"
            },
            {
              "applies_to_shots": [
                "S11_Shot2",
                "S11_Shot4"
              ],
              "bg_id": "bg_exterior_stairs_yard_night_half_open_door",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_exterior_stairs_yard"
              ],
              "loc_id": "L11",
              "state_label": "night_half_open_rooftop_door",
              "sub_location": "exterior_stairs_yard"
            },
            {
              "applies_to_shots": [
                "S13_Shot1",
                "S13_Shot3",
                "S13_Shot6"
              ],
              "bg_id": "bg_exterior_stairs_yard_night_siren_arrival",
              "depends_on_bg": [
                "bg_exterior_stairs_yard_night_half_open_door"
              ],
              "depends_on_fp": [
                "fp_exterior_stairs_yard"
              ],
              "loc_id": "L11",
              "state_label": "night_siren_police_arrival",
              "sub_location": "exterior_stairs_yard"
            },
            {
              "applies_to_shots": [
                "S5_Shot2",
                "S5_Shot5",
                "S5_Shot7"
              ],
              "bg_id": "bg_living_kitchen_day_normal",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_living_kitchen"
              ],
              "loc_id": "L05",
              "state_label": "day_normal_tv_herbs_tea",
              "sub_location": "living_kitchen"
            },
            {
              "applies_to_shots": [
                "S14_Shot9"
              ],
              "bg_id": "bg_living_kitchen_night_clean_after_report",
              "depends_on_bg": [
                "bg_living_kitchen_day_normal"
              ],
              "depends_on_fp": [
                "fp_living_kitchen"
              ],
              "loc_id": "L05",
              "state_label": "night_clean_after_report",
              "sub_location": "living_kitchen"
            },
            {
              "applies_to_shots": [
                "S18_Shot14"
              ],
              "bg_id": "bg_living_kitchen_dawn_photo_hallucination",
              "depends_on_bg": [
                "bg_living_kitchen_night_clean_after_report"
              ],
              "depends_on_fp": [
                "fp_living_kitchen"
              ],
              "loc_id": "L05",
              "state_label": "dawn_clean_photo_hallucination",
              "sub_location": "living_kitchen"
            },
            {
              "applies_to_shots": [
                "S25_Shot3",
                "S25_Shot8"
              ],
              "bg_id": "bg_living_kitchen_dusk_ransacked_open_window",
              "depends_on_bg": [
                "bg_living_kitchen_dawn_photo_hallucination"
              ],
              "depends_on_fp": [
                "fp_living_kitchen"
              ],
              "loc_id": "L05",
              "state_label": "dusk_ransacked_open_window_fallen_chairs",
              "sub_location": "living_kitchen"
            },
            {
              "applies_to_shots": [
                "S27_Shot1",
                "S27_Shot2"
              ],
              "bg_id": "bg_living_kitchen_dusk_ransacked_windy_door",
              "depends_on_bg": [
                "bg_living_kitchen_dusk_ransacked_open_window"
              ],
              "depends_on_fp": [
                "fp_living_kitchen"
              ],
              "loc_id": "L05",
              "state_label": "dusk_ransacked_windy_door_empty",
              "sub_location": "living_kitchen"
            },
            {
              "applies_to_shots": [
                "S12_Shot6",
                "S12_Shot9"
              ],
              "bg_id": "bg_bedroom_night_blood_curtain_body",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_bedroom"
              ],
              "loc_id": "L05",
              "state_label": "night_blood_footprints_curtain_body",
              "sub_location": "bedroom"
            },
            {
              "applies_to_shots": [
                "S12_Shot16"
              ],
              "bg_id": "bg_bedroom_night_blood_curtain_body_red_mark",
              "depends_on_bg": [
                "bg_bedroom_night_blood_curtain_body"
              ],
              "depends_on_fp": [
                "fp_bedroom"
              ],
              "loc_id": "L05",
              "state_label": "night_blood_curtain_body_red_mark_wall",
              "sub_location": "bedroom"
            },
            {
              "applies_to_shots": [
                "S14_Shot4",
                "S14_Shot5"
              ],
              "bg_id": "bg_bedroom_night_clean_rearranged",
              "depends_on_bg": [
                "bg_bedroom_night_blood_curtain_body_red_mark"
              ],
              "depends_on_fp": [
                "fp_bedroom"
              ],
              "loc_id": "L05",
              "state_label": "night_too_clean_rearranged",
              "sub_location": "bedroom"
            },
            {
              "applies_to_shots": [
                "S25_Shot4"
              ],
              "bg_id": "bg_bedroom_dusk_ransacked_red_mark_photo",
              "depends_on_bg": [
                "bg_bedroom_night_clean_rearranged"
              ],
              "depends_on_fp": [
                "fp_bedroom"
              ],
              "loc_id": "L05",
              "state_label": "dusk_ransacked_red_mark_wall_bloody_photo",
              "sub_location": "bedroom"
            },
            {
              "applies_to_shots": [
                "S18_Shot2"
              ],
              "bg_id": "bg_mother_bedroom_dawn_waiting",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_mother_bedroom"
              ],
              "loc_id": "L05",
              "state_label": "dawn_waiting_after_sleepless_night",
              "sub_location": "mother_bedroom"
            },
            {
              "applies_to_shots": [
                "S18_Shot10"
              ],
              "bg_id": "bg_bathroom_dawn_red_mark_mirror",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_bathroom"
              ],
              "loc_id": "L05",
              "state_label": "dawn_red_mark_mirror_tile",
              "sub_location": "bathroom"
            }
          ],
          "floor_plans": [
            {
              "depends_on_fp": [],
              "fp_id": "fp_rooftop_exterior",
              "scope": "roof terrace with water tank, clothesline, platform, unit facade and iron door",
              "sub_location": "rooftop_exterior"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_exterior_stairs_yard",
              "scope": "villa street front, ground yard, exterior stairs and rooftop landing",
              "sub_location": "exterior_stairs_yard"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_living_kitchen",
              "scope": "small rooftop-unit living room with kitchenette, dining table, TV, window and entry",
              "sub_location": "living_kitchen"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_bedroom",
              "scope": "young resident bedroom with bed, wall, window curtain, backpack and dolls",
              "sub_location": "bedroom"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_mother_bedroom",
              "scope": "main bedroom used for waiting overnight, with bed and access to inner rooms",
              "sub_location": "mother_bedroom"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_bathroom",
              "scope": "compact bathroom with sink, mirror and tiled wall",
              "sub_location": "bathroom"
            }
          ],
          "gen_order": [
            "fp_rooftop_exterior",
            "fp_exterior_stairs_yard",
            "fp_living_kitchen",
            "fp_bedroom",
            "fp_mother_bedroom",
            "fp_bathroom",
            "bg_rooftop_exterior_day_normal",
            "bg_rooftop_exterior_night_intrusion",
            "bg_rooftop_exterior_dawn_lit_window",
            "bg_exterior_stairs_yard_night_half_open_door",
            "bg_exterior_stairs_yard_night_siren_arrival",
            "bg_living_kitchen_day_normal",
            "bg_living_kitchen_night_clean_after_report",
            "bg_living_kitchen_dawn_photo_hallucination",
            "bg_living_kitchen_dusk_ransacked_open_window",
            "bg_living_kitchen_dusk_ransacked_windy_door",
            "bg_bedroom_night_blood_curtain_body",
            "bg_bedroom_night_blood_curtain_body_red_mark",
            "bg_bedroom_night_clean_rearranged",
            "bg_bedroom_dusk_ransacked_red_mark_photo",
            "bg_mother_bedroom_dawn_waiting",
            "bg_bathroom_dawn_red_mark_mirror"
          ],
          "group_id": "bg_rooftop_villa",
          "rationale_summary": "Exterior paths and indoor rooms are split; chained states preserve intrusion, blood, vanished evidence, red marks, and later ransacking continuity."
        }
      },
      "bg_coastal_road": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_animal_shelter_yard": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_commercial_street": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_supermarket": {
        "status": "ok",
        "plan": {
          "backgrounds": [
            {
              "applies_to_shots": [
                "S8_Shot4"
              ],
              "bg_id": "bg_store_interior_dusk_open",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_store_interior"
              ],
              "loc_id": "L09",
              "state_label": "dusk_open",
              "sub_location": "store_interior"
            },
            {
              "applies_to_shots": [
                "S8_Shot5"
              ],
              "bg_id": "bg_store_entrance_exterior_dusk_streetlight",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_store_entrance_exterior"
              ],
              "loc_id": "L10",
              "state_label": "dusk_streetlight_neon",
              "sub_location": "store_entrance_exterior"
            },
            {
              "applies_to_shots": [
                "S19_Shot1",
                "S19_Shot4",
                "S19_Shot6"
              ],
              "bg_id": "bg_store_entrance_exterior_morning_quiet_cctv",
              "depends_on_bg": [
                "bg_store_entrance_exterior_dusk_streetlight"
              ],
              "depends_on_fp": [
                "fp_store_entrance_exterior"
              ],
              "loc_id": "L10",
              "state_label": "morning_quiet_cctv_visible",
              "sub_location": "store_entrance_exterior"
            },
            {
              "applies_to_shots": [
                "S20_Shot2",
                "S20_Shot5"
              ],
              "bg_id": "bg_security_office_day_cctv_dark_footage",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_security_office"
              ],
              "loc_id": "L14",
              "state_label": "day_cctv_dark_footage",
              "sub_location": "security_office"
            }
          ],
          "floor_plans": [
            {
              "depends_on_fp": [],
              "fp_id": "fp_store_interior",
              "scope": "sales floor near supermarket entrance and aisles",
              "sub_location": "store_interior"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_store_entrance_exterior",
              "scope": "front entrance, bicycle area, streetlight, facade CCTV",
              "sub_location": "store_entrance_exterior"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_security_office",
              "scope": "administration and security CCTV monitoring office",
              "sub_location": "security_office"
            }
          ],
          "gen_order": [
            "fp_store_interior",
            "fp_store_entrance_exterior",
            "fp_security_office",
            "bg_store_interior_dusk_open",
            "bg_store_entrance_exterior_dusk_streetlight",
            "bg_store_entrance_exterior_morning_quiet_cctv",
            "bg_security_office_day_cctv_dark_footage"
          ],
          "group_id": "bg_supermarket",
          "rationale_summary": "매장 내부, 입구 외부, CCTV 총무과가 분리됨. 외부는 해질녘/아침 상태로 체인화하고, CCTV 어두운 화면은 사건 단서라 별도 상태화."
        }
      },
      "bg_coastal_bus_stop": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_police_station": {
        "status": "ok",
        "plan": {
          "backgrounds": [
            {
              "applies_to_shots": [
                "S16_Shot3",
                "S16_Shot5"
              ],
              "bg_id": "bg_office_night_duty_normal",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_station_office"
              ],
              "loc_id": "L13",
              "state_label": "night_duty_normal",
              "sub_location": "station_office"
            },
            {
              "applies_to_shots": [
                "S21_Shot5",
                "S21_Shot6"
              ],
              "bg_id": "bg_office_day_evidence_photos_spread",
              "depends_on_bg": [
                "bg_office_night_duty_normal"
              ],
              "depends_on_fp": [
                "fp_station_office"
              ],
              "loc_id": "L13",
              "state_label": "day_evidence_photos_spread",
              "sub_location": "station_office"
            },
            {
              "applies_to_shots": [
                "S21_Shot10"
              ],
              "bg_id": "bg_office_day_location_result_monitor",
              "depends_on_bg": [
                "bg_office_day_evidence_photos_spread"
              ],
              "depends_on_fp": [
                "fp_station_office"
              ],
              "loc_id": "L13",
              "state_label": "day_location_result_monitor",
              "sub_location": "station_office"
            },
            {
              "applies_to_shots": [
                "S22_Shot2"
              ],
              "bg_id": "bg_entrance_day_bicycle_departure",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_station_entrance"
              ],
              "loc_id": "L15",
              "state_label": "day_bicycle_departure",
              "sub_location": "station_entrance"
            }
          ],
          "floor_plans": [
            {
              "depends_on_fp": [],
              "fp_id": "fp_station_office",
              "scope": "detective office with desks, monitors, paperwork, waiting chair",
              "sub_location": "station_office"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_station_entrance",
              "scope": "outdoor police station entrance with bike parking and driveway",
              "sub_location": "station_entrance"
            }
          ],
          "gen_order": [
            "fp_station_office",
            "fp_station_entrance",
            "bg_office_night_duty_normal",
            "bg_office_day_evidence_photos_spread",
            "bg_office_day_location_result_monitor",
            "bg_entrance_day_bicycle_departure"
          ],
          "group_id": "bg_police_station",
          "rationale_summary": "사무실과 외부 입구는 별도 공간. 사무실은 밤 당직, 낮 살인사건 사진, 위치추적 모니터 표시를 플롯 핵심 상태로 분리."
        }
      },
      "bg_pc_room": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_harbor_pier": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_open_sea": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_small_fishing_boat": {
        "status": "ok",
        "plan": {
          "backgrounds": [
            {
              "applies_to_shots": [
                "S28_Shot1",
                "S28_Shot4",
                "S28_Shot5"
              ],
              "bg_id": "bg_deck_dusk_open_sea_normal",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_deck"
              ],
              "loc_id": "L19",
              "state_label": "dusk_open_sea_normal",
              "sub_location": "deck"
            },
            {
              "applies_to_shots": [
                "S29_Shot4",
                "S29_Shot6",
                "S29_Shot11"
              ],
              "bg_id": "bg_wheelhouse_dusk_dark_red_circle_markings",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_wheelhouse"
              ],
              "loc_id": "L20",
              "state_label": "dusk_dark_red_circle_markings",
              "sub_location": "wheelhouse"
            }
          ],
          "floor_plans": [
            {
              "depends_on_fp": [],
              "fp_id": "fp_deck",
              "scope": "small fishing boat exterior deck with open sea sightlines",
              "sub_location": "deck"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_wheelhouse",
              "scope": "compact indoor helm room with windows, controls, and marked walls",
              "sub_location": "wheelhouse"
            }
          ],
          "gen_order": [
            "fp_deck",
            "fp_wheelhouse",
            "bg_deck_dusk_open_sea_normal",
            "bg_wheelhouse_dusk_dark_red_circle_markings"
          ],
          "group_id": "bg_small_fishing_boat",
          "rationale_summary": "Two distinct boat areas need separate plans: exterior deck at dusk and dark wheelhouse. Red circle wall markings are plot-critical for the wheelhouse state."
        }
      }
    }
  },
  "step_id": "background_master_plan",
  "run_id": "8b06c79b-d41e-4426-afbe-4fcc1945bf5d",
  "resolved_model": "gpt",
  "updated_at": "2026-05-07T06:30:27.672866+00:00",
  "project_config_snapshot": {}
}