{
  "status": "completed",
  "applicable_count": 5,
  "completed_count": 5,
  "failed_count": 0,
  "schema_version": 1,
  "config_hash": "e0ce5a21cab5c061",
  "data": {
    "plans": {
      "bg_forest": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_urban_back_alley": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_crime_scene_road": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_rooftop_villa_complex": {
        "status": "ok",
        "plan": {
          "backgrounds": [
            {
              "applies_to_shots": [
                "S4_Shot1"
              ],
              "bg_id": "bg_rooftop_yard_day_overcast_establishing",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_rooftop_yard"
              ],
              "loc_id": "L04",
              "state_label": "day_overcast_establishing",
              "sub_location": "rooftop_yard"
            },
            {
              "applies_to_shots": [
                "S10_Shot3",
                "S10_Shot5",
                "S11_Shot3",
                "S11_Shot4"
              ],
              "bg_id": "bg_rooftop_yard_night_intrusion_open_door",
              "depends_on_bg": [
                "bg_rooftop_yard_day_overcast_establishing"
              ],
              "depends_on_fp": [
                "fp_rooftop_yard"
              ],
              "loc_id": "L04",
              "state_label": "night_intrusion_open_door",
              "sub_location": "rooftop_yard"
            },
            {
              "applies_to_shots": [
                "S16_Shot1"
              ],
              "bg_id": "bg_rooftop_yard_dawn_blue_mist_lights_on",
              "depends_on_bg": [
                "bg_rooftop_yard_night_intrusion_open_door"
              ],
              "depends_on_fp": [
                "fp_rooftop_yard"
              ],
              "loc_id": "L04",
              "state_label": "dawn_blue_mist_lights_on",
              "sub_location": "rooftop_yard"
            },
            {
              "applies_to_shots": [
                "S5_Shot3",
                "S5_Shot8",
                "S5_Shot11"
              ],
              "bg_id": "bg_living_kitchen_day_normal",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_living_kitchen"
              ],
              "loc_id": "L05",
              "state_label": "day_normal",
              "sub_location": "living_kitchen"
            },
            {
              "applies_to_shots": [
                "S14_Shot7",
                "S14_Shot10"
              ],
              "bg_id": "bg_living_kitchen_night_clean_after_disappearance",
              "depends_on_bg": [
                "bg_living_kitchen_day_normal"
              ],
              "depends_on_fp": [
                "fp_living_kitchen"
              ],
              "loc_id": "L05",
              "state_label": "night_clean_after_disappearance",
              "sub_location": "living_kitchen"
            },
            {
              "applies_to_shots": [
                "S12_Shot4",
                "S12_Shot7",
                "S12_Shot10"
              ],
              "bg_id": "bg_daughter_bedroom_night_blood_curtain_body_photo",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_daughter_bedroom"
              ],
              "loc_id": "L05",
              "state_label": "night_blood_curtain_body_photo",
              "sub_location": "daughter_bedroom"
            },
            {
              "applies_to_shots": [
                "S14_Shot3"
              ],
              "bg_id": "bg_daughter_bedroom_night_clean_after_disappearance",
              "depends_on_bg": [
                "bg_daughter_bedroom_night_blood_curtain_body_photo"
              ],
              "depends_on_fp": [
                "fp_daughter_bedroom"
              ],
              "loc_id": "L05",
              "state_label": "night_clean_after_disappearance",
              "sub_location": "daughter_bedroom"
            },
            {
              "applies_to_shots": [
                "S17_Shot4"
              ],
              "bg_id": "bg_daughter_bedroom_day_clean_after_disappearance",
              "depends_on_bg": [
                "bg_daughter_bedroom_night_clean_after_disappearance"
              ],
              "depends_on_fp": [
                "fp_daughter_bedroom"
              ],
              "loc_id": "L05",
              "state_label": "day_clean_after_disappearance",
              "sub_location": "daughter_bedroom"
            },
            {
              "applies_to_shots": [
                "S24_Shot4",
                "S24_Shot5",
                "S24_Shot8"
              ],
              "bg_id": "bg_daughter_bedroom_dusk_ransacked_red_circle_photo",
              "depends_on_bg": [
                "bg_daughter_bedroom_day_clean_after_disappearance"
              ],
              "depends_on_fp": [
                "fp_daughter_bedroom"
              ],
              "loc_id": "L05",
              "state_label": "dusk_ransacked_red_circle_photo",
              "sub_location": "daughter_bedroom"
            },
            {
              "applies_to_shots": [
                "S17_Shot2"
              ],
              "bg_id": "bg_main_bedroom_dawn_waiting_clean",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_main_bedroom"
              ],
              "loc_id": "L05",
              "state_label": "dawn_waiting_clean",
              "sub_location": "main_bedroom"
            },
            {
              "applies_to_shots": [
                "S17_Shot9"
              ],
              "bg_id": "bg_bathroom_day_red_circle_mirror",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_bathroom"
              ],
              "loc_id": "L05",
              "state_label": "day_red_circle_mirror",
              "sub_location": "bathroom"
            },
            {
              "applies_to_shots": [
                "S13_Shot2",
                "S13_Shot5",
                "S13_Shot6"
              ],
              "bg_id": "bg_exterior_alley_night_police_arrival",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_exterior_alley"
              ],
              "loc_id": "L13",
              "state_label": "night_police_arrival",
              "sub_location": "exterior_alley"
            }
          ],
          "floor_plans": [
            {
              "depends_on_fp": [],
              "fp_id": "fp_rooftop_yard",
              "scope": "rooftop yard with iron door, window, water tank, clothesline",
              "sub_location": "rooftop_yard"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_living_kitchen",
              "scope": "small apartment living room and kitchenette with table and TV",
              "sub_location": "living_kitchen"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_daughter_bedroom",
              "scope": "daughter bedroom with bed, curtain, window, wall, backpack area",
              "sub_location": "daughter_bedroom"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_main_bedroom",
              "scope": "main bedroom where daughter waits after the incident",
              "sub_location": "main_bedroom"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_bathroom",
              "scope": "small bathroom with sink, mirror, and rear wall",
              "sub_location": "bathroom"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_exterior_alley",
              "scope": "outer alley in front of villa with police car stopping area",
              "sub_location": "exterior_alley"
            }
          ],
          "gen_order": [
            "fp_rooftop_yard",
            "fp_living_kitchen",
            "fp_daughter_bedroom",
            "fp_main_bedroom",
            "fp_bathroom",
            "fp_exterior_alley",
            "bg_rooftop_yard_day_overcast_establishing",
            "bg_rooftop_yard_night_intrusion_open_door",
            "bg_rooftop_yard_dawn_blue_mist_lights_on",
            "bg_living_kitchen_day_normal",
            "bg_living_kitchen_night_clean_after_disappearance",
            "bg_daughter_bedroom_night_blood_curtain_body_photo",
            "bg_daughter_bedroom_night_clean_after_disappearance",
            "bg_daughter_bedroom_day_clean_after_disappearance",
            "bg_daughter_bedroom_dusk_ransacked_red_circle_photo",
            "bg_main_bedroom_dawn_waiting_clean",
            "bg_bathroom_day_red_circle_mirror",
            "bg_exterior_alley_night_police_arrival"
          ],
          "group_id": "bg_rooftop_villa_complex",
          "rationale_summary": "Rooftop, alley, and key interior rooms need separate plans. Bedroom chain preserves blood, vanished-clean state, and later red-circle photo continuity."
        }
      },
      "bg_coastal_road_stop": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_animal_clinic_shelter": {
        "status": "ok",
        "plan": {
          "backgrounds": [
            {
              "applies_to_shots": [
                "S7_Shot1",
                "S7_Shot2"
              ],
              "bg_id": "bg_kennel_row_day_agitated_cages",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_kennel_row"
              ],
              "loc_id": "L07",
              "state_label": "day_agitated_cages",
              "sub_location": "kennel_row"
            },
            {
              "applies_to_shots": [
                "S7_Shot6"
              ],
              "bg_id": "bg_grooming_station_day_care_prep",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_grooming_station"
              ],
              "loc_id": "L07",
              "state_label": "day_care_prep",
              "sub_location": "grooming_station"
            }
          ],
          "floor_plans": [
            {
              "depends_on_fp": [],
              "fp_id": "fp_kennel_row",
              "scope": "animal shelter kennel row with metal cages and exam access",
              "sub_location": "kennel_row"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_grooming_station",
              "scope": "clinic grooming and care station with table, tools, wash area",
              "sub_location": "grooming_station"
            }
          ],
          "gen_order": [
            "fp_kennel_row",
            "fp_grooming_station",
            "bg_kennel_row_day_agitated_cages",
            "bg_grooming_station_day_care_prep"
          ],
          "group_id": "bg_animal_clinic_shelter",
          "rationale_summary": "Kennel confrontation and grooming care are distinct functional sub-rooms, so two plans and one daytime state background for each."
        }
      },
      "bg_night_market_alley": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_big_box_store": {
        "status": "ok",
        "plan": {
          "backgrounds": [
            {
              "applies_to_shots": [
                "S8_Shot1",
                "S8_Shot5"
              ],
              "bg_id": "bg_store_exterior_dusk_neon_busy",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_store_exterior"
              ],
              "loc_id": "L10",
              "state_label": "dusk_neon_busy_phone_no_answer",
              "sub_location": "store_exterior"
            },
            {
              "applies_to_shots": [
                "S18_Shot4",
                "S18_Shot5"
              ],
              "bg_id": "bg_store_exterior_morning_cctv_wall",
              "depends_on_bg": [
                "bg_store_exterior_dusk_neon_busy"
              ],
              "depends_on_fp": [
                "fp_store_exterior"
              ],
              "loc_id": "L10",
              "state_label": "morning_quiet_cctv_wall_checked",
              "sub_location": "store_exterior"
            },
            {
              "applies_to_shots": [
                "S19_Shot4",
                "S19_Shot5"
              ],
              "bg_id": "bg_security_room_day_cctv_dark_segment",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_security_room"
              ],
              "loc_id": "L16",
              "state_label": "day_cctv_playback_dark_segment",
              "sub_location": "security_room"
            }
          ],
          "floor_plans": [
            {
              "depends_on_fp": [],
              "fp_id": "fp_store_exterior",
              "scope": "store facade, entrance, bike parking, adjacent neon street, and CCTV wall zone",
              "sub_location": "store_exterior"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_security_room",
              "scope": "compact CCTV review office with monitor desk and staff seating",
              "sub_location": "security_room"
            }
          ],
          "gen_order": [
            "fp_store_exterior",
            "fp_security_room",
            "bg_store_exterior_dusk_neon_busy",
            "bg_store_exterior_morning_cctv_wall",
            "bg_security_room_day_cctv_dark_segment"
          ],
          "group_id": "bg_big_box_store",
          "rationale_summary": "마트 외부 접근부는 해질녘 번화가와 아침 CCTV 확인 상태로 체인화하고, 보안실은 CCTV 특정 구간이 어두운 상태를 plot-critical로 분리."
        }
      },
      "bg_police_station": {
        "status": "ok",
        "plan": {
          "backgrounds": [
            {
              "applies_to_shots": [
                "S15_Shot4",
                "S15_Shot5",
                "S15_Shot6"
              ],
              "bg_id": "bg_station_office_night_duty_dim",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_station_office"
              ],
              "loc_id": "L15",
              "state_label": "night_duty_dim",
              "sub_location": "station_office"
            },
            {
              "applies_to_shots": [
                "S20_Shot6",
                "S20_Shot7",
                "S20_Shot11"
              ],
              "bg_id": "bg_station_office_day_case_files_monitor_alert",
              "depends_on_bg": [
                "bg_station_office_night_duty_dim"
              ],
              "depends_on_fp": [
                "fp_station_office"
              ],
              "loc_id": "L15",
              "state_label": "day_case_files_monitor_alert",
              "sub_location": "station_office"
            },
            {
              "applies_to_shots": [
                "S21_Shot2"
              ],
              "bg_id": "bg_station_exterior_road_day_bicycle_departure",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_station_exterior_road"
              ],
              "loc_id": "L17",
              "state_label": "day_bicycle_departure",
              "sub_location": "station_exterior_road"
            }
          ],
          "floor_plans": [
            {
              "depends_on_fp": [],
              "fp_id": "fp_station_office",
              "scope": "police station office with desks, door, windows, duty computer",
              "sub_location": "station_office"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_station_exterior_road",
              "scope": "road and bicycle parking area outside police station",
              "sub_location": "station_exterior_road"
            }
          ],
          "gen_order": [
            "fp_station_office",
            "fp_station_exterior_road",
            "bg_station_office_night_duty_dim",
            "bg_station_office_day_case_files_monitor_alert",
            "bg_station_exterior_road_day_bicycle_departure"
          ],
          "group_id": "bg_police_station",
          "rationale_summary": "Office needs night duty and day evidence/monitor-alert states; exterior road is separate for bicycle departure."
        }
      },
      "bg_pc_room": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_foggy_harbor": {
        "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": [
                "S26_Shot4",
                "S26_Shot6",
                "S26_Shot11"
              ],
              "bg_id": "bg_deck_dusk_open_sea",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_deck"
              ],
              "loc_id": "L21",
              "state_label": "dusk_open_sea",
              "sub_location": "deck"
            },
            {
              "applies_to_shots": [
                "S27_Shot3",
                "S27_Shot5",
                "S27_Shot8"
              ],
              "bg_id": "bg_wheelhouse_dusk_red_circle_markings",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_wheelhouse"
              ],
              "loc_id": "L22",
              "state_label": "dusk_red_circle_markings",
              "sub_location": "wheelhouse"
            }
          ],
          "floor_plans": [
            {
              "depends_on_fp": [],
              "fp_id": "fp_deck",
              "scope": "small fishing boat exterior deck with open sea and wheelhouse doorway",
              "sub_location": "deck"
            },
            {
              "depends_on_fp": [
                "fp_deck"
              ],
              "fp_id": "fp_wheelhouse",
              "scope": "compact boat wheelhouse interior with controls and marked walls",
              "sub_location": "wheelhouse"
            }
          ],
          "gen_order": [
            "fp_deck",
            "fp_wheelhouse",
            "bg_deck_dusk_open_sea",
            "bg_wheelhouse_dusk_red_circle_markings"
          ],
          "group_id": "bg_small_fishing_boat",
          "rationale_summary": "Two connected sub-locations: deck and wheelhouse. Dusk deck covers sea/doorway action; wheelhouse state preserves plot-critical red circle wall markings."
        }
      }
    }
  },
  "step_id": "background_master_plan",
  "run_id": "97f98e56-3b09-4d40-b037-764687a84ba7",
  "resolved_model": "gpt",
  "updated_at": "2026-04-30T13:03:47.497876+00:00"
}