{
  "project_id": "24052026-001-Ly-Thuong-Kiet",
  "rule": "After project creation, maintain this 17-step workflow checklist. Update status before moving to the next step. No shortcut or skipped step without explicit boss approval.",
  "updated_utc": "2026-05-24T23:49:49.867850Z",
  "steps": [
    {
      "step": 1,
      "name": "Nhận truyện/input và tạo project folder",
      "status": "completed",
      "evidence": "Project folder exists; source_story.txt saved"
    },
    {
      "step": 2,
      "name": "Làm sạch truyện, chia scene/dense plan",
      "status": "completed",
      "evidence": "script/scenes.json, scenes_validation.json"
    },
    {
      "step": 3,
      "name": "Tạo character_bible.json",
      "status": "completed",
      "evidence": "script/character_bible.json"
    },
    {
      "step": 4,
      "name": "Tạo/duyệt scenes.json hoặc dense plan",
      "status": "completed",
      "evidence": "Boss approved first 3 scene style then approved production"
    },
    {
      "step": 5,
      "name": "Tạo ảnh scene đầy đủ",
      "status": "completed",
      "evidence": "images/scenes/scene_001.png ... scene_199.png; 199/199"
    },
    {
      "step": 6,
      "name": "Tạo TTS từng scene",
      "status": "completed",
      "evidence": "audio/scenes/scene_001.wav ... scene_199.wav; 199/199"
    },
    {
      "step": 7,
      "name": "Ghép master narration timeline trên worker",
      "status": "completed",
      "evidence": "audio/master_narration.wav created on worker; duration 1043.26s"
    },
    {
      "step": 8,
      "name": "Probe duration thật audio/part trên worker",
      "status": "completed",
      "evidence": "Actual scene audio durations probed and render_parts_plan.json created"
    },
    {
      "step": 9,
      "name": "ASR master audio lấy word timestamps",
      "status": "completed",
      "evidence": "script/asr_master_words.json"
    },
    {
      "step": 10,
      "name": "Tạo subtitle từ source text + map timing ASR",
      "status": "completed",
      "evidence": "script/subtitles.srt"
    },
    {
      "step": 11,
      "name": "Clamp safe-gap subtitle, validate không overlap",
      "status": "completed",
      "evidence": "script/subtitles_safe_gap_validation.json"
    },
    {
      "step": 12,
      "name": "Chia render part theo timeline/audio/subtitle offset an toàn",
      "status": "completed",
      "evidence": "script/render_parts_plan.json with 8 sync-safe parts"
    },
    {
      "step": 13,
      "name": "Render từng part bằng 8015 với offset/slice an toàn",
      "status": "completed",
      "evidence": "All 8 parts rendered"
    },
    {
      "step": 14,
      "name": "Concat các part đã sync-safe trên worker",
      "status": "completed",
      "evidence": "output/main/24052026-001-Ly-Thuong-Kiet_main_parts_concat.mp4; logs/main_concat_probe.json"
    },
    {
      "step": 15,
      "name": "QA đầu/giữa/cuối file main",
      "status": "completed",
      "evidence": "logs/main_qa_basic.json basic probe OK; sync review points recorded"
    },
    {
      "step": 16,
      "name": "Final packaging intro/outro/BGM sync-safe trên worker",
      "status": "in_progress",
      "evidence": "Started intro TTS/video and thumbnail generation; final package will be redone as intro+main+outro+BGM."
    },
    {
      "step": 17,
      "name": "QA final + output/info.json + báo approved",
      "status": "pending",
      "evidence": "Blocked until intro, thumbnails, correct final package, and final QA/info.json are completed."
    }
  ]
}