{
  "project_id": "EP01_2026-05-22_restart-project",
  "episode_id": "EP01",
  "episode_number": 1,
  "title": "第 01 集：The Tiny Rocket（小小火箭大挑戰）",
  "theme": "遇到小失敗時，用簡短英文互相提醒、鼓勵、合作",
  "updated_at": "2026-05-25 11:21 CST",
  "status": "final_story_gate_restored_and_completed_provider_blocked_at_p03",
  "style_lock": "F soft 3D clay toy style / JellyToon-compatible soft clay toy look",
  "provider_policy": {
    "text_brain": "Agent workflow for script/story/prompt drafts; Hermes main model only integrates/reviews with provenance",
    "visual_primary": "ChatArtPro first for character images, keyframes, and I2V/source clips",
    "visual_backup": "ComfyUI as backup/experiment",
    "assembly": "FFmpeg/Python for subtitles, audio alignment, and final MP4"
  },
  "retained_shared_characters": [
    "images/character/mia_ref_v1.png",
    "images/character/leo_ref_v1.png"
  ],
  "phrases": [
    {
      "id": "p01",
      "phrase": "Watch out!",
      "zh_tw": "小心！",
      "usage": "看到對方快撞到、東西快掉下來、危險快發生時使用。",
      "micro_story": "Leo 抱著零件盒走路，差點踩到地上的火箭尾翼；Mia 緊張指向地板說這句。",
      "visual_goal": "地上零件＋Leo 快踩到＋Mia 清楚提醒。",
      "status": "phrase_segment_complete"
    },
    {
      "id": "p02",
      "phrase": "Hold on.",
      "zh_tw": "等一下。",
      "usage": "想請對方暫停、不要太快行動時使用。",
      "micro_story": "Leo 太急按下大紅色發射鈕，玩具小火箭直接砰一聲爆炸，冒出一團誇張但安全的黑煙；Mia 和 Leo 的臉都被煙燻黑。Mia 做 STOP 手勢並清楚說 Hold on.",
      "visual_goal": "大紅按鈕→玩具火箭直接爆炸→黑煙把 Mia 和 Leo 的臉燻黑→Mia STOP 手勢＋說 Hold on.",
      "status": "phrase_segment_complete",
      "correction": "Completed with v3 source: black smoke, both children sooty, Mia STOP hand, red button visible; assembled into 3-pass segment."
    },
    {
      "id": "p03",
      "phrase": "My turn.",
      "zh_tw": "換我了。",
      "usage": "輪流玩、輪流嘗試、輪到自己做某件事時使用。",
      "micro_story": "Mia 裝好一片尾翼後，把工具遞給 Leo；Leo 開心舉手。",
      "visual_goal": "明確交接工具、輪流動作。",
      "status": "pending"
    },
    {
      "id": "p04",
      "phrase": "No way!",
      "zh_tw": "不會吧！／真的假的！",
      "usage": "驚訝、難以相信，或看到意外狀況時使用。",
      "micro_story": "火箭第一次按鈕沒有飛，反而吐出小泡泡；兩人瞪大眼睛。",
      "visual_goal": "失敗又好笑的泡泡結果，驚訝表情。",
      "status": "pending"
    },
    {
      "id": "p05",
      "phrase": "Try again.",
      "zh_tw": "再試一次。",
      "usage": "鼓勵自己或別人在失敗後重新嘗試。",
      "micro_story": "火箭在畫面中從正在裝配/直立搖晃，明確倒下散開；Leo 沮喪；Mia 拿起零件鼓勵；兩人開始重新裝回尾翼。",
      "visual_goal": "必須演出失敗動畫本身：嘗試中→火箭倒下/零件散開→沮喪→鼓勵→重新開始。8 秒 source clip。",
      "status": "needs_8s_regeneration_after_human_review",
      "human_feedback": "p05的影片不適合的原因是開頭的失敗沒有動畫，只有開頭就是失敗的畫面，這樣還是不夠直覺，可能是影片秒數不夠，改成生成8秒的影片",
      "logic_revision": "p05 Try again must animate the failure on screen before retry: upright/wobbly rocket being assembled -> visible collapse/fall-apart -> sad reaction -> encouragement -> retry/rebuild. Use 8s visual-only source clip instead of 5s so the failure animation is intuitive.",
      "prompt_revision_file": "prompts/p05_try_again_chatartpro_visual_only_v5_8s_failure_animation.txt"
    },
    {
      "id": "p06",
      "phrase": "Need help?",
      "zh_tw": "需要幫忙嗎？",
      "usage": "看到對方卡住、拿不動、做不來時，用來主動關心。",
      "micro_story": "Mia 一手扶火箭、一手找膠帶忙不過來；Leo 靠近詢問。",
      "visual_goal": "一人明顯忙不過來，另一人主動靠近幫忙。",
      "status": "pending"
    },
    {
      "id": "p07",
      "phrase": "Good idea.",
      "zh_tw": "好主意。",
      "usage": "認同別人的點子或建議時使用。",
      "micro_story": "Leo 提議用星星貼紙當火箭窗戶，Mia 眼睛發亮點頭。",
      "visual_goal": "提案＋認同，貼紙變火箭窗戶。",
      "status": "pending"
    },
    {
      "id": "p08",
      "phrase": "Almost there.",
      "zh_tw": "快好了／快成功了。",
      "usage": "事情接近完成、鼓勵對方撐一下時使用。",
      "micro_story": "火箭只差最後一個星星貼紙，Mia 看著進度興奮鼓勵。",
      "visual_goal": "火箭接近完成但尚差最後一步。",
      "status": "pending"
    },
    {
      "id": "p09",
      "phrase": "Let’s go!",
      "zh_tw": "走吧！／開始吧！",
      "usage": "準備出發、開始行動、炒熱氣氛時使用。",
      "micro_story": "倒數結束，兩人一起把手放到發射按鈕旁，興奮開喊。",
      "visual_goal": "啟動前的共同開始感。",
      "status": "pending"
    },
    {
      "id": "p10",
      "phrase": "High five!",
      "zh_tw": "擊掌！",
      "usage": "完成任務、慶祝成功、鼓勵彼此時使用。",
      "micro_story": "小火箭終於彈起並安全落在軟墊上；Mia 和 Leo 開心擊掌。",
      "visual_goal": "成功結果＋清楚擊掌慶祝。",
      "status": "pending"
    }
  ],
  "final_story": {
    "id": "final_story_v1_tiny_rocket_test",
    "title": "The Tiny Rocket Test",
    "status": "draft_approved_for_production_prompts",
    "provenance": "Story Editor Agent draft + Hermes integration/review, created after restoring cleared EP01 progress",
    "updated_at": "2026-05-23 10:34:25 CST",
    "logline": "Mia and Leo try to finish and safely launch a tiny toy rocket; a small accident, turn-taking, and teamwork lead to a successful soft landing and celebration.",
    "story_requirements": {
      "mini_plot": "setup -> problem -> reaction -> attempt -> escalation -> payoff -> emotional change",
      "taught_phrase_ratio_target": "about 70% of dialogue",
      "visual_style": "F soft 3D clay toy style, warm classroom craft corner, same Mia/Leo character references",
      "audio_rules": "English only; no BGM; no extra spoken words in source clips unless story-support line is explicitly listed"
    },
    "beats": [
      {
        "beat_id": "s01_setup_hazard",
        "plot_function": "setup + first small risk",
        "visual_action": "Leo carries a box of rocket parts toward the craft table and almost steps on a loose tail fin. Mia points down quickly.",
        "dialogue": [
          {
            "speaker": "Mia",
            "line": "Watch out!",
            "taught_phrase": true
          }
        ]
      },
      {
        "beat_id": "s02_too_fast_button",
        "plot_function": "problem / comic consequence",
        "visual_action": "Leo gets excited and reaches for the red launch button before the rocket is ready. Mia raises a stop hand. The toy rocket makes a safe cartoon BOOM; black smoke leaves both faces sooty.",
        "dialogue": [
          {
            "speaker": "Mia",
            "line": "Hold on.",
            "taught_phrase": true
          }
        ]
      },
      {
        "beat_id": "s03_turn_taking",
        "plot_function": "recover by cooperating",
        "visual_action": "Mia attaches one fin, then passes the small safe screwdriver to Leo. Leo reaches for it proudly.",
        "dialogue": [
          {
            "speaker": "Leo",
            "line": "My turn.",
            "taught_phrase": true
          }
        ]
      },
      {
        "beat_id": "s04_funny_malfunction",
        "plot_function": "reaction / escalation",
        "visual_action": "They test the button; instead of launching, the rocket wobbles and spits a big stream of soft soap bubbles. Both stare in disbelief.",
        "dialogue": [
          {
            "speaker": "Leo",
            "line": "No way!",
            "taught_phrase": true
          }
        ]
      },
      {
        "beat_id": "s05_try_again",
        "plot_function": "attempt after failure",
        "visual_action": "The rocket tips over. Leo looks discouraged. Mia picks up the loose fin and smiles encouragingly.",
        "dialogue": [
          {
            "speaker": "Mia",
            "line": "Try again.",
            "taught_phrase": true
          }
        ]
      },
      {
        "beat_id": "s06_offer_help",
        "plot_function": "teamwork",
        "visual_action": "Mia holds the leaning rocket with one hand while reaching for tape. Leo notices and steps in with both hands ready.",
        "dialogue": [
          {
            "speaker": "Leo",
            "line": "Need help?",
            "taught_phrase": true
          },
          {
            "speaker": "Mia",
            "line": "Yes, please.",
            "taught_phrase": false
          }
        ]
      },
      {
        "beat_id": "s07_good_idea",
        "plot_function": "new solution",
        "visual_action": "Leo shows star stickers and points to blank round rocket windows. Mia nods and gives a thumbs-up.",
        "dialogue": [
          {
            "speaker": "Mia",
            "line": "Good idea.",
            "taught_phrase": true
          }
        ]
      },
      {
        "beat_id": "s08_almost_done",
        "plot_function": "near success",
        "visual_action": "The rocket is almost complete, with one empty window spot and one last star sticker. Leo prepares the final sticker.",
        "dialogue": [
          {
            "speaker": "Mia",
            "line": "Almost there.",
            "taught_phrase": true
          }
        ]
      },
      {
        "beat_id": "s09_launch",
        "plot_function": "climax",
        "visual_action": "The repaired rocket sits on a soft launch pad. Mia and Leo stand side by side, hands near the button, excited and ready.",
        "dialogue": [
          {
            "speaker": "Leo",
            "line": "Let’s go!",
            "taught_phrase": true
          }
        ]
      },
      {
        "beat_id": "s10_payoff",
        "plot_function": "payoff + emotional change",
        "visual_action": "The tiny rocket safely pops up and lands upright on a cushion. Mia and Leo laugh with relief and meet palms in a clear high-five.",
        "dialogue": [
          {
            "speaker": "Mia and Leo",
            "line": "High five!",
            "taught_phrase": true
          }
        ]
      }
    ],
    "dialogue_count": {
      "taught_phrase_lines": 10,
      "supporting_lines": 1,
      "ratio": "10/11 taught-phrase lines ≈ 91%; acceptable for first story draft, can add 2-3 simple support lines during assembly if pacing needs it"
    },
    "production_notes": [
      "Use one continuous craft-corner setting for story segment.",
      "Do not repeat story lines three times; story plays once.",
      "Keep support dialogue simple and optional; source clips should still obey no-BGM/no-extra-speech per generated beat.",
      "p02 raw candidates need human visual confirmation or regeneration before final assembly."
    ]
  },
  "reset_note": "Demo failure progress cleared, but episode phrase list and approved p01 video are retained/restored.",
  "change_log": [
    {
      "time": "2026-05-25 11:21 CST",
      "actor": "@Provider Execution Agent / @審核Agent",
      "change": "Generated p05 v5 source, selected 10s raw, trimmed to exact 8s no-audio, scored 8.5/10, awaiting user review before reassembly."
    }
  ]
}