# Checklist 19 Steps

Project ID: 31052026-001-Nguyen-Hue-Quang-Trung  
Channel: Vet Muc Thoi Gian  
Workflow version: v1-19-step-history-video  

## Step 01 - Receive story/input and create project folder

Status: completed

### Output
- project_folder
- checklist_19_steps.json
- checklist_19_steps.md

### Validation
- [x] Project folder exists
- [x] Checklist JSON/MD exists

## Step 02 - Clean story and split scene/dense plan

Status: completed

### Output
- script/cleaned_story.txt
- script/scenes.json
- script/scenes_validation.json

### Validation
- [x] Cleaned story exists
- [x] Scenes valid
- [x] Metadata not turned into scenes

## Step 03 - Create character bible

Status: completed

### Output
- script/character_bible.json

### Validation
- [x] Character bible exists
- [x] Main/supporting characters covered

## Step 04 - Create/validate/approve scenes dense plan

Status: completed

Notes: User approved continuing to Step 05.

### Output
- script/scenes.json approved dense plan

### Validation
- [x] Dense plan has scene_id/summary/narration/visual_prompt
- [x] Approved for next step

## Step 05 - Generate character references before scene images

Status: needs_human_approval

Notes: Character references generated; awaiting user approval before Step 06.

### Output
- script/character_reference_plan.json
- characters/*_ref.png

### Validation
- [ ] Required refs generated before scene images
- [ ] Refs approved/recorded

## Step 06 - Generate scene images and final thumbnails

Status: pending

### Output
- images/scenes/scene_*.png
- output/thumbnails/thumb_16x9_final.png
- output/thumbnails/thumb_9x16_final.png

### Validation
- [ ] All scenes have 16:9 images
- [ ] Both thumbnails exist

## Step 07 - Generate TTS audio for each scene

Status: pending

### Output
- audio/scenes/scene_*.wav
- logs/step_07_tts_manifest.json

### Validation
- [ ] One TTS file per scene
- [ ] OmniVoice payload lowercased while subtitles/source keep original casing
- [ ] Manifest/log written

## Step 08 - Build master narration timeline on worker

Status: pending

### Output
- audio/master_narration.wav
- audio/master_narration_timeline.json

### Validation
- [ ] Master narration exists
- [ ] Timeline is source of truth

## Step 09 - Probe real audio durations on worker

Status: pending

### Output
- audio/master_audio_probe.json

### Validation
- [ ] Worker probe duration locked

## Step 10 - ASR master narration word timestamps

Status: pending

### Output
- subtitles/master_narration_asr_words.json

### Validation
- [ ] ASR output has word timestamps

## Step 11 - Map original narration to ASR word timing

Status: pending

### Output
- subtitles/master_subtitles.srt
- subtitles/master_subtitles_mapping.json

### Validation
- [ ] Subtitle text from original narration
- [ ] Heading scenes hard cue boundaries

## Step 12 - Clamp subtitle safe gaps and validate no overlap

Status: pending

### Output
- subtitles/master_subtitles_clamped.srt
- subtitles/master_subtitles_validation.json

### Validation
- [ ] Zero overlaps/invalid cues
- [ ] Within master duration

## Step 13 - Split render into sync-safe parts

Status: pending

### Output
- parts/part_ranges.json
- parts/audio/part_XX.wav
- parts/subtitles/part_XX.srt

### Validation
- [ ] Part audio/subtitles rebased
- [ ] Part durations valid

## Step 14 - Render each part with exact part audio/subtitle on worker

Status: pending

### Output
- render_parts/part_XX.mp4
- render_parts/render_validation.json

### Validation
- [ ] All part MP4s valid
- [ ] Exact part audio/subtitle used
- [ ] Smooth/crossfade timing compensated

## Step 15 - Concat rendered parts into main story video on worker

Status: pending

### Output
- output/main_story.mp4
- output/main_story_probe.json
- output/concat_report.json

### Validation
- [ ] Part order matches part_ranges
- [ ] Main has audio/video
- [ ] Duration close to sum parts

## Step 16 - QA early/mid/late main story video

Status: pending

### Output
- output/main_story_qa_report.json

### Validation
- [ ] Early/mid/late and joins QA report written
- [ ] No blocker

## Step 17 - Create project intro with locked format

Status: pending

### Output
- output/intro/intro_audio.wav
- output/intro/intro.mp4
- output/intro/intro_probe.json

### Validation
- [ ] Locked intro form metadata respected
- [ ] TTS payload lowercase
- [ ] Intro audio/video valid

## Step 18 - Final package intro + main + outro + BGM audio-safe

Status: pending

### Output
- output/final/final_video.mp4
- output/final/final_video_probe.json
- output/final/final_package_report.json

### Validation
- [ ] Audio-safe package on worker
- [ ] BGM volume default 0.20
- [ ] Probe/blackdetect report

## Step 19 - QA final, write output/info.json, approve output

Status: pending

### Output
- output/final/final_qa_report.json
- output/info.json

### Validation
- [ ] Final QA passed
- [ ] output/info.json complete
- [ ] Hashtags include #vetmucthoigian
