{
  "project_id": "28052026-002-Tran-Quang-Dieu-Bui-Thi-Xuan",
  "project_name": "Hai ngọn giáo giữa bão Tây Sơn",
  "created_at": "2026-05-28",
  "channel": "Vet Muc Thoi Gian",
  "workflow_version": "v1",
  "current_step": 19,
  "steps": [
    {
      "step": 1,
      "id": "receive_input_create_project",
      "name": "Receive story/input and create project folder",
      "status": "completed",
      "input": [],
      "output": [],
      "validation": [],
      "notes": ""
    },
    {
      "step": 2,
      "id": "clean_story_split_scenes",
      "name": "Clean story and split scenes/dense plan",
      "status": "completed",
      "input": [],
      "output": [],
      "validation": [],
      "notes": ""
    },
    {
      "step": 3,
      "id": "create_character_bible",
      "name": "Create character bible",
      "status": "completed",
      "input": [],
      "output": [],
      "validation": [],
      "notes": ""
    },
    {
      "step": 4,
      "id": "create_validate_approve_dense_plan",
      "name": "Create/validate/approve scenes dense plan",
      "status": "completed",
      "input": [],
      "output": [],
      "validation": [],
      "notes": ""
    },
    {
      "step": 5,
      "id": "generate_character_references",
      "name": "Generate character references",
      "status": "completed",
      "input": [],
      "output": [],
      "validation": [],
      "notes": "Character refs approved by user."
    },
    {
      "step": 6,
      "id": "scene_images_and_thumbnails",
      "name": "Generate scene images and thumbnails",
      "status": "completed",
      "input": [],
      "output": [],
      "validation": [],
      "notes": "Completed before continuing full pipeline."
    },
    {
      "step": 7,
      "id": "scene_level_tts",
      "name": "Generate scene-level TTS",
      "status": "completed",
      "input": [],
      "output": [],
      "validation": [],
      "notes": "Completed before continuing full pipeline."
    },
    {
      "step": 8,
      "id": "build_master_narration",
      "name": "Build master narration timeline",
      "status": "completed",
      "input": [],
      "output": [],
      "validation": [],
      "notes": "Completed before continuing full pipeline."
    },
    {
      "step": 9,
      "id": "probe_audio_durations",
      "name": "Probe real audio durations",
      "status": "completed",
      "input": [],
      "output": [],
      "validation": [],
      "notes": ""
    },
    {
      "step": 10,
      "id": "asr_master_word_timestamps",
      "name": "ASR master narration word timestamps",
      "status": "completed",
      "input": [],
      "output": [],
      "validation": [],
      "notes": ""
    },
    {
      "step": 11,
      "id": "map_subtitles",
      "name": "Map original narration to ASR word timing",
      "status": "completed",
      "input": [],
      "output": [],
      "validation": [],
      "notes": ""
    },
    {
      "step": 12,
      "id": "clamp_subtitles",
      "name": "Clamp subtitle safe gaps",
      "status": "completed",
      "input": [],
      "output": [],
      "validation": [],
      "notes": ""
    },
    {
      "step": 13,
      "id": "split_render_parts",
      "name": "Split render into sync-safe parts",
      "status": "completed",
      "input": [],
      "output": [],
      "validation": [],
      "notes": ""
    },
    {
      "step": 14,
      "id": "render_parts",
      "name": "Render parts",
      "status": "completed",
      "input": [],
      "output": [],
      "validation": [],
      "notes": "Completed with 1.25s tolerance for per-part mux/transition padding."
    },
    {
      "step": 15,
      "id": "concat_parts",
      "name": "Concat parts into main story",
      "status": "completed",
      "input": [],
      "output": [],
      "validation": [],
      "notes": ""
    },
    {
      "step": 16,
      "id": "qa_main_story",
      "name": "QA main story",
      "status": "completed",
      "input": [],
      "output": [],
      "validation": [],
      "notes": "Passed with manual override for known cumulative render padding; spot-check recommended."
    },
    {
      "step": 17,
      "id": "create_intro",
      "name": "Create project intro",
      "status": "completed",
      "input": [],
      "output": [],
      "validation": [],
      "notes": ""
    },
    {
      "step": 18,
      "id": "final_package",
      "name": "Final package",
      "status": "completed",
      "input": [],
      "output": [],
      "validation": [],
      "notes": ""
    },
    {
      "step": 19,
      "id": "final_qa_info",
      "name": "Final QA and info.json",
      "status": "completed",
      "input": [],
      "output": [],
      "validation": [],
      "notes": ""
    }
  ]
}