{
  "status": "completed",
  "applicable_count": 4,
  "completed_count": 4,
  "failed_count": 0,
  "schema_version": 4,
  "config_hash": "42ba2342da4938b5",
  "data": {
    "plans": {
      "bg_forest": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_urban_alley": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_crime_scene": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_rooftop_villa_unit": {
        "status": "ok",
        "plan": {
          "backgrounds": [
            {
              "applies_to_shots": [
                "S5_Shot1",
                "S5_Shot7"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_l05_main"
              ],
              "loc_id": "L05",
              "space_key_hint": "main",
              "state_class": "normal",
              "state_label_raw": "daytime domestic interior with herb washing, boiling pot, TV news, and visible wrist mark",
              "sub_location_label": "옥탑방 내부 전체",
              "time_phase": "day",
              "bg_id": "L05B07"
            },
            {
              "applies_to_shots": [
                "S12_Shot5",
                "S12_Shot7",
                "S12_Shot11"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_l05_main"
              ],
              "loc_id": "L05",
              "space_key_hint": "main",
              "state_class": "blood_scene",
              "state_label_raw": "night interior murder discovery with pooled blood, bloody footprints, corpse behind curtain, and crumpled photo",
              "sub_location_label": "수리영 방 중심의 옥탑방 내부",
              "time_phase": "night",
              "bg_id": "L05B05"
            },
            {
              "applies_to_shots": [
                "S14_Shot3",
                "S14_Shot7"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_l05_main"
              ],
              "loc_id": "L05",
              "space_key_hint": "main",
              "state_class": "clean_after",
              "state_label_raw": "night interior unnaturally spotless after the corpse, blood, red mark, and teacups have vanished",
              "sub_location_label": "깨끗해진 수리영 방과 거실",
              "time_phase": "night",
              "bg_id": "L05B06"
            },
            {
              "applies_to_shots": [
                "S18_Shot8",
                "S18_Shot11"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_l05_main"
              ],
              "loc_id": "L05",
              "space_key_hint": "main",
              "state_class": "dream_or_vision_state",
              "state_label_raw": "day interior hallucinations: red circle reflected in bathroom mirror and mother's face melting in table photo",
              "sub_location_label": "욕실 거울과 식탁 사진 주변",
              "time_phase": "day",
              "bg_id": "L05B01"
            },
            {
              "applies_to_shots": [
                "S25_Shot3"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_l05_main"
              ],
              "loc_id": "L05",
              "space_key_hint": "main",
              "state_class": "evidence_display",
              "state_label_raw": "dusk room wall with rough red circle and bloodstained old photo pinned at its center",
              "sub_location_label": "수리영 방 벽면",
              "time_phase": "dusk",
              "bg_id": "L05B02"
            },
            {
              "applies_to_shots": [
                "S25_Shot7",
                "S27_Shot1"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_l05_main"
              ],
              "loc_id": "L05",
              "space_key_hint": "main",
              "state_class": "ransacked",
              "state_label_raw": "dusk roof room ransacked by an unknown visitor, overturned furniture, open door, bleak wind, and Hye-su with phone",
              "sub_location_label": "난장판이 된 옥탑방 내부",
              "time_phase": "dusk",
              "bg_id": "L05B03"
            }
          ],
          "floor_plans": [
            {
              "depends_on_fp": [],
              "fp_id": "fp_l05_main",
              "loc_id": "L05",
              "scope": "entire roof unit interior: living area, kitchen, bedrooms, bath, entrance",
              "space_key_hint": "main",
              "sub_location": "roof_unit_interior"
            }
          ],
          "group_id": "bg_rooftop_villa_unit",
          "rationale_summary": "L04는 옥상/계단 분리, L05는 single_space라 내부 전체 1안. 낮 일상, 야간 침입·혈흔, 정리 후, 환시, 난장판/증거 상태로 구분.",
          "gen_order": [
            "fp_l05_main",
            "L05B07",
            "L05B05",
            "L05B06",
            "L05B01",
            "L05B02",
            "L05B03"
          ]
        }
      },
      "bg_coastal_road": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_animal_shelter": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_busy_street": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_supermarket": {
        "status": "ok",
        "plan": {
          "backgrounds": [
            {
              "applies_to_shots": [
                "S8_Shot2"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_l09_market_main"
              ],
              "loc_id": "L09",
              "space_key_hint": "main",
              "state_class": "busy",
              "state_label_raw": "dusk operating supermarket interior with bright retail lighting and employees stocking shelves",
              "sub_location_label": "대형 마트 내부 진열 구역",
              "time_phase": "dusk",
              "bg_id": "L09B01"
            },
            {
              "applies_to_shots": [
                "S8_Shot4"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_l09_market_main"
              ],
              "loc_id": "L09",
              "space_key_hint": "main",
              "state_class": "quiet",
              "state_label_raw": "dusk dark street just outside supermarket, Suriyoung checking unanswered phone anxiously",
              "sub_location_label": "마트 바깥 어두운 거리",
              "time_phase": "dusk",
              "bg_id": "L09B02"
            },
            {
              "applies_to_shots": [
                "S19_Shot3",
                "S19_Shot4"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_l09_market_main"
              ],
              "loc_id": "L09",
              "space_key_hint": "main",
              "state_class": "quiet",
              "state_label_raw": "early morning sparse supermarket, exterior wall CCTV check and tense phone call after confirming camera angle",
              "sub_location_label": "마트 외벽 CCTV 주변",
              "time_phase": "morning",
              "bg_id": "L09B03"
            }
          ],
          "floor_plans": [
            {
              "depends_on_fp": [],
              "fp_id": "fp_l09_market_main",
              "loc_id": "L09",
              "scope": "Unified supermarket sales floor and tagged exterior-facing beats",
              "space_key_hint": "main",
              "sub_location": "supermarket_main"
            }
          ],
          "group_id": "bg_supermarket",
          "rationale_summary": "single_space 규칙상 각 loc는 main 1개 plan. L09는 시간·혼잡도별, L14는 CCTV 증거 확인 상태로 분리.",
          "gen_order": [
            "fp_l09_market_main",
            "L09B01",
            "L09B02",
            "L09B03"
          ]
        }
      },
      "bg_coastal_bus_stop": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_police_station": {
        "status": "ok",
        "plan": {
          "backgrounds": [
            {
              "applies_to_shots": [
                "S16_Shot3"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_l13_police_office_main"
              ],
              "loc_id": "L13",
              "space_key_hint": "main",
              "state_class": "quiet",
              "state_label_raw": "night police office with lone duty detective, tense missing-person phone lookup request",
              "sub_location_label": "경찰서 사무실 당직 책상 주변",
              "time_phase": "night",
              "bg_id": "L13B02"
            },
            {
              "applies_to_shots": [
                "S21_Shot6",
                "S21_Shot8"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_l13_police_office_main"
              ],
              "loc_id": "L13",
              "space_key_hint": "main",
              "state_class": "evidence_display",
              "state_label_raw": "day police office desk cluttered with murder case photos, forms, monitor GPS result, note-taking materials",
              "sub_location_label": "혜수 책상과 김형사 모니터가 보이는 사무실 내부",
              "time_phase": "day",
              "bg_id": "L13B01"
            }
          ],
          "floor_plans": [
            {
              "depends_on_fp": [],
              "fp_id": "fp_l13_police_office_main",
              "loc_id": "L13",
              "scope": "Single police office layout with desks, duty seat, monitor, evidence-covered desk",
              "space_key_hint": "main",
              "sub_location": "police_office_main"
            }
          ],
          "group_id": "bg_police_station",
          "rationale_summary": "L13/L15 are single-space main plans; variants split by night quiet office, day evidence display office, and day exterior street.",
          "gen_order": [
            "fp_l13_police_office_main",
            "L13B02",
            "L13B01"
          ]
        }
      },
      "bg_pc_room": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_harbor_dock": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_open_sea": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_fishing_boat": {
        "status": "ok",
        "plan": {
          "backgrounds": [
            {
              "applies_to_shots": [
                "S29_Shot1",
                "S29_Shot4",
                "S29_Shot8"
              ],
              "depends_on_bg": [],
              "depends_on_fp": [
                "fp_wheelhouse"
              ],
              "loc_id": "L20",
              "space_key_hint": "main",
              "state_class": "intrusion",
              "state_label_raw": "dark dusk wheelhouse during forced helm struggle, old photo evidence, ominous circular instruments and red-circle motif, Suriyeong collapses",
              "sub_location_label": "소형 어선 조타실",
              "time_phase": "dusk",
              "bg_id": "L20B03"
            }
          ],
          "floor_plans": [
            {
              "depends_on_fp": [],
              "fp_id": "fp_wheelhouse",
              "loc_id": "L20",
              "scope": "Compact wheelhouse with helm, controls, windows, cramped standing room",
              "space_key_hint": "main",
              "sub_location": "wheelhouse"
            }
          ],
          "group_id": "bg_fishing_boat",
          "rationale_summary": "두 단일공간을 각각 1개 평면으로 유지. 갑판은 고요한 노을, 조타실은 조타 방해와 붉은 원 모티프가 있는 침입/위협 상태로 구분.",
          "gen_order": [
            "fp_wheelhouse",
            "L20B03"
          ]
        }
      }
    },
    "background_catalog": {
      "L05B01": {
        "bg_id": "L05B01",
        "loc_id": "L05",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "dream_or_vision_state",
        "semantic_key": "L05|main|day|dream_or_vision_state",
        "depends_on_fp": [
          "fp_l05_main"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S18_Shot8",
          "S18_Shot11"
        ],
        "sub_location_label": "욕실 거울과 식탁 사진 주변",
        "state_label_raw": "day interior hallucinations: red circle reflected in bathroom mirror and mother's face melting in table photo"
      },
      "L05B07": {
        "bg_id": "L05B07",
        "loc_id": "L05",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "normal",
        "semantic_key": "L05|main|day|normal",
        "depends_on_fp": [
          "fp_l05_main"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S5_Shot1",
          "S5_Shot7"
        ],
        "sub_location_label": "옥탑방 내부 전체",
        "state_label_raw": "daytime domestic interior with herb washing, boiling pot, TV news, and visible wrist mark"
      },
      "L05B02": {
        "bg_id": "L05B02",
        "loc_id": "L05",
        "space_key": "main",
        "time_phase": "dusk",
        "state_class": "evidence_display",
        "semantic_key": "L05|main|dusk|evidence_display",
        "depends_on_fp": [
          "fp_l05_main"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S25_Shot3"
        ],
        "sub_location_label": "수리영 방 벽면",
        "state_label_raw": "dusk room wall with rough red circle and bloodstained old photo pinned at its center"
      },
      "L05B03": {
        "bg_id": "L05B03",
        "loc_id": "L05",
        "space_key": "main",
        "time_phase": "dusk",
        "state_class": "ransacked",
        "semantic_key": "L05|main|dusk|ransacked",
        "depends_on_fp": [
          "fp_l05_main"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S25_Shot7",
          "S27_Shot1"
        ],
        "sub_location_label": "난장판이 된 옥탑방 내부",
        "state_label_raw": "dusk roof room ransacked by an unknown visitor, overturned furniture, open door, bleak wind, and Hye-su with phone"
      },
      "L05B05": {
        "bg_id": "L05B05",
        "loc_id": "L05",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "blood_scene",
        "semantic_key": "L05|main|night|blood_scene",
        "depends_on_fp": [
          "fp_l05_main"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S12_Shot5",
          "S12_Shot7",
          "S12_Shot11"
        ],
        "sub_location_label": "수리영 방 중심의 옥탑방 내부",
        "state_label_raw": "night interior murder discovery with pooled blood, bloody footprints, corpse behind curtain, and crumpled photo"
      },
      "L05B06": {
        "bg_id": "L05B06",
        "loc_id": "L05",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "clean_after",
        "semantic_key": "L05|main|night|clean_after",
        "depends_on_fp": [
          "fp_l05_main"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S14_Shot3",
          "S14_Shot7"
        ],
        "sub_location_label": "깨끗해진 수리영 방과 거실",
        "state_label_raw": "night interior unnaturally spotless after the corpse, blood, red mark, and teacups have vanished"
      },
      "L09B01": {
        "bg_id": "L09B01",
        "loc_id": "L09",
        "space_key": "main",
        "time_phase": "dusk",
        "state_class": "busy",
        "semantic_key": "L09|main|dusk|busy",
        "depends_on_fp": [
          "fp_l09_market_main"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S8_Shot2"
        ],
        "sub_location_label": "대형 마트 내부 진열 구역",
        "state_label_raw": "dusk operating supermarket interior with bright retail lighting and employees stocking shelves"
      },
      "L09B02": {
        "bg_id": "L09B02",
        "loc_id": "L09",
        "space_key": "main",
        "time_phase": "dusk",
        "state_class": "quiet",
        "semantic_key": "L09|main|dusk|quiet",
        "depends_on_fp": [
          "fp_l09_market_main"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S8_Shot4"
        ],
        "sub_location_label": "마트 바깥 어두운 거리",
        "state_label_raw": "dusk dark street just outside supermarket, Suriyoung checking unanswered phone anxiously"
      },
      "L09B03": {
        "bg_id": "L09B03",
        "loc_id": "L09",
        "space_key": "main",
        "time_phase": "morning",
        "state_class": "quiet",
        "semantic_key": "L09|main|morning|quiet",
        "depends_on_fp": [
          "fp_l09_market_main"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S19_Shot3",
          "S19_Shot4"
        ],
        "sub_location_label": "마트 외벽 CCTV 주변",
        "state_label_raw": "early morning sparse supermarket, exterior wall CCTV check and tense phone call after confirming camera angle"
      },
      "L13B01": {
        "bg_id": "L13B01",
        "loc_id": "L13",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "evidence_display",
        "semantic_key": "L13|main|day|evidence_display",
        "depends_on_fp": [
          "fp_l13_police_office_main"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S21_Shot6",
          "S21_Shot8"
        ],
        "sub_location_label": "혜수 책상과 김형사 모니터가 보이는 사무실 내부",
        "state_label_raw": "day police office desk cluttered with murder case photos, forms, monitor GPS result, note-taking materials"
      },
      "L13B02": {
        "bg_id": "L13B02",
        "loc_id": "L13",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "quiet",
        "semantic_key": "L13|main|night|quiet",
        "depends_on_fp": [
          "fp_l13_police_office_main"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S16_Shot3"
        ],
        "sub_location_label": "경찰서 사무실 당직 책상 주변",
        "state_label_raw": "night police office with lone duty detective, tense missing-person phone lookup request"
      },
      "L20B03": {
        "bg_id": "L20B03",
        "loc_id": "L20",
        "space_key": "main",
        "time_phase": "dusk",
        "state_class": "intrusion",
        "semantic_key": "L20|main|dusk|intrusion",
        "depends_on_fp": [
          "fp_wheelhouse"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S29_Shot1",
          "S29_Shot4",
          "S29_Shot8"
        ],
        "sub_location_label": "소형 어선 조타실",
        "state_label_raw": "dark dusk wheelhouse during forced helm struggle, old photo evidence, ominous circular instruments and red-circle motif, Suriyeong collapses"
      }
    },
    "shot_background_map": {
      "S18_Shot8": "L05B01",
      "S18_Shot11": "L05B01",
      "S25_Shot3": "L05B02",
      "S25_Shot7": "L05B03",
      "S27_Shot1": "L05B03",
      "S12_Shot5": "L05B05",
      "S12_Shot7": "L05B05",
      "S12_Shot11": "L05B05",
      "S14_Shot3": "L05B06",
      "S14_Shot7": "L05B06",
      "S5_Shot1": "L05B07",
      "S5_Shot7": "L05B07",
      "S8_Shot2": "L09B01",
      "S8_Shot4": "L09B02",
      "S19_Shot3": "L09B03",
      "S19_Shot4": "L09B03",
      "S21_Shot6": "L13B01",
      "S21_Shot8": "L13B01",
      "S16_Shot3": "L13B02",
      "S29_Shot1": "L20B03",
      "S29_Shot4": "L20B03",
      "S29_Shot8": "L20B03"
    },
    "bg_catalog_hash": "3fab648fc84fb7a6",
    "shot_binding_hash": "19c6ae670eae9490",
    "diagnostics": {
      "w20f6_floor_plan_scope_filter": {
        "policy": "indoor AND shot_count>=2 AND dep_bg_count>=1; transitive cascade depends_on_fp/depends_on_bg (fail-safe drop).",
        "kept_floor_plans_count": 4,
        "kept_backgrounds_count": 12,
        "dropped_floor_plans_count": 7,
        "dropped_backgrounds_count": 7,
        "dropped_groups_count": 0,
        "dropped_floor_plans": [
          {
            "group_id": "bg_rooftop_villa_unit",
            "fp_id": "fp_l04_rooftop",
            "loc_id": "L04",
            "is_indoor": false,
            "shot_count": 7,
            "dep_bg_count": 3,
            "reasons": [
              "outdoor"
            ]
          },
          {
            "group_id": "bg_rooftop_villa_unit",
            "fp_id": "fp_l04_stairs",
            "loc_id": "L04",
            "is_indoor": false,
            "shot_count": 7,
            "dep_bg_count": 1,
            "reasons": [
              "outdoor"
            ]
          },
          {
            "group_id": "bg_rooftop_villa_unit",
            "fp_id": "fp_l12_alley",
            "loc_id": "L12",
            "is_indoor": false,
            "shot_count": 0,
            "dep_bg_count": 0,
            "reasons": [
              "outdoor",
              "low_shot",
              "no_dep_bg"
            ]
          },
          {
            "group_id": "bg_supermarket",
            "fp_id": "fp_l10_market_exterior_main",
            "loc_id": "L10",
            "is_indoor": false,
            "shot_count": 0,
            "dep_bg_count": 0,
            "reasons": [
              "outdoor",
              "low_shot",
              "no_dep_bg"
            ]
          },
          {
            "group_id": "bg_supermarket",
            "fp_id": "fp_l14_security_room_main",
            "loc_id": "L14",
            "is_indoor": true,
            "shot_count": 1,
            "dep_bg_count": 1,
            "reasons": [
              "low_shot"
            ]
          },
          {
            "group_id": "bg_police_station",
            "fp_id": "fp_l15_police_street_main",
            "loc_id": "L15",
            "is_indoor": false,
            "shot_count": 1,
            "dep_bg_count": 1,
            "reasons": [
              "outdoor",
              "low_shot"
            ]
          },
          {
            "group_id": "bg_fishing_boat",
            "fp_id": "fp_deck",
            "loc_id": "L19",
            "is_indoor": false,
            "shot_count": 2,
            "dep_bg_count": 1,
            "reasons": [
              "outdoor"
            ]
          }
        ],
        "dropped_backgrounds": [
          {
            "loc_id": "L04",
            "space_key_hint": "rooftop",
            "time_phase": "day",
            "state_class": "quiet",
            "applies_to_shots": [
              "S4_Shot1"
            ],
            "reasons": [
              "depends_on_dropped_fp"
            ]
          },
          {
            "loc_id": "L04",
            "space_key_hint": "rooftop",
            "time_phase": "night",
            "state_class": "intrusion",
            "applies_to_shots": [
              "S10_Shot1",
              "S10_Shot4"
            ],
            "reasons": [
              "depends_on_dropped_fp"
            ]
          },
          {
            "loc_id": "L04",
            "space_key_hint": "stairs",
            "time_phase": "night",
            "state_class": "arrival",
            "applies_to_shots": [
              "S11_Shot1",
              "S13_Shot4",
              "S13_Shot5"
            ],
            "reasons": [
              "depends_on_dropped_fp"
            ]
          },
          {
            "loc_id": "L04",
            "space_key_hint": "rooftop",
            "time_phase": "dawn",
            "state_class": "quiet",
            "applies_to_shots": [
              "S17_Shot1"
            ],
            "reasons": [
              "depends_on_dropped_fp"
            ]
          },
          {
            "loc_id": "L14",
            "space_key_hint": "main",
            "time_phase": "morning",
            "state_class": "evidence_display",
            "applies_to_shots": [
              "S20_Shot3"
            ],
            "reasons": [
              "depends_on_dropped_fp"
            ]
          },
          {
            "loc_id": "L15",
            "space_key_hint": "main",
            "time_phase": "day",
            "state_class": "normal",
            "applies_to_shots": [
              "S22_Shot2"
            ],
            "reasons": [
              "depends_on_dropped_fp"
            ]
          },
          {
            "loc_id": "L19",
            "space_key_hint": "main",
            "time_phase": "dusk",
            "state_class": "quiet",
            "applies_to_shots": [
              "S28_Shot1",
              "S28_Shot5"
            ],
            "reasons": [
              "depends_on_dropped_fp"
            ]
          }
        ],
        "dropped_groups": []
      }
    }
  },
  "step_id": "background_master_plan",
  "run_id": "a6343e28-d111-4c30-b961-d487894ed99f",
  "resolved_model": "gpt",
  "updated_at": "2026-05-28T02:24:57.675995+00:00",
  "project_config_snapshot": {}
}