{
  "status": "completed",
  "applicable_count": 5,
  "completed_count": 5,
  "failed_count": 0,
  "schema_version": 1,
  "config_hash": "e0ce5a21cab5c061",
  "data": {
    "plans": {
      "bg_rooftop_villa": {
        "status": "ok",
        "plan": {
          "backgrounds": [
            {
              "applies_to_shots": [
                "S4_Shot1"
              ],
              "bg_id": "cb_rooftop_day_establishing",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_rooftop_outside"
              ],
              "loc_id": "L03",
              "state_label": "day_establishing",
              "sub_location": "rooftop_outside"
            },
            {
              "applies_to_shots": [
                "S10_Shot3",
                "S10_Shot5",
                "S10_Shot6"
              ],
              "bg_id": "cb_rooftop_night_intrusion_door_shadow",
              "depends_on_bg": [
                "cb_rooftop_day_establishing"
              ],
              "depends_on_fp": [
                "fp_rooftop_outside"
              ],
              "loc_id": "L03",
              "state_label": "night_intrusion_door_shadow",
              "sub_location": "rooftop_outside"
            },
            {
              "applies_to_shots": [
                "S17_Shot2"
              ],
              "bg_id": "cb_rooftop_predawn_lit_window_cat",
              "depends_on_bg": [
                "cb_rooftop_night_intrusion_door_shadow"
              ],
              "depends_on_fp": [
                "fp_rooftop_outside"
              ],
              "loc_id": "L03",
              "state_label": "predawn_lit_window_cat",
              "sub_location": "rooftop_outside"
            },
            {
              "applies_to_shots": [
                "S11_Shot4",
                "S11_Shot5"
              ],
              "bg_id": "cb_villa_stairs_night_arrival_smell_door_half_open",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_villa_exterior_stairs"
              ],
              "loc_id": "L11",
              "state_label": "night_arrival_smell_door_half_open",
              "sub_location": "villa_exterior_stairs"
            },
            {
              "applies_to_shots": [
                "S13_Shot2",
                "S13_Shot4",
                "S13_Shot6"
              ],
              "bg_id": "cb_villa_stairs_night_police_lights",
              "depends_on_bg": [
                "cb_villa_stairs_night_arrival_smell_door_half_open"
              ],
              "depends_on_fp": [
                "fp_villa_exterior_stairs"
              ],
              "loc_id": "L11",
              "state_label": "night_police_lights",
              "sub_location": "villa_exterior_stairs"
            },
            {
              "applies_to_shots": [
                "S5_Shot2",
                "S5_Shot5",
                "S5_Shot9"
              ],
              "bg_id": "cb_living_day_tv_herbs",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_living_kitchen_entry"
              ],
              "loc_id": "L04",
              "state_label": "day_tv_herbs",
              "sub_location": "living_kitchen_entry"
            },
            {
              "applies_to_shots": [
                "S14_Shot1",
                "S14_Shot9"
              ],
              "bg_id": "cb_living_night_clean_after_disappearance",
              "depends_on_bg": [
                "cb_living_day_tv_herbs"
              ],
              "depends_on_fp": [
                "fp_living_kitchen_entry"
              ],
              "loc_id": "L04",
              "state_label": "night_clean_after_disappearance",
              "sub_location": "living_kitchen_entry"
            },
            {
              "applies_to_shots": [
                "S18_Shot16"
              ],
              "bg_id": "cb_living_day_photo_hallucination",
              "depends_on_bg": [
                "cb_living_night_clean_after_disappearance"
              ],
              "depends_on_fp": [
                "fp_living_kitchen_entry"
              ],
              "loc_id": "L04",
              "state_label": "day_photo_hallucination",
              "sub_location": "living_kitchen_entry"
            },
            {
              "applies_to_shots": [
                "S25_Shot3",
                "S25_Shot8",
                "S27_Shot3",
                "S27_Shot4"
              ],
              "bg_id": "cb_living_dusk_ransacked_open_window",
              "depends_on_bg": [
                "cb_living_day_photo_hallucination"
              ],
              "depends_on_fp": [
                "fp_living_kitchen_entry"
              ],
              "loc_id": "L04",
              "state_label": "dusk_ransacked_open_window",
              "sub_location": "living_kitchen_entry"
            },
            {
              "applies_to_shots": [
                "S12_Shot6",
                "S12_Shot13",
                "S12_Shot14"
              ],
              "bg_id": "cb_daughter_bedroom_night_blood_body_curtain_red_circle",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_daughter_bedroom"
              ],
              "loc_id": "L04",
              "state_label": "night_blood_body_curtain_red_circle",
              "sub_location": "daughter_bedroom"
            },
            {
              "applies_to_shots": [
                "S14_Shot5"
              ],
              "bg_id": "cb_daughter_bedroom_night_clean_no_body_shifted_items",
              "depends_on_bg": [
                "cb_daughter_bedroom_night_blood_body_curtain_red_circle"
              ],
              "depends_on_fp": [
                "fp_daughter_bedroom"
              ],
              "loc_id": "L04",
              "state_label": "night_clean_no_body_shifted_items",
              "sub_location": "daughter_bedroom"
            },
            {
              "applies_to_shots": [
                "S25_Shot6"
              ],
              "bg_id": "cb_daughter_bedroom_dusk_ransacked_red_circle_bloody_photo",
              "depends_on_bg": [
                "cb_daughter_bedroom_night_clean_no_body_shifted_items"
              ],
              "depends_on_fp": [
                "fp_daughter_bedroom"
              ],
              "loc_id": "L04",
              "state_label": "dusk_ransacked_red_circle_bloody_photo",
              "sub_location": "daughter_bedroom"
            },
            {
              "applies_to_shots": [
                "S18_Shot2"
              ],
              "bg_id": "cb_main_bedroom_day_waiting",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_main_bedroom"
              ],
              "loc_id": "L04",
              "state_label": "day_waiting",
              "sub_location": "main_bedroom"
            },
            {
              "applies_to_shots": [
                "S18_Shot11"
              ],
              "bg_id": "cb_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_outside",
              "scope": "rooftop exterior with water tank, clothesline, parapet, metal entry door",
              "sub_location": "rooftop_outside"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_villa_exterior_stairs",
              "scope": "alley, yard, multi-unit villa stairs leading to rooftop",
              "sub_location": "villa_exterior_stairs"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_living_kitchen_entry",
              "scope": "small rooftop unit entry, living room, table, kitchenette, window",
              "sub_location": "living_kitchen_entry"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_daughter_bedroom",
              "scope": "small bedroom with bed, wall, window and curtain hiding corner",
              "sub_location": "daughter_bedroom"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_main_bedroom",
              "scope": "main bedroom bed area",
              "sub_location": "main_bedroom"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_bathroom",
              "scope": "compact tiled bathroom with mirror and sink",
              "sub_location": "bathroom"
            }
          ],
          "gen_order": [
            "fp_rooftop_outside",
            "fp_villa_exterior_stairs",
            "fp_living_kitchen_entry",
            "fp_daughter_bedroom",
            "fp_main_bedroom",
            "fp_bathroom",
            "cb_rooftop_day_establishing",
            "cb_rooftop_night_intrusion_door_shadow",
            "cb_rooftop_predawn_lit_window_cat",
            "cb_villa_stairs_night_arrival_smell_door_half_open",
            "cb_villa_stairs_night_police_lights",
            "cb_living_day_tv_herbs",
            "cb_living_night_clean_after_disappearance",
            "cb_living_day_photo_hallucination",
            "cb_living_dusk_ransacked_open_window",
            "cb_daughter_bedroom_night_blood_body_curtain_red_circle",
            "cb_daughter_bedroom_night_clean_no_body_shifted_items",
            "cb_daughter_bedroom_dusk_ransacked_red_circle_bloody_photo",
            "cb_main_bedroom_day_waiting",
            "cb_bathroom_day_mirror_red_circle_hallucination"
          ],
          "group_id": "bg_rooftop_villa",
          "rationale_summary": "외부 2곳과 내부 주요 방들을 분리. 침입, 혈흔과 시신, 사라진 흔적, 환시, 난장판 상태를 plot-critical state로 체인화."
        }
      },
      "bg_large_mart": {
        "status": "ok",
        "plan": {
          "backgrounds": [
            {
              "applies_to_shots": [
                "S8_Shot3"
              ],
              "bg_id": "bg_sales_floor_dusk_busy",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_sales_floor"
              ],
              "loc_id": "L08",
              "state_label": "dusk_busy",
              "sub_location": "sales_floor"
            },
            {
              "applies_to_shots": [
                "S19_Shot3"
              ],
              "bg_id": "bg_sales_floor_morning_quiet",
              "depends_on_bg": [
                "bg_sales_floor_dusk_busy"
              ],
              "depends_on_fp": [
                "fp_sales_floor"
              ],
              "loc_id": "L08",
              "state_label": "morning_quiet",
              "sub_location": "sales_floor"
            },
            {
              "applies_to_shots": [
                "S8_Shot5"
              ],
              "bg_id": "bg_exterior_dusk_wet_neon_phone",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_exterior"
              ],
              "loc_id": "L09",
              "state_label": "dusk_wet_neon",
              "sub_location": "exterior_entrance"
            },
            {
              "applies_to_shots": [
                "S19_Shot5",
                "S19_Shot7"
              ],
              "bg_id": "bg_exterior_morning_cctv_wall",
              "depends_on_bg": [
                "bg_exterior_dusk_wet_neon_phone"
              ],
              "depends_on_fp": [
                "fp_exterior"
              ],
              "loc_id": "L09",
              "state_label": "morning_cctv_wall",
              "sub_location": "exterior_entrance"
            },
            {
              "applies_to_shots": [
                "S20_Shot1",
                "S20_Shot5"
              ],
              "bg_id": "bg_security_office_day_dark_cctv_playback",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_security_office"
              ],
              "loc_id": "L10",
              "state_label": "day_dark_cctv_playback",
              "sub_location": "security_office"
            }
          ],
          "floor_plans": [
            {
              "depends_on_fp": [],
              "fp_id": "fp_sales_floor",
              "scope": "large mart sales floor aisles and display shelves",
              "sub_location": "sales_floor"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_exterior",
              "scope": "mart entrance and exterior wall with visible cctv coverage",
              "sub_location": "exterior_entrance"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_security_office",
              "scope": "small back office security room with cctv monitors",
              "sub_location": "security_office"
            }
          ],
          "gen_order": [
            "fp_sales_floor",
            "fp_exterior",
            "fp_security_office",
            "bg_sales_floor_dusk_busy",
            "bg_sales_floor_morning_quiet",
            "bg_exterior_dusk_wet_neon_phone",
            "bg_exterior_morning_cctv_wall",
            "bg_security_office_day_dark_cctv_playback"
          ],
          "group_id": "bg_large_mart",
          "rationale_summary": "마트 매장, 외부 CCTV 위치, 보안실은 분리 공간. 매장은 저녁/이른 아침, 외부는 젖은 저녁/아침 CCTV 확인으로 상태를 구분."
        }
      },
      "bg_police_station": {
        "status": "ok",
        "plan": {
          "backgrounds": [
            {
              "applies_to_shots": [
                "S16_Shot3",
                "S16_Shot5"
              ],
              "bg_id": "bg_office_night_duty",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_office"
              ],
              "loc_id": "L13",
              "state_label": "night_duty_quiet",
              "sub_location": "office"
            },
            {
              "applies_to_shots": [
                "S21_Shot2"
              ],
              "bg_id": "bg_office_day_forms",
              "depends_on_bg": [
                "bg_office_night_duty"
              ],
              "depends_on_fp": [
                "fp_office"
              ],
              "loc_id": "L13",
              "state_label": "day_missing_report_forms",
              "sub_location": "office"
            },
            {
              "applies_to_shots": [
                "S21_Shot9"
              ],
              "bg_id": "bg_office_day_murder_photos",
              "depends_on_bg": [
                "bg_office_day_forms"
              ],
              "depends_on_fp": [
                "fp_office"
              ],
              "loc_id": "L13",
              "state_label": "day_empty_desk_murder_photos_spread",
              "sub_location": "office"
            },
            {
              "applies_to_shots": [
                "S21_Shot13"
              ],
              "bg_id": "bg_office_day_location_monitor",
              "depends_on_bg": [
                "bg_office_day_murder_photos"
              ],
              "depends_on_fp": [
                "fp_office"
              ],
              "loc_id": "L13",
              "state_label": "day_empty_location_result_monitor",
              "sub_location": "office"
            },
            {
              "applies_to_shots": [
                "S22_Shot2"
              ],
              "bg_id": "bg_building_front_day_bicycle",
              "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 detective desks, monitors, forms, and waiting chair",
              "sub_location": "office"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_building_front",
              "scope": "police station front exterior with bike parking and driveway",
              "sub_location": "building_front"
            }
          ],
          "gen_order": [
            "fp_office",
            "fp_building_front",
            "bg_office_night_duty",
            "bg_office_day_forms",
            "bg_office_day_murder_photos",
            "bg_office_day_location_monitor",
            "bg_building_front_day_bicycle"
          ],
          "group_id": "bg_police_station",
          "rationale_summary": "Separate office and exterior. Office states track night duty, day forms, exposed murder photos, and GPS monitor result for plot continuity."
        }
      },
      "bg_small_fishing_boat": {
        "status": "ok",
        "plan": {
          "backgrounds": [
            {
              "applies_to_shots": [
                "S28_Shot4",
                "S28_Shot5",
                "S28_Shot10"
              ],
              "bg_id": "cb_deck_dusk_at_sea",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_deck"
              ],
              "loc_id": "L18",
              "state_label": "dusk_at_sea",
              "sub_location": "deck"
            },
            {
              "applies_to_shots": [
                "S29_Shot4"
              ],
              "bg_id": "cb_wheelhouse_dusk_normal",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_wheelhouse"
              ],
              "loc_id": "L19",
              "state_label": "dusk_normal",
              "sub_location": "wheelhouse"
            },
            {
              "applies_to_shots": [
                "S29_Shot7",
                "S29_Shot8"
              ],
              "bg_id": "cb_wheelhouse_dusk_red_circle_revealed",
              "depends_on_bg": [
                "cb_wheelhouse_dusk_normal"
              ],
              "depends_on_fp": [
                "fp_wheelhouse"
              ],
              "loc_id": "L19",
              "state_label": "dusk_red_circle_revealed",
              "sub_location": "wheelhouse"
            }
          ],
          "floor_plans": [
            {
              "depends_on_fp": [],
              "fp_id": "fp_deck",
              "scope": "small fishing boat open deck with wheelhouse entrance",
              "sub_location": "deck"
            },
            {
              "depends_on_fp": [
                "fp_deck"
              ],
              "fp_id": "fp_wheelhouse",
              "scope": "compact wheelhouse interior connected to deck entrance",
              "sub_location": "wheelhouse"
            }
          ],
          "gen_order": [
            "fp_deck",
            "fp_wheelhouse",
            "cb_deck_dusk_at_sea",
            "cb_wheelhouse_dusk_normal",
            "cb_wheelhouse_dusk_red_circle_revealed"
          ],
          "group_id": "bg_small_fishing_boat",
          "rationale_summary": "갑판과 조타실은 별도 공간. 조타실은 일반 대화 상태 후 벽의 붉은 원이 부각되는 plot-critical 상태를 체인으로 분리."
        }
      },
      "bg_animal_shelter": {
        "status": "ok",
        "plan": {
          "backgrounds": [
            {
              "applies_to_shots": [
                "S7_Shot1",
                "S7_Shot4"
              ],
              "bg_id": "bg_kennel_area_day_damp",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_kennel_area"
              ],
              "loc_id": "L06",
              "state_label": "day_damp_caged",
              "sub_location": "kennel_area"
            },
            {
              "applies_to_shots": [
                "S7_Shot7"
              ],
              "bg_id": "bg_grooming_station_day_busy",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_grooming_station"
              ],
              "loc_id": "L06",
              "state_label": "day_busy_grooming",
              "sub_location": "grooming_station"
            }
          ],
          "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_station",
              "scope": "indoor grooming work area with trim table, bath, and supplies",
              "sub_location": "grooming_station"
            }
          ],
          "gen_order": [
            "fp_kennel_area",
            "fp_grooming_station",
            "bg_kennel_area_day_damp",
            "bg_grooming_station_day_busy"
          ],
          "group_id": "bg_animal_shelter",
          "rationale_summary": "Kennel shots need damp caged shelter area; grooming shot needs separate work station. No state change chain needed beyond day work conditions."
        }
      },
      "bg_forest_site": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_urban_back_alley": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_coastal_road": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_busy_street": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_coastal_bus_stop": {
        "status": "prev_shot_only",
        "plan": null
      },
      "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
      }
    }
  },
  "step_id": "background_master_plan",
  "run_id": "e91bd7d8-9ddf-4d79-a554-77a68687baad",
  "resolved_model": "gpt",
  "updated_at": "2026-05-01T02:48:42.026572+00:00"
}