{
  "status": "completed",
  "completed_count": 29,
  "applicable_count": 29,
  "failed_count": 0,
  "data": {
    "scenes": [
      {
        "scene_index": 1,
        "scene_heading": "S#1. 숲속 / 해 질 무렵",
        "shots": [
          {
            "shot_index": 1,
            "description": "어두컴컴한 숲속 수풀 사이, 잔뜩 겁에 질린 표정의 금월산 남성 피해자의 얼굴이 나뭇가지 밖으로 내밀어진 정면 구도.",
            "based_on_beat": 1,
            "characters": [
              "금월산 남성 피해자"
            ],
            "character_ids": []
          },
          {
            "shot_index": 2,
            "description": "금월산 남성 피해자의 허벅지에 커다란 이빨 자국이 깊게 패여 붉은 피가 고여 있는 클로즈업.",
            "based_on_beat": 1,
            "characters": [
              "금월산 남성 피해자"
            ],
            "character_ids": []
          },
          {
            "shot_index": 3,
            "description": "금월산 남성 피해자가 흙바닥에 뒹군 채 멈춰 있고, 벗겨진 한쪽 신발이 허공에 떠 있는 상태.",
            "based_on_beat": 1,
            "characters": [
              "금월산 남성 피해자"
            ],
            "character_ids": []
          },
          {
            "shot_index": 4,
            "description": "바닥에 쓰러진 금월산 남성 피해자를 덮치기 위해 양팔을 뻗은 채 공중을 가로지르는 검은 인영의 실루엣.",
            "based_on_beat": 1,
            "characters": [
              "검은 인영",
              "금월산 남성 피해자"
            ],
            "original_description": "공중에 뜬 검은 인영의 실루엣이 바닥에 쓰러진 금월산 남성 피해자를 향해 양팔을 뻗은 채 멈춘 순간.",
            "validator_reason": "추진력이 있는 이동 동작의 역동성을 보존하기 위해 '멈춘 순간'이라는 표현 대신 공중을 가로지르는 미드 액션으로 수정함.",
            "character_ids": []
          }
        ]
      },
      {
        "scene_index": 2,
        "scene_heading": "S#2. 도시 뒷골목 / N",
        "shots": [
          {
            "shot_index": 1,
            "description": "어두운 골목 가로등 불빛 아래, 전봇대에 기댄 효장동 여성 피해자와 한국인 남성이 서로를 꽉 끌어안고 밀착한 상체.",
            "based_on_beat": 1,
            "characters": [
              "효장동 여성 피해자",
              "한국인 남성"
            ],
            "character_ids": []
          },
          {
            "shot_index": 2,
            "description": "붉은 눈동자를 빛내는 한국인 남성이 입을 크게 벌려 효장동 여성 피해자의 목덜미에 이를 박아넣은 채 멈춘 순간.",
            "based_on_beat": 1,
            "characters": [
              "한국인 남성",
              "효장동 여성 피해자"
            ],
            "character_ids": []
          },
          {
            "shot_index": 3,
            "description": "효장동 여성 피해자의 몸이 바닥에 쓰러진 채 멈춰 있고, 입가에 피를 묻힌 한국인 남성이 고개를 든 정지 상태.",
            "based_on_beat": 1,
            "characters": [
              "효장동 여성 피해자",
              "한국인 남성"
            ],
            "character_ids": []
          }
        ]
      },
      {
        "scene_index": 3,
        "scene_heading": "S#3. 현장 / D",
        "shots": [
          {
            "shot_index": 1,
            "description": "대낮의 폴리스 라인이 쳐진 숲속 현장, 하얀 방진복을 입은 한국인 감식반원들이 바닥에 엎드린 시신 주위에 쪼그려 앉은 정지 상태.",
            "based_on_beat": 1,
            "characters": [
              "한국인 감식반원들"
            ],
            "character_ids": []
          },
          {
            "shot_index": 2,
            "description": "무전기를 손에 쥔 채 폴리스 라인 밖에서 굳은 표정으로 멈춰 서 있는 혜수의 상체.",
            "based_on_beat": 1,
            "characters": [
              "혜수"
            ],
            "character_ids": []
          }
        ]
      },
      {
        "scene_index": 4,
        "scene_heading": "S#4. 옥탑방 / D",
        "shots": [
          {
            "shot_index": 1,
            "description": "맑은 대낮의 인천 변두리, 낡은 다세대 빌라 옥상 위에 자리 잡은 옥탑방 외부 전경.",
            "based_on_beat": 1,
            "characters": [],
            "character_ids": []
          }
        ]
      },
      {
        "scene_index": 5,
        "scene_heading": "S#5. 옥탑방 안 / 실내",
        "shots": [
          {
            "shot_index": 1,
            "description": "냄비에서 하얀 김이 피어오르는 부엌, 앞치마를 두른 강민숙이 굳은 표정으로 TV 화면을 응시하는 상체.",
            "based_on_beat": 1,
            "characters": [
              "강민숙"
            ],
            "character_ids": []
          },
          {
            "shot_index": 2,
            "description": "수리영이 방문 앞에 서서 양팔을 위로 뻗어 기지개를 켠 채 멈춘 전신.",
            "based_on_beat": 1,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          },
          {
            "shot_index": 3,
            "description": "강민숙의 손가락이 TV 리모컨의 전원 버튼을 꾹 누른 채 멈춰 있는 클로즈업.",
            "based_on_beat": 1,
            "characters": [
              "강민숙"
            ],
            "character_ids": []
          },
          {
            "shot_index": 4,
            "description": "식탁 앞에 마주 앉아 컵을 손에 쥔 수리영과 미소 짓는 강민숙의 상체 구도.",
            "based_on_beat": 2,
            "characters": [
              "수리영",
              "강민숙"
            ],
            "character_ids": []
          },
          {
            "shot_index": 5,
            "description": "외출복 차림의 수리영이 현관 바닥에 앉아 신발 뒤꿈치를 꺾어 신은 채 멈춘 하단 구도.",
            "based_on_beat": 2,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          },
          {
            "shot_index": 6,
            "description": "수리영이 강민숙의 어깨에 코를 묻은 채 눈을 감고 멈춘 상태.",
            "based_on_beat": 2,
            "characters": [
              "수리영",
              "강민숙"
            ],
            "character_ids": []
          },
          {
            "shot_index": 7,
            "description": "강민숙의 손목 안쪽에 새겨진 뚜렷한 작은 원형 표식이 화면 중앙에 보이는 시점 쇼트.",
            "based_on_beat": 3,
            "characters": [
              "강민숙"
            ],
            "character_ids": []
          }
        ]
      },
      {
        "scene_index": 6,
        "scene_heading": "S#6. 해안가 도로 / D",
        "shots": [
          {
            "shot_index": 1,
            "description": "맑은 낮 해안가 도로, 이어폰을 낀 수리영이 밝은 표정으로 자전거 안장에 앉아 한쪽 페달을 아래로 힘차게 밟고 있으며 주행 반대 방향으로 머리카락이 흩날리는 mid-action 측면 전신.",
            "based_on_beat": 1,
            "characters": [
              "수리영"
            ],
            "original_description": "맑은 낮 해안가 도로, 이어폰을 낀 수리영이 밝은 표정으로 자전거 안장에 앉아 페달에 발을 얹은 채 멈춘 측면 전신.",
            "validator_reason": "원문의 자전거 주행 동작이 완전한 정지 자세로 묘사되어 추진력 단서가 누락되었으므로, 페달을 밟는 동작과 흩날리는 머리카락 등 motion direction을 보존한 mid-action으로 수정함.",
            "character_ids": []
          }
        ]
      },
      {
        "scene_index": 7,
        "scene_heading": "S#7. 유기견 보호원 / D",
        "shots": [
          {
            "shot_index": 1,
            "description": "철창 안에서 이빨을 드러낸 채 앞발을 들고 서 있는 거대한 로트와일러.",
            "based_on_beat": 1,
            "characters": [
              "로트와일러"
            ],
            "character_ids": []
          },
          {
            "shot_index": 2,
            "description": "철창 밖에서 무표정한 얼굴로 개의 눈을 뚫어지게 응시하는 수리영의 정면 상체.",
            "based_on_beat": 1,
            "characters": [
              "수리영",
              "개"
            ],
            "character_ids": []
          },
          {
            "shot_index": 3,
            "description": "로트와일러가 꼬리를 내리고 바닥에 납작 엎드린 채 멈춘 모습.",
            "based_on_beat": 1,
            "characters": [
              "로트와일러"
            ],
            "character_ids": []
          },
          {
            "shot_index": 4,
            "description": "주사기를 든 한국인 50대 남성이 엎드린 개의 엉덩이 쪽에 주사 바늘을 찌른 채 멈춘 클로즈업.",
            "based_on_beat": 1,
            "characters": [
              "한국인 50대 남성",
              "개"
            ],
            "character_ids": []
          },
          {
            "shot_index": 5,
            "description": "갇힌 개들을 응시하며 휴대전화를 귀에 댄 채 입을 살짝 벌리고 멈춰 선 수리영의 상체.",
            "based_on_beat": 2,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          },
          {
            "shot_index": 6,
            "description": "목욕통 안의 개에게 하얀 거품을 묻힌 채 두 손을 개의 등 위에 올려두고 멈춰 있는 수리영의 측면.",
            "based_on_beat": 2,
            "characters": [
              "수리영",
              "개"
            ],
            "character_ids": []
          }
        ]
      },
      {
        "scene_index": 8,
        "scene_heading": "S#8. 번화가·대형 마트 / 해질 무렵",
        "shots": [
          {
            "shot_index": 1,
            "description": "네온사인이 켜진 해질녘 번화가, 수리영이 자전거 페달을 밟는 중간 자세로 핸들을 쥔 채 포장마차 사이를 지나는 순간, 옷자락이 뒤로 흩날리고 있다.",
            "based_on_beat": 1,
            "characters": [
              "수리영"
            ],
            "original_description": "네온사인이 켜진 해질녘 번화가, 수리영이 자전거 핸들을 쥔 채 길거리 포장마차 사이를 가로지르는 모습.",
            "validator_reason": "이동 동작을 묘사하고 있으므로 동적 동사 규칙에 따라 추진력이 나타나는 mid-action 순간으로 재작성했습니다.",
            "character_ids": []
          },
          {
            "shot_index": 2,
            "description": "대형 마트 안, 유니폼을 입은 한국인 여성 직원을 마주 보며 서 있는 수리영.",
            "based_on_beat": 1,
            "characters": [
              "수리영",
              "한국인 여성 직원"
            ],
            "character_ids": []
          },
          {
            "shot_index": 3,
            "description": "빈 종이박스를 양손에 든 마트 남자 직원이 수리영을 향해 고개를 돌린 채 멈춘 상태.",
            "based_on_beat": 2,
            "characters": [
              "마트 남자 직원",
              "수리영"
            ],
            "character_ids": []
          },
          {
            "shot_index": 4,
            "description": "마트 밖 길가에서 휴대전화 액정을 심각한 표정으로 들여다보며 멈춰 선 수리영.",
            "based_on_beat": 2,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          }
        ]
      },
      {
        "scene_index": 9,
        "scene_heading": "S#9. 해안가 / N",
        "shots": [
          {
            "shot_index": 1,
            "description": "어두운 밤바다를 배경으로, 수리영이 굳은 표정으로 한쪽 무릎을 굽혀 자전거 페달을 힘껏 밟아 내리는 중간 동작, 옷자락과 머리카락이 뒤로 흩날리는 측면.",
            "based_on_beat": 1,
            "characters": [
              "수리영"
            ],
            "original_description": "어두운 밤바다를 배경으로, 수리영이 굳은 표정으로 자전거 페달에 발을 올린 채 멈춘 측면.",
            "validator_reason": "원문의 '달려가는' 이동 동작의 추진력과 방향성을 보존하기 위해 정지 상태('멈춘 측면')를 mid-action(페달을 밟는 중간 동작)으로 재작성함.",
            "character_ids": []
          }
        ]
      },
      {
        "scene_index": 10,
        "scene_heading": "S#10. 옥탑방 / N",
        "shots": [
          {
            "shot_index": 1,
            "description": "어두운 밤 옥상 평상 위, 말린 석창포 잎들이 바람에 떠올라 공중에 멈춘 정지 순간.",
            "based_on_beat": 1,
            "characters": [],
            "character_ids": []
          },
          {
            "shot_index": 2,
            "description": "공중에 뜬 말린 잎 하나가 한국인 남성의 낡은 구두 끝부분에 닿아 있는 클로즈업.",
            "based_on_beat": 1,
            "characters": [
              "한국인 남성"
            ],
            "character_ids": []
          },
          {
            "shot_index": 3,
            "description": "굳게 닫힌 옥탑방 철문 틈새로 손가락을 밀어 넣어 전단지를 꾹 누른 채 멈춘 한국인 남성의 손 클로즈업.",
            "based_on_beat": 1,
            "characters": [
              "한국인 남성"
            ],
            "character_ids": []
          },
          {
            "shot_index": 4,
            "description": "어두운 옥상 위, 철문이 미세하게 열린 틈 사이로 어두운 실내가 엿보이는 정경.",
            "based_on_beat": 1,
            "characters": [],
            "character_ids": []
          },
          {
            "shot_index": 5,
            "description": "불이 켜진 옥탑방 창문에 비친 실루엣, 거대한 그림자가 강민숙의 어깨를 물어뜯기 위해 덮치는 mid-action 순간.",
            "based_on_beat": 2,
            "characters": [
              "강민숙",
              "거대한 그림자"
            ],
            "original_description": "불이 켜진 옥탑방 창문 안쪽으로, 거대한 그림자가 강민숙의 실루엣 위를 덮친 채 멈춰 있는 모습.",
            "validator_reason": "원문에 묘사된 '덮쳐 물어뜯는' 능동적 공격 동작의 역동성을 보존하기 위해 mid-action 순간으로 수정함.",
            "character_ids": []
          }
        ]
      },
      {
        "scene_index": 11,
        "scene_heading": "S#11. 옥탑 방 밖 / N",
        "shots": [
          {
            "shot_index": 1,
            "description": "어두운 마당 구석, 수리영이 자전거 앞바퀴를 벽에 댄 채 손을 떼고 서 있는 뒷모습.",
            "based_on_beat": 1,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          },
          {
            "shot_index": 2,
            "description": "옥상으로 이어지는 좁은 계단 중간, 코를 찌푸린 채 고개를 치켜든 수리영의 정면.",
            "based_on_beat": 1,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          },
          {
            "shot_index": 3,
            "description": "수리영의 어깨 너머로 보이는, 어둠 속에서 반쯤 열린 채 멈춰 있는 옥탑방 현관 철문.",
            "based_on_beat": 2,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          }
        ]
      },
      {
        "scene_index": 12,
        "scene_heading": "S#12. 옥탑방 안 / N",
        "shots": [
          {
            "shot_index": 1,
            "description": "어두운 거실, 수리영이 희미한 스탠드 불빛 아래 서서 한쪽으로 고개를 돌린 채 멈춘 모습.",
            "based_on_beat": 1,
            "characters": [
              "수리영"
            ],
            "original_description": "어두운 거실, 수리영이 희미한 스탠드 불빛 아래 서서 주위를 둘러보는 정지 상태.",
            "validator_reason": "'둘러보는'이라는 연속적인 시선 이동 동작을 특정 방향을 향해 고개를 돌린 단일 순간으로 수정함.",
            "character_ids": []
          },
          {
            "shot_index": 2,
            "description": "식탁 위에 엎어진 찻잔 하나와 똑바로 놓인 찻잔 하나가 있는 정물 구도.",
            "based_on_beat": 1,
            "characters": [],
            "character_ids": []
          },
          {
            "shot_index": 3,
            "description": "수리영의 손이 닫힌 방문 손잡이를 꽉 쥔 클로즈업.",
            "based_on_beat": 1,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          },
          {
            "shot_index": 4,
            "description": "방바닥에 고인 붉은 혈흔과 커튼 쪽으로 이어진 피 묻은 발자국.",
            "based_on_beat": 1,
            "characters": [],
            "character_ids": []
          },
          {
            "shot_index": 5,
            "description": "수리영의 손이 창문 커튼 끝자락을 쥔 채 멈춘 순간.",
            "based_on_beat": 2,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          },
          {
            "shot_index": 6,
            "description": "살점이 뜯겨 피가 흐르는 참혹한 상처를 입은 강민숙이 고개를 떨구고 바닥에 앉아 있는 모습.",
            "based_on_beat": 2,
            "characters": [
              "강민숙"
            ],
            "character_ids": []
          },
          {
            "shot_index": 7,
            "description": "수리영이 눈을 크게 뜬 채 굳어 있는 충격받은 정면 얼굴.",
            "based_on_beat": 2,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          },
          {
            "shot_index": 8,
            "description": "수리영의 떨리는 손가락이 휴대전화 다이얼을 누른 채 멈춘 클로즈업.",
            "based_on_beat": 3,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          },
          {
            "shot_index": 9,
            "description": "죽은 강민숙의 손안에 꽉 쥐어진 구겨진 사진 클로즈업.",
            "based_on_beat": 3,
            "characters": [
              "강민숙"
            ],
            "character_ids": []
          },
          {
            "shot_index": 10,
            "description": "수리영의 손이 강민숙의 손에 쥐어진 사진을 향해 뻗은 채 멈춘 순간.",
            "based_on_beat": 3,
            "characters": [
              "수리영",
              "강민숙"
            ],
            "character_ids": []
          },
          {
            "shot_index": 11,
            "description": "강민숙의 손목 안쪽에 새겨진 문신이 붉은색으로 물든 클로즈업.",
            "based_on_beat": 3,
            "characters": [
              "강민숙"
            ],
            "character_ids": []
          },
          {
            "shot_index": 12,
            "description": "침대 위 벽면에 거대한 붉은색 원형 표식이 나타난 모습.",
            "based_on_beat": 3,
            "characters": [],
            "character_ids": []
          },
          {
            "shot_index": 13,
            "description": "수리영이 입을 크게 벌리고 벽을 향해 비명을 지르는 굳은 표정.",
            "based_on_beat": 3,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          }
        ]
      },
      {
        "scene_index": 13,
        "scene_heading": "S#13. 옥탑방 외곽 / N",
        "shots": [
          {
            "shot_index": 1,
            "description": "공포에 질린 얼굴의 수리영이 옥탑방 외부 계단을 뛰어내려오는 도중, 한 발이 허공에 뜬 mid-action 전신.",
            "based_on_beat": 1,
            "characters": [
              "수리영"
            ],
            "original_description": "공포에 질린 얼굴의 수리영이 옥탑방 외부 계단을 뛰어내려오는 자세로 멈춘 전신.",
            "validator_reason": "'멈춘'이라는 표현 대신 이동 동작의 추진력을 보존한 mid-action 찰나로 수정했습니다.",
            "character_ids": []
          },
          {
            "shot_index": 2,
            "description": "사이렌 불빛이 번쩍이는 경찰차 옆, 제복을 입은 혜수가 차 문을 열고 한 발을 바닥에 디딘 채 체중을 싣고 있는 찰나.",
            "based_on_beat": 1,
            "characters": [
              "혜수"
            ],
            "original_description": "사이렌 불빛이 번쩍이는 경찰차 옆, 제복을 입은 혜수가 차 문을 열고 내린 채 멈춘 순간.",
            "validator_reason": "'멈춘 순간'이라는 명시적 정지 단어를 제거하고 차에서 내리는 동작의 시각적 찰나로 수정했습니다.",
            "character_ids": []
          },
          {
            "shot_index": 3,
            "description": "혜수가 초점을 잃고 서 있는 수리영의 어깨를 쥔 채 마주 보는 상체 구도.",
            "based_on_beat": 1,
            "characters": [
              "혜수",
              "수리영"
            ],
            "character_ids": []
          },
          {
            "shot_index": 4,
            "description": "수리영이 절망적인 표정으로 혜수를 올려다보는 얼굴 클로즈업.",
            "based_on_beat": 1,
            "characters": [
              "수리영",
              "혜수"
            ],
            "character_ids": []
          },
          {
            "shot_index": 5,
            "description": "다급한 표정의 혜수와 김형사가 옥탑방 계단을 뛰어 올라가는 도중, 몸을 앞으로 기울이고 한쪽 다리를 위로 뻗은 mid-action 구도.",
            "based_on_beat": 2,
            "characters": [
              "혜수",
              "김형사"
            ],
            "original_description": "혜수와 김형사가 다급한 표정으로 옥탑방 계단을 뛰어 올라가는 역동적인 정지 컷.",
            "validator_reason": "'정지 컷'이라는 메타 표현을 제거하고 상승 이동의 추진력이 담긴 mid-action 묘사로 수정했습니다.",
            "character_ids": []
          }
        ]
      },
      {
        "scene_index": 14,
        "scene_heading": "S#14. 옥탑방 안 / N",
        "shots": [
          {
            "shot_index": 1,
            "description": "옥탑방 현관, 혜수와 김형사가 허탈한 표정으로 멈춰 서 있는 모습.",
            "based_on_beat": 1,
            "characters": [
              "혜수",
              "김형사"
            ],
            "character_ids": []
          },
          {
            "shot_index": 2,
            "description": "수리영이 혜수를 지나쳐 방문을 향해 한쪽 발을 공중에 띄우고 상체를 앞으로 기울인 채 달려가는 mid-action 순간.",
            "based_on_beat": 1,
            "characters": [
              "수리영",
              "혜수"
            ],
            "original_description": "수리영이 혜수를 지나쳐 자신의 방문을 향해 몸을 던지듯 뛰어가는 순간.",
            "validator_reason": "뛰어가는 이동 동작을 방향성과 추진력이 보존된 한 찰나의 mid-action 자세로 구체화함.",
            "character_ids": []
          },
          {
            "shot_index": 3,
            "description": "핏자국 하나 없이 깨끗하게 정돈된 방 한가운데 서서 파랗게 질린 얼굴로 멈춘 수리영.",
            "based_on_beat": 2,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          },
          {
            "shot_index": 4,
            "description": "시신이 사라지고 빈 공간만 남은 깨끗한 커튼 뒤 바닥.",
            "based_on_beat": 2,
            "characters": [],
            "character_ids": []
          },
          {
            "shot_index": 5,
            "description": "수리영이 거실의 얼룩 하나 없는 깨끗한 식탁을 손가락으로 가리킨 채 멈춘 측면.",
            "based_on_beat": 2,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          },
          {
            "shot_index": 6,
            "description": "김형사가 미간을 찌푸린 채 수리영을 향해 짜증 섞인 표정으로 서 있는 상체.",
            "based_on_beat": 3,
            "characters": [
              "김형사"
            ],
            "character_ids": []
          },
          {
            "shot_index": 7,
            "description": "혜수가 차가운 눈빛으로 김형사를 노려보는 정면 얼굴.",
            "based_on_beat": 3,
            "characters": [
              "혜수"
            ],
            "character_ids": []
          },
          {
            "shot_index": 8,
            "description": "혜수가 수리영의 어깨를 양손으로 감싸 쥔 채 서 있는 정지 순간.",
            "based_on_beat": 3,
            "characters": [
              "혜수",
              "수리영"
            ],
            "original_description": "혜수가 수리영의 어깨를 양손으로 감싸 쥐고 다독이는 정지 순간.",
            "validator_reason": "'다독이는'이라는 연속 동작을 배제하고 양손으로 감싸 쥔 고정된 상태로 수정함.",
            "character_ids": []
          },
          {
            "shot_index": 9,
            "description": "방 한구석, 위치가 미세하게 바뀐 백팩과 인형이 놓여 있는 정물 컷.",
            "based_on_beat": 3,
            "characters": [],
            "character_ids": []
          }
        ]
      },
      {
        "scene_index": 15,
        "scene_heading": "S#15. 해안가. 버스정류장 부근 / N",
        "shots": [
          {
            "shot_index": 1,
            "description": "어두운 밤바다 앞 버스정류장 벤치에 수리영이 멍한 표정으로 앉아 있는 모습.",
            "based_on_beat": 1,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          },
          {
            "shot_index": 2,
            "description": "혜수가 수리영을 향해 캔 음료수를 건넨 채 멈춘 손 클로즈업.",
            "based_on_beat": 1,
            "characters": [
              "혜수",
              "수리영"
            ],
            "character_ids": []
          },
          {
            "shot_index": 3,
            "description": "수리영이 벤치에서 몸을 일으켜 세운 채 멈춘 엉거주춤한 자세.",
            "based_on_beat": 1,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          },
          {
            "shot_index": 4,
            "description": "수리영이 해안가 도로를 따라 한 발이 허공에 떠 있는 미드 스트라이드(mid-stride) 자세로 달리는 뒷모습.",
            "based_on_beat": 1,
            "characters": [
              "수리영"
            ],
            "original_description": "수리영이 해안가 도로를 따라 달려가는 뒷모습.",
            "validator_reason": "이동 동작을 방향성과 추진력이 보존된 미드 액션(mid-action) 순간으로 재작성함.",
            "character_ids": []
          },
          {
            "shot_index": 5,
            "description": "혜수가 입가에 손을 모으고 입을 크게 벌린 채, 멀리 떨어진 수리영의 뒷모습을 향해 외치는 고정된 상체.",
            "based_on_beat": 1,
            "characters": [
              "혜수",
              "수리영"
            ],
            "original_description": "혜수가 입가에 손을 모으고 멀어지는 수리영을 향해 소리치는 상체.",
            "validator_reason": "'멀어지는'이라는 연속 동작 표현을 정적인 거리감과 멈춘 자세로 수정함.",
            "character_ids": []
          },
          {
            "shot_index": 6,
            "description": "먼 발치에서 구조물 너머로 멈춰 서 있는 혜수와 한 발을 허공에 띄운 미드 스트라이드(mid-stride) 자세로 달리는 수리영이 한 프레임에 잡힌 시점 쇼트.",
            "based_on_beat": 1,
            "characters": [
              "혜수",
              "수리영"
            ],
            "original_description": "먼 발치에서 구조물 너머로 혜수와 달리는 수리영을 지켜보는 듯한 시점 쇼트.",
            "validator_reason": "'달리는' 연속 동작을 추진력이 담긴 미드 액션(mid-action) 순간으로 재작성함.",
            "character_ids": []
          }
        ]
      },
      {
        "scene_index": 16,
        "scene_heading": "S#16. 경찰서 사무실 / N",
        "shots": [
          {
            "shot_index": 1,
            "description": "경찰서 사무실 안, 혜수가 굳은 표정으로 휴대전화를 귀에 댄 채 서 있는 상체.",
            "based_on_beat": 1,
            "characters": [
              "혜수"
            ],
            "character_ids": []
          },
          {
            "shot_index": 2,
            "description": "당직석에 앉아 고개를 든 채 혜수를 바라보는 김형사의 모습.",
            "based_on_beat": 1,
            "characters": [
              "김형사",
              "혜수"
            ],
            "original_description": "당직석에 앉은 김형사가 고개를 들어 혜수를 바라보는 모습.",
            "validator_reason": "'고개를 들어 바라보는'이라는 시간 순서의 동작을 '고개를 든 채 바라보는' 고정 상태로 수정함.",
            "character_ids": []
          },
          {
            "shot_index": 3,
            "description": "휴대전화 액정 화면을 김형사 쪽으로 내민 혜수의 손 클로즈업.",
            "based_on_beat": 1,
            "characters": [
              "혜수",
              "김형사"
            ],
            "original_description": "혜수가 휴대전화 액정 화면을 김형사 쪽으로 내밀어 보여주는 손 클로즈업.",
            "validator_reason": "'내밀어 보여주는'이라는 동작 연결을 '내민' 고정 상태로 수정함.",
            "character_ids": []
          }
        ]
      },
      {
        "scene_index": 17,
        "scene_heading": "S#17. 옥탑방 / 동틀무렵",
        "shots": [
          {
            "shot_index": 1,
            "description": "동틀 무렵, 불이 켜진 옥탑방 창문이 보이는 서늘한 외부 전경.",
            "based_on_beat": 1,
            "characters": [],
            "character_ids": []
          },
          {
            "shot_index": 2,
            "description": "담벼락 위에 선 검은 고양이가 불 켜진 창문 쪽을 응시하는 정지 상태.",
            "based_on_beat": 1,
            "characters": [
              "검은 고양이"
            ],
            "character_ids": []
          },
          {
            "shot_index": 3,
            "description": "검은 고양이가 담을 넘기 위해 허공으로 몸을 날린 찰나의 실루엣.",
            "based_on_beat": 1,
            "characters": [
              "검은 고양이"
            ],
            "character_ids": []
          }
        ]
      },
      {
        "scene_index": 18,
        "scene_heading": "S#18. 안방 안 / D",
        "shots": [
          {
            "shot_index": 1,
            "description": "밝은 아침 안방, 침대 끝에 머리를 기댄 채 번쩍 눈을 뜬 수리영의 얼굴.",
            "based_on_beat": 1,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          },
          {
            "shot_index": 2,
            "description": "수리영이 굳게 닫힌 자신의 방문 앞에 서서 문고리를 응시하는 정면.",
            "based_on_beat": 1,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          },
          {
            "shot_index": 3,
            "description": "수리영의 손이 창문 커튼을 힘껏 젖힌 채 멈춘 순간.",
            "based_on_beat": 1,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          },
          {
            "shot_index": 4,
            "description": "커튼 뒤, 아무것도 없이 깨끗한 창가 바닥의 모습.",
            "based_on_beat": 1,
            "characters": [],
            "character_ids": []
          },
          {
            "shot_index": 5,
            "description": "수리영이 휴대전화를 귀에 댄 채 불안한 눈빛으로 허공을 응시하는 상체.",
            "based_on_beat": 2,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          },
          {
            "shot_index": 6,
            "description": "수리영이 인형이 달린 백팩을 어깨에 멘 채 현관 앞에 멈춰 선 전신.",
            "based_on_beat": 2,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          },
          {
            "shot_index": 7,
            "description": "머리가 젖은 수리영이 욕실 거울 속 자신의 얼굴을 들여다보는 정지 상태.",
            "based_on_beat": 3,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          },
          {
            "shot_index": 8,
            "description": "거울에 비친 욕실 벽면에 선명한 붉은 원이 그려져 있는 시점 쇼트.",
            "based_on_beat": 3,
            "characters": [],
            "character_ids": []
          },
          {
            "shot_index": 9,
            "description": "수리영이 고개를 돌린 채 아무것도 없는 빈 욕실 벽을 바라보는 뒷모습.",
            "based_on_beat": 3,
            "characters": [
              "수리영"
            ],
            "original_description": "수리영이 고개를 획 돌려 아무것도 없는 빈 욕실 벽을 바라보는 뒷모습.",
            "validator_reason": "'획 돌려'라는 동작 진행과 '바라보는' 상태가 섞여 있어, 고개를 돌린 정지 자세로 수정했습니다.",
            "character_ids": []
          },
          {
            "shot_index": 10,
            "description": "거실 식탁 앞, 물컵을 든 수리영이 식탁 위 사진을 내려다보는 측면.",
            "based_on_beat": 3,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          },
          {
            "shot_index": 11,
            "description": "사진 속 강민숙의 환하게 웃는 얼굴이 기괴하게 흘러내린 채 뭉개져 있는 클로즈업.",
            "based_on_beat": 3,
            "characters": [
              "강민숙"
            ],
            "original_description": "사진 속 강민숙의 환하게 웃는 얼굴이 기괴하게 흘러내리며 뭉개진 클로즈업.",
            "validator_reason": "'흘러내리며 뭉개진'은 변화의 진행 상태로 보일 수 있어, 변형이 완료되어 고정된 상태로 수정했습니다.",
            "character_ids": []
          },
          {
            "shot_index": 12,
            "description": "수리영의 손바닥이 자신의 뺨을 강하게 가격하여 피부가 밀려난 mid-impact 찰나의 클로즈업.",
            "based_on_beat": 3,
            "characters": [
              "수리영"
            ],
            "original_description": "수리영의 손바닥이 자신의 뺨에 세게 닿아 있는 찰나의 클로즈업.",
            "validator_reason": "단순히 닿아 있는 찰나에서 타격의 능동성과 충격의 영향을 더욱 잘 보존하기 위해 mid-impact 상태로 수정했습니다.",
            "character_ids": []
          }
        ]
      },
      {
        "scene_index": 19,
        "scene_heading": "S#19. 마트 / D",
        "shots": [
          {
            "shot_index": 1,
            "description": "한산한 아침 마트 앞, 수리영이 자전거 앞바퀴를 거치대에 밀어넣은 채 멈춘 전신.",
            "based_on_beat": 1,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          },
          {
            "shot_index": 2,
            "description": "마트 안, 수리영이 마트 남자 직원 앞을 가로막고 선 채 올려다보는 상체 구도.",
            "based_on_beat": 1,
            "characters": [
              "수리영",
              "마트 남자 직원"
            ],
            "original_description": "마트 안, 수리영이 마트 남자 직원의 앞을 막아서며 올려다보는 상체 구도.",
            "validator_reason": "'막아서며'라는 진행·연속 표현을 '가로막고 선 채'라는 고정된 정지 상태로 수정하여 한 찰나를 명확히 함.",
            "character_ids": []
          },
          {
            "shot_index": 3,
            "description": "빈 종이박스를 든 마트 남자 직원이 멈춰 서서 수리영을 내려다보는 측면.",
            "based_on_beat": 1,
            "characters": [
              "마트 남자 직원",
              "수리영"
            ],
            "character_ids": []
          },
          {
            "shot_index": 4,
            "description": "마트 밖 CCTV가 설치된 처마 아래, 수리영이 고개를 든 채 CCTV 카메라를 손가락으로 가리키고 멈춰 서 있는 순간.",
            "based_on_beat": 1,
            "characters": [
              "수리영"
            ],
            "original_description": "마트 밖 CCTV가 설치된 처마 아래, 수리영이 고개를 들어 CCTV 카메라를 가리키고 멈춘 순간.",
            "validator_reason": "'고개를 들어 가리키고'라는 순차적 동작 묘사를 '고개를 든 채 가리키고 멈춰 서 있는' 동시 고정 상태로 수정함.",
            "character_ids": []
          },
          {
            "shot_index": 5,
            "description": "수리영이 휴대전화를 귀에 댄 채 심각한 표정으로 서 있는 상체.",
            "based_on_beat": 1,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          }
        ]
      },
      {
        "scene_index": 20,
        "scene_heading": "S#20. 마트 총무과 / 실내",
        "shots": [
          {
            "shot_index": 1,
            "description": "총무과 사무실, 한국인 남성 보안직원과 혜수가 모니터 화면을 주시하며 앉아 있는 뒷모습.",
            "based_on_beat": 1,
            "characters": [
              "보안직원",
              "혜수"
            ],
            "character_ids": []
          },
          {
            "shot_index": 2,
            "description": "보안직원과 혜수 뒤에 선 수리영이 미간을 찌푸린 채 모니터를 응시하는 얼굴 클로즈업.",
            "based_on_beat": 1,
            "characters": [
              "수리영",
              "보안직원",
              "혜수"
            ],
            "character_ids": []
          },
          {
            "shot_index": 3,
            "description": "모니터 화면 속, 유독 어둡게 처리되어 형체가 뭉개진 남자의 실루엣이 떠 있는 컷.",
            "based_on_beat": 1,
            "characters": [
              "남자"
            ],
            "character_ids": []
          },
          {
            "shot_index": 4,
            "description": "보안직원 쪽으로 고개를 돌린 채 시선을 고정한 혜수의 측면 얼굴.",
            "based_on_beat": 1,
            "characters": [
              "혜수",
              "보안직원"
            ],
            "original_description": "혜수가 고개를 돌려 보안직원을 바라보는 측면 얼굴.",
            "validator_reason": "'고개를 돌려'라는 동작 진행을 고개를 돌린 결과 상태의 단일 찰나로 수정했습니다.",
            "character_ids": []
          }
        ]
      },
      {
        "scene_index": 21,
        "scene_heading": "S#21. 경찰서 안 / D",
        "shots": [
          {
            "shot_index": 1,
            "description": "경찰서 사무실 입구, 혜수가 서류를 든 김형사에게 고개를 숙여 인사하는 정지 순간.",
            "based_on_beat": 1,
            "characters": [
              "혜수",
              "김형사"
            ],
            "character_ids": []
          },
          {
            "shot_index": 2,
            "description": "김형사가 혜수를 향해 서류를 내민 채 짜증 섞인 표정으로 멈춘 상체.",
            "based_on_beat": 1,
            "characters": [
              "김형사",
              "혜수"
            ],
            "character_ids": []
          },
          {
            "shot_index": 3,
            "description": "혜수가 난감한 표정으로 수리영을 쳐다보는 정면 얼굴.",
            "based_on_beat": 1,
            "characters": [
              "혜수",
              "수리영"
            ],
            "character_ids": []
          },
          {
            "shot_index": 4,
            "description": "텅 빈 사무실, 수리영이 혜수의 책상 앞 의자에 덩그러니 앉아 있는 모습.",
            "based_on_beat": 1,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          },
          {
            "shot_index": 5,
            "description": "책상 위에 널브러진 끔찍한 시신 확대 사진들이 보이는 수리영의 시점 쇼트.",
            "based_on_beat": 1,
            "characters": [],
            "character_ids": []
          },
          {
            "shot_index": 6,
            "description": "수리영이 눈을 크게 뜨고 입을 살짝 벌린 채 굳어버린 얼굴 클로즈업.",
            "based_on_beat": 1,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          },
          {
            "shot_index": 7,
            "description": "김형사의 빈 책상 위, 모니터 화면에 'LAST LOCATION' 텍스트 창이 떠 있는 정지 컷.",
            "based_on_beat": 2,
            "characters": [],
            "character_ids": []
          },
          {
            "shot_index": 8,
            "description": "수리영의 손가락이 마우스 버튼을 누른 채 멈춘 클로즈업.",
            "based_on_beat": 2,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          },
          {
            "shot_index": 9,
            "description": "해상 지도 위에 37.484400 N / 126.072486 E 좌표가 표시된 모니터 화면 클로즈업.",
            "based_on_beat": 2,
            "characters": [],
            "character_ids": []
          },
          {
            "shot_index": 10,
            "description": "사색이 된 수리영이 볼펜을 쥐고 수첩에 좌표를 적던 중 멈춘 손 클로즈업.",
            "based_on_beat": 2,
            "characters": [
              "수리영"
            ],
            "original_description": "사색이 된 수리영이 볼펜을 쥐고 수첩에 좌표를 적어내려간 상태로 멈춘 손 클로즈업.",
            "validator_reason": "시간 경과를 암시하는 '적어내려간 상태로'를 '적던 중 멈춘'으로 변경하여 단일 찰나로 고정함.",
            "character_ids": []
          },
          {
            "shot_index": 11,
            "description": "쪽지를 주머니에 반쯤 밀어넣은 상태로 멈춘 채 사무실 문 밖을 향해 서 있는 수리영의 뒷모습.",
            "based_on_beat": 2,
            "characters": [
              "수리영"
            ],
            "original_description": "쪽지를 주머니에 밀어넣은 채 사무실 문 밖을 향해 서 있는 수리영의 뒷모습.",
            "validator_reason": "'밀어넣은 채'라는 완료 상태보다는 행동 중간의 찰나(mid-action)를 강조하기 위해 '반쯤 밀어넣은 상태로 멈춘'으로 재작성함.",
            "character_ids": []
          }
        ]
      },
      {
        "scene_index": 22,
        "scene_heading": "S#22. 경찰서 밖 / D",
        "shots": [
          {
            "shot_index": 1,
            "description": "맑은 낮 경찰서 밖, 수리영이 자전거 안장에 앉아 한쪽 무릎을 굽혀 페달을 내리누르는 중간 동작의 측면 전신, 머리카락이 주행 반대 방향으로 휘날린다.",
            "based_on_beat": 1,
            "characters": [
              "수리영"
            ],
            "original_description": "맑은 낮 경찰서 밖, 수리영이 자전거 안장에 앉아 페달을 밟은 자세로 멈춘 측면 전신.",
            "validator_reason": "이동 중인 자전거의 추진력과 방향성을 보존하기 위해 '멈춘'이라는 표현을 빼고 역동적인 중간 동작(mid-action)으로 수정했습니다.",
            "character_ids": []
          },
          {
            "shot_index": 2,
            "description": "어두운 PC방 안, 수리영이 모니터 화면의 지도를 응시하며 앉아 있는 상체.",
            "based_on_beat": 1,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          },
          {
            "shot_index": 3,
            "description": "수리영의 손이 인쇄된 지도 여러 장을 반으로 접은 채 멈춘 클로즈업.",
            "based_on_beat": 1,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          },
          {
            "shot_index": 4,
            "description": "접은 지도를 열린 백팩 안으로 찔러넣은 채 멈춘 수리영의 손.",
            "based_on_beat": 1,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          }
        ]
      },
      {
        "scene_index": 23,
        "scene_heading": "S#24. 해안가 / 소나기",
        "shots": [
          {
            "shot_index": 1,
            "description": "먹구름이 낀 어두운 하늘 아래 세찬 비가 쏟아지는 해안가 도로 전경.",
            "based_on_beat": 1,
            "characters": [],
            "character_ids": []
          },
          {
            "shot_index": 2,
            "description": "쏟아지는 빗속에서 자전거 핸들을 꽉 쥐고 상체를 앞으로 숙인 수리영의 측면, 속도에 의해 뒤로 흩날리는 젖은 머리카락과 옷자락.",
            "based_on_beat": 1,
            "characters": [
              "수리영"
            ],
            "original_description": "쏟아지는 빗속을 뚫고 자전거 핸들을 꽉 쥔 수리영의 젖은 상체 측면.",
            "validator_reason": "'뚫고'라는 연속 진행 표현을 제거하고, 자전거 주행의 속도감(이동 방향)을 흩날리는 옷자락으로 보존한 단일 찰나로 수정함.",
            "character_ids": []
          },
          {
            "shot_index": 3,
            "description": "수리영의 젖은 앞머리 사이로 결연한 눈빛이 번뜩이는 얼굴 클로즈업.",
            "based_on_beat": 1,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          },
          {
            "shot_index": 4,
            "description": "자전거 앞바퀴가 물웅덩이에 진입해 거친 물보라가 공중으로 사방에 튀어오른 찰나의 클로즈업.",
            "based_on_beat": 1,
            "characters": [],
            "original_description": "자전거 앞바퀴가 물웅덩이를 가르며 물보라가 튀어오른 찰나의 클로즈업.",
            "validator_reason": "'가르며'라는 연속 동작 묘사를 제거하고, 물보라가 튀어오른 채 고정된 단일 찰나 상태로 수정함.",
            "character_ids": []
          }
        ]
      },
      {
        "scene_index": 24,
        "scene_heading": "S#25. 옥탑방 안 / 해질 무렵",
        "shots": [
          {
            "shot_index": 1,
            "description": "열린 현관문 안쪽에 서서 바닥의 진흙 묻은 발자국들을 내려다보는 수리영의 굳은 전신.",
            "based_on_beat": 1,
            "characters": [
              "수리영"
            ],
            "original_description": "현관문을 열고 들어선 수리영이 진흙 묻은 발자국들을 내려다보며 멈춘 굳은 전신.",
            "validator_reason": "'문을 열고 들어선'이라는 연속 동작을 제거하고 서 있는 정지 상태의 찰나로 수정.",
            "character_ids": []
          },
          {
            "shot_index": 2,
            "description": "가재도구가 엎어지고 식탁 의자가 쓰러진 어질러진 거실의 정물 구도.",
            "based_on_beat": 1,
            "characters": [],
            "character_ids": []
          },
          {
            "shot_index": 3,
            "description": "수리영이 열린 자신의 방문 앞에서 미간을 찌푸린 채 멈춰 선 뒷모습.",
            "based_on_beat": 1,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          },
          {
            "shot_index": 4,
            "description": "방 안쪽 벽면에 거칠게 그려진 붉은색 원과 그 한가운데 꽂힌 낡은 사진 한 장.",
            "based_on_beat": 1,
            "characters": [],
            "character_ids": []
          },
          {
            "shot_index": 5,
            "description": "수리영의 손이 벽에 꽂힌 피 묻은 사진을 쥔 채 멈춘 클로즈업.",
            "based_on_beat": 1,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          },
          {
            "shot_index": 6,
            "description": "7-80년대 식당과 지붕 위 둥근 원, 두 명의 어린 여자아이가 찍힌 낡은 사진의 시점 쇼트.",
            "based_on_beat": 1,
            "characters": [],
            "character_ids": []
          },
          {
            "shot_index": 7,
            "description": "수리영이 멍한 표정으로 침대 끝에 앉아 있는 고정된 자세.",
            "based_on_beat": 2,
            "characters": [
              "수리영"
            ],
            "original_description": "수리영이 멍한 표정으로 침대 끝에 털썩 주저앉은 자세.",
            "validator_reason": "'털썩 주저앉은'이 내포하는 동작성을 배제하고 완전히 멈춘 결과 상태만 묘사.",
            "character_ids": []
          },
          {
            "shot_index": 8,
            "description": "백팩을 멘 수리영이 손에 구겨진 사진을 꽉 쥔 채 열린 현관문 밖으로 나가는 도중, 한 발을 공중에 든 찰나.",
            "based_on_beat": 2,
            "characters": [
              "수리영"
            ],
            "original_description": "백팩을 멘 수리영이 손에 구겨진 사진을 꽉 쥔 채 열린 현관문 밖으로 한 발을 내디딘 순간.",
            "validator_reason": "이동 동작의 추진력과 방향성을 보존하기 위해 발을 들고 걷는 도중의 mid-action 순간으로 수정.",
            "character_ids": []
          }
        ]
      },
      {
        "scene_index": 25,
        "scene_heading": "S#26. 포구 / 해질 무렵",
        "shots": [
          {
            "shot_index": 1,
            "description": "자욱한 안개가 깔린 텅 빈 포구, 수리영이 갯바위에 웅크려 앉아 바다를 응시하는 뒷모습.",
            "based_on_beat": 1,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          },
          {
            "shot_index": 2,
            "description": "수리영의 무릎 위에서 휴대전화 화면에 혜수의 부재중 전화 알림이 떠 있는 클로즈업.",
            "based_on_beat": 1,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          },
          {
            "shot_index": 3,
            "description": "짙은 안개 속에서 뱃머리가 살짝 드러난 작은 어선의 실루엣.",
            "based_on_beat": 1,
            "characters": [],
            "character_ids": []
          },
          {
            "shot_index": 4,
            "description": "배 앞머리에서 인우가 밧줄을 쥐고 선착장 기둥에 묶으려는 자세로 멈춘 모습.",
            "based_on_beat": 1,
            "characters": [
              "인우"
            ],
            "character_ids": []
          },
          {
            "shot_index": 5,
            "description": "수리영이 인우를 향해 다가가며 한쪽 발을 내디딘 공중의 순간, 입을 살짝 벌리고 있는 측면 상체.",
            "based_on_beat": 1,
            "characters": [
              "수리영",
              "인우"
            ],
            "original_description": "수리영이 인우를 향해 다가가 입을 연 채 멈춰 선 측면 상체.",
            "validator_reason": "'다가가 멈춰 선'은 시간 간격이 있는 순차 동작이므로, 다가가는 발걸음 중간의 고정된 자세로 수정함.",
            "character_ids": []
          },
          {
            "shot_index": 6,
            "description": "인우가 밧줄을 쥔 채 고개를 반쯤 돌려 수리영을 힐끗 쳐다보고 있는 무표정한 얼굴.",
            "based_on_beat": 1,
            "characters": [
              "인우",
              "수리영"
            ],
            "original_description": "인우가 밧줄을 쥔 채 고개를 돌려 수리영을 힐끗 쳐다보는 무표정한 얼굴.",
            "validator_reason": "'고개를 돌려'라는 동작 표현을 '고개를 반쯤 돌린' 상태라는 고정된 자세로 수정함.",
            "character_ids": []
          },
          {
            "shot_index": 7,
            "description": "수리영이 휴대전화를 입가에 댄 채 바다를 바라보며 서 있는 뒷모습.",
            "based_on_beat": 2,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          }
        ]
      },
      {
        "scene_index": 26,
        "scene_heading": "S#27. 옥탑방 안 / 해질 무렵",
        "shots": [
          {
            "shot_index": 1,
            "description": "어두운 옥탑방 거실, 혜수가 휴대전화를 귀에 댄 채 굳은 표정으로 서 있는 상체.",
            "based_on_beat": 1,
            "characters": [
              "혜수"
            ],
            "character_ids": []
          },
          {
            "shot_index": 2,
            "description": "어이없다는 표정으로 입술을 살짝 비튼 채 혜수를 쳐다보는 김형사의 정면 얼굴.",
            "based_on_beat": 1,
            "characters": [
              "김형사",
              "혜수"
            ],
            "original_description": "김형사가 혀를 차며 어이없다는 듯 혜수를 쳐다보는 정면 얼굴.",
            "validator_reason": "'혀를 차며'는 연속적인 입술 움직임과 소리를 암시하므로 정지된 한 순간의 표정으로 재작성함.",
            "character_ids": []
          },
          {
            "shot_index": 3,
            "description": "혜수가 김형사를 향해 불안한 눈빛으로 돌아본 채 멈춘 측면.",
            "based_on_beat": 1,
            "characters": [
              "혜수",
              "김형사"
            ],
            "character_ids": []
          },
          {
            "shot_index": 4,
            "description": "바람에 흔들려 살짝 열린 채 멈춘 낡은 현관 철문의 틈새 정경.",
            "based_on_beat": 1,
            "characters": [],
            "character_ids": []
          }
        ]
      },
      {
        "scene_index": 27,
        "scene_heading": "S#28. 바다 + 갑판 / 해질 무렵",
        "shots": [
          {
            "shot_index": 1,
            "description": "해질 무렵 붉게 물든 바다 수면 위에 소형 어선 한 척이 떠 있는 외부 전경.",
            "based_on_beat": 1,
            "characters": [],
            "character_ids": []
          },
          {
            "shot_index": 2,
            "description": "갑판 위에 웅크려 앉은 수리영이 지도를 쥔 손을 앞으로 뻗고 있는 측면.",
            "based_on_beat": 1,
            "characters": [
              "수리영"
            ],
            "original_description": "갑판 위에 웅크려 앉은 수리영이 지도를 쥔 손을 앞으로 뻗은 채 멈춘 측면.",
            "validator_reason": "실제로 정지한 상황이 아니므로 불필요하게 정지를 강조하는 '멈춘' 표현을 제거하고 자세를 보존했습니다.",
            "character_ids": []
          },
          {
            "shot_index": 3,
            "description": "지도를 내려다보며 미간을 찌푸린 인우의 굳은 얼굴 클로즈업.",
            "based_on_beat": 1,
            "characters": [
              "인우"
            ],
            "character_ids": []
          },
          {
            "shot_index": 4,
            "description": "수리영이 낡은 흑백 사진을 손가락으로 짚은 채 인우의 눈을 뚫어지게 응시하는 상체.",
            "based_on_beat": 2,
            "characters": [
              "수리영",
              "인우"
            ],
            "character_ids": []
          },
          {
            "shot_index": 5,
            "description": "사진을 본 인우가 눈을 크게 뜬 채 입술을 벌리고 얼어붙은 당황한 정면 얼굴.",
            "based_on_beat": 2,
            "characters": [
              "인우"
            ],
            "character_ids": []
          },
          {
            "shot_index": 6,
            "description": "갑판 위에서 엉거주춤하게 몸을 반쯤 일으켜 세우고 있는 인우의 미드액션 전신.",
            "based_on_beat": 2,
            "characters": [
              "인우"
            ],
            "original_description": "인우가 갑판 위에서 몸을 일으켜 세운 엉거주춤한 자세로 멈춘 전신.",
            "validator_reason": "일어나는 동작의 일부이므로 명시적 정지를 나타내는 '멈춘'을 지우고 찰나의 자세 자체로 수정했습니다.",
            "character_ids": []
          },
          {
            "shot_index": 7,
            "description": "조타실 문을 향해 다급히 한 발을 내디디며 몸이 앞으로 쏠린 인우의 미드액션 뒷모습.",
            "based_on_beat": 3,
            "characters": [
              "인우"
            ],
            "original_description": "인우가 조타실 문을 향해 발을 내디딘 자세로 멈춘 뒷모습.",
            "validator_reason": "달려가는 추진 동작이므로 불필요한 '멈춘'을 제거하고 모션 방향성을 살린 미드액션으로 재작성했습니다.",
            "character_ids": []
          },
          {
            "shot_index": 8,
            "description": "조타실 입구에서 수리영이 인우의 앞을 가로막으며 뻗은 팔로 밀어내려는 팽팽한 미드액션.",
            "based_on_beat": 3,
            "characters": [
              "수리영",
              "인우"
            ],
            "original_description": "조타실 입구에서 수리영이 인우의 앞을 가로막고 팔을 뻗은 채 멈춘 정지 순간.",
            "validator_reason": "능동적이고 힘이 실린 제지 동작이므로 모호한 '정지 순간'을 지우고 팽팽한 대치의 미드액션으로 재작성했습니다.",
            "character_ids": []
          }
        ]
      },
      {
        "scene_index": 28,
        "scene_heading": "S#29. 조타실 / 해질 무렵",
        "shots": [
          {
            "shot_index": 1,
            "description": "좁고 어두운 조타실 안, 인우가 조타기를 양손으로 꽉 움켜쥔 채 멈춰 선 상체.",
            "based_on_beat": 1,
            "characters": [
              "인우"
            ],
            "character_ids": []
          },
          {
            "shot_index": 2,
            "description": "수리영이 화가 난 표정으로 인우의 팔목을 강하게 부여잡아 손가락 마디에 팽팽하게 힘이 들어간 클로즈업.",
            "based_on_beat": 1,
            "characters": [
              "수리영",
              "인우"
            ],
            "original_description": "수리영이 화가 난 표정으로 인우의 팔목을 강하게 부여잡고 멈춘 클로즈업.",
            "validator_reason": "능동적 신체 접촉에서 모호한 '멈춘' 상태 대신 힘의 작용을 시각적으로 보존하도록 수정함.",
            "character_ids": []
          },
          {
            "shot_index": 3,
            "description": "수리영의 손가락이 낡은 사진 속 한 여자아이의 얼굴을 꾹 누르고 있는 클로즈업.",
            "based_on_beat": 2,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          },
          {
            "shot_index": 4,
            "description": "사색이 되어 파랗게 질린 채 굳어버린 인우의 두 눈동자 클로즈업.",
            "based_on_beat": 2,
            "characters": [
              "인우"
            ],
            "character_ids": []
          },
          {
            "shot_index": 5,
            "description": "인우의 어깨 너머로 조타실 벽면에 빼곡하게 그려진 기괴한 원형 표식들이 보이는 시점 쇼트.",
            "based_on_beat": 3,
            "characters": [
              "인우"
            ],
            "character_ids": []
          },
          {
            "shot_index": 6,
            "description": "조타실 벽면에 그려진 뚜렷한 붉은 원을 올려다보며 동공이 확장된 수리영의 얼굴 클로즈업.",
            "based_on_beat": 3,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          },
          {
            "shot_index": 7,
            "description": "수리영의 눈꺼풀이 반쯤 감긴 채 힘이 풀린 표정으로 멈춰 있는 상체.",
            "based_on_beat": 3,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          },
          {
            "shot_index": 8,
            "description": "눈을 부릅뜨고 굳어 있는 인우의 어깨 위로 수리영의 머리가 맞닿아 있는 찰나의 정지 구도.",
            "based_on_beat": 3,
            "characters": [
              "인우",
              "수리영"
            ],
            "character_ids": []
          }
        ]
      },
      {
        "scene_index": 29,
        "scene_heading": "S#30. 바다 / 해질 무렵",
        "shots": [
          {
            "shot_index": 1,
            "description": "황금빛 석양이 바다 수면 위에 길게 반사되어 붉게 물든 해질녘 바다 전경.",
            "based_on_beat": 1,
            "characters": [],
            "character_ids": []
          },
          {
            "shot_index": 2,
            "description": "바다 수면 위에 짙게 깔린 거대한 회색 안개 벽을 향해 뱃머리에 잔잔한 물살을 가르며 나아가는 소형 어선의 실루엣.",
            "based_on_beat": 1,
            "characters": [],
            "original_description": "바다 수면 위에 짙게 깔린 거대한 회색 안개 벽 앞에 다가선 소형 어선의 실루엣.",
            "validator_reason": "원문의 이동 동작을 반영하여 배의 추진력(물살)과 이동 방향을 보존한 mid-action 형태로 수정함.",
            "character_ids": []
          },
          {
            "shot_index": 3,
            "description": "배의 앞머리 절반이 짙은 안개 속에 파묻힌 채, 뱃머리에서 물살을 일으키며 안개 속으로 진입하는 순간의 측면 컷.",
            "based_on_beat": 1,
            "characters": [],
            "original_description": "배의 앞머리 절반이 짙은 안개 속에 파묻힌 채 멈춰 있는 정물 같은 측면 컷.",
            "validator_reason": "원문의 '들어가는' 이동 동작을 '멈춰 있는'으로 완전히 정지시켰으므로, 전진하는 모멘텀(물살)을 보존하도록 재작성함.",
            "character_ids": []
          }
        ]
      }
    ],
    "total_shots": 154,
    "changed_shots": 40
  },
  "step_id": "shot_validator",
  "run_id": "3b901569-f8d8-4b9d-8fcb-110b3be9f225",
  "resolved_model": "gemini-pro",
  "updated_at": "2026-07-18T05:47:59.605797+00:00",
  "schema_version": 1,
  "config_hash": "99914b932bd37a50",
  "project_config_snapshot": {}
}