Files

7.9 KiB

사용과 검증

제작 시작과 재개

이 저장소를 작업 폴더로 연 Codex가 필요하다. 프로젝트 스킬·역할 목록에 새 파일이 보이는지 확인하고, 보이지 않으면 프로젝트 루트에서 새 세션을 연다. 새 제작은 아래 두 입력으로 시작한다.

$short-video-workflow
주제: 다룰 이야기
언어: 제작 언어

주제·각도 검토를 먼저 마치고 대본·제목, 실측 장면, 실제 완성본 검토 순으로 진행한다. 재개는 같은 스킬에 기존 제작 ID 또는 기록 위치를 전달한다. 전체 스킬 대신 개별 스킬을 불러도 필요한 선행 결과·승인은 유지한다.

새 시각 제작은 승인된 저장소 내 Blender 실행 경로를 사용한다. 실행 구성이 추가되어도 설치·요청 준비와 실제 출력 성공은 구분한다. 실제 음성은 기존 qwen3-tts conda 환경에서 생성·확인한 WAV와 통합 단위 구간을 제출하고, 새 모델·이미지는 Blender .blend 원본(해시·버전)과 실제 PNG·요청 ID·Scene·논리 프레임을 연결해 제출한다. 기존 1.0 결과는 그대로 읽는다. 영상·합성 결과도 MP4·SRT와 실측 정보를 제출한다. 파일 부재·지원하지 않는 언어·시간 불일치는 문제를 보고하고 결과를 기다린다.

파일 형식 검사

아래 명령은 Windows PowerShell에서 저장소 루트 기준이다. Python 3.11 이상은 TOML 파싱에 필요하다. 스키마 검증 도구는 임시 폴더에 설치하며 전역 환경을 변경하지 않는다. 실제 네트워크·설치가 실패하면 검증을 통과했다고 기록하지 않는다.

@'
from pathlib import Path
import sys, tempfile, subprocess, os
check_code="""
from pathlib import Path
import json, tomllib
from jsonschema import Draft202012Validator, FormatChecker
validators={}
for name in ['project','artifact']:
    schema=json.loads(Path('contracts/'+name+'.schema.json').read_text(encoding='utf-8'))
    Draft202012Validator.check_schema(schema)
    validators[name]=Draft202012Validator(schema,format_checker=FormatChecker())
for folder in ['templates','examples','projects']:
    for path in Path(folder).rglob('*.json'):
        if 'node_modules' in path.parts or '.cache' in path.parts:
            continue
        data=json.loads(path.read_text(encoding='utf-8'))
        if not isinstance(data,dict) or 'schema_version' not in data or 'project_id' not in data:
            continue
        validators['artifact' if 'stage_id' in data else 'project'].validate(data)
agents=list(Path('.codex/agents').glob('*.toml'))
assert len(agents)==8
for path in agents:
    data=tomllib.loads(path.read_text(encoding='utf-8'))
    assert set(data)=={'name','description','developer_instructions'}
print('JSON schemas, templates, examples and 8 TOML files verified.')
"""
with tempfile.TemporaryDirectory(prefix='short-video-verify-') as tools_dir:
    subprocess.run([sys.executable,'-m','pip','install','--target',tools_dir,'jsonschema'],check=True)
    check_env=dict(os.environ, PYTHONPATH=tools_dir)
    subprocess.run([sys.executable,'-X','utf8','-'],input=check_code,text=True,env=check_env,check=True)
'@ | python -X utf8 -
if ($LASTEXITCODE -ne 0) { throw '형식 검증 실패' }

Codex의 skill-creator가 설치되어 있다면 해당 검증기로 머리말·이름·미완성 내용을 추가 확인한다. 설치 위치가 다르면 실제 위치의 검증기를 사용한다. 현재 사용자 설치 위치를 찾는 명령은 다음과 같다.

$skillValidator = Join-Path $env:USERPROFILE '.codex/skills/.system/skill-creator/scripts/quick_validate.py'
if (!(Test-Path -LiteralPath $skillValidator)) { throw 'skill-creator 검증기 위치 확인 필요' }
Get-ChildItem -LiteralPath '.agents/skills' -Directory | ForEach-Object {
    python -X utf8 $skillValidator $_.FullName
    if ($LASTEXITCODE -ne 0) { throw "스킬 검증 실패: $($_.Name)" }
}

프로젝트 사용 자체는 이 검증기의 전역 경로에 의존하지 않는다. 검사 결과와 관계없이 스킬의 입력·완료·승인 경계, 파일 참조, 예제의 가상 시간과 실제 결과 구분도 확인해야 한다. 형식 검사는 실제 음성·영상의 청취·관찰을 대신하지 않는다.

실제 제작 확인

06의 통합 WAV를 먼저 확인한 뒤 07 시간을 정한다. 글자 수 추정으로 컷·자막을 실측처럼 확정하지 않는다. 08의 실제 대표 화면·짧은 움직임을 기존 scenes 검토에서 07/08/09와 함께 확인한다. 새 08·09 승인 뒤 정식 10 모델·기준 이미지, 11 끝점 PNG, 12 전체 컷 영상으로 진행한다. 모든 클립을 받은 뒤 합성 요청을 완성하고 실제 MP4·SRT의 시간·언어·화면을 확인한다.

파일·메타데이터가 없는 외부 결과는 result=null, 부분 결과는 미완료다. 실제 최종 영상이 없으면 검수 결과는 incomplete이며 사용자 승인 없이는 완료를 선언하지 않는다. 서비스 실행·배포·업로드 명령은 현재 구성에 없다.

1.0/1.1 계약 회귀 검사

기존 환경에 jsonschema가 있으면 재설치하지 않고 다음 명령을 실행한다. 위 형식 검사와 함께 사용하며 실제 렌더링·청취·사용자 승인을 검사했다고 해석하지 않는다.

python -X utf8 contracts/check.py
if ($LASTEXITCODE -ne 0) { throw '계약 회귀 검사 실패' }

검사는 기존 1.0 예제·실제 제작 JSON, 새 1.1 빈 양식, 잘못된 버전·엔진·추가 키·검증 원본의 해시/버전 누락·프로필·시간을 다룬다. 의미 사례는 .blend의 media 위장, ID 중복·미존재 참조·Scene 불일치·9:16·루트 상대 경로·result=null 완료 금지를 다룬다. 전체 원본·미디어·승인·화면의 실제 검증은 각 단계의 실행 경로와 검토 근거로 확인한다. 1.1 연결 예제는 실제 파일이 없는 요청 예제다.

승인된 물 영상 Blender 컷의 실제 합성

기존 Remotion + FFmpeg 설치와 패키지/잠금 파일을 유지한다. 제작 렌더러 안내의 현재 입력·실제 파일 검사를 먼저 실행한다. 저장소 루트의 PowerShell에서:

npm.cmd --prefix projects/water-hydrogen-bond-surface-tension/renderer run check
npm.cmd --prefix projects/water-hydrogen-bond-surface-tension/renderer run render -- compose
& 'C:/Users/baram/anaconda3/python.exe' -B -X utf8 projects/water-hydrogen-bond-surface-tension/stages/14-review/r2/verify_final.py
& 'C:/Users/baram/anaconda3/python.exe' -B -X utf8 projects/water-hydrogen-bond-surface-tension/stages/14-review/r2/mobile_views.py

새 compose는 현재 13 revision의 새 render-attempts 폴더에 실제 MP4/SRT와 입력/실측/최종 프레임 표본을 만들며 기존 파일을 재사용하거나 r1을 덮어쓰지 않는다. 실행기는 artifact/project·사용자 승인을 쓰지 않는다. 담당자가 실제 받은 결과 경로를 13에 연결한 뒤 verify_final을 실행한다. 현재 제출한 r2는 13 검토와 14 검수에 있다.

이 제작의 verify_final은 제출한 r2 결과·렌더 당시 project 증거·현재 유효 선행 입력과 실제 파일을 검사한다. 총괄의 13/14 상태·final 기록 갱신은 렌더 시점 project 바이트와 구별하지만 원 WAV·컷·선행 artifact·합성 코드/패키지 SHA 변경은 거부한다. 새 합성 시도는 새 렌더 시점 project 증거와 결과를 담당자가 연결해야 한다. 기술 검사·모바일 표본·신호 대조를 정상 속도 전체 재생·청취나 사용자 final 승인으로 처리하지 않는다. 미검수 영역은 not_checked/incomplete로 제출하고 실제 완성본은 final 검토에 제공한다.