{
  "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_unit": {
        "status": "ok",
        "plan": {
          "backgrounds": [
            {
              "applies_to_shots": [
                "S4_Shot1"
              ],
              "bg_id": "bg_rooftop_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_night_intrusion_shadow",
              "depends_on_bg": [
                "bg_rooftop_day_normal"
              ],
              "depends_on_fp": [
                "fp_rooftop_exterior"
              ],
              "loc_id": "L04",
              "state_label": "night_intrusion_shadow",
              "sub_location": "rooftop_exterior"
            },
            {
              "applies_to_shots": [
                "S17_Shot1"
              ],
              "bg_id": "bg_rooftop_dawn_lit_window",
              "depends_on_bg": [
                "bg_rooftop_night_intrusion_shadow"
              ],
              "depends_on_fp": [
                "fp_rooftop_exterior"
              ],
              "loc_id": "L04",
              "state_label": "dawn_lit_window",
              "sub_location": "rooftop_exterior"
            },
            {
              "applies_to_shots": [
                "S11_Shot2",
                "S11_Shot4",
                "S13_Shot1"
              ],
              "bg_id": "bg_exterior_stairs_night_half_open_door",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_exterior_stairs_yard"
              ],
              "loc_id": "L11",
              "state_label": "night_half_open_door",
              "sub_location": "exterior_stairs_yard"
            },
            {
              "applies_to_shots": [
                "S13_Shot3",
                "S13_Shot6"
              ],
              "bg_id": "bg_exterior_stairs_night_police_arrival",
              "depends_on_bg": [
                "bg_exterior_stairs_night_half_open_door"
              ],
              "depends_on_fp": [
                "fp_exterior_stairs_yard"
              ],
              "loc_id": "L11",
              "state_label": "night_police_arrival",
              "sub_location": "exterior_stairs_yard"
            },
            {
              "applies_to_shots": [
                "S5_Shot2",
                "S5_Shot5",
                "S5_Shot7"
              ],
              "bg_id": "bg_living_room_day_cooking_news",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_living_room"
              ],
              "loc_id": "L05",
              "state_label": "day_cooking_news",
              "sub_location": "living_room"
            },
            {
              "applies_to_shots": [
                "S14_Shot9"
              ],
              "bg_id": "bg_living_room_night_overcleaned",
              "depends_on_bg": [
                "bg_living_room_day_cooking_news"
              ],
              "depends_on_fp": [
                "fp_living_room"
              ],
              "loc_id": "L05",
              "state_label": "night_overcleaned",
              "sub_location": "living_room"
            },
            {
              "applies_to_shots": [
                "S18_Shot14"
              ],
              "bg_id": "bg_living_room_dawn_photo_vision",
              "depends_on_bg": [
                "bg_living_room_night_overcleaned"
              ],
              "depends_on_fp": [
                "fp_living_room"
              ],
              "loc_id": "L05",
              "state_label": "dawn_photo_vision",
              "sub_location": "living_room"
            },
            {
              "applies_to_shots": [
                "S25_Shot3",
                "S27_Shot1",
                "S27_Shot2"
              ],
              "bg_id": "bg_living_room_dusk_ransacked_open_window",
              "depends_on_bg": [
                "bg_living_room_dawn_photo_vision"
              ],
              "depends_on_fp": [
                "fp_living_room"
              ],
              "loc_id": "L05",
              "state_label": "dusk_ransacked_open_window",
              "sub_location": "living_room"
            },
            {
              "applies_to_shots": [
                "S12_Shot6",
                "S12_Shot9",
                "S12_Shot16"
              ],
              "bg_id": "bg_bedroom_night_blood_curtain_body_red_circle",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_bedroom"
              ],
              "loc_id": "L05",
              "state_label": "night_blood_curtain_body_red_circle",
              "sub_location": "bedroom"
            },
            {
              "applies_to_shots": [
                "S14_Shot4",
                "S14_Shot5"
              ],
              "bg_id": "bg_bedroom_night_overcleaned_shifted_items",
              "depends_on_bg": [
                "bg_bedroom_night_blood_curtain_body_red_circle"
              ],
              "depends_on_fp": [
                "fp_bedroom"
              ],
              "loc_id": "L05",
              "state_label": "night_overcleaned_shifted_items",
              "sub_location": "bedroom"
            },
            {
              "applies_to_shots": [
                "S25_Shot4"
              ],
              "bg_id": "bg_bedroom_dusk_ransacked_red_circle_photo",
              "depends_on_bg": [
                "bg_bedroom_night_overcleaned_shifted_items"
              ],
              "depends_on_fp": [
                "fp_bedroom"
              ],
              "loc_id": "L05",
              "state_label": "dusk_ransacked_red_circle_photo",
              "sub_location": "bedroom"
            },
            {
              "applies_to_shots": [
                "S18_Shot10"
              ],
              "bg_id": "bg_bathroom_dawn_mirror_red_circle",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_bathroom"
              ],
              "loc_id": "L05",
              "state_label": "dawn_mirror_red_circle",
              "sub_location": "bathroom"
            },
            {
              "applies_to_shots": [
                "S18_Shot2"
              ],
              "bg_id": "bg_mother_bedroom_dawn_waiting_clean",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_mother_bedroom"
              ],
              "loc_id": "L05",
              "state_label": "dawn_waiting_clean",
              "sub_location": "mother_bedroom"
            },
            {
              "applies_to_shots": [
                "S25_Shot8"
              ],
              "bg_id": "bg_entryway_dusk_ransacked_exit",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_entryway"
              ],
              "loc_id": "L05",
              "state_label": "dusk_ransacked_exit",
              "sub_location": "entryway"
            }
          ],
          "floor_plans": [
            {
              "depends_on_fp": [],
              "fp_id": "fp_rooftop_exterior",
              "scope": "rooftop terrace exterior with water tank, clothesline, iron door and window",
              "sub_location": "rooftop_exterior"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_exterior_stairs_yard",
              "scope": "multi-unit villa stairs, small yard, street approach and rooftop stair landing",
              "sub_location": "exterior_stairs_yard"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_living_room",
              "scope": "compact rooftop unit living room with kitchenette, table, TV and small window",
              "sub_location": "living_room"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_bedroom",
              "scope": "young adult bedroom with bed, curtain, wall, backpack and doll positions",
              "sub_location": "bedroom"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_bathroom",
              "scope": "small tiled bathroom with sink and mirror wall",
              "sub_location": "bathroom"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_mother_bedroom",
              "scope": "mother bedroom with bed used for overnight waiting",
              "sub_location": "mother_bedroom"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_entryway",
              "scope": "interior front door threshold and narrow entry area",
              "sub_location": "entryway"
            }
          ],
          "gen_order": [
            "fp_rooftop_exterior",
            "fp_exterior_stairs_yard",
            "fp_living_room",
            "fp_bedroom",
            "fp_bathroom",
            "fp_mother_bedroom",
            "fp_entryway",
            "bg_rooftop_day_normal",
            "bg_rooftop_night_intrusion_shadow",
            "bg_rooftop_dawn_lit_window",
            "bg_exterior_stairs_night_half_open_door",
            "bg_exterior_stairs_night_police_arrival",
            "bg_living_room_day_cooking_news",
            "bg_living_room_night_overcleaned",
            "bg_living_room_dawn_photo_vision",
            "bg_living_room_dusk_ransacked_open_window",
            "bg_bedroom_night_blood_curtain_body_red_circle",
            "bg_bedroom_night_overcleaned_shifted_items",
            "bg_bedroom_dusk_ransacked_red_circle_photo",
            "bg_bathroom_dawn_mirror_red_circle",
            "bg_mother_bedroom_dawn_waiting_clean",
            "bg_entryway_dusk_ransacked_exit"
          ],
          "group_id": "bg_rooftop_unit",
          "rationale_summary": "외관·계단·실내 세부 방을 분리하고, 침입/혈흔/소멸/환각/난장판 등 plot-critical 상태 변화를 체인화."
        }
      },
      "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_sales_floor_dusk_normal",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_sales_floor"
              ],
              "loc_id": "L09",
              "state_label": "dusk_normal",
              "sub_location": "sales_floor"
            },
            {
              "applies_to_shots": [
                "S8_Shot5"
              ],
              "bg_id": "bg_exterior_entrance_dusk_streetlight_phone",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_exterior_entrance"
              ],
              "loc_id": "L10",
              "state_label": "dusk_streetlight_phone",
              "sub_location": "exterior_entrance"
            },
            {
              "applies_to_shots": [
                "S19_Shot1",
                "S19_Shot4",
                "S19_Shot6"
              ],
              "bg_id": "bg_exterior_entrance_morning_quiet_cctv_check",
              "depends_on_bg": [
                "bg_exterior_entrance_dusk_streetlight_phone"
              ],
              "depends_on_fp": [
                "fp_exterior_entrance"
              ],
              "loc_id": "L10",
              "state_label": "morning_quiet_cctv_check",
              "sub_location": "exterior_entrance"
            },
            {
              "applies_to_shots": [
                "S20_Shot2",
                "S20_Shot5"
              ],
              "bg_id": "bg_security_office_day_cctv_review_dark_screen",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_security_office"
              ],
              "loc_id": "L14",
              "state_label": "day_cctv_review_dark_screen",
              "sub_location": "security_office"
            }
          ],
          "floor_plans": [
            {
              "depends_on_fp": [],
              "fp_id": "fp_sales_floor",
              "scope": "supermarket sales floor near entrance and display aisles",
              "sub_location": "sales_floor"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_exterior_entrance",
              "scope": "front entrance exterior with streetlight, bike area, wall CCTV",
              "sub_location": "exterior_entrance"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_security_office",
              "scope": "administration security office with CCTV monitor desk",
              "sub_location": "security_office"
            }
          ],
          "gen_order": [
            "fp_sales_floor",
            "fp_exterior_entrance",
            "fp_security_office",
            "bg_sales_floor_dusk_normal",
            "bg_exterior_entrance_dusk_streetlight_phone",
            "bg_exterior_entrance_morning_quiet_cctv_check",
            "bg_security_office_day_cctv_review_dark_screen"
          ],
          "group_id": "bg_supermarket",
          "rationale_summary": "Sales floor, exterior entrance, and security office need separate plans; exterior has dusk phone and morning CCTV states, office encodes the dark CCTV screen."
        }
      },
      "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",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_office_interior"
              ],
              "loc_id": "L13",
              "state_label": "night_duty_normal",
              "sub_location": "office_interior"
            },
            {
              "applies_to_shots": [
                "S21_Shot5",
                "S21_Shot6",
                "S21_Shot10"
              ],
              "bg_id": "bg_office_day_empty_evidence_photos_location_result",
              "depends_on_bg": [
                "bg_office_night_duty"
              ],
              "depends_on_fp": [
                "fp_office_interior"
              ],
              "loc_id": "L13",
              "state_label": "day_empty_evidence_photos_location_result",
              "sub_location": "office_interior"
            },
            {
              "applies_to_shots": [
                "S22_Shot2"
              ],
              "bg_id": "bg_entrance_day_bicycle_departure",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_exterior_entrance"
              ],
              "loc_id": "L15",
              "state_label": "day_bicycle_departure",
              "sub_location": "exterior_entrance"
            }
          ],
          "floor_plans": [
            {
              "depends_on_fp": [],
              "fp_id": "fp_office_interior",
              "scope": "police station office with desks, monitors, files, duty area",
              "sub_location": "office_interior"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_exterior_entrance",
              "scope": "police station entrance forecourt with bicycle parking area",
              "sub_location": "exterior_entrance"
            }
          ],
          "gen_order": [
            "fp_office_interior",
            "fp_exterior_entrance",
            "bg_office_night_duty",
            "bg_office_day_empty_evidence_photos_location_result",
            "bg_entrance_day_bicycle_departure"
          ],
          "group_id": "bg_police_station",
          "rationale_summary": "Interior office and exterior entrance need separate plans; office states split night duty vs day empty with murder photos and GPS monitor result for plot continuity."
        }
      },
      "bg_pc_room": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_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_Shot1",
                "S28_Shot4",
                "S28_Shot5"
              ],
              "bg_id": "bg_deck_dusk_photo",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_boat_deck"
              ],
              "loc_id": "L19",
              "state_label": "dusk_photo",
              "sub_location": "boat_deck"
            },
            {
              "applies_to_shots": [
                "S29_Shot4",
                "S29_Shot6",
                "S29_Shot11"
              ],
              "bg_id": "bg_wheelhouse_dusk_red_circles_photo",
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_wheelhouse"
              ],
              "loc_id": "L20",
              "state_label": "dusk_red_circles_photo",
              "sub_location": "wheelhouse"
            }
          ],
          "floor_plans": [
            {
              "depends_on_fp": [],
              "fp_id": "fp_boat_deck",
              "scope": "small fishing boat open deck with access to wheelhouse",
              "sub_location": "boat_deck"
            },
            {
              "depends_on_fp": [],
              "fp_id": "fp_wheelhouse",
              "scope": "compact fishing boat wheelhouse with controls and marked walls",
              "sub_location": "wheelhouse"
            }
          ],
          "gen_order": [
            "fp_boat_deck",
            "fp_wheelhouse",
            "bg_deck_dusk_photo",
            "bg_wheelhouse_dusk_red_circles_photo"
          ],
          "group_id": "bg_small_fishing_boat",
          "rationale_summary": "Deck and wheelhouse are separate spaces. Dusk deck includes photo handling; wheelhouse state preserves plot-critical red circle markings."
        }
      }
    }
  },
  "step_id": "background_master_plan",
  "run_id": "799b34f0-2a8f-4aa0-ab28-a7f35b70740c",
  "resolved_model": "gpt",
  "updated_at": "2026-05-06T11:01:37.221648+00:00",
  "project_config_snapshot": {}
}