TriCodeBot Media Studio получил следующий слой managed video pipeline. До этого система уже умела принять идею, прогнать её через Kimi/Moonshot, получить storyboard и запустить генерации. Но дальше начиналась зона честного неудобства: озвучка, lip-sync и сборка ролика ещё не были полноценным runtime, а без логов разбираться в падениях приходилось слишком руками.

Теперь добавлен новый execution-контур:

  • в Media Studio -> Runtime появился блок TTS / Voice runtime;
  • настройки поддерживают OpenAI-compatible /audio/speech: base URL, model, voice и response format;
  • no-avatar path может реально материализовать voice track, собрать rough cut и финальные варианты через ffmpeg;
  • talking-avatar path получил orchestration для lip-sync -> assembly, если provider и assets уже отработали;
  • sync_content_job() теперь умеет auto-refresh media tasks, а не ждать, пока оператор вручную пнёт каждую задачу.

Главное изменение не только в том, что появился TTS. Главное — pipeline перестал врать про готовность. Если voice, lip-sync или assembly не материализованы, job остаётся в честном blocked/manual-required состоянии. Если всё собрано, job переходит в rough_cut_review уже не декоративно, а с реальными asset ids в export package.

Для диагностики закреплён event-log слой: planner fallback, generation failures, scene-level task context, provider task id, error code и error detail теперь можно читать в execution log. То есть при падении больше не нужно изображать археолога с фонариком: видно, какая стадия упала, какая сцена, какой tool и какой ответ провайдера.

Проверка перед push прошла на чистой worktree: tests/test_storage.py, tests/test_planner.py и tests/test_web.py дали 89 passed. Production rollout уже жив по health/readiness, а полноценный smoke с настоящими TTS и Freepik lip-sync токенами остаётся следующим практическим шагом.