film-audit: 다음 검사 없이 영화는 공개되지 않습니다
킷의 위치: 이 스킬의 모든 명령은
reels-maker폴더 (template/및tools/를 포함하는 github.com/thativanng/reels-maker의 클론) 에서 실행하세요. 프로젝트에 해당 폴더가 없으면 먼저 해당 리포지토리의 SETUP.md를 따라 설정하세요.
규칙: 영화는 (1) 충돌 검사에서 COLLISIONS 없음이 확인되고, (2) 모든 "X가 얼굴 위에 있는가"에 대한 우려에 픽셀 숫자가 있으며, (3) 독립 감사관이 수정 필수 항목 없이 승인한 경우에만 사람에게 전달됩니다. 제작자가 1fps로 살펴보는 것은 스케치 확인일 뿐 게이트가 아닙니다. 수정은 다른 요소를 움직입니다 (한 번 말풍선을 옮겼더니 프레임 밖으로 밀려났습니다). 따라서 모든 수정 라운드 후에는 영향을 받은 창만 좁게 재확인해야 합니다.
게이트 1 · 3D 충돌 (node tools/collide.mjs)
- 페이지는
window.collide(t)를 노출합니다. AUD_M (움직이는 것)의 모든 메시의 경계 상자를 AUD_S (고정된 것)의 경계 상자와 서로 비교합니다. 각 상자는 0.03만큼 축소됩니다. - 모든 새로운 움직이는 물체와 고체를 등록해야 합니다. 그렇지 않으면 검사가 이를 감지할 수 없습니다. 던져진 상자, 들고 있는 컵, 지나가는 큐브, 떠다니는 바이러스 모두 움직이는 물체로 간주됩니다.
- 의도된 접촉 (손에 든 컵)은
HELD에 이름별로 제외됩니다. - 높이가 0.12 단위 미만인 메시 (바닥 데칼, 도로 표시, 얇은 판)는 건너뛰므로 평평한 물체가 잘못된 경보를 발생시키지 않습니다. 실제 얇은 움직이는 물체는 자체 검사가 필요합니다.
- 40fps로 실행하세요 (
STEP=.025, 기본값). 10fps에서는 두 개의 단일 프레임 접촉을 놓쳤습니다: 던져진 상자가 두 사람의 머리를 통과했습니다. - 출력은 각 쌍당 한 줄입니다:
from–to s A × B depth (frames).COLLISIONS 없음일 때만 전달하세요.
게이트 2 · 화면 픽셀 (node tools/probe.mjs)
일부 결함은 3D에서 전혀 접촉하지 않습니다. 누군가의 머리 뒤 3m에 있는 병뚜껑은 마치 머리카락에서 자라나는 것처럼 보일 수 있습니다. 화면을 측정하세요:
node tools/probe.mjs "4.4,4.6,4.8" "D.CUPS[0]" "head" # 컵과 주인공 머리의 겹침 (픽셀 단위)
node tools/probe.mjs "24.5,26" "head" "pill" # 머리가 자막 뒤에 있는가?
node tools/probe.mjs "3.0,3.5" "D.GUESTS[1].v.root" # 하나의 직사각형: 이 사람이 프레임 안에 있는가?
overlap: [x, y](둘 다 > 0이면 서로 위에 있음),gapY및inside(A가 B 안에 완전히 있음)를 읽습니다.- 모든 페이지, 2D 포함:
sel:<css 선택자>는 요소가 실제로 그리는 것 (문자(줄별 측정), 배경, 테두리 또는 이미지)이고,safe는 플랫폼의 유지 영역 코어 (window.FILM.safe에서 가져옴)입니다. 화면의 모든 단어는 모든 비트에서safe에 대해inside: true여야 합니다:node tools/probe.mjs --page reels/<name>/page.html --format 9:16 "2,6.4,10.4" "sel:.title,.line,.kicker,.handle,.cap" "safe" - 파일을 편집하지 않고 카메라 키를 시도하려면
PRE를 전달하세요 (매번 실행 전에 실행됨):PRE="window._CK.find(k => k[0] === 23.8)[1] = window._dbg.A(72.2, 10, 31, 72, 5.2, 1.5)" node tools/probe.mjs "25,28" "head". - 상자는 보수적입니다 (경계 상자는 모양보다 큽니다). 따라서 몇 픽셀의 겹침은 실제로는 명확할 수 있습니다. 감사관의 판단이 결정합니다.
렌더링 전에 다음 각 항목을 숫자로 확인하세요:
- 모든 단어, 캡션 및 로고가 플랫폼의 유지 영역(
safe, template/formats.json에서 가져옴) 내에 있는지 확인합니다. 유기적인 9:16 릴에서는 중간 밴드 (앱이 아래쪽 1/4과 오른쪽 버튼 레일을 덮음)입니다. 유료 릴에서는 아래쪽 35% 위의 모든 영역입니다. - 얼굴 근처의 모든 것: 모자, 머리 뒤의 화면 (헤일로), 지나가는 큐브, 입 주변 소품
- 카메라 이동 중 자주색 배지(Pill) 위의 주인공
- 프레임 가장자리 및 근처 소품에 대한 말풍선
- 프레임 가장자리에 대한 사람 및 차량 (≥24 px는 안전)
- 날아다니는 것 (던져진 상자, 동전, 바이러스 군집)이 지나가는 모든 머리에 대해
게이트 3 · 독립 감사관
references/auditor-brief.md를 사용하여 신규 에이전트 (제작자가 아니고, 빌드를 본 적이 없는 에이전트) 를 시작하세요.
- 라이브 페이지가 아닌 렌더링된 MP4를 읽습니다:
ffmpeg -i out/film.mp4 -vf fps=2 …, 그런 다음 타임스탬프가 있는 시트 (tools/sheet.py). - 전체 영화에 대해 ≥2fps, 변경된 모든 창에 대해 ≥4fps, 픽업이나 핸드오프 같은 접촉 지점에서는 프레임별 (30fps) 검사합니다.
- 항목별로 답변합니다: 수정됨 / 수정되지 않음 / 회귀됨 / 새로 발생, 순위: 수정 필수 / 수정 권장, 그런 다음 한 줄:
서명또는아니오. - 수정 후 재확인은 좁게: 수정이 닿은 창만, 그리고 짧은 회귀 검사만 수행합니다. 전체 이력을 가지고 있는 에이전트를 재개하는 것보다 새 에이전트를 시작하는 것이 더 저렴할 수 있습니다.
감사관이 계속 발견한 사항 (먼저 이것들을 찾으세요)
- 머리에 닿거나 뒤에 있는 것: 머리카락 속 병뚜껑, 머리 뒤 지도 핀, 머리 뒤에서 빛나는 모니터, 턱을 가로지르는 큐브
- 물체가 물체를 통과하는 것: 건물을 통과하는 트럭과 서로 통과하는 트럭, 책상 아래 주차된 밴
- 논리: 트럭이 먼저 도킹하는 것, 두 번째 트럭이 첫 번째를 추월하는 것, 떨어져야 할 테이블 가장자리에 남겨진 컵
- 사람: 너무 가까이 서서 머리가 하나로 합쳐진 두 사람; 프레임 밖으로 반쯤 나간 사람
- 움직임: 한 프레임 점프 (순간이동), 0.1초 안에 바닥을 뚫고 떨어지는 물체, 장면 사이에서 사라지는 주인공
- 단어: 플랫폼 버튼이 덮는 영역 안의 텍스트, 단어 중간에 깨진 중국어, 장면과 맞지 않는 배너, 혼합된 영국식/미국식 철자, 아무도 설명할 수 없는 숫자, 주인공을 덮는 자막
- 소리: 휙 소리, 음악 아래에서 들리지 않는 큐, 삽입된 비트 후에 떠도는 큐