{
  "status": "completed",
  "applicable_count": 5,
  "completed_count": 5,
  "failed_count": 0,
  "schema_version": 1,
  "config_hash": "e0ce5a21cab5c061",
  "data": {
    "plans": {
      "bg_forest_site": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_urban_alley": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_rooftop_villa_unit": {
        "status": "ok",
        "plan": {
          "backgrounds": [
            {
              "applies_to_shots": [
                "S4_Shot1"
              ],
              "bg_id": "bg_rooftop_exterior_day_overcast_establishing",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_rooftop_exterior"
              ],
              "loc_id": "L03",
              "state_label": "day_overcast_establishing",
              "sub_location": "rooftop_exterior"
            },
            {
              "applies_to_shots": [
                "S10_Shot3",
                "S10_Shot5",
                "S10_Shot6"
              ],
              "bg_id": "bg_rooftop_exterior_night_intrusion_shadow_door_ajar",
              "depends_on_bg": [
                "bg_rooftop_exterior_day_overcast_establishing"
              ],
              "depends_on_fp": [
                "fp_rooftop_exterior"
              ],
              "loc_id": "L03",
              "state_label": "night_intrusion_shadow_door_ajar",
              "sub_location": "rooftop_exterior"
            },
            {
              "applies_to_shots": [
                "S17_Shot2"
              ],
              "bg_id": "bg_rooftop_exterior_predawn_lit_window_black_cat",
              "depends_on_bg": [
                "bg_rooftop_exterior_night_intrusion_shadow_door_ajar"
              ],
              "depends_on_fp": [
                "fp_rooftop_exterior"
              ],
              "loc_id": "L03",
              "state_label": "predawn_lit_window_black_cat",
              "sub_location": "rooftop_exterior"
            },
            {
              "applies_to_shots": [
                "S11_Shot4",
                "S11_Shot5"
              ],
              "bg_id": "bg_villa_stairs_yard_night_bad_smell_half_open_door",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_villa_stairs_yard"
              ],
              "loc_id": "L11",
              "state_label": "night_bad_smell_half_open_door",
              "sub_location": "villa_stairs_yard"
            },
            {
              "applies_to_shots": [
                "S13_Shot2",
                "S13_Shot4",
                "S13_Shot6"
              ],
              "bg_id": "bg_villa_stairs_yard_night_police_siren_arrival",
              "depends_on_bg": [
                "bg_villa_stairs_yard_night_bad_smell_half_open_door"
              ],
              "depends_on_fp": [
                "fp_villa_stairs_yard"
              ],
              "loc_id": "L11",
              "state_label": "night_police_siren_arrival",
              "sub_location": "villa_stairs_yard"
            },
            {
              "applies_to_shots": [
                "S5_Shot2",
                "S5_Shot5",
                "S5_Shot9"
              ],
              "bg_id": "bg_living_kitchen_day_normal_news_herb_tea",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_living_kitchen"
              ],
              "loc_id": "L04",
              "state_label": "day_normal_news_herb_tea",
              "sub_location": "living_kitchen"
            },
            {
              "applies_to_shots": [
                "S14_Shot1",
                "S14_Shot9"
              ],
              "bg_id": "bg_living_kitchen_night_clean_after_disappearance",
              "depends_on_bg": [
                "bg_living_kitchen_day_normal_news_herb_tea"
              ],
              "depends_on_fp": [
                "fp_living_kitchen"
              ],
              "loc_id": "L04",
              "state_label": "night_clean_after_disappearance",
              "sub_location": "living_kitchen"
            },
            {
              "applies_to_shots": [
                "S18_Shot16"
              ],
              "bg_id": "bg_living_kitchen_day_photo_hallucination",
              "depends_on_bg": [
                "bg_living_kitchen_night_clean_after_disappearance"
              ],
              "depends_on_fp": [
                "fp_living_kitchen"
              ],
              "loc_id": "L04",
              "state_label": "day_photo_hallucination",
              "sub_location": "living_kitchen"
            },
            {
              "applies_to_shots": [
                "S25_Shot3"
              ],
              "bg_id": "bg_living_kitchen_dusk_ransacked_footprints_open_window",
              "depends_on_bg": [
                "bg_living_kitchen_day_photo_hallucination"
              ],
              "depends_on_fp": [
                "fp_living_kitchen"
              ],
              "loc_id": "L04",
              "state_label": "dusk_ransacked_footprints_open_window",
              "sub_location": "living_kitchen"
            },
            {
              "applies_to_shots": [
                "S27_Shot3",
                "S27_Shot4"
              ],
              "bg_id": "bg_living_kitchen_dusk_ransacked_windy_door_ajar",
              "depends_on_bg": [
                "bg_living_kitchen_dusk_ransacked_footprints_open_window"
              ],
              "depends_on_fp": [
                "fp_living_kitchen"
              ],
              "loc_id": "L04",
              "state_label": "dusk_ransacked_windy_door_ajar",
              "sub_location": "living_kitchen"
            },
            {
              "applies_to_shots": [
                "S12_Shot6",
                "S12_Shot13",
                "S12_Shot14"
              ],
              "bg_id": "bg_private_bedroom_night_blood_corpse_curtain_red_circle",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_private_bedroom"
              ],
              "loc_id": "L04",
              "state_label": "night_blood_corpse_curtain_red_circle",
              "sub_location": "private_bedroom"
            },
            {
              "applies_to_shots": [
                "S14_Shot5"
              ],
              "bg_id": "bg_private_bedroom_night_impossibly_clean_rearranged",
              "depends_on_bg": [
                "bg_private_bedroom_night_blood_corpse_curtain_red_circle"
              ],
              "depends_on_fp": [
                "fp_private_bedroom"
              ],
              "loc_id": "L04",
              "state_label": "night_impossibly_clean_rearranged",
              "sub_location": "private_bedroom"
            },
            {
              "applies_to_shots": [
                "S25_Shot6",
                "S25_Shot8"
              ],
              "bg_id": "bg_private_bedroom_dusk_ransacked_red_circle_bloody_photo",
              "depends_on_bg": [
                "bg_private_bedroom_night_impossibly_clean_rearranged"
              ],
              "depends_on_fp": [
                "fp_private_bedroom"
              ],
              "loc_id": "L04",
              "state_label": "dusk_ransacked_red_circle_bloody_photo",
              "sub_location": "private_bedroom"
            },
            {
              "applies_to_shots": [
                "S18_Shot2"
              ],
              "bg_id": "bg_main_bedroom_day_waiting_clean",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_main_bedroom"
              ],
              "loc_id": "L04",
              "state_label": "day_waiting_clean",
              "sub_location": "main_bedroom"
            },
            {
              "applies_to_shots": [
                "S18_Shot11"
              ],
              "bg_id": "bg_bathroom_day_mirror_red_circle_hallucination",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_bathroom"
              ],
              "loc_id": "L04",
              "state_label": "day_mirror_red_circle_hallucination",
              "sub_location": "bathroom"
            }
          ],
          "floor_plans": [
            {
              "depends_on_fp": [],
              "fp_id": "fp_rooftop_exterior",
              "scope": "rooftop exterior with water tank, clothesline, iron door, window, parapet",
              "sub_location": "rooftop_exterior"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_villa_stairs_yard",
              "scope": "villa alley, yard, exterior entry, stair route up to rooftop landing",
              "sub_location": "villa_stairs_yard"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_living_kitchen",
              "scope": "small rooftop unit living room, kitchenette, table, entry door and window",
              "sub_location": "living_kitchen"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_private_bedroom",
              "scope": "small private bedroom with bed, curtain, wall, backpack and doll positions",
              "sub_location": "private_bedroom"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_main_bedroom",
              "scope": "main bedroom bed area used for waiting and waking",
              "sub_location": "main_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_villa_stairs_yard",
            "fp_living_kitchen",
            "fp_private_bedroom",
            "fp_main_bedroom",
            "fp_bathroom",
            "bg_rooftop_exterior_day_overcast_establishing",
            "bg_rooftop_exterior_night_intrusion_shadow_door_ajar",
            "bg_rooftop_exterior_predawn_lit_window_black_cat",
            "bg_villa_stairs_yard_night_bad_smell_half_open_door",
            "bg_villa_stairs_yard_night_police_siren_arrival",
            "bg_living_kitchen_day_normal_news_herb_tea",
            "bg_living_kitchen_night_clean_after_disappearance",
            "bg_living_kitchen_day_photo_hallucination",
            "bg_living_kitchen_dusk_ransacked_footprints_open_window",
            "bg_living_kitchen_dusk_ransacked_windy_door_ajar",
            "bg_private_bedroom_night_blood_corpse_curtain_red_circle",
            "bg_private_bedroom_night_impossibly_clean_rearranged",
            "bg_private_bedroom_dusk_ransacked_red_circle_bloody_photo",
            "bg_main_bedroom_day_waiting_clean",
            "bg_bathroom_day_mirror_red_circle_hallucination"
          ],
          "group_id": "bg_rooftop_villa_unit",
          "rationale_summary": "Exterior, stair route, and key interior rooms need separate plans; states track corpse/blood, impossible cleaning, red-circle visions, ransack, and windy empty aftermath."
        }
      },
      "bg_coastal_road": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_animal_shelter": {
        "status": "ok",
        "plan": {
          "backgrounds": [
            {
              "applies_to_shots": [
                "S7_Shot1",
                "S7_Shot4"
              ],
              "bg_id": "bg_kennel_area_day_damp_cages",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_kennel_area"
              ],
              "loc_id": "L06",
              "state_label": "day_damp_cages",
              "sub_location": "kennel_area"
            },
            {
              "applies_to_shots": [
                "S7_Shot7"
              ],
              "bg_id": "bg_grooming_area_day_active",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_grooming_area"
              ],
              "loc_id": "L06",
              "state_label": "day_active",
              "sub_location": "grooming_area"
            }
          ],
          "floor_plans": [
            {
              "depends_on_fp": [],
              "fp_id": "fp_kennel_area",
              "scope": "indoor shelter kennel aisle with wet floor and wire cages",
              "sub_location": "kennel_area"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_grooming_area",
              "scope": "indoor grooming station with table, clippers, supplies, and wash access",
              "sub_location": "grooming_area"
            }
          ],
          "gen_order": [
            "fp_kennel_area",
            "fp_grooming_area",
            "bg_kennel_area_day_damp_cages",
            "bg_grooming_area_day_active"
          ],
          "group_id": "bg_animal_shelter",
          "rationale_summary": "Two functional shelter zones: damp kennel cages for the rottweiler and injection, plus active grooming station for clipping. No plot-critical background state change."
        }
      },
      "bg_busy_street": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_supermarket": {
        "status": "ok",
        "plan": {
          "backgrounds": [
            {
              "applies_to_shots": [
                "S8_Shot3"
              ],
              "bg_id": "bg_store_aisles_dusk_normal",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_store_aisles"
              ],
              "loc_id": "L08",
              "state_label": "dusk_normal",
              "sub_location": "store_aisles"
            },
            {
              "applies_to_shots": [
                "S19_Shot3"
              ],
              "bg_id": "bg_store_aisles_morning_quiet",
              "depends_on_bg": [
                "bg_store_aisles_dusk_normal"
              ],
              "depends_on_fp": [
                "fp_store_aisles"
              ],
              "loc_id": "L08",
              "state_label": "morning_quiet",
              "sub_location": "store_aisles"
            },
            {
              "applies_to_shots": [
                "S8_Shot5"
              ],
              "bg_id": "bg_store_exterior_dusk_wet_phone",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_store_exterior"
              ],
              "loc_id": "L08",
              "state_label": "dusk_wet_phone",
              "sub_location": "store_exterior"
            },
            {
              "applies_to_shots": [
                "S19_Shot5",
                "S19_Shot7"
              ],
              "bg_id": "bg_store_exterior_morning_cctv_corner",
              "depends_on_bg": [
                "bg_store_exterior_dusk_wet_phone"
              ],
              "depends_on_fp": [
                "fp_store_exterior"
              ],
              "loc_id": "L08",
              "state_label": "morning_cctv_corner",
              "sub_location": "store_exterior"
            },
            {
              "applies_to_shots": [
                "S20_Shot1",
                "S20_Shot5"
              ],
              "bg_id": "bg_security_office_day_dark_monitor_cctv_obscured",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_security_office"
              ],
              "loc_id": "L10",
              "state_label": "day_dark_monitor_cctv_obscured",
              "sub_location": "security_office"
            }
          ],
          "floor_plans": [
            {
              "depends_on_fp": [],
              "fp_id": "fp_store_aisles",
              "scope": "large supermarket sales aisles and employee interaction area",
              "sub_location": "store_aisles"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_store_exterior",
              "scope": "supermarket storefront edge with wet pavement and exterior CCTV corner",
              "sub_location": "store_exterior"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_security_office",
              "scope": "small administrative security room with CCTV monitors and staff desk",
              "sub_location": "security_office"
            }
          ],
          "gen_order": [
            "fp_store_aisles",
            "fp_store_exterior",
            "fp_security_office",
            "bg_store_aisles_dusk_normal",
            "bg_store_aisles_morning_quiet",
            "bg_store_exterior_dusk_wet_phone",
            "bg_store_exterior_morning_cctv_corner",
            "bg_security_office_day_dark_monitor_cctv_obscured"
          ],
          "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_office"
              ],
              "loc_id": "L13",
              "state_label": "night_duty_normal",
              "sub_location": "office"
            },
            {
              "applies_to_shots": [
                "S21_Shot2"
              ],
              "bg_id": "bg_office_day_paperwork_busy",
              "depends_on_bg": [
                "bg_office_night_duty_normal"
              ],
              "depends_on_fp": [
                "fp_office"
              ],
              "loc_id": "L13",
              "state_label": "day_paperwork_busy",
              "sub_location": "office"
            },
            {
              "applies_to_shots": [
                "S21_Shot9"
              ],
              "bg_id": "bg_office_day_empty_evidence_photos",
              "depends_on_bg": [
                "bg_office_day_paperwork_busy"
              ],
              "depends_on_fp": [
                "fp_office"
              ],
              "loc_id": "L13",
              "state_label": "day_empty_evidence_photos",
              "sub_location": "office"
            },
            {
              "applies_to_shots": [
                "S21_Shot13"
              ],
              "bg_id": "bg_office_day_empty_monitor_location_result",
              "depends_on_bg": [
                "bg_office_day_empty_evidence_photos"
              ],
              "depends_on_fp": [
                "fp_office"
              ],
              "loc_id": "L13",
              "state_label": "day_empty_monitor_location_result",
              "sub_location": "office"
            },
            {
              "applies_to_shots": [
                "S22_Shot2"
              ],
              "bg_id": "bg_building_front_day_bicycle_departure",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_building_front"
              ],
              "loc_id": "L14",
              "state_label": "day_bicycle_departure",
              "sub_location": "building_front"
            }
          ],
          "floor_plans": [
            {
              "depends_on_fp": [],
              "fp_id": "fp_office",
              "scope": "police office with desks, duty detective area, monitors, and paperwork surfaces",
              "sub_location": "office"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_building_front",
              "scope": "police station front exterior with bicycle parking and departure path",
              "sub_location": "building_front"
            }
          ],
          "gen_order": [
            "fp_office",
            "fp_building_front",
            "bg_office_night_duty_normal",
            "bg_office_day_paperwork_busy",
            "bg_office_day_empty_evidence_photos",
            "bg_office_day_empty_monitor_location_result",
            "bg_building_front_day_bicycle_departure"
          ],
          "group_id": "bg_police_station",
          "rationale_summary": "사무실과 건물 앞은 별도 공간. 사무실은 야간 당직, 주간 서류, 사진 노출, 위치추적 모니터 표시로 plot-critical 상태를 분리."
        }
      },
      "bg_pc_room": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_rocky_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": [
                "S28_Shot4",
                "S28_Shot5",
                "S28_Shot10"
              ],
              "bg_id": "bg_deck_dusk_open_sea",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_deck"
              ],
              "loc_id": "L18",
              "state_label": "dusk_open_sea",
              "sub_location": "deck"
            },
            {
              "applies_to_shots": [
                "S29_Shot4",
                "S29_Shot7",
                "S29_Shot8"
              ],
              "bg_id": "bg_wheelhouse_dusk_circles_red_circle_visible",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_wheelhouse"
              ],
              "loc_id": "L19",
              "state_label": "dusk_circles_red_circle_visible",
              "sub_location": "wheelhouse"
            }
          ],
          "floor_plans": [
            {
              "depends_on_fp": [],
              "fp_id": "fp_deck",
              "scope": "small fishing boat deck with open sea view and wheelhouse entrance",
              "sub_location": "deck"
            },
            {
              "depends_on_fp": [
                "fp_deck"
              ],
              "fp_id": "fp_wheelhouse",
              "scope": "compact wheelhouse interior connected to the deck",
              "sub_location": "wheelhouse"
            }
          ],
          "gen_order": [
            "fp_deck",
            "fp_wheelhouse",
            "bg_deck_dusk_open_sea",
            "bg_wheelhouse_dusk_circles_red_circle_visible"
          ],
          "group_id": "bg_small_fishing_boat",
          "rationale_summary": "갑판과 조타실이 분리되어 2개 평면. 조타실 벽의 많은 원과 붉은 원은 반전 핵심이라 상태에 명시."
        }
      }
    }
  },
  "step_id": "background_master_plan",
  "run_id": "45f1c3fa-8faf-463a-b7e3-f083150ba1d4",
  "resolved_model": "gpt",
  "updated_at": "2026-05-01T07:13:59.058953+00:00"
}