{
  "status": "completed",
  "completed_count": 30,
  "applicable_count": 30,
  "failed_count": 0,
  "data": {
    "scenes": [
      {
        "scene_index": 1,
        "scene_heading": "S#1. 숲속 / 해 질 무렵",
        "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": [
              "낯선 남자"
            ],
            "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-impact 구도.",
            "based_on_beat": 1,
            "characters": [
              "검은 형체",
              "낯선 남자"
            ],
            "original_description": "검은 형체가 낯선 남자의 어깨를 짓누르며 흙바닥으로 완전히 밀착시킨 정지 구도.",
            "validator_reason": "동작 진행(짓누르며)과 결과 상태(밀착시킨)가 섞여 있어, 능동적인 충격을 보존하는 하나의 mid-impact 모먼트로 재작성했습니다.",
            "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": []
          },
          {
            "shot_index": 4,
            "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": [
              "수리영"
            ],
            "original_description": "열린 방문 틈에 서서 한쪽 팔을 위로 뻗어 올린 채 하품하며 멈춘 수리영의 정면.",
            "validator_reason": "인물이 실제로 멈춘 상황이 아니므로 '멈춘'이라는 정지 강조 표현을 제거하여 자연스러운 찰나의 상태로 수정함.",
            "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": [
              "민숙"
            ],
            "original_description": "끓어오르는 냄비 위로 짙은 수증기가 피어오르는 부엌, 민숙의 손에서 기울어진 냄비 입구로 검은 약초 물줄기가 컵 안에 쏟아지는 정지 컷.",
            "validator_reason": "'정지 컷'이라는 메타적 표현을 제거하고 진행 중인 동작의 한 찰나를 시각적으로만 묘사함.",
            "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": 6,
        "scene_heading": "S#6. 해안가 도로 / D",
        "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": [
              "수리영"
            ],
            "original_description": "자전거 위에서 눈을 동그랗게 뜨고 고개를 옆으로 급격히 돌린 수리영의 굳은 찰나.",
            "validator_reason": "'급격히 돌린'이라는 동작 뉘앙스를 피하기 위해 고개를 돌린 결과 상태로 고정된 한 찰나로 명확히 함.",
            "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": "원문 배경의 자전거 주행 동작이 정지 자세처럼 약화되어 있어, 페달링 중간의 한 찰나로 motion direction을 보존했습니다.",
            "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": "마트 입구 밖, 어두운 길거리에 서서 스마트폰을 귀에 댄 채 입술을 꽉 깨문 수리영.",
            "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": [
              "수리영"
            ],
            "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": [
              "낯선 남자"
            ],
            "original_description": "굳게 닫힌 철문 틈 사이로 얇은 종이 전단지를 밀어 넣고 있는 낯선 남자의 거친 손가락 익스트림 클로즈업.",
            "validator_reason": "진행형 동작('밀어 넣고 있는')을 동작 중단 순간의 고정된 상태('반쯤 밀어 넣은')로 수정함.",
            "character_ids": []
          },
          {
            "shot_index": 4,
            "description": "잠금장치 쇠붙이가 어긋난 채 철문이 손가락 두 마디만큼 벌어져 있는 순간.",
            "based_on_beat": 1,
            "characters": [],
            "original_description": "잠금장치 쇠붙이가 어긋나며 철문이 손가락 두 마디만큼 벌어져 열린 순간.",
            "validator_reason": "시간 진행 연결어('어긋나며')를 고정된 결과 상태('어긋난 채')로 수정함.",
            "character_ids": []
          },
          {
            "shot_index": 5,
            "description": "어두운 창문 유리에 비친, 바닥에 쓰러진 사람 형태 위로 또 다른 인영이 몸을 겹친 채 목 부위를 향해 입을 크게 벌린 흑백의 그림자 실루엣.",
            "based_on_beat": 2,
            "characters": [
              "사람 형태",
              "인영"
            ],
            "character_ids": []
          }
        ]
      },
      {
        "scene_index": 11,
        "scene_heading": "S#11. 옥탑 방 밖 / 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": 2,
            "characters": [
              "수리영"
            ],
            "original_description": "옥상 바닥에 두 발을 딛고 선 채, 코를 막던 손을 내리고 앞을 향해 눈을 동그랗게 뜬 수리영의 굳은 전신.",
            "validator_reason": "'내리고'라는 동작 진행 표현을 '떨구고(내린 채)'라는 결과 상태로 수정하여 완벽한 정지 순간으로 묘사함.",
            "character_ids": []
          },
          {
            "shot_index": 5,
            "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": 1,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          },
          {
            "shot_index": 6,
            "description": "로우키 조명 아래, 충격으로 두 눈을 커다랗게 뜬 수리영의 굳은 얼굴.",
            "based_on_beat": 1,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          },
          {
            "shot_index": 7,
            "description": "바닥에 흥건한 핏자국과 붉은 발자국이 닫힌 커튼 쪽으로 이어진 참혹한 흔적.",
            "based_on_beat": 1,
            "characters": [],
            "character_ids": []
          },
          {
            "shot_index": 8,
            "description": "핏자국 끝 커튼 자락을 꽉 쥔 채 딱딱하게 굳어 있는 수리영의 손.",
            "based_on_beat": 1,
            "characters": [
              "수리영"
            ],
            "original_description": "핏자국 끝 커튼 자락을 꽉 쥔 수리영의 떨리는 손.",
            "validator_reason": "'떨리는'이라는 연속 동작 묘사를 '굳어 있는' 정지 상태로 수정함.",
            "character_ids": []
          },
          {
            "shot_index": 9,
            "description": "젖혀진 커튼 뒤, 어두운 바닥에 주저앉아 고개를 푹 떨군 민숙의 참혹한 시신 구도.",
            "based_on_beat": 1,
            "characters": [
              "민숙"
            ],
            "character_ids": []
          },
          {
            "shot_index": 10,
            "description": "짐승에게 뜯긴 듯 너덜거리는 살점과 피가 흘러내리다 멈춘 민숙의 어깨 부위 익스트림 클로즈업.",
            "based_on_beat": 2,
            "characters": [
              "민숙"
            ],
            "character_ids": []
          },
          {
            "shot_index": 11,
            "description": "뒷걸음질 치다 멈춘 자세로 온몸이 얼어붙은 수리영의 전신.",
            "based_on_beat": 2,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          },
          {
            "shot_index": 12,
            "description": "스마트폰 화면의 단축번호를 꾹 누르는 수리영의 핏기 없는 손가락.",
            "based_on_beat": 2,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          },
          {
            "shot_index": 13,
            "description": "귀에 스마트폰을 밀착한 채 극도의 공포로 어깨를 잔뜩 움츠린 수리영의 측면.",
            "based_on_beat": 2,
            "characters": [
              "수리영"
            ],
            "original_description": "귀에 스마트폰을 밀착한 채 극도의 공포로 몸을 떠는 수리영의 측면.",
            "validator_reason": "'몸을 떠는'이라는 연속적인 움직임을 '움츠린' 정지 상태로 교정함.",
            "character_ids": []
          },
          {
            "shot_index": 14,
            "description": "축 늘어진 민숙의 창백한 손아귀 안에 꽉 구겨진 낡은 사진 한 장.",
            "based_on_beat": 3,
            "characters": [
              "민숙"
            ],
            "character_ids": []
          },
          {
            "shot_index": 15,
            "description": "사진을 향해 뻗은 수리영의 손끝이 민숙의 손에 닿기 직전의 찰나.",
            "based_on_beat": 3,
            "characters": [
              "수리영",
              "민숙"
            ],
            "character_ids": []
          },
          {
            "shot_index": 16,
            "description": "붉고 불길한 빛을 띠며 변색된 민숙 손목의 둥근 주술적 표식 익스트림 클로즈업.",
            "based_on_beat": 3,
            "characters": [
              "민숙"
            ],
            "character_ids": []
          },
          {
            "shot_index": 17,
            "description": "가쁜 숨을 몰아쉬듯 입을 반쯤 벌리고 미간을 심하게 찌푸린 수리영의 땀 흘리는 얼굴.",
            "based_on_beat": 3,
            "characters": [
              "수리영"
            ],
            "original_description": "가쁜 숨을 내쉬며 미간을 심하게 찌푸린 수리영의 땀 흘리는 얼굴.",
            "validator_reason": "'내쉬며'라는 동작 진행을 입을 벌리고 있는 결과적 정지 상태로 수정함.",
            "character_ids": []
          },
          {
            "shot_index": 18,
            "description": "보이지 않는 붓이 지나간 듯, 침대 위 벽면에 선명하고 굵은 붉은 원이 그려져 있는 기괴한 벽면.",
            "based_on_beat": 3,
            "characters": [],
            "character_ids": []
          },
          {
            "shot_index": 19,
            "description": "벽을 향해 고개를 젖히고 입을 크게 벌린 채 경악하는 수리영의 상체.",
            "based_on_beat": 3,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          }
        ]
      },
      {
        "scene_index": 13,
        "scene_heading": "S#13. 옥탑방 외곽 / N",
        "shots": [
          {
            "shot_index": 1,
            "description": "짙은 어둠 속, 한쪽 발이 옥탑방 시멘트 계단을 막 딛고 다른 발은 허공에 뜬 채 허겁지겁 내려오는 수리영의 다리.",
            "based_on_beat": 1,
            "characters": [
              "수리영"
            ],
            "original_description": "짙은 어둠 속, 허겁지겁 옥탑방 시멘트 계단을 밟고 내려오는 수리영의 다리.",
            "validator_reason": "계단을 내려오는 이동 동작을 추진력이 담긴 mid-action freeze 순간으로 재작성함.",
            "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": "눈물이 고인 채 혜수를 올려다보며 입을 벌린 수리영의 처절한 얼굴.",
            "based_on_beat": 1,
            "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": 2,
            "characters": [
              "혜수"
            ],
            "original_description": "어둡고 가파른 옥탑방 계단을 향해 몸을 내던지듯 뛰어오르는 혜수의 뒷모습.",
            "validator_reason": "뛰어오르는 이동 동작을 추진 방향이 보존된 mid-action freeze 자세로 명확히 함.",
            "character_ids": []
          },
          {
            "shot_index": 8,
            "description": "혜수의 뒤를 바짝 쫓아 한 발을 위쪽 계단에 내디딘 채 무릎을 굽히고 오르는 김형사의 긴장된 전신.",
            "based_on_beat": 2,
            "characters": [
              "김형사",
              "혜수"
            ],
            "original_description": "혜수의 뒤를 바짝 쫓아 계단을 오르는 김형사의 긴장된 전신.",
            "validator_reason": "계단을 오르는 이동 동작을 mid-action freeze 자세로 재작성함.",
            "character_ids": []
          }
        ]
      },
      {
        "scene_index": 14,
        "scene_heading": "S#14. 옥탑방 안 / 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": [
              "혜수"
            ],
            "original_description": "수리영을 향해 고개를 돌리고 의아한 표정을 짓는 혜수의 측면.",
            "validator_reason": "'고개를 돌리고'가 동작의 진행을 암시할 수 있어, '돌린 채'라는 고정 상태로 수정함.",
            "character_ids": []
          },
          {
            "shot_index": 3,
            "description": "자신의 방문을 향해 뛰어가는 mid-stride 자세로, 상체를 기울이고 한 발을 땅에서 막 뗀 수리영의 뒷모습.",
            "based_on_beat": 2,
            "characters": [
              "수리영"
            ],
            "original_description": "자신의 방문을 향해 상체를 기울인 채 다급하게 뛰어가는 수리영의 뒷모습.",
            "validator_reason": "'뛰어가는' 이동 동작의 추진력을 보존하기 위해 mid-stride freeze로 수정함.",
            "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": []
          },
          {
            "shot_index": 8,
            "description": "김형사를 향해 날카로운 눈빛을 쏘아붙이는 혜수의 얼굴.",
            "based_on_beat": 3,
            "characters": [
              "혜수"
            ],
            "character_ids": []
          },
          {
            "shot_index": 9,
            "description": "고개를 숙인 수리영의 어깨를 따뜻하게 감싸 안은 혜수의 손.",
            "based_on_beat": 4,
            "characters": [
              "수리영",
              "혜수"
            ],
            "character_ids": []
          },
          {
            "shot_index": 10,
            "description": "바닥으로 시선을 떨군 채 입술을 꽉 깨문 수리영의 옆얼굴.",
            "based_on_beat": 4,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          },
          {
            "shot_index": 11,
            "description": "방 한구석, 원래 위치에서 미묘하게 비틀어져 기괴한 그림자를 드리운 백팩과 인형의 클로즈업.",
            "based_on_beat": 4,
            "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": [
              "수리영"
            ],
            "original_description": "벤치에서 몸을 일으켜 세우며 눈을 번쩍 뜬 수리영의 굳은 상체.",
            "validator_reason": "몸을 '일으켜 세우며'라는 연속 동작을 일어나는 도중의 mid-action 정지 자세로 수정함.",
            "character_ids": []
          },
          {
            "shot_index": 4,
            "description": "어둠이 깔린 해안도로를 향해 상체를 기울인 채 한 발이 땅에서 막 떨어져 허공에 뜬 달리기 도중의 수리영 뒷모습.",
            "based_on_beat": 1,
            "characters": [
              "수리영"
            ],
            "original_description": "어둠이 깔린 해안도로를 향해 상체를 기울이고 급하게 뛰어가는 수리영의 뒷모습.",
            "validator_reason": "'뛰어가는'이라는 추진 동작의 motion direction을 보존하기 위해 mid-stride 정지 순간으로 재작성함.",
            "character_ids": []
          },
          {
            "shot_index": 5,
            "description": "멀어지는 수리영의 뒷모습을 향해 양손을 입가에 모으고 입을 크게 벌린 채 멈춰 선 혜수의 정면.",
            "based_on_beat": 2,
            "characters": [
              "혜수",
              "수리영"
            ],
            "original_description": "뛰어가는 수리영의 등 뒤를 향해 양손을 입가에 모으고 소리치는 혜수의 정면.",
            "validator_reason": "소리치는 연속 동작을 입을 벌린 고정 상태의 정지 자세로 수정함.",
            "character_ids": []
          },
          {
            "shot_index": 6,
            "description": "어두운 장애물 틈새 너머로 안개 속 혜수와 수리영을 지켜보는 은밀한 관찰자 시점 구도.",
            "based_on_beat": 2,
            "characters": [
              "혜수",
              "수리영"
            ],
            "character_ids": []
          }
        ]
      },
      {
        "scene_index": 16,
        "scene_heading": "S#16. 경찰서 사무실 / N",
        "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": 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": []
          }
        ]
      },
      {
        "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": []
          }
        ]
      },
      {
        "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": [
              "수리영"
            ],
            "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": "방 안의 커튼을 활짝 젖힌 채, 먼지 한 톨 없이 깨끗한 빈 공간을 마주하고 선 수리영의 측면.",
            "based_on_beat": 1,
            "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": 2,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          },
          {
            "shot_index": 8,
            "description": "인형이 매달린 낡은 백팩을 한쪽 어깨에 둘러메고 현관 앞에 선 수리영의 전신.",
            "based_on_beat": 2,
            "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": [
              "수리영"
            ],
            "original_description": "고개를 휙 돌려 뒤를 확인하지만, 아무런 자국 없이 하얗고 깨끗한 욕실 타일 벽면과 굳어버린 수리영.",
            "validator_reason": "'돌려 뒤를 확인하지만'이라는 연속 동작과 시간의 인과 관계를 하나의 정지 상태로 압축했습니다.",
            "character_ids": []
          },
          {
            "shot_index": 12,
            "description": "거실 식탁 앞에 서서 액자 속 가족사진을 내려다보는 수리영의 굳은 표정.",
            "based_on_beat": 3,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          },
          {
            "shot_index": 13,
            "description": "기괴하게 뭉개져 검붉게 흘러내리는 도중의 중간 찰나에 멈춘, 사진 속 민숙의 얼굴 환시 익스트림 클로즈업.",
            "based_on_beat": 3,
            "characters": [
              "민숙"
            ],
            "original_description": "사진 속 환하게 웃고 있는 민숙의 얼굴이 기괴하게 뭉개지며 검붉게 녹아내리는 환시 익스트림 클로즈업.",
            "validator_reason": "뭉개지며 녹아내리는 변화의 시간적 흐름을 mid-action 찰나로 변환했습니다.",
            "character_ids": []
          },
          {
            "shot_index": 14,
            "description": "사진을 쥔 채 입을 크게 벌리고 비명을 지르는 수리영의 공포에 질린 얼굴.",
            "based_on_beat": 4,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          },
          {
            "shot_index": 15,
            "description": "아무 이상 없이 온전한 상태인 사진 속 민숙의 미소 띤 얼굴.",
            "based_on_beat": 4,
            "characters": [
              "민숙"
            ],
            "original_description": "아무 이상 없이 온전한 상태로 되돌아온 사진 속 민숙의 미소 띤 얼굴.",
            "validator_reason": "'되돌아온'이라는 전후 상태 변화를 암시하는 시간 연결어를 삭제하고, 온전한 현재 시점의 단일 상태로 수정했습니다.",
            "character_ids": []
          },
          {
            "shot_index": 16,
            "description": "일그러진 표정으로 자신의 뺨을 거세게 내리치는 수리영의 손바닥과 흔들리는 머리카락 찰나.",
            "based_on_beat": 4,
            "characters": [
              "수리영"
            ],
            "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": [
              "수리영",
              "남자 직원"
            ],
            "character_ids": []
          },
          {
            "shot_index": 3,
            "description": "수리영을 마주 본 채 고개가 살짝 내려간 자세로 입을 벌린 남자 직원의 상체.",
            "based_on_beat": 1,
            "characters": [
              "남자 직원",
              "수리영"
            ],
            "original_description": "수리영을 마주 본 채 고개를 끄덕이며 입을 벌린 남자 직원의 상체.",
            "validator_reason": "고개를 끄덕이는 동작과 입을 벌린 상태가 '~며'로 결합되어 있어 한 찰나의 고정 자세로 정리했습니다.",
            "character_ids": []
          },
          {
            "shot_index": 4,
            "description": "눈을 동그랗게 뜨고 남자 직원을 올려다보는 수리영의 얼굴.",
            "based_on_beat": 1,
            "characters": [
              "수리영",
              "남자 직원"
            ],
            "character_ids": []
          },
          {
            "shot_index": 5,
            "description": "마트 밖 처마 아래, 벽면 위쪽의 CCTV 카메라를 향해 손가락을 뻗은 남자 직원의 측면.",
            "based_on_beat": 1,
            "characters": [
              "남자 직원"
            ],
            "character_ids": []
          },
          {
            "shot_index": 6,
            "description": "스마트폰을 귀에 댄 채 심각한 표정으로 허공을 응시하는 수리영의 상체.",
            "based_on_beat": 1,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          }
        ]
      },
      {
        "scene_index": 20,
        "scene_heading": "S#20. 마트 총무과 / 실내",
        "shots": [
          {
            "shot_index": 1,
            "description": "어두운 총무과 사무실, 모니터 화면을 향해 몸을 기울인 한국인 30대 남성 보안 직원의 뒷모습.",
            "based_on_beat": 1,
            "characters": [
              "한국인 30대 남성 보안 직원"
            ],
            "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": [
              "혜수",
              "보안 직원"
            ],
            "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": "사진을 내려다보며 두 눈을 커다랗게 뜨고 얼어붙은 수리영의 얼굴 클로즈업.",
            "based_on_beat": 1,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          },
          {
            "shot_index": 8,
            "description": "켜진 모니터를 향해 고개를 돌린 채 굳어 있는 수리영의 모습.",
            "based_on_beat": 2,
            "characters": [
              "수리영"
            ],
            "original_description": "켜진 모니터를 향해 고개를 휙 돌린 수리영의 굳은 찰나.",
            "validator_reason": "'휙 돌린'이라는 동작/속도 표현을 고개를 돌린 결과 상태의 고정 자세로 수정.",
            "character_ids": []
          },
          {
            "shot_index": 9,
            "description": "김형사의 책상 앞, 마우스를 꽉 쥐고 있는 수리영의 손.",
            "based_on_beat": 2,
            "characters": [
              "수리영"
            ],
            "original_description": "김형사의 책상 앞, 마우스를 꽉 쥔 수리영의 떨리는 손.",
            "validator_reason": "'떨리는'이라는 연속적/동적인 상태 묘사를 제거하고 마우스를 꽉 쥔 정지 자세로 수정.",
            "character_ids": []
          },
          {
            "shot_index": 10,
            "description": "모니터 화면 속, 해상 지도 위에 붉은색 점과 좌표가 표시된 디지털 평면 이미지.",
            "based_on_beat": 2,
            "characters": [],
            "character_ids": []
          },
          {
            "shot_index": 11,
            "description": "낡은 수첩에 펜촉을 꾹 댄 채 좌표 숫자를 쓰는 자세를 취한 수리영의 손 클로즈업.",
            "based_on_beat": 3,
            "characters": [
              "수리영"
            ],
            "original_description": "낡은 수첩에 펜촉을 꾹 눌러 좌표 숫자를 적고 있는 수리영의 손 클로즈업.",
            "validator_reason": "'적고 있는'이라는 진행형 연속 동작을 펜촉을 누르고 있는 찰나의 정지(mid-action) 상태로 수정.",
            "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": 22,
        "scene_heading": "S#22. 경찰서 밖 / 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": 23,
        "scene_heading": "S#23. 어느 PC방 / 실내",
        "shots": [
          {
            "shot_index": 1,
            "description": "어두운 PC방 조명 아래, 모니터 화면을 뚫어지게 응시하는 수리영의 측면.",
            "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": []
          }
        ]
      },
      {
        "scene_index": 24,
        "scene_heading": "S#24. 해안가 / 소나기",
        "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": 1,
            "characters": [],
            "character_ids": []
          }
        ]
      },
      {
        "scene_index": 25,
        "scene_heading": "S#25. 옥탑방 안 / 해질 무렵",
        "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": [],
            "original_description": "어두운 방 안쪽 벽면 중앙, 붉은 피로 그려진 거대한 둥근 원의 섬뜩한 구도.",
            "validator_reason": "촬영 소품 맥락에 맞춰 붉은 물감의 고정 상태로 정정했습니다.",
            "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": 2,
            "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": [
              "수리영"
            ],
            "character_ids": []
          },
          {
            "shot_index": 12,
            "description": "수리영의 꽉 쥔 주먹 틈으로 삐져나온 구겨진 사진 모서리 클로즈업.",
            "based_on_beat": 3,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          }
        ]
      },
      {
        "scene_index": 26,
        "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": [],
            "original_description": "뿌연 해무를 뚫고 서서히 형태를 드러내는 낡은 작은 배 한 척의 정지 컷.",
            "validator_reason": "'서서히 형태를 드러내는'은 시간 경과를 나타내는 표현이므로, 안개 사이로 절반쯤 드러난 고정 상태로 수정함.",
            "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": 2,
            "characters": [
              "인우"
            ],
            "original_description": "주변의 텅 빈 안개 낀 바다를 둘러보는 인우의 뒷모습.",
            "validator_reason": "'둘러보는'은 연속적인 시선 이동 동작이므로, 한 방향으로 고개를 돌린 찰나로 수정함.",
            "character_ids": []
          },
          {
            "shot_index": 8,
            "description": "턱을 당긴 채 단호한 표정으로 입을 벌린 수리영의 정면.",
            "based_on_beat": 2,
            "characters": [
              "수리영"
            ],
            "character_ids": []
          },
          {
            "shot_index": 9,
            "description": "턱을 살짝 아래로 당긴 채 무심한 표정을 한 인우의 얼굴.",
            "based_on_beat": 2,
            "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": [
              "수리영"
            ],
            "character_ids": []
          }
        ]
      },
      {
        "scene_index": 27,
        "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": [
              "김형사",
              "혜수"
            ],
            "original_description": "혜수를 향해 고개를 돌린 채 혀를 차며 입꼬리를 비죽인 김형사의 상체.",
            "validator_reason": "'혀를 차며'는 연속적인 움직임/소리를 암시하므로 제거하여 한 찰나로 고정함.",
            "character_ids": []
          },
          {
            "shot_index": 4,
            "description": "양손을 허리에 얹고 한심하다는 듯 허공을 올려다보는 김형사의 측면.",
            "based_on_beat": 2,
            "characters": [
              "김형사"
            ],
            "character_ids": []
          },
          {
            "shot_index": 5,
            "description": "차가운 바람에 살짝 틈이 벌어진 낡은 현관 철문과 황량한 옥탑방의 적막한 구도.",
            "based_on_beat": 2,
            "characters": [],
            "original_description": "차가운 바람에 낡은 현관 철문이 덜컹거리는 황량한 옥탑방의 적막한 구도.",
            "validator_reason": "'덜컹거리는'은 연속적인 흔들림이므로 문이 열린 정지 상태로 수정함.",
            "character_ids": []
          }
        ]
      },
      {
        "scene_index": 28,
        "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": [
              "인우"
            ],
            "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": [
              "인우"
            ],
            "original_description": "뱃머리의 조타실 쪽으로 상체를 완전히 튼 채 멈춰 선 인우의 전신.",
            "validator_reason": "이동 동작(달려가는)에 대한 motion direction을 누락하고 '멈춰 선' 정지 상태로 표현하여 mid-action freeze 원칙에 따라 재작성함.",
            "character_ids": []
          },
          {
            "shot_index": 6,
            "description": "조타실로 들이닥치는 인우의 팔뚝을 양손으로 거칠게 낚아채고 무게 중심을 뒤로 뺀 채 제동을 거는 수리영의 긴장된 모습.",
            "based_on_beat": 3,
            "characters": [
              "인우",
              "수리영"
            ],
            "original_description": "조타실 입구에 선 인우의 팔뚝을 양손으로 꽉 움켜쥔 수리영의 긴장된 모습.",
            "validator_reason": "능동적으로 막아서는 동작의 충격과 힘의 방향(역학)을 보존하기 위해 mid-impact freeze 원칙에 따라 재작성함.",
            "character_ids": []
          }
        ]
      },
      {
        "scene_index": 29,
        "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": [
              "수리영",
              "인우"
            ],
            "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": 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": []
          },
          {
            "shot_index": 9,
            "description": "어깨에 쓰러진 수리영을 서늘한 눈빛으로 내려다보는 인우의 굳은 얼굴.",
            "based_on_beat": 3,
            "characters": [
              "인우",
              "수리영"
            ],
            "character_ids": []
          }
        ]
      },
      {
        "scene_index": 30,
        "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": [],
            "character_ids": []
          },
          {
            "shot_index": 3,
            "description": "거대한 안개 장벽 속으로 뱃머리가 반쯤 가려진 낡은 소형 어선의 정지 컷.",
            "based_on_beat": 1,
            "characters": [],
            "character_ids": []
          }
        ]
      }
    ],
    "total_shots": 191,
    "changed_shots": 50
  },
  "step_id": "shot_validator",
  "run_id": "9f2e4cf2-d4d2-4588-9e43-76d853a3f6b8",
  "resolved_model": "gemini-pro",
  "updated_at": "2026-06-18T10:03:42.444188+00:00",
  "schema_version": 1,
  "config_hash": "99914b932bd37a50",
  "project_config_snapshot": {}
}