{
  "status": "completed",
  "applicable_count": 2,
  "completed_count": 2,
  "failed_count": 0,
  "schema_version": 1,
  "config_hash": "14cff9239adbc6fc",
  "data": {
    "schema_version": 1,
    "groups": [
      {
        "group_id": "osl-l03",
        "location_id": "L03",
        "member_shots": [
          [
            10,
            8
          ]
        ],
        "layout": {
          "cameras": [
            {
              "look_at": [
                67,
                50
              ],
              "pos": [
                67,
                38
              ],
              "shot_index": 8
            }
          ],
          "figures": [
            {
              "entity_token": "C01",
              "figure_id": "figure_1",
              "label": "한국인 남성",
              "positions": [
                {
                  "moving_toward": [
                    68,
                    58
                  ],
                  "pos": [
                    62,
                    57
                  ],
                  "shot_index": 8
                }
              ]
            },
            {
              "entity_token": "C08",
              "figure_id": "figure_2",
              "label": "한국인 중년 여성",
              "positions": [
                {
                  "moving_toward": [
                    72,
                    60
                  ],
                  "pos": [
                    68,
                    58
                  ],
                  "shot_index": 8
                }
              ]
            }
          ],
          "landmarks": [
            {
              "id": "landmark_1",
              "kind": "area",
              "label": "옥탑방 옥상",
              "points": [
                [
                  10,
                  10
                ],
                [
                  90,
                  10
                ],
                [
                  90,
                  90
                ],
                [
                  10,
                  90
                ]
              ]
            },
            {
              "id": "landmark_2",
              "kind": "area",
              "label": "옥탑방",
              "points": [
                [
                  50,
                  50
                ],
                [
                  85,
                  50
                ],
                [
                  85,
                  85
                ],
                [
                  50,
                  85
                ]
              ]
            },
            {
              "id": "landmark_3",
              "kind": "line",
              "label": "창문",
              "points": [
                [
                  60,
                  50
                ],
                [
                  75,
                  50
                ]
              ]
            },
            {
              "id": "landmark_4",
              "kind": "point",
              "label": "옥탑방 철문 현관",
              "points": [
                [
                  52,
                  50
                ]
              ]
            },
            {
              "id": "landmark_5",
              "kind": "point",
              "label": "물탱크",
              "points": [
                [
                  25,
                  75
                ]
              ]
            }
          ]
        },
        "spatial_summaries": {
          "10:8": "SHOT 8 SCENE GEOGRAPHY (computed from the site-layout coordinates, frame-relative from this shot's camera — source of truth for where things are, which way paths run, figure depth and relative size):\n- 옥탑방 옥상: at the near left side of the frame.\n- 옥탑방: at the mid-distance center of the frame.\n- 창문 (path): runs from the near left side of the frame to the near right side of the frame.\n- 옥탑방 철문 현관: at the near left side of the frame.\n- 물탱크: at the far left side of the frame.\nFIGURES:\n- 한국인 남성 (C01): at the near left side of the frame — NEAREST figure to the camera; in motion: already partway along their path, heading toward the near center of the frame; their path follows the 창문; NOT heading into the 옥탑방 옥상.\n- 한국인 중년 여성 (C08): at the near center of the frame; about 1.0x as far from the camera as the nearest figure, so they must appear roughly 0.98x the nearest figure's height (smaller, deeper in the frame); in motion: already partway along their path, heading toward the near right side of the frame; their path follows the 창문; NOT heading into the 옥탑방 옥상.\nDEPTH CONTRACT: 한국인 중년 여성 is farther than 한국인 남성 and must read visibly smaller and deeper in the frame."
        }
      },
      {
        "group_id": "osl-l08",
        "location_id": "L08",
        "member_shots": [
          [
            19,
            4
          ]
        ],
        "layout": {
          "cameras": [
            {
              "look_at": [
                60,
                60
              ],
              "pos": [
                35,
                25
              ],
              "shot_index": 4
            }
          ],
          "figures": [
            {
              "entity_token": "C10",
              "figure_id": "figure_수리영",
              "label": "수리영",
              "positions": [
                {
                  "moving_toward": null,
                  "pos": [
                    47,
                    43
                  ],
                  "shot_index": 4
                }
              ]
            },
            {
              "entity_token": "C15",
              "figure_id": "figure_남자_직원",
              "label": "남자 직원",
              "positions": [
                {
                  "moving_toward": null,
                  "pos": [
                    52,
                    39
                  ],
                  "shot_index": 4
                }
              ]
            }
          ],
          "landmarks": [
            {
              "id": "market_building",
              "kind": "area",
              "label": "마트",
              "points": [
                [
                  55,
                  55
                ],
                [
                  95,
                  55
                ],
                [
                  95,
                  95
                ],
                [
                  55,
                  95
                ]
              ]
            },
            {
              "id": "market_exterior_corner",
              "kind": "point",
              "label": "마트 밖 건물 외벽 모서리",
              "points": [
                [
                  55,
                  55
                ]
              ]
            },
            {
              "id": "sidewalk",
              "kind": "area",
              "label": "마트 밖 보도",
              "points": [
                [
                  20,
                  20
                ],
                [
                  55,
                  20
                ],
                [
                  55,
                  55
                ],
                [
                  20,
                  55
                ]
              ]
            },
            {
              "id": "road_edge",
              "kind": "line",
              "label": "road edge",
              "points": [
                [
                  20,
                  20
                ],
                [
                  55,
                  20
                ]
              ]
            }
          ]
        },
        "spatial_summaries": {
          "19:4": "SHOT 4 SCENE GEOGRAPHY (computed from the site-layout coordinates, frame-relative from this shot's camera — source of truth for where things are, which way paths run, figure depth and relative size):\n- 마트: at the far center of the frame.\n- 마트 밖 건물 외벽 모서리: at the mid-distance center of the frame.\n- 마트 밖 보도: at the near left side of the frame.\n- road edge (path): runs from the near left side of the frame to the near right side of the frame.\nFIGURES:\n- 수리영 (C10): at the near center of the frame — NEAREST figure to the camera.\n- 남자 직원 (C15): at the near right side of the frame; about 1.0x as far from the camera as the nearest figure, so they must appear roughly 0.98x the nearest figure's height (smaller, deeper in the frame).\nDEPTH CONTRACT: 남자 직원 is farther than 수리영 and must read visibly smaller and deeper in the frame."
        }
      }
    ],
    "prompt_overrides": {
      "10:8": {
        "location_id": "L03",
        "group_id": "osl-l03",
        "revised": {
          "0": "Photorealistic cinematic still. Cut tight to an old, chipped window at eye level, the glass squarely facing the camera. The dirty, dim, slightly warped window pane acts as a reflective surface, showing the warped silhouettes of two figures inside. A Korean adult male silhouette in left profile, body volume preserved against a weak yellow-green interior lamp spill, lunges aggressively forward, his head forced downward to bite the shoulder of a Korean middle-aged woman's silhouette. The woman, near center at the same three-quarter angle from the right, already partway along the window path away from the near left side toward the near right side of the frame, not heading into the rooftop, appearing slightly smaller and deeper in the reflection, recoils backward under his pinning grip, looking off-screen. Both bodies appear as smeared dark shapes in the reflection. Outside, a faint bruised greenish-blue ambient light spills across the exterior nighttime darkness, clinging to the window, with a sudden dull crimson suggestion blooming near the woman's reflected shoulder."
        },
        "provenance": {
          "0": {
            "original_scene_detail_prompt_hash": "570983e20801ba5f",
            "revised_prompt_hash": "fe282b65bad370e5"
          }
        },
        "edited_spans": {
          "0": [
            {
              "original": "The woman, positioned at a three-quarter angle from the right, recoils backward under his pinning grip, looking off-screen.",
              "revised": "The woman, near center at the same three-quarter angle from the right, already partway along the window path away from the near left side toward the near right side of the frame, not heading into the rooftop, appearing slightly smaller and deeper in the reflection, recoils backward under his pinning grip, looking off-screen."
            }
          ]
        },
        "no_edit_reason": {}
      },
      "19:4": {
        "location_id": "L08",
        "group_id": "osl-l08",
        "revised": {
          "0": "Photorealistic cinematic still. C10O10 in a khaki jacket, a young Korean woman in her 20s, stands in the lower-center midground looking toward the pre-existing CCTV camera in the upper-right background, while a Korean adult man in a functional vest stands slightly deeper in the lower-right midground, visibly a touch smaller, also looking toward the same CCTV camera. Both figures are positioned with their backs to the camera, sharing the wet ground space outside the market. C10O10 has her neck craned upward, exposing a slight side profile, while the man stands firmly with his hands on his hips. The waist-high observer angle holds wide from behind, placing their lower bodies and backs in the lower frame, their shared gaze creating a strong upward diagonal. Overcast coastal daylight flattens the gray, damp wall before them. A muted signboard is already present, angled obliquely to the camera along the wall. The overall mood is tense and gray, with the architectural diagonal guiding the focus upward."
        },
        "provenance": {
          "0": {
            "original_scene_detail_prompt_hash": "9eb9e1e0443c2d15",
            "revised_prompt_hash": "7131626ffc29f8c7"
          }
        },
        "edited_spans": {
          "0": [
            {
              "original": "lower-left midground",
              "revised": "lower-center midground"
            },
            {
              "original": "stands in the lower-right midground",
              "revised": "stands slightly deeper in the lower-right midground, visibly a touch smaller"
            }
          ]
        },
        "no_edit_reason": {}
      }
    },
    "diagnostics": {
      "outdoor_location_count": 15,
      "seed_group_count": 2,
      "groups_extracted": 2,
      "skipped": [
        {
          "shot": "S6sh1",
          "reason": "single_figure_moving"
        },
        {
          "shot": "S26sh8",
          "reason": "zoom_continuity_member"
        }
      ],
      "layout_shape_violations": [],
      "layout_side_conflicts": [],
      "spatial_summary_skipped": [],
      "rewrite_failed": [],
      "revised_prompt_audit_violations": [],
      "zoom_member_exclusion_source": "shot_dependency_t2i",
      "composition_guide_failed": [],
      "composition_guide_candidate_skipped": [],
      "composition_guide_count": 0,
      "composition_guide_shared_model_enabled": true,
      "shared_model_judge_enabled": true,
      "shared_model_candidate_signals": [],
      "shared_model_judge_decisions": [],
      "shared_model_attach_decisions": [],
      "shared_model_single_shot_complexity_observation": [],
      "shared_model_image_calls": {
        "predicted": {
          "base": 0,
          "blocking": 0,
          "camera_view_sketch": 0
        },
        "actual": {
          "base": 0,
          "blocking": 0,
          "camera_view_sketch": 0
        },
        "predicted_call_count": 0,
        "actual_call_count": 0,
        "continuity_anchor_generation_calls": 0
      }
    },
    "composition_guides": {},
    "review_html": "review_html/index.html"
  },
  "step_id": "outdoor_site_layout",
  "run_id": "c62672ad-4925-454a-9655-780a7af74755",
  "resolved_model": "gpt",
  "updated_at": "2026-06-30T10:39:13.170751+00:00",
  "project_config_snapshot": {}
}