오답집 인덱스 (증상 → 수정 위치)
규칙: 각 함정은 수정 및 사람의 육안 검수 후에 등록됩니다. 수정 방법이 전용 스킬에 속하면 해당 스킬에 작성하고 여기에는 포인터만 남깁니다. 전용 소속이 없는 경우 (엔지니어링 워크플로우/렌더링 파이프라인류)는 행 내에 짧은 수정법을 허용합니다 (함정 확인 시 한눈에 수정법을 볼 수 있도록, 두 번 이동 불필요). 단, 다섯 줄을 초과하면 전용 파일로 이동시킨 후 다시 포인터로 변경합니다. 본 파일은 150줄을 초과하지 않으며, 초과 시 가장 긴 행 내 수정법을 먼저 이관합니다.
동족 탐색 (먼저 가족을 정한 후 항목을 조회하여 근친 항목 간 이리저리 이동하는 것을 방지):
- 렌더링 멈춤/중단/사라짐 계열: 먼저
render-service.cjs실행 자가 진단 실행 (2026-07-24부터 자동으로 #37 public 용량, #38 서명 중단, chrome 열리지 않을 때 자동 대체 시스템 Chrome 차단); 자가 진단 통과 후에도 멈춤 → #23 동시 데드락 → #25 dataless → #26 harness 회수 → #24 npm 패키지 손상 순으로 확인. - QC 거짓 양성 계열: #29 유령 박스 (null 게이팅) / #31 콜드 스타트 폰트 부풀림 (qcAllow 면제) / #32 Place 박스 높이 (육안 판단 후 통과); QC에서 '위반 제로' 보고 시 먼저 커버리지 확인 (#35).
| # | 카테고리 | 증상 | 수정 위치 |
|---|---|---|---|
| 01 | 화면 렌더링 | 중국어가 자동으로 명조체로 변경 / 간헐적으로 정상 | remotion-design-system §6 #01 (fonts.ts + FontGuard) |
| 02 | 엔지니어링 워크플로우 | remotion still 출력 ○, 코드 변경 후 이미지 변경 없음 | remotion-design-system §6 #02 |
| 03 | 엔지니어링 워크플로우 | 축소 비교 이미지가 폰트 세부 사항 오판 | remotion-design-system §6 #03 |
| 04 | 화면 렌더링 | JSX 속성에서 \uXXXX가 문자 그대로 표시됨 (예: icon="✅") | remotion-design-system §6 #04 |
| 05 | 디자인 언어 | 컴포넌트 자체 그리기 플레이스홀더 복제 시 '느낌이 많이 다름' | remotion-design-system §0 철칙 4 (진짜素材为主体) |
| 06 | 화면 렌더링 | backgroundClip:text 그라데이션 글자가 렌더링 시 어둡게 나타남 | remotion-design-system §6 #06 (纯色+textShadow) |
| 07 | 디자인 언어 | 단순 평면 색상 블록/단순 평면 검은 배경/가짜 로고가 저렴해 보임 | remotion-design-system references/texture.md (果冻块+glow+暗角+真 logo) |
| 08 | 내보내기 | 완성본 MG 글자 가장자리 후광/번짐, 'MG 추가 후 화질 저하' | remotion-design-system §6 #08 (jpeg100+crf15 고정 config) |
| 34 | 디자인 미적 감각 | 사용자가 '고급스럽지 않음 / 거침 / 실수 같음 / 부자연스러움 / 연결되지 않음 / 매끄럽지 않음'이라고 함 | design-system references/motion.md '매끄러움의 다섯 가지 법칙' — 귀인 표: ① 사전 뼈대 배치 (언급되지 않은 구조가 미리 드러남) ② 회피를 위해 연속된 물체를 조각냄 ③ 경계를 넘거나 공중에 떠서 틈 발생 (>2px이면 끊어짐) ④ 등속 운동으로 감속 정지 없음 ⑤ 상태가 순간적으로 전체 변화. 항목별로 대입, 감으로 파라미터 조정 금지; 하나를 수정할 때 다른 항목을 밟지 않도록 주의 (0722-01 '선이 원을 관통하지 않음' 수정 시 '조각냄' + '뼈대 노출' 밟아서 두 번 재작업) |
| 09 | 엔지니어링 워크플로우 | 긴 렌더링 중간에 사라짐 / mp4 조각 / pgrep이 프로세스가 살아 있다고 오판 | remotion-design-system §6 #09 (nohup 분리 + 로그 + 줄 인식) |
| 10 | 롱폼 조립 | 화면이 드러나거나 오랜 시간 정지, MG가 모두 왼쪽 구역에 축소되어 힘 없음 | remotion-design-system references/layout.md (takeover/주인공 순간) + remotion-assembly references/rhythm.md (밀도 감사) |
| 11 | 음향 | 전체 영화에 음향 효과 없음 / 음향 효과가 묻혀서 들리지 않음 / 음량 기준 미달 | remotion-assembly references/audio.md (볼륨 규범+마스터링 loudnorm) |
| 12 | 롱폼 조립 | 요소 진입 후 한 번도 움직이지 않아 답답함 / 챕터가 한 프레임에 하드 컷되어 사라짐 | remotion-design-system references/motion.md (Breathe + useExit 퇴장 규율) |
| 13 | 디자인 언어 | 밝은 배경 위의 글자가 회색으로 보여 읽을 수 없음 (맨 글자 흰색 판에 누름) | remotion-design-system §0 철칙 5 + references/texture.md |
| 14 | 롱폼 조립 | 왼쪽 위 헤더/머리선이 글자와 겹침 | remotion-design-system references/layout.md (헤더 상호 배타적 점유) |
| 15 | 자막 | 자막 내 단어 끊김 / 영어 파편 / 배경 없음 | remotion-assembly references/subtitle.md (의미 단위 분할+배경 상자+검증 스크립트) |
| 16 | 소재 캡처 | 손으로 그린 제품 화면 재현 시 '아무리 조정해도 많이 다름' | remotion-assembly references/broll.md §0 총론 (합성기는 그림판이 아님; 소재 4단계+캡처 편집 파이프라인) |
| 17 | 롱폼 조립 | AI 자체 점검 시 '매우 유사함', 사용자 보니 많이 다름 (정지 프레임 사각지대/육안 축소) | remotion-assembly SKILL §2.5 분할 워크숍 (먼저 측정 후 코딩+사용자 동적 최종 검토) |
| 18 | 소재 캡처 | 소재 부분이 '패치'처럼 보여 본편에 녹아들지 않음 | remotion-assembly references/broll.md 파이프라인 5단계 (색상 통일 레이어) |
| 19 | 애니메이션 타이밍 | 전체 영화 진입이 PPT처럼 느림 / 모션 효과 시간이 디자인과 일치하지 않음 | remotion-design-system references/motion.md §0 (프레임 수는 60fps 기준으로 작성하지만 합성은 30fps, 초→프레임 변환 필요) |
| 20 | 디자인 언어 | 조립 크기가 '아무리 조정해도 참조보다 작음' | remotion-design-system references/specs.md (먼저 사양표 확인 후 코딩, 육안 판단 금지) |
| 21 | 음향 | 음향 효과가 싸구려/허전하게 들림, 합성과 참고 영상 샘플 모두 거부됨 | remotion-assembly references/audio.md 규칙 8 (정답=전문 음향 효과 라이브러리: CapCut 캐시 디스크 라이브러리→@remotion/sfx→Mixkit→CC0→상업용 팩; 질감은 반드시 사용자가 청취 보드에서 번호를 골라야 하며, AI는 스펙트럼 하드웨어 손상만 필터링 가능) |
| 22 | 엔지니어링 워크플로우 | 청취 보드/이어붙인 비디오가 뒤로 갈수록 음성과 영상이 맞지 않음 | remotion-sfx SKILL §2 이어붙이기 철칙 (-c copy 이어붙이기와 -shortest 금지: 세그먼트 길이 미세 차이가 누적되어 드리프트 발생, 반드시 동일 길이 고정+전체 재인코딩) |
| 23 | 엔터프라이즈 워크플로우 | 렌더링이 이유 없이 중단/시간 초과, 반복 재시도에도 계속 중단 | 동일 프로젝트 렌더링 동시 실행 금지 (경고 지뢰밭 '동시 실행 붕괴' 확정): 다중 세션/고아 프로세스 충돌 데드락. 진단=ps -o etime,pcpu (etime이 예상보다 몇 배 초과+CPU 0% 지속=좀비, 종료); 도구 시간 초과는 bash만 종료하고 고아 node가 연쇄 충돌, 렌더링은 반드시 nohup 진정한 백그라운드+로그 + 줄 인식 (오답 #09 동족); 렌더링 시작 전 먼저 현장 확인, 단 현장 확인 모드는 자체 일치를 방지해야 함: `pgrep -f "remotion render |
| 24 | 엔터프라이즈 워크플로우 | 렌더링 시 Named export not found/plugin is not a function 등 패키지 내부 오류 | npm 동시 설치 시 패키지 손상 가능 (다중 세션 동시 npm i / 프로세스 상호 종료로 쓰기 중단): 증상=require가 빈 내보내기 반환, 의존성 트리 내부 TypeError; 수정법=손상 패키지 rm -rf node_modules/<패키지>+npm cache clean --force+재설치, 여러 곳 부패 시 직접 rm -rf node_modules && npm ci (먼저 node_modules/.remotion 브라우저 바이너리 이동 저장 후 삭제); 규율=동일 프로젝트 동시에 하나의 세션만 npm 작업 허용 |
| 25 | 엔터프라이즈 워크플로우 | 렌더링이 Bundling 특정 비율에 영구적으로 멈춤, 프로세스 트리 전체 CPU 0%, Node 변경/의존성 재설치 모두 무효 | 소재 파일이 동기화 디스크에 의해 dataless 빈 껍데기로 추방됨 (2026-07-16 참사: 타사 동기화 앱 제거 시 747MB 주 소재를 추방하여 번들이 public/ 읽기 복사 시 영구적으로 차단, 하룻밤 내내 렌더링 연쇄 중단). 진단=ls -lO public/**에서 dataless 플래그 확인; 수정=원본/다운로드 소스에서 엔터티 복원 (brctl은 이미 제거된 provider에 대해 무효); 예방=소재 입고 시 진위 확인 시 dataless 확인 (broll.md 2b), 프로젝트를 동기화 디스크 관리 디렉터리에 두지 않음. 변형 (2026-07-28, iCloud가 node_modules 추방): CLI/Studio 시작 시 0% CPU에 조용히 멈춤, 버전 번호조차 출력 불가 ('Mac 저장 공간 최적화'가 의존성 파일을 추방, @remotion 패키지 내 거의 10,000개의 dataless, require 시 파일별로 클라우드 다운로드 대기); 수정법=의존성 재설치 후 node_modules.nosync/ 엔터티 디렉터리+동일 이름 심볼릭 링크 (*.nosync 명명으로 iCloud 동기화 안 함, 근본적인 재발 방지); 이전 디렉터리는 반드시 프로젝트 트리 밖으로 이동 (../.trash/로) — 프로젝트 내에서 이름 변경 시 Studio watcher가 재귀적으로 스캔하여 두 번째 중단 발생 |
| 26 | 엔터프라이즈 워크플로우 | 렌더링 프로세스가 하위 에이전트/에이전트 라운드 종료와 함께 '공중에서 사라짐', 동시 데드락 (#23)도 아니고 긴 렌더링 중단 (#09)도 아님 | 하위 에이전트 라운드가 종료되면 harness가 포그라운드 또는 완전히 분리되지 않은 하위 프로세스 체인을 회수 → 렌더링이 중간에 종료되어 조각이 남음. 수정법은 #09 계열: 렌더링 시작은 반드시 부모 shell에서 완전히 분리 (nohup + run_in_background/setsid, 모든 fd 리디렉션), 완료 판단은 로그 +/마지막 줄만 인식, 에이전트 생존 여부는 무시; 하위 에이전트 내에서 긴 렌더링 시작 시 특히 치명적 (라운드 경계 = 프로세스 사망 시간), 필요한 경우 '이번 라운드에서 렌더링 시작 분리 → 다음 라운드에서 로그 인식' 두 단계로 분리 |
| 27 | 엔터프라이즈 워크플로우 | 렌더링 서비스 .mjs/ESM 진입점 import '@remotion/renderer'가 does not provide an export named 'Fragment' 오류 | package.json에 type:module이 없을 때 ESM 진입점으로 renderer를 로드하면 ESM 빌드의 react/jsx-runtime 상호 운용성 끊김 발생 (Node 24 확증); 수정법=서비스 스크립트를 .cjs + require로 변경하여 CommonJS 빌드를 통과 (증거: scripts/render-service.cjs 상단 주석) |
| 28 | 엔터프라이즈 워크플로우 | <Sequence layout="none" premountFor={N}>이 tsc를 통과할 때 premountFor가 존재하지 않음/타입 불일치 오류 | Remotion SequenceProps는 판별 유니온: premountFor는 기본/layout:"absolute-fill" 분기 (AbsoluteFillLayout)에서만 유효하며, {layout:"none"} 분기에는 이 속성이 없음 (타입은 node_modules/remotion Sequence.d.ts의 LayoutAndStyle 참조). 수정법=premount가 필요한 미디어는 반드시 기본 레이아웃 Sequence에 포함 (layout 미작성 또는 absolute-fill 작성); layout="none" 위치 지정이 필요한 경우 해당 미디어를 별도로 기본 레이아웃 Sequence에 포함시켜 프리마운트를 받음. 공식 지뢰밭 ③ (premountFor)의 실무 파생 |
| 29 | 엔터프라이즈 워크플로우 | QC 프로브가 '유령 중첩' 거짓 양성 보고: 해당 프레임의 요소가 육안으로 전혀 보이지 않음 | QC 프로브 (src/design/qc.tsx)가 프레임별로 [data-qc]에 대해 getBoundingClientRect를 가져와 중첩 판단; 요소가 보이지 않는 기간에 여전히 DOM에 남아 있으면 (표준 숨김 또는 완전 불투명하지만 시각적으로 이미 양보한 경우) rect가 그대로 → 거짓 중첩 보고 (seg05 S5Appear 명중). 프로브 측은 opacity<0.15와 w/h<3만 필터링하여, 플레이스홀더형 유령은 막을 수 없음. 수정법=요소가 보이지 않는 기간에 컴포넌트가 직접 return null (null 게이팅 방식), 노드가 없으면 rect도 없음; 중첩 방지 플레이스홀더 규칙은 remotion-design-system references/layout.md §10.5 참조. 다른 변형 (Place 박스 높이)은 #32로 별도 항목화, 수정법은 #32를 기준으로 함 |
| 30 | 엔터프라이즈 워크플로우 | Bash로 작성한 파일이 '명령 성공'했지만 곧 사라짐 / Read가 방금 생성된 파일을 볼 수 없음 / 렌더링 완료된 영상이 ls에 존재하지 않음 | 새 세션은 기본적으로 샌드박스 실행: 권한이 없는 Bash 쓰기는 샌드박스 임시 복사본에 저장되며 명령 종료 시 증발 (0719-01 테스트 확증: 자막 데이터, 18개 Scene, 590MB 완성 영상 모두 증발, Write 도구로 작성한 3개 파일만 생존); /tmp 소프트 링크 경로로 프로젝트에 쓰면 리디렉션이 악화됨. 수정법=작업 시작 전 반드시 assembly SKILL §0.5 0단계 환경 자가 진단 수행, 통과 못 하면 중단, 사용자에게 Bash/편집 권한을 요청한 후 작업 시작; 금지: 소프트 링크로 중국어 경로 우회 (경로 전체에 큰따옴표만 추가), dangerouslyDisableSandbox로 자체 구조, 프로젝트를 /tmp로 복사하여 작업; 파일 산출물은 우선적으로 Write 도구를 사용하여 작성 |
| 31 | 엔터프라이즈 워크플로우 | QC가 세그먼트 첫 몇 프레임에서만 중첩 보고, 육안으로 중첩 없음 (일반적으로 sub-zh × 카드 프레임) | 콜드 스타트 처음 몇 프레임에 폰트가 로드되지 않아 텍스트 상자가 대체 폰트로 측정되어 부풀어 오르고 rect가 교차 → 측정 거짓 양성 (0715-01 seg03 및 0715-02 S04 두 번 확증, #29 유령 계열 변형). 수정법=육안 확인 후 qcAllow 화이트리스트로 해당 요소 쌍을 면제 (나머지 단언은 유지), 몇 프레임의 거짓 양성 때문에 레이아웃을 변경하지 마세요 |
| 32 | 엔터프라이즈 워크플로우 | 전체 영상 QC에서 대량의 place@72,* 왼쪽 영역 상자 중첩 보고, 렌더링된 프레임에서 육안으로 요소가 겹치지 않음 | 페이지/그룹 왼쪽 영역 Place 상자의 bounding이 시각적 콘텐츠보다 높음 (컨테이너 높이), 상자 교차 ≠ 시각적 교차 (0715-02 전체 영상 QC 15개 위반 유형 무작위 추출 모두 이 유형). 수정법=렌더링된 프레임을 육안으로 거짓 판단 후 통과; 근본 수정=Place 상자 높이를 실제 콘텐츠에 맞추거나 해당 그룹에 qcAllow 걸기; sub-clearance가 정리 공간 라인을 넘는 것은 별도로 진실/거짓 판단, 이 목록에 포함되지 않음 |
| 33 | 화면 렌더링/내보내기 | 완성본의 특정 구간에서 인물/비디오가 정지 프레임으로 고정, 원본 영상은 같은 구간에서 움직임 (4K 배경에서 자주 발생); 육안으로 '인물이 움직이지 않음', 그러나 md5/mpdecimate는 감지 불가 | 4K 배경 OffthreadVideo 렌더링 시 디코딩이 버벅거려 반복 프레임 출력 (복잡한 SVG 애니메이션 구간이 더 쉽게 트리거) → 1080p H264 배경 소스로 전환 (합성 자체가 1080p, 4K는 낭비일 뿐만 아니라 디코딩까지 망가뜨림), 주 컴포넌트가 1080p 소스를 참조하도록 변경 후 재렌더링하면 해결. 진단 반드시 ffmpeg -vf freezedetect=n=-50dB:d=0.3 사용 — md5가 모두 다르다고 해서 화면이 움직이는 것은 아님 (정지 프레임의 압축 노이즈도 모든 프레임의 md5를 다르게 만들어 속일 수 있음), mpdecimate도 노이즈에 의해 방해를 받아 신뢰할 수 없으며, 오직 freezedetect만 노이즈 허용 오차가 있어 정확함; 소재 전환 구간 (인물 퇴장, 소재 자체 정지)의 freeze 보고는 정상이며 버그가 아님 (0721-01 확증: 63-69초 인물 구간 정지 프레임, 4K→1080p 소스 후 freezedetect 제로 프리즈). 첨부: 납품 인코딩 권장 -bf 0 -g 30 -movflags +faststart로 플레이어 호환성 향상 (Remotion 기본 다량 B-프레임, 일부 플레이어 seek 시 디코딩 버벅거림) |
| 34 | 화면 렌더링 | 소재 구간 완성본에 대면적 순수 검은색/죽은 검은색 막대/빈 유리, 가장자리 세로 막대만 남음; 플레이스홀더와 진짜 소재 모두 영향을 받을 수 있음; 렌더링 후 자체 검사에서도 놓치기 쉬움 (샘플링 지점이 소재 재생 창에 포함되지 않음) | OffthreadVideo '초대형 박스 스타일 width + objectFit/translate' 자르기 방식으로 렌더링 측 width가 적용되지 않음 → 콘텐츠가 카드 너비로 렌더링된 후 변위에 의해 잘림 (0721-01 여섯 구간 확증: S02/S06/S07/S10/S13/S16, 유일하게 올바른 S14는 'video 100% 카드 채움 + transform scale 오버슛' 사용). 수정법 및 렌더링 후 검수 게이트 = remotion-assembly references/broll.md 규칙 12 |
| 35 | 엔터프라이즈 워크플로우 | 편집 멤버/QC가 '전체 영상 위반 제로' 보고하지만 실제로는 대량 중첩 있음 — 거짓 게이트 통과 | QC 프로브 (src/design/qc.tsx)는 각 Scene 내에 걸려 있으며, 해당 구간 프레임 범위에서만 실행됨; Scene에 <QcProbe/> 누락 (선언만 qc?:boolean하고 실제로 사용 안 함) → 해당 구간에 단언 없음 → summary가 깨끗한 것은 거짓 게이트 통과 (0722-01 참사: 20개 구간 중 단 1개 구간만 프로브 장착, 위반 제로 보고했으나 실제로 8개 유형의 진짜 위반 존재). 수정법은 이미 고정: 프로브는 매 프레임 하트비트 QC{hb:1,n}를 보내고, render-service.cjs qc가 '커버리지 프레임 수/렌더링 프레임 수'를 확인, <90% 또는 전체 요소 0개 → [FAIL] 커버리지 부족 판정, '위반 제로'가 아님. 규율: '위반 제로'는 '테스트해서 문제 없음'과 '아예 테스트하지 않음'을 구분할 수 있어야 함; 프로덕션 모드 통합 단계에서는 먼저 짧은 구간 qc를 실행하여 커버리지가 기준에 도달했는지 확인 후 전체 영상 진행. 보충 (2026-07-24 검토 발견): 프로브는 루트에 장착해야 함 (조립 루트 {qc ? <QcProbe/> : null}, Koubo072101/072201처럼) — Scene 내에 장착 시 useCurrentFrame이 Sequence를 통해 로컬 프레임 (0부터 시작)을 반환하므로, 하트비트 프레임 번호가 글로벌 프레임 범위와 불일치: 전체 영상/교차 구간 QC 커버리지가 거짓 FAIL (각 구간 로컬 프레임이 서로 중첩되어 중복 제거 후 ≪ 총 프레임 수), 단일 구간 누락도 인접 구간 로컬 프레임에 의해 거짓 PASS로 가려질 수 있음; render-service는 이미 프레임 범위 필터를 추가했지만, 글로벌 커버리지는 루트 장착만 보장 가능. 단일 구간 QC 단거리 주행 시 이 함정을 찾을 수 없음 — 가드레일 검증은 실패를 트리거하는 시나리오로 테스트해야 함 (교차 구간 범위/의도적으로 프로브 하나 제거), 정상 구간만 테스트하지 마세요 |
| 36 | 디자인 언어 | 왼쪽 구역 정보 MG 텍스트가 밝은 배경에 흐릿하게 붙어 거의 읽을 수 없고, scrim이 작동하지 않는 것처럼 보임 | InfoScrim (src/design/InfoScrim.tsx) 그라데이션 기본값이 왼쪽 투명→오른쪽 어둡게로, 오른쪽만 압착함; 정보 MG를 왼쪽에 배치한 영상의 경우 (사용자가 왼쪽 정보로 결정) → 왼쪽 MG가 전체적으로 가장 밝은 영역 (흰색 캐비닛/밝은 벽)에 배경 없이 노출됨 (0722-01 확증; 0715-02도 같은 함정에 부딪혔지만 단일 구역에서만 임시 패치했고 베이스의 구멍은 막히지 않음). 수정법=InfoScrim에 side 파라미터 추가 (기본 'right'로 이전 영상 호환), 정보가 왼쪽에 있는 영상은 side="left" 전달. 교훈: 베이스 결함은 베이스를 보완하거나 입건하고, 단일 구역에서만 패치 금지 — 그 자리 패치는 다음 영상을 위한 함정을 남기는 것 |
| 37 | 엔터프라이즈 워크플로우 | 렌더링이 Bundling에 갇혀 나오지 못함, copyfile ... ETIMEDOUT, 프로세스는 살아 있지만 출력 없음 | public/footage/에 오래된 소재가 여러 개 쌓임 (0722-01 당시 2GB/6개), Remotion 번들이 매번 전체 public/를 임시 디렉터리로 복사 → copyfile 시간 초과 (#25 dataless와 구분: 이는 용량/복사 시간 문제이며, 파일 자체는 엔터티로 존재). 수정법=현재 영상의 소재만 public/footage/에 유지하고, 나머지는 ../footage-hold/로 이동 (2GB→466MB, 번들이 멈춤에서 1.8초로 개선). 규율: 수정 조치 납품 후 무턱대고 롤백하지 마세요 — 롤백 전에 '이 영상을 다시 렌더링해야 합니까?' 물어보세요 (0722-01 동일 함정, 납품 후 소재를 다시 이동시켜 두 번 밟음) |
| 38 | 엔터프라이즈 워크플로우 | 파일에 접근하는 모든 프로세스가 영구적으로 멈춤, kill -9 무효, UE 좀비가 계속 쌓임; 의존성 재설치/Node 변경 모두 무효 | macOS 코드 서명 검증 데몬 (amfid/syspolicyd)이 멈춤 → 서명 검증이 필요한 바이너리가 exec 불가 (#25 dataless, #37 용량, #23 데드락과 모두 다르며, 시스템 수준). 진단법: ffprobe -version (시스템)은 정상이지만 node_modules/@remotion/compositor-darwin-arm64/ffprobe -version이 영구적으로 멈춤 = 서명 멈춤; `ps -axo pid,stat,comm |
| 39 | 소재 캡처 | Grok 이미지→비디오 세 가지 유형의 실패: 기본 저해상도 736×400 확대 시 흐림 / 요소 변형 증식(morph) / 특정 구도가 강제로 '채워짐' | ① 해상도: 명시하지 않으면 기본 736×400 (2.6배 확대 시 halftone/자르기 가장자리 흐려짐) — 명령어에 반드시 720p(1280×720) 명시, 실제 테스트 4/4 명중; CLI resolution_name은 480p/720p 두 가지뿐이며, 1080p 요청 시 롤백됨 (2026-07-24 테스트), 1080p는 xAI API (grok-imagine-video-1.5)를 사용하거나 도구 변경 필요. ② morph 증식: 기어가 자람/달력이 여러 칸/링이 부서짐 — prompt 끝에 해당 항목의 쉽게 깨지는 요소에 대한 잠금 제약 추가 ('단일 원래 크기 유지, 증식 금지', '칸 수/색상 변경 금지', '링 연속, 끊어짐 금지'). ③ 강제 보완: '희소 요소+넓은 빈 배경+빈 인형+얼굴 조각 노출'이 모델을 트리거하여 빈 공간을 채우고, 빈 구멍을 채우고, 완전한 얼굴을 생성 (14번 6개 버전 모두 실패) — 계속 금지 명령을 추가하지 말고, 트리거하는 입력 구도를 변경하세요 (조각 채우기/네거티브 스페이스를 선으로 경계 지정/얼굴 조각 노출 제거, 한 번에 성공). gbro headless 호출 시 --always-approve --permission-mode bypassPermissions --max-turns 10도 필요하여 비디오 도구를 트리거합니다. 자세한 내용은 remotion-broll SKILL 'AI 생성 콜라주 B-roll' 절 참조 |
| 40 | 화면 렌더링 | 명함 작은 원형 아바타가 비뚤어져 보이고, 골드 링 내부에 배경 쐐기 노출, CSS로 각도 조정 시 더 비뚤어짐 | 작은 원형 자르기 창 내에서 CSS rotate+오프셋으로 아바타 기울기 수정 금지 — 회전은 img 중심을 기준으로 하고, 가시 창은 다시 중심에서 벗어나므로 두 가지가 겹쳐 기울어짐이 증폭되고 회전 시 가장자리 노출 (0724-01 두 번 만에 수정 성공). 정답=오프라인 이미지 굽기: PIL로 초상화를 바로잡고 (±몇 도) '얼굴이 중앙에 오는 정사각형'으로 잘라 에셋 저장, NamePlate avatarImgStyle에서 100%/left:0/top:0으로 창을 꽉 채워 직접 부착; 글로벌 에셋 public/assets/author-avatar.png가 이미 준비되어 있으므로 직접 참조 |
| 41 | 엔터프라이즈 워크플로우 | render-service segment 전체 영상 렌더링 시 frame range 0-N is not inbetween 0-(N-1) 오류 | segment/splice의 시작/종료 파라미터는 경계 프레임 포함: 전체 영상 = 0 (durationInFrames-1) (1355프레임 합성 시 0 1354 전달), durationInFrames를 그대로 복사하면 오류 발생 |
| 42 | 디자인 언어 | 사용자가 자막이 '충분히 예쁘지 않다'고 말하지만 정확히 무엇이 문제인지 모름 | 먼저 영어 줄이 중국어 폰트로 렌더링되었는지 확인 — 중국어 폰트의 라틴 문자형은 단지 보충용이며, 자간/간격이 모두 잘못되어 '무엇이 이상한지 설명하기 어려운' 주요 원인 (BilingualSub 구버전 en 줄이 FONT.zh로 렌더링됨, 2026-07-26 확증). 수정법=영어 줄은 반드시 비례 서양 폰트 FONT.subEn (Inter) 사용; 함께 중국어 줄의 폰트 두께 확인, 자막 레이어는 FONT.subZh (PingFang SC) 400 가는 체 사용, 패키징 레이어의 700을 사용하지 마세요. 폰트 질감 판단은 반드시 1:1로 로컬을 잘라서 확인해야 하며, 썸네일로는 확인할 수 없음 (#03과 동일); 개정 전에 여러 버전의 같은 프레임 대조본을 사용자에게 제공하여 선택하게 하고, 자신이 한 버전으로 결정하지 마세요 |
| 43 | 롱폼 조립 | qc-master에서 FAIL 및 WARN이 전혀 없는데, 사용자가 '질감이 특히 많이 다름 / 모션 효과가 점점 더 나빠짐 / 자막이 skill 설명과 다름'이라고 함 | 기술 검수는 '영상이 망가졌는지' 확인하는 것이지, '영상이 베이스를 사용했는지' 확인하는 것이 아님 — 두 가지는 별개이며, 전자의 초록불을 후자의 증거로 삼지 마세요. 0727-01 확증: 25개 구간 자체 구축 324줄 _kit.tsx로 카드 재창조, 모션 효과는 quad 페이드 인 변위 0뿐, design/motion 제로 참조, 25개 구간 중 8개만 퇴장 처리, 자막 77개 중 en 전부 빈 값으로 단일 행 중국어로 퇴화; qc-master 전체 PASS 그대로 통과. 수정법=조립 ⓪ 게이트 node scripts/check-scenes.mjs src/koubo/scenes-<영상명> (motion 제로 참조 / 제로 퇴장 시 FAIL) + check-subs.mjs의 en 누락 검사, 두 가지 모두 코드 작성 후 렌더링 전에 실행. 진단 순서: 먼저 어떤 기법이 빠졌는지 확인한 다음, 파라미터가 올바른지 확인 — check-scenes 명령어 하나로 바퀴를 재발명하고 있는지 확인할 수 있지만, '베이스를 사용하지 않음'이라는 한 가지 나쁨 유형만 다룹니다; 색상/리듬/폰트/구도는 각각 다른 진정한 원인이 있습니다 (typography/rhythm/#42/layout), 단일 경로를 만능 진단으로 사용하지 마세요. ⚠️ 부수적 교훈: 당시 check-subs 명령어 파라미터를 잘못 전달 (영상명 대신 파일 경로)하여 ENOENT 오류가 발생했지만, 오류 메시지를 보고 바로 넘어감, 따라서 행 시작에 걸린 단일 글자, 초과 폭 16.5자 두 가지도 함께 누락 — 검증 스크립트 오류 ≠ 검증 통과, 실행되지 않았다면 실행하지 않은 것 |
분류 참고 (기준 영상 시스템 기준 예약): 화면 렌더링 / 애니메이션 타이밍 / Studio 로컬 실행 / 내보내기 / 음향 / 소재 캡처 / 롱폼 조립 / 디자인 언어 / 엔지니어링 워크플로우.
경고 지뢰밭 (오답 목록 44개, 2026-07-16 사용자 제공 스크린샷)
규칙: 여기는 지뢰밭 지도이지 오답이 아닙니다 — 증상 이름만 있고 수정법은 없으며, 우리는 대부분 밟지 않았습니다. 어느 하나라도 명중 시: 수정 + 사람의 육안 검수 후 위 표의 공식 번호로 업그레이드합니다. 이미 우리의 기존 오답과 매칭되는 것은 바로 소속을 표시했습니다.
| 카테고리 | 함정 (원문) | 우리의 상태 |
|---|---|---|
| 화면 렌더링 | LOGO 깜빡임 / 비디오 정지 프레임 / 투명 ProRes 검은 테두리 / 모션 효과 왼쪽 상단 고정 / 이미지 늘어남 / 웹페이지 chrome / 얼굴 가림 / 자막 충돌 / Emoji / Logo 검정이 검정 잡아먹음 | 이미 대응 있음: 자막 충돌=#14 글자 겹침; Emoji=#04+아이콘 규범 (lucide 진짜 아이콘); 얼굴 가림=3개 영역 인물 출입 금지 (layout.md); Logo 검정이 검정 잡아먹음=logo dark/light 두 버전 규범 (texture.md). 나머지 6개는 밟지 않음, 경계: 비디오 정지 프레임 (OffthreadVideo 프레임 고정), 이미지 늘어남 (objectFit), 웹페이지 chrome (스크린샷에 브라우저 테두리가 카드에 포함됨) |
| 애니메이션/타이밍 | Phase 인덱스 break 누락 / 모션 효과가 음성과 일치하지 않음 / spring overshoot | 이미 대응 있음: 모션 효과가 음성과 일치하지 않음=§2.5 단어 수준 정렬+주 시각 SRT 정렬; spring overshoot=motion.md §11 금지 항목. Phase 인덱스 break 누락은 밟지 않음 (switch 분기 누락 유형 문제) |
| Studio/로컬 실행 | Studio 즉시 종료 (SIGPIPE) / EMFILE 핸들 폭발 / staticBase hash 만료 / HEVC 검은 화면 / id 밑줄 / Studio+still 동시 실행 붕괴 | 모두 밟지 않음. 두 가지 높은 확률 경계: HEVC 검은 화면 (iPhone 녹화 소재는 HEVC, 입고 시 먼저 H.264로 변환), Studio+still 동시 실행 붕괴 (Studio 실행 중 still/render 실행 시 충돌 가능 — 우리 워크플로우는 자주 동시 실행, 걸려도 먼저 코드 의심하지 마세요) |
| 내보내기 | C 드라이브 부족 / OOM / 화질 흐림 / 렌더링 느림 / Encoded 오판 | 이미 대응 있음: 화질 흐림=#08 (jpeg100+crf15); Encoded 오판=#09 완료 판단 기준은 로그 + 줄만 (동일: 로그 텍스트 ≠ 성공). OOM/렌더링 느림은 밟지 않음 (롱폼 4K 시 동시 프레임 수 경계) |
| 음향 | impact-heavy가 전체 영상에 가득 / 그룹마다 whoosh 할당 / 음이 먼저, 모션이 나중 | 이미 대응 있음: impact-heavy가 전체 영상에 가득=audio.md 헤비 SFX 전체 영상 ≤2곳 (사용자가 오프닝 whoosh 거부한 동일 원천 교훈); 그룹마다 whoosh 할당=연속 타격은 항목당 가벼운 pop이어야 하며 그룹당 하나의 헤비 음이 아님. '음이 먼저, 모션이 나중'은 밟지 않음, 보류 중인 확인 필요 (SFX 프레임과 모션 효과 프레임의 타이밍 규칙으로 의심, 명중 시 정의) |
| 소재 캡처 | yt-dlp 403 / fetch가 프록시를 거치지 않음 / Wikimedia GFW / Firefox cookie / PNG가 실제로는 HTML | 부분적으로 있음: yt-dlp 캡처 파이프라인은 broll.md에 있음 (우리는 Lovable를 다운로드할 때 403을 만나지 않음, 만나면 먼저 cookie/UA/프록시 세 가지 추가). 'PNG가 실제로는 HTML' 전형적인 함정: 다운로드한 '이미지'가 실제로는 핫링크 방지 HTML 페이지를 반환한 것 — 입고 전 file 명령으로 진위 확인, 이 항목을 직접 소재 파이프라인의 고정 단계로 채택 |
| 롱폼 조립 | 챕터에 호흡 공간 없음 / Host 카드↔Chip 충돌 | 이미 대응 있음: 챕터에 호흡 공간 없음=motion.md §1/§2 장 간 정리 화면; Host 카드↔Chip 충돌=layout.md 규칙 9 상호 배타적 점유 (동일 유형 겹침) |
| 디자인 언어 | House Style 미복제 / kicker overclaim / 종횡비 미계산 / 자막 복창 | House Style 미복제=우리 전체 design-system의 존재 이유. kicker overclaim (kicker 문구가 음성이 말하지 않은 내용까지 과장), 종횡비 미계산 (소재 변형), 자막 복창 (자막과 MG 텍스트가 같은 문장을 반복) 세 가지는 밟지 않음 — 자막 복창 경계: 우리의 판결 단어 chip과 Stamp가 중복되지 않는 판결은 동일한 원리 |
| 공식 지뢰밭 (remotion-dev/skills 명시, 2026-07-16 대조 산출, docs/공식skills대조.md 참조) | ① CSS transition/animation/Tailwind 애니메이션류=렌더링 시 반드시 깨짐 (공식 FORBIDDEN, codex로 코드 작성 시 가장 쉽게 혼입됨) ② ffmpeg 자르기 재인코딩 없음=시작 프레임 얼어붙음 (기준 영상 '비디오 정지 프레임' 원인 중 하나, -c copy 자르기 금지) ③ 미디어가 포함된 Sequence에 premountFor 없음=첫 프레임 버벅임/검은 프레임 ④ @remotion/transitions 총 시간 소모 (두 장면 겹침, SRT 하드 얼라인 시스템에서는 전체 영상 어긋남) ⑤ 외부 데이터 fetch 시 delayRender 미포함=빈 프레임 렌더링 | ①②④⑤ 밟지 않음, 코드 작성 전 확인 항목; ③ premountFor는 규정에 따라 사용 (Scene06 첫 프레임 검은 화면 방지) → 실무 파생 새로운 함정 #28 (premountFor와 layout='none' 타입 상호 배제) |
| 엔지니어링 워크플로우 | 수정 범위 확대 / 글자 크기<48px / 자동 4K render 실행 | 수정 범위 확대=분할 워크숍 '해당 구간만 렌더링/해당 구간만 수정' 규율의 반대 교재; 글자 크기<48px (1080p에서 48px 미만의 본문은 사용자가 읽을 수 없으며, specs.md 최소 설명 글자 20-22px과 시나리오 구분 필요: 여기서는 정보 주체를 의미함); 자동 4K render 실행 (확인 없이 자동으로 대규모 렌더링 실행하여 컴퓨터 손상) — 이 항목을 직접 규율로 채택: 렌더링은 사용자/계획이 확인한 범위에서만 시작 |