{
  "status": "completed",
  "completed_count": 18,
  "applicable_count": 18,
  "failed_count": 0,
  "data": {
    "locations": {
      "L01": {
        "location_id": "L01",
        "location_name": "숲속",
        "shot_count": 2,
        "skip_chain": true,
        "skip_reason": "low_frequency (<= 3 selected shots)",
        "rationale_summary": "Skipped chain: only 2 selected shot(s); renderer will use previous-related-shot reference.",
        "nodes": [],
        "execution_order": [],
        "unassigned_shots": [],
        "status": "skipped"
      },
      "L02": {
        "location_id": "L02",
        "location_name": "도시 뒷골목",
        "shot_count": 3,
        "skip_chain": true,
        "skip_reason": "low_frequency (<= 3 selected shots)",
        "rationale_summary": "Skipped chain: only 3 selected shot(s); renderer will use previous-related-shot reference.",
        "nodes": [],
        "execution_order": [],
        "unassigned_shots": [],
        "status": "skipped"
      },
      "L03": {
        "location_id": "L03",
        "location_name": "야외 사건 현장",
        "shot_count": 1,
        "skip_chain": true,
        "skip_reason": "low_frequency (<= 3 selected shots)",
        "rationale_summary": "Skipped chain: only 1 selected shot(s); renderer will use previous-related-shot reference.",
        "nodes": [],
        "execution_order": [],
        "unassigned_shots": [],
        "status": "skipped"
      },
      "L06": {
        "location_id": "L06",
        "location_name": "해안도로",
        "shot_count": 3,
        "skip_chain": true,
        "skip_reason": "low_frequency (<= 3 selected shots)",
        "rationale_summary": "Skipped chain: only 3 selected shot(s); renderer will use previous-related-shot reference.",
        "nodes": [],
        "execution_order": [],
        "unassigned_shots": [],
        "status": "skipped"
      },
      "L07": {
        "location_id": "L07",
        "location_name": "유기견 보호원",
        "shot_count": 3,
        "skip_chain": true,
        "skip_reason": "low_frequency (<= 3 selected shots)",
        "rationale_summary": "Skipped chain: only 3 selected shot(s); renderer will use previous-related-shot reference.",
        "nodes": [],
        "execution_order": [],
        "unassigned_shots": [],
        "status": "skipped"
      },
      "L11": {
        "location_id": "L11",
        "location_name": "옥탑방 외부 계단",
        "shot_count": 1,
        "skip_chain": true,
        "skip_reason": "low_frequency (<= 3 selected shots)",
        "rationale_summary": "Skipped chain: only 1 selected shot(s); renderer will use previous-related-shot reference.",
        "nodes": [],
        "execution_order": [],
        "unassigned_shots": [],
        "status": "skipped"
      },
      "L10": {
        "location_id": "L10",
        "location_name": "다세대 빌라 외부 골목·마당",
        "shot_count": 3,
        "skip_chain": true,
        "skip_reason": "low_frequency (<= 3 selected shots)",
        "rationale_summary": "Skipped chain: only 3 selected shot(s); renderer will use previous-related-shot reference.",
        "nodes": [],
        "execution_order": [],
        "unassigned_shots": [],
        "status": "skipped"
      },
      "L12": {
        "location_id": "L12",
        "location_name": "해안가 버스정류장 부근",
        "shot_count": 3,
        "skip_chain": true,
        "skip_reason": "low_frequency (<= 3 selected shots)",
        "rationale_summary": "Skipped chain: only 3 selected shot(s); renderer will use previous-related-shot reference.",
        "nodes": [],
        "execution_order": [],
        "unassigned_shots": [],
        "status": "skipped"
      },
      "L14": {
        "location_id": "L14",
        "location_name": "마트 총무과",
        "shot_count": 3,
        "skip_chain": true,
        "skip_reason": "low_frequency (<= 3 selected shots)",
        "rationale_summary": "Skipped chain: only 3 selected shot(s); renderer will use previous-related-shot reference.",
        "nodes": [],
        "execution_order": [],
        "unassigned_shots": [],
        "status": "skipped"
      },
      "L16": {
        "location_id": "L16",
        "location_name": "PC방",
        "shot_count": 2,
        "skip_chain": true,
        "skip_reason": "low_frequency (<= 3 selected shots)",
        "rationale_summary": "Skipped chain: only 2 selected shot(s); renderer will use previous-related-shot reference.",
        "nodes": [],
        "execution_order": [],
        "unassigned_shots": [],
        "status": "skipped"
      },
      "L17": {
        "location_id": "L17",
        "location_name": "포구",
        "shot_count": 3,
        "skip_chain": true,
        "skip_reason": "low_frequency (<= 3 selected shots)",
        "rationale_summary": "Skipped chain: only 3 selected shot(s); renderer will use previous-related-shot reference.",
        "nodes": [],
        "execution_order": [],
        "unassigned_shots": [],
        "status": "skipped"
      },
      "L19": {
        "location_id": "L19",
        "location_name": "소형 어선 갑판",
        "shot_count": 3,
        "skip_chain": true,
        "skip_reason": "low_frequency (<= 3 selected shots)",
        "rationale_summary": "Skipped chain: only 3 selected shot(s); renderer will use previous-related-shot reference.",
        "nodes": [],
        "execution_order": [],
        "unassigned_shots": [],
        "status": "skipped"
      },
      "L20": {
        "location_id": "L20",
        "location_name": "소형 어선 조타실",
        "shot_count": 3,
        "skip_chain": true,
        "skip_reason": "low_frequency (<= 3 selected shots)",
        "rationale_summary": "Skipped chain: only 3 selected shot(s); renderer will use previous-related-shot reference.",
        "nodes": [],
        "execution_order": [],
        "unassigned_shots": [],
        "status": "skipped"
      },
      "L18": {
        "location_id": "L18",
        "location_name": "바다",
        "shot_count": 2,
        "skip_chain": true,
        "skip_reason": "low_frequency (<= 3 selected shots)",
        "rationale_summary": "Skipped chain: only 2 selected shot(s); renderer will use previous-related-shot reference.",
        "nodes": [],
        "execution_order": [],
        "unassigned_shots": [],
        "status": "skipped"
      },
      "L04": {
        "location_id": "L04",
        "location_name": "옥탑방 옥상·철문 현관 외부",
        "shot_count": 5,
        "skip_chain": true,
        "skip_reason": "outdoor open-air",
        "rationale_summary": "The location is an outdoor rooftop and exterior approach area where natural variations in light, weather, angle, and distance can be handled by fallback reference continuity.",
        "nodes": [],
        "execution_order": [],
        "unassigned_shots": [],
        "status": "skipped"
      },
      "L13": {
        "location_id": "L13",
        "location_name": "경찰서 사무실",
        "shot_count": 5,
        "skip_chain": false,
        "skip_reason": "",
        "rationale_summary": "All shots share the same enclosed office desk state under cold fluorescent lighting, and the tight phone, photograph, face, and monitor views can reuse one comprehensive desk background with the same clutter, monitors, forensic photographs, paperwork, and red map coordinate screen.",
        "nodes": [
          {
            "depth": 0,
            "description": "A modern enclosed office desk area with gray work surfaces, rolling chairs, computer monitors, stacked paperwork, and scattered glossy forensic photographs spread across the desktop. Harsh green-white fluorescent ceiling light flattens the dull gray palette, while one monitor shows a blue-gray maritime map with a red GPS coordinate marker. The room state is normal but cluttered, with procedural desk mess, screen glow, and cold office materials as the main background anchors.",
            "id": "office_desk_fluorescent_normal",
            "kind": "anchor_root",
            "label": "office desk under cold fluorescent light",
            "parent_id": "",
            "rationale": "anchor - first wide view of this location",
            "shared_visual_anchors_with_parent": [],
            "shot_ids": [
              "S16_Shot3",
              "S16_Shot5",
              "S21_Shot6",
              "S21_Shot7",
              "S21_Shot11"
            ]
          }
        ],
        "execution_order": [
          "office_desk_fluorescent_normal"
        ],
        "unassigned_shots": [],
        "status": "ok"
      },
      "L09": {
        "location_id": "L09",
        "location_name": "대형 마트 매장 내부",
        "shot_count": 5,
        "skip_chain": false,
        "skip_reason": "",
        "rationale_summary": "The plan keeps the controlled supermarket interior separate from the storefront exterior while still chaining related states through fixed architectural anchors. Interior daytime fluorescent aisle shots share one node, the dusk-contaminated aisle becomes a child state, and the exterior entrance and foggy wall are grouped as a separate storefront subset because their automatic doors, wall panels, and security camera mount must remain consistent.",
        "nodes": [
          {
            "depth": 0,
            "description": "A modern supermarket central aisle with long parallel shelves packed with products, pale floor tiles, and stacked cardboard boxes near the aisle ends. Sterile white fluorescent ceiling panels flatten the colors into cool greens and grays, with the space clean, orderly, and undisturbed.",
            "id": "interior_central_aisle_day_normal",
            "kind": "anchor_root",
            "label": "interior central aisle day normal",
            "parent_id": "",
            "rationale": "anchor - first wide view of this location",
            "shared_visual_anchors_with_parent": [],
            "shot_ids": [
              "S19_Shot2",
              "S19_Shot5"
            ]
          },
          {
            "depth": 0,
            "description": "The exterior supermarket entrance at dusk, centered on automatic sliding glass doors with bright retail fluorescent spill visible through the glass. Red neon glow mixes with damp blue dusk on the pavement, with exterior wall panels, storefront trim, a high security camera mount, and a parked bicycle near the left edge.",
            "id": "exterior_entrance_dusk_normal",
            "kind": "anchor_root",
            "label": "exterior entrance dusk normal",
            "parent_id": "",
            "rationale": "anchor - first wide view of this exterior storefront subset",
            "shared_visual_anchors_with_parent": [],
            "shot_ids": [
              "S08_Shot9"
            ]
          },
          {
            "depth": 1,
            "description": "A supermarket aisle near the entrance, with product shelves forming tight parallel lines and stacked cardboard boxes adding ordinary retail clutter. Cool fluorescent ceiling light dominates, while faint blue dusk spill from the glass entrance contaminates the aisle; the space remains clean and undisturbed.",
            "id": "interior_aisle_dusk_normal",
            "kind": "anchor_state",
            "label": "interior aisle dusk normal",
            "parent_id": "interior_central_aisle_day_normal",
            "rationale": "This uses the same aisle geometry and retail materials as the interior root but changes the lighting to a dusk-contaminated fluorescent state.",
            "shared_visual_anchors_with_parent": [
              "parallel product shelves",
              "pale floor tiles",
              "fluorescent ceiling panels",
              "stacked cardboard boxes"
            ],
            "shot_ids": [
              "S08_Shot4"
            ]
          },
          {
            "depth": 1,
            "description": "An exterior supermarket wall in cold foggy daylight, with damp surface texture, gray wall bounce, and faint storefront lines receding below. A security camera mount sits high on the wall, with the automatic door trim and exterior panels kept consistent but the neon dusk color removed.",
            "id": "exterior_wall_day_fog_camera",
            "kind": "anchor_state",
            "label": "exterior wall day fog security camera",
            "parent_id": "exterior_entrance_dusk_normal",
            "rationale": "This exterior wall view is parented to the storefront entrance because the wall panels, door trim, and high security camera mount are the strongest shared fixed anchors.",
            "shared_visual_anchors_with_parent": [
              "automatic door trim",
              "exterior wall panels",
              "storefront glass lines",
              "high security camera mount"
            ],
            "shot_ids": [
              "S19_Shot7"
            ]
          }
        ],
        "execution_order": [
          "interior_central_aisle_day_normal",
          "exterior_entrance_dusk_normal",
          "interior_aisle_dusk_normal",
          "exterior_wall_day_fog_camera"
        ],
        "unassigned_shots": [],
        "status": "ok"
      },
      "L05": {
        "location_id": "L05",
        "location_name": "옥탑방 내부",
        "shot_count": 18,
        "skip_chain": false,
        "skip_reason": "",
        "rationale_summary": "The location is an enclosed fixed apartment set, so a continuity chain is required. The plan uses one root for the normal living-kitchen-dining space, then branches into separate controlled states for the stained bedroom, cleaned bedroom, bathroom mirror reflection, red-circle bedroom wall at dusk, and disturbed living room at dusk. Tight close-ups, prop inserts, and reaction shots are grouped with the wider background state they share rather than receiving separate background images.",
        "nodes": [
          {
            "depth": 0,
            "description": "A worn small apartment interior connects a living area, kitchen, dining table, bedroom doorway, and bathroom doorway in one modest fixed set. Pale daylight enters through a small window, with a soft blue-gray television glow near the living side, kitchen steam near the sink and stove, a pot on the burner, an overturned teacup, a simple table, and old floorboards in muted yellow-gray tones.",
            "id": "interior_living_kitchen_day_normal",
            "kind": "anchor_root",
            "label": "Living kitchen day normal",
            "parent_id": "",
            "rationale": "anchor - first wide view of this location",
            "shared_visual_anchors_with_parent": [],
            "shot_ids": [
              "S05_Shot3",
              "S05_Shot8",
              "S05_Shot13",
              "S18_Shot15",
              "S18_Shot16"
            ]
          },
          {
            "depth": 1,
            "description": "The bedroom is viewed from near the doorway, with worn floorboards, a bed, a closed curtain, and a dirty wall in dim gray room light. Dark red pooled stains and footprint-like marks cross the floor toward the curtain, while a faint red circle smear appears on the wall near the bed under weak television spill from the living area.",
            "id": "interior_bedroom_dim_red_stained",
            "kind": "anchor_state",
            "label": "Bedroom dim red stained",
            "parent_id": "interior_living_kitchen_day_normal",
            "rationale": "This bedroom state branches from the main interior because the doorway, floorboards, and windowless dimness must stay consistent while the room surface condition changes sharply.",
            "shared_visual_anchors_with_parent": [
              "bedroom doorway",
              "worn floorboards",
              "muted gray interior light",
              "small apartment wall trim"
            ],
            "shot_ids": [
              "S12_Shot5",
              "S12_Shot8",
              "S12_Shot16"
            ]
          },
          {
            "depth": 2,
            "description": "The same bedroom is unnaturally clean, with the bed, curtain, blank wall, and floorboards stripped of the earlier dark stains. A backpack and a small doll rest on the clean floor near the bed leg, lit by flat cold gray room light with a faint warm edge from the hallway.",
            "id": "interior_bedroom_clean_gray",
            "kind": "anchor_state",
            "label": "Bedroom clean gray",
            "parent_id": "interior_bedroom_dim_red_stained",
            "rationale": "This node uses the stained bedroom as its parent because the bed, curtain, wall, and floor layout match, but the surface state is reset to spotless and cold.",
            "shared_visual_anchors_with_parent": [
              "same bed position",
              "closed curtain",
              "dirty bedroom wall",
              "worn floorboards",
              "bedroom doorway"
            ],
            "shot_ids": [
              "S14_Shot5",
              "S14_Shot10",
              "S14_Shot12"
            ]
          },
          {
            "depth": 1,
            "description": "A cramped bathroom is framed at mirror height, with a sink rim, tile edge, damp mirror haze, and cold green-gray daylight flattening the surfaces. The reflected wall inside the mirror carries a saturated red circle, while the real tile edges remain plain at the margins.",
            "id": "interior_bathroom_mirror_red_circle",
            "kind": "anchor_state",
            "label": "Bathroom mirror red circle",
            "parent_id": "interior_living_kitchen_day_normal",
            "rationale": "The bathroom is parented to the main interior so the worn doorway trim and cold apartment daylight remain tied to the larger fixed set.",
            "shared_visual_anchors_with_parent": [
              "bathroom doorway",
              "worn trim",
              "cold gray daylight",
              "small apartment materials"
            ],
            "shot_ids": [
              "S18_Shot10"
            ]
          },
          {
            "depth": 3,
            "description": "The bedroom wall is seen frontally from just inside the doorway at dusk, with dirty plaster, faint doorframe edges, and low blue-gray room light. A wet red circle is centered on the wall, with a stained old photograph pinned at its middle and the surrounding wall falling into dusty shadow.",
            "id": "interior_bedroom_wall_dusk_red_circle",
            "kind": "anchor_state",
            "label": "Bedroom wall dusk red circle",
            "parent_id": "interior_bedroom_clean_gray",
            "rationale": "This wall-facing dusk state stays in the same bedroom as the clean gray node but adds the fixed red circle and pinned photograph as new wall elements.",
            "shared_visual_anchors_with_parent": [
              "bedroom doorway",
              "dirty wall",
              "worn floorboards",
              "dim gray room light"
            ],
            "shot_ids": [
              "S25_Shot5",
              "S25_Shot6"
            ]
          },
          {
            "depth": 1,
            "description": "The living room and kitchen area are in a disturbed dusk state, with cluttered domestic objects, open window light, an open front door, a dull television area, the table, sink, and worn floor receding into blue-gray shadow. The space feels underlit and hollow, with evening light seeping through the doorway and window across the ransacked floor.",
            "id": "interior_living_room_dusk_disturbed",
            "kind": "anchor_state",
            "label": "Living room dusk disturbed",
            "parent_id": "interior_living_kitchen_day_normal",
            "rationale": "This node reuses the main living-kitchen layout but separates the dusk lighting, open door, and disturbed surface state from the normal daytime setup.",
            "shared_visual_anchors_with_parent": [
              "small window",
              "front door",
              "living room floor",
              "kitchen sink",
              "dining table",
              "television area"
            ],
            "shot_ids": [
              "S25_Shot13",
              "S27_Shot2",
              "S27_Shot3",
              "S27_Shot6"
            ]
          }
        ],
        "execution_order": [
          "interior_living_kitchen_day_normal",
          "interior_bedroom_dim_red_stained",
          "interior_bedroom_clean_gray",
          "interior_bathroom_mirror_red_circle",
          "interior_bedroom_wall_dusk_red_circle",
          "interior_living_room_dusk_disturbed"
        ],
        "unassigned_shots": [],
        "status": "ok"
      }
    }
  },
  "step_id": "background_chain_planning",
  "run_id": "6c90fbae-c302-4492-b46b-c147a97e40b9",
  "resolved_model": "gpt",
  "updated_at": "2026-04-27T20:32:27.641901+00:00"
}