{
  "status": "completed",
  "completed_count": 5,
  "applicable_count": 5,
  "failed_count": 0,
  "data": {
    "shots": [
      {
        "scene_index": 1,
        "shot_index": 2,
        "framing_scale": "wide",
        "perspective": "observer",
        "pov_character": "",
        "perception_mode": "direct",
        "camera_direction": "From chest height several steps inside the shop, the camera looks obliquely across the open threshold as 태욱 enters from the left background toward the right-side interior. His backpack and rain-wet shoulder remain visible as he is caught with his weight transferring onto the forward foot; the tracking move briefly settles on that first step, leaving open space ahead for the camera's continued retreat.",
        "lighting_mood": "The flickering fluorescent illumination renders the shop in subdued brightness, muted worn colors, and gentle-to-moderate contrast.",
        "character_angles": [
          {
            "character": "태욱",
            "angle": "three_quarter_right",
            "body_pose": "caught mid-step entering",
            "gaze_direction_kind": "off_screen",
            "gaze_target_id": null,
            "subject_state": "alive"
          }
        ],
        "key_bg_elements": [
          {
            "element": "세탁소 출입문",
            "state": "open",
            "orientation": "The threshold is seen diagonally, with the exterior behind 태욱 and the shop interior extending toward frame right.",
            "camera_use": "Frames 태욱's entry and establishes his inward direction of travel.",
            "directionality_class": "directional_3d"
          },
          {
            "element": "다림질대",
            "state": "steam rising above it",
            "orientation": "Its long side recedes obliquely in the deeper shop interior.",
            "camera_use": "Provides spatial continuity with the camera's preceding position near the work area.",
            "directionality_class": "directional_3d"
          }
        ],
        "frame_spatial_contract": {
          "reason": "movement_direction",
          "constraints": [
            {
              "target_kind": "character",
              "target_id": "C02",
              "label": "태욱",
              "screen_zone": "middle_left",
              "depth_plane": "midground",
              "gesture_action": "moves_toward",
              "gesture_target_label": "shop interior at frame right"
            },
            {
              "target_kind": "background",
              "target_id": "",
              "label": "open shop doorway",
              "screen_zone": "upper_left",
              "depth_plane": "background",
              "gesture_action": "none",
              "gesture_target_label": ""
            }
          ]
        },
        "subject_reference_policy": []
      },
      {
        "scene_index": 1,
        "shot_index": 5,
        "framing_scale": "insert",
        "perspective": "observer",
        "pov_character": "",
        "perception_mode": "direct",
        "camera_direction": "At counter height and within hand's reach, a slight high angle isolates the narrow gap between 정순's hand entering from frame left and 태욱's fingertips reaching from frame right. The dolly-in ends exactly as his fingertips touch the worn yellow umbrella handle at center, while the counter edge remains along the lower frame as a scale and spatial reference.",
        "lighting_mood": "Flickering fluorescent light keeps the worn yellow of the umbrella subdued against the shop's muted, restrained palette.",
        "character_angles": [
          {
            "character": "정순",
            "angle": "three_quarter_right",
            "body_pose": "arm extended with umbrella",
            "gaze_direction_kind": "down",
            "gaze_target_id": null,
            "subject_state": "alive"
          },
          {
            "character": "태욱",
            "angle": "three_quarter_left",
            "body_pose": "fingertips reaching for handle",
            "gaze_direction_kind": "down",
            "gaze_target_id": null,
            "subject_state": "alive"
          }
        ],
        "key_bg_elements": [
          {
            "element": "낡은 노란 우산",
            "state": "extended between 정순 and 태욱",
            "orientation": "The handle crosses diagonally through the central band, with 정순 holding one end and 태욱's fingertips meeting it.",
            "camera_use": "Primary contact point and emotional focus of the insert.",
            "directionality_class": "directional_3d"
          },
          {
            "element": "카운터",
            "state": "positioned beneath the exchange",
            "orientation": "Its top edge passes beneath the hands at a shallow diagonal.",
            "camera_use": "Anchors both hands in the same physical space without competing with the contact.",
            "directionality_class": "directional_3d"
          }
        ],
        "frame_spatial_contract": null,
        "subject_reference_policy": [
          {
            "subject_id": "C01",
            "policy_type": "identity_reference",
            "policy": "base_id_required",
            "reason": "Only 정순's hand and a small portion of her arm are visible, so an outlook reference cannot reliably align."
          },
          {
            "subject_id": "C02",
            "policy_type": "identity_reference",
            "policy": "base_id_required",
            "reason": "Only 태욱's reaching hand is visible in the insert, making a full outlook reference inappropriate."
          }
        ]
      },
      {
        "scene_index": 2,
        "shot_index": 2,
        "framing_scale": "close",
        "perspective": "observer",
        "pov_character": "",
        "perception_mode": "direct",
        "camera_direction": "Just outside the doorway at chest height, the completed push-in holds 정순 in an oblique three-quarter view on the right side of frame, with the alley direction retained as negative space to her left. Her upper body occupies most of the frame, but the composition drops low enough to preserve the hand loosely gripping the hanging shirt as she remains absorbed in watching 태욱's departure.",
        "lighting_mood": "Daytime ambient light is subdued by the rainy setting, maintaining muted colors, restrained brightness, and gentle-to-moderate contrast.",
        "character_angles": [
          {
            "character": "정순",
            "angle": "three_quarter_left",
            "body_pose": "paused with shirt lowered",
            "gaze_direction_kind": "looks_at_character",
            "gaze_target_id": "C02",
            "subject_state": "alive"
          }
        ],
        "key_bg_elements": [
          {
            "element": "세탁소 출입구",
            "state": "정순 paused at the threshold",
            "orientation": "The entrance edge runs behind 정순 while opening the composition toward the alley on frame left.",
            "camera_use": "Creates a boundary between her stillness and 태욱's direction of departure.",
            "directionality_class": "directional_3d"
          },
          {
            "element": "다림질하던 셔츠",
            "state": "hanging from one hand",
            "orientation": "",
            "camera_use": "Retained in the lower frame as evidence that 정순 stopped working to watch him leave.",
            "directionality_class": "non_directional"
          },
          {
            "element": "좁은 골목",
            "state": "rainwater pooled along it",
            "orientation": "The visible stretch recedes away from the doorway into the left-side gaze space.",
            "camera_use": "Provides the off-screen direction of 정순's attention.",
            "directionality_class": "directional_3d"
          },
          {
            "element": "담벼락",
            "state": "water marks risen along its surface",
            "orientation": "Its alley-facing plane recedes through the background beside 정순's gaze line.",
            "camera_use": "Adds tactile depth to the narrow alley without distracting from her expression.",
            "directionality_class": "directional_3d"
          }
        ],
        "frame_spatial_contract": {
          "reason": "looks_to_anchor",
          "constraints": [
            {
              "target_kind": "character",
              "target_id": "C01",
              "label": "정순",
              "screen_zone": "middle_right",
              "depth_plane": "foreground",
              "gesture_action": "looks_toward",
              "gesture_target_label": "alley exit at frame left"
            },
            {
              "target_kind": "background",
              "target_id": "",
              "label": "alley direction",
              "screen_zone": "middle_left",
              "depth_plane": "background",
              "gesture_action": "none",
              "gesture_target_label": ""
            }
          ]
        },
        "subject_reference_policy": []
      },
      {
        "scene_index": 3,
        "shot_index": 2,
        "framing_scale": "close",
        "perspective": "observer",
        "pov_character": "",
        "perception_mode": "direct",
        "camera_direction": "Just above the counter and offset to one side, the camera looks shallowly across the surface toward the lone student ID near center-left. The dolly-in settles with the portrait-bearing face legible while enough counter remains around the card to preserve its small, abandoned presence rather than enlarging it unrealistically.",
        "lighting_mood": "With one fluorescent light out in the evening interior, the counter sits under subdued, uneven illumination with muted colors and restrained contrast.",
        "character_angles": [],
        "key_bg_elements": [
          {
            "element": "학생증",
            "state": "left alone on the counter",
            "orientation": "The portrait-bearing face is turned toward the camera, showing the printed photograph and identification content.",
            "camera_use": "Primary focal object, isolated by surrounding counter space.",
            "directionality_class": "content_surface"
          },
          {
            "element": "카운터",
            "state": "holding the lone student ID in the visible area",
            "orientation": "Its upper plane crosses the frame at a shallow angle beneath the card.",
            "camera_use": "Provides scale and emphasizes that the ID has been left behind.",
            "directionality_class": "directional_3d"
          }
        ],
        "frame_spatial_contract": null,
        "subject_reference_policy": []
      },
      {
        "scene_index": 3,
        "shot_index": 4,
        "framing_scale": "insert",
        "perspective": "observer",
        "pov_character": "",
        "perception_mode": "direct",
        "camera_direction": "At 정순's abdomen height on her side three-quarter axis, the static camera isolates her gripping hand at center and the nearby apron-pocket opening just below it. Her fingers close firmly around the student ID as the hand reaches the pocket, with only a narrow portion of her torso retained to establish the action physically.",
        "lighting_mood": "The evening interior remains subdued and unevenly illuminated because one fluorescent light is out, preserving muted color and restrained contrast.",
        "character_angles": [
          {
            "character": "정순",
            "angle": "three_quarter_right",
            "body_pose": "hand braced at pocket",
            "gaze_direction_kind": "down",
            "gaze_target_id": null,
            "subject_state": "alive"
          }
        ],
        "key_bg_elements": [
          {
            "element": "학생증",
            "state": "held firmly in 정순's hand",
            "orientation": "Its portrait-bearing face is angled partly toward the camera but is mostly obscured by her closing fingers.",
            "camera_use": "Forms the central detail between her grip and the pocket opening.",
            "directionality_class": "content_surface"
          },
          {
            "element": "앞치마 주머니",
            "state": "opening positioned beside the gripping hand",
            "orientation": "The pocket opening faces upward near the lower center of frame.",
            "camera_use": "Provides the immediate destination of the student ID and clarifies the interrupted insertion.",
            "directionality_class": "directional_3d"
          }
        ],
        "frame_spatial_contract": {
          "reason": "required_background_position",
          "constraints": [
            {
              "target_kind": "background",
              "target_id": "",
              "label": "apron pocket opening",
              "screen_zone": "lower_center",
              "depth_plane": "foreground",
              "gesture_action": "none",
              "gesture_target_label": ""
            },
            {
              "target_kind": "character",
              "target_id": "C01",
              "label": "정순's gripping hand and abdomen",
              "screen_zone": "middle_center",
              "depth_plane": "foreground",
              "gesture_action": "reaches_for",
              "gesture_target_label": "apron pocket opening"
            }
          ]
        },
        "subject_reference_policy": [
          {
            "subject_id": "C01",
            "policy_type": "identity_reference",
            "policy": "base_id_required",
            "reason": "The insert shows only 정순's abdomen and gripping hand; a full outlook reference would not align with the visible anatomy."
          }
        ]
      }
    ],
    "total": 5,
    "failed_batches": 0
  },
  "config_hash": "0c9d0b8082b44321",
  "step_id": "shot_staging",
  "run_id": "cdc775cc-e018-424c-918b-55398ec6626e",
  "resolved_model": "gpt",
  "updated_at": "2026-09-04T10:12:14.472186+00:00",
  "schema_version": 6,
  "project_config_snapshot": {}
}