{
  "status": "completed",
  "completed_count": 5,
  "applicable_count": 5,
  "failed_count": 0,
  "data": {
    "shots": [
      {
        "scene_index": 1,
        "shot_index": 1,
        "framing_scale": "close",
        "perspective": "observer",
        "pov_character": "",
        "perception_mode": "direct",
        "camera_direction": "A static camera at ironing-board height looks diagonally through the rising steam, tightened around 정순's hands and lower torso as she drives both palms into the shirt fold. The steam stays soft in the near foreground while her hands occupy the center-right; her shoulders angle toward the counter and her attention remains fixed there, outside the frame.",
        "lighting_mood": "Restrained neutral morning interior light with soft-to-moderate contrast, locally diffused by the visible steam.",
        "character_angles": [
          {
            "character": "정순",
            "angle": "three_quarter_right",
            "body_pose": "bracing into shirt fold",
            "gaze_direction_kind": "off_screen",
            "gaze_target_id": null,
            "subject_state": "alive"
          }
        ],
        "key_bg_elements": [
          {
            "element": "다림질대",
            "state": "셔츠를 접는 작업이 진행 중이다",
            "orientation": "The near edge runs diagonally across the lower foreground, with the working surface receding toward 정순.",
            "camera_use": "Establishes the low camera height and provides the lower framing line.",
            "directionality_class": "directional_3d"
          },
          {
            "element": "다림질대 위의 김",
            "state": "다림질대에서 피어오르고 있다",
            "orientation": "",
            "camera_use": "Forms a soft foreground veil without obscuring the force in 정순's hands.",
            "directionality_class": "non_directional"
          },
          {
            "element": "셔츠",
            "state": "정순의 양손 사이에서 접히고 있다",
            "orientation": "",
            "camera_use": "Provides the central action and makes the pressure of both hands legible.",
            "directionality_class": "non_directional"
          }
        ],
        "frame_spatial_contract": null,
        "subject_reference_policy": []
      },
      {
        "scene_index": 1,
        "shot_index": 4,
        "framing_scale": "insert",
        "perspective": "observer",
        "pov_character": "",
        "perception_mode": "direct",
        "camera_direction": "The dolly-in ends just above counter height at a shallow downward angle, offset beside 태욱's approaching hand. The student ID and fingertips share the central lower portion of the frame, with the first point of contact held sharp while only a restrained section of hand, forearm, and counter remains visible for scale.",
        "lighting_mood": "Neutral morning interior illumination keeps the card edge and fingertips distinct with restrained contrast.",
        "character_angles": [
          {
            "character": "태욱",
            "angle": "three_quarter_left",
            "body_pose": "reaching across the counter",
            "gaze_direction_kind": "down",
            "gaze_target_id": null,
            "subject_state": "alive"
          }
        ],
        "key_bg_elements": [
          {
            "element": "학생증",
            "state": "카운터 위에 놓여 있으며 태욱의 손가락이 가장자리에 처음 닿는다",
            "orientation": "The photo-bearing face is visible at a shallow angle, with the touched edge nearest 태욱's fingertips.",
            "camera_use": "Primary focus of the insert, occupying less than one third of the frame beside the arriving hand.",
            "directionality_class": "content_surface"
          },
          {
            "element": "카운터",
            "state": "학생증을 받치고 있다",
            "orientation": "Its top plane recedes away from the low camera, leaving the card and hand unobstructed.",
            "camera_use": "Supplies the contact plane and a stable spatial reference around the isolated action.",
            "directionality_class": "directional_3d"
          }
        ],
        "frame_spatial_contract": {
          "reason": "required_background_position",
          "constraints": [
            {
              "target_kind": "prop",
              "target_id": "P01",
              "label": "student ID",
              "screen_zone": "lower_center",
              "depth_plane": "foreground",
              "gesture_action": "none",
              "gesture_target_label": ""
            },
            {
              "target_kind": "character",
              "target_id": "C02",
              "label": "태욱",
              "screen_zone": "middle_right",
              "depth_plane": "midground",
              "gesture_action": "reaches_for",
              "gesture_target_label": "student ID"
            }
          ]
        },
        "subject_reference_policy": [
          {
            "subject_id": "C02",
            "policy_type": "identity_reference",
            "policy": "base_id_required",
            "reason": "Only 태욱's hand and a restrained section of forearm are visible, so an outlook reference cannot reliably align to the framed anatomy."
          }
        ]
      },
      {
        "scene_index": 2,
        "shot_index": 2,
        "framing_scale": "medium",
        "perspective": "observer",
        "pov_character": "",
        "perception_mode": "direct",
        "camera_direction": "At chest height, the camera holds close beside 태욱 and nearly perpendicular to his body axis, presenting his left profile and the raised student ID along the same viewing line. His planted feet stabilize the lower frame while his bent arms and the card sit in the middle-right; his eyes angle down and lock onto the card surface rather than toward the lens.",
        "lighting_mood": "Natural morning ambient light maintains a muted neutral palette and restrained contrast.",
        "character_angles": [
          {
            "character": "태욱",
            "angle": "profile_left",
            "body_pose": "feet planted, card raised",
            "gaze_direction_kind": "down",
            "gaze_target_id": null,
            "subject_state": "alive"
          }
        ],
        "key_bg_elements": [
          {
            "element": "학생증",
            "state": "태욱이 가슴 높이로 들어 들여다보고 있다",
            "orientation": "Its photo-bearing face is turned toward 태욱 and remains obliquely visible from the camera's profile position.",
            "camera_use": "Shares the focal plane with 태욱's profile and anchors the direction of his lowered gaze.",
            "directionality_class": "content_surface"
          },
          {
            "element": "골목 바닥",
            "state": "말라 있다",
            "orientation": "",
            "camera_use": "Visible beneath 태욱's planted feet as a stable lower-frame reference.",
            "directionality_class": "non_directional"
          },
          {
            "element": "담벼락",
            "state": "물때가 그대로 남아 있다",
            "orientation": "The wall surface runs behind 태욱's profile, with the marked side visible to camera.",
            "camera_use": "Provides a gently lived-in background plane without competing with the face and card.",
            "directionality_class": "directional_3d"
          }
        ],
        "frame_spatial_contract": null,
        "subject_reference_policy": []
      },
      {
        "scene_index": 3,
        "shot_index": 3,
        "framing_scale": "close",
        "perspective": "observer",
        "pov_character": "",
        "perception_mode": "direct",
        "camera_direction": "The push finishes at upper-chest height beside 한국인 중년 경비원의 three-quarter side, offset from the line between his eyes and the student ID. The card remains in the lower-left foreground at a natural scale while his narrowed eyes and leaning face occupy the center-right just beyond it, visibly absorbed in 학생증 사진 속 인물.",
        "lighting_mood": "Restrained natural morning ambience gives the close observation soft-to-moderate contrast without stylized color.",
        "character_angles": [
          {
            "character": "한국인 중년 경비원",
            "angle": "three_quarter_left",
            "body_pose": "leaning toward raised ID",
            "gaze_direction_kind": "looks_at_character",
            "gaze_target_id": "C04",
            "subject_state": "alive"
          },
          {
            "character": "학생증 사진 속 인물",
            "angle": "three_quarter_right",
            "body_pose": "head framed within photograph",
            "gaze_direction_kind": "distant",
            "gaze_target_id": null,
            "subject_state": "alive"
          }
        ],
        "key_bg_elements": [
          {
            "element": "학생증",
            "state": "한국인 중년 경비원이 눈앞에 들어 오래 확인하고 있다",
            "orientation": "The photo-bearing face is angled toward the guard's eyes and remains obliquely visible to the camera, with 학생증 사진 속 인물 readable on its surface.",
            "camera_use": "Acts as the near-foreground focal bridge between the photographed person and the guard's narrowed eyes.",
            "directionality_class": "content_surface"
          },
          {
            "element": "경비실 유리",
            "state": "성에가 끼어 있다",
            "orientation": "The glass surface sits behind the guard, with the frosted area limiting a clear view through it.",
            "camera_use": "Creates a subdued background layer behind the close inspection.",
            "directionality_class": "transparent_surface"
          },
          {
            "element": "철제 정문",
            "state": "반쯤 열려 있다",
            "orientation": "One gate leaf presents an oblique side in the distant background while the opening remains visible.",
            "camera_use": "Retains a narrow indication of the school entrance beyond the close foreground action.",
            "directionality_class": "directional_3d"
          }
        ],
        "frame_spatial_contract": {
          "reason": "shared_space_relation",
          "constraints": [
            {
              "target_kind": "character",
              "target_id": "C03",
              "label": "한국인 중년 경비원",
              "screen_zone": "middle_right",
              "depth_plane": "midground",
              "gesture_action": "looks_toward",
              "gesture_target_label": "student ID photograph"
            },
            {
              "target_kind": "character",
              "target_id": "C04",
              "label": "학생증 사진 속 인물",
              "screen_zone": "lower_left",
              "depth_plane": "foreground",
              "gesture_action": "none",
              "gesture_target_label": ""
            }
          ]
        },
        "subject_reference_policy": [
          {
            "subject_id": "C04",
            "policy_type": "identity_reference",
            "policy": "base_id_required",
            "reason": "The character appears only as a small flat photograph on the student ID, so a base identity reference is more reliable than a full outlook reference."
          }
        ]
      },
      {
        "scene_index": 4,
        "shot_index": 1,
        "framing_scale": "medium",
        "perspective": "observer",
        "pov_character": "",
        "perception_mode": "direct",
        "camera_direction": "The camera has settled directly before 정순 at her seated eye height, holding her from head through lap behind the counter. Her torso remains frontal and centered while her eyes rest downward on the slack, empty apron pockets; the folded yellow umbrella stays small at the far-left background near the entrance so the stillness does not become an isolated portrait.",
        "lighting_mood": "Natural ambient light appropriate to the daytime interior is kept neutral and restrained, with soft-to-moderate contrast.",
        "character_angles": [
          {
            "character": "정순",
            "angle": "facing_camera",
            "body_pose": "seated with slack pockets",
            "gaze_direction_kind": "down",
            "gaze_target_id": null,
            "subject_state": "alive"
          }
        ],
        "key_bg_elements": [
          {
            "element": "카운터",
            "state": "정순이 안쪽에 앉아 있다",
            "orientation": "The front edge crosses the lower midground while its inner side contains 정순's chair position.",
            "camera_use": "Defines the separation between 정순 and the entrance area without blocking her lap.",
            "directionality_class": "directional_3d"
          },
          {
            "element": "앞치마 주머니",
            "state": "비어 있으며 늘어져 있다",
            "orientation": "Both pocket fronts face the camera and visibly sag without contents.",
            "camera_use": "Provides the principal emotional detail within 정순's otherwise motionless seated figure.",
            "directionality_class": "directional_3d"
          },
          {
            "element": "노란 우산",
            "state": "접힌 채 문 앞에 세워져 있다",
            "orientation": "Its folded length is seen obliquely, propped upright near the entrance.",
            "camera_use": "Remains a small color-bearing spatial marker at the far-left background.",
            "directionality_class": "directional_3d"
          },
          {
            "element": "의자",
            "state": "정순이 카운터 안쪽에서 앉아 있다",
            "orientation": "Only the portions around 정순's seated body are visible, aligned behind the counter.",
            "camera_use": "Supports the motionless seated posture without becoming a separate focal point.",
            "directionality_class": "directional_3d"
          }
        ],
        "frame_spatial_contract": {
          "reason": "required_background_position",
          "constraints": [
            {
              "target_kind": "character",
              "target_id": "C01",
              "label": "정순",
              "screen_zone": "middle_center",
              "depth_plane": "midground",
              "gesture_action": "none",
              "gesture_target_label": ""
            },
            {
              "target_kind": "prop",
              "target_id": "P02",
              "label": "folded yellow umbrella",
              "screen_zone": "middle_left",
              "depth_plane": "background",
              "gesture_action": "none",
              "gesture_target_label": ""
            }
          ]
        },
        "subject_reference_policy": []
      }
    ],
    "total": 5,
    "failed_batches": 0
  },
  "config_hash": "0c9d0b8082b44321",
  "step_id": "shot_staging",
  "run_id": "04a57b93-02bd-4b83-9dc7-a80ef8c6a18d",
  "resolved_model": "gpt",
  "updated_at": "2026-09-04T11:32:43.982304+00:00",
  "schema_version": 6,
  "project_config_snapshot": {}
}