montage_tz стадии 6.2.Манифесты, разговоры, интервью на 1–2 камеры, где монтажёру нужен готовый монтажный лист, а не ревью его сборки (YTEVO02 «Эволюция»: 11:53 из 23 минут исходника, 17 кусков, 20 экранов графики). Режим montage_tz той же стадии: review.py init --mode montage_tz. Общее с режимом ревью ката: карточка фильма и профиль канала (6.1), транскрипт, стейт-машина и Memex (6.2), телефонный бриф на выходе (6.3).
card.clips: файл, начало, конец по сквозному TC) и роли (card.speakers: «Speaker 1» → «A · Дарья»).wordrole_transcribe --plain, на Memex).montage_plan.json: целевой порядок кусков с якорями и каталог графики (тексты экранов живут в плане, не в коде).style.*) или из плана (презентация клиента).Граница куска = (подсказка_сек, "слово"): берётся ближайшее к подсказке вхождение слова, поэтому правка на полсекунды не ломает склейку. tc_in = начало первого слова, tc_out = конец последнего + min(зазор, 0,3 с). Для каждой склейки: файл-источник и смещение внутри него, кто в кадре (по большинству слов), паузы ≥0,7 с, пересечение стыка клипов. Экраны графики получают таймкод в чистовике (on: [hint, word]).
parts: ["say", [1011.76, "потому"], [1029.0, "плечами"]] | ["gfx", "G02", 4.0] | ["hold", "текст", 2.0] gfx: [["G01", [1022.3, "двое"]]]
Локальная сегментация тезисов — Qwen3-8B по окнам ~3,5 мин (segment_local, ~16 с на окно): модель отдаёт номер строки + слово, код привязывает к секундам (±3 с, затем ±10 с, иначе отброс).
pieces[]: id, title, block, act, note, dst_in/dst_out, dur, dur_trimmed; parts[]: kind, src_in/src_out, dst_in/dst_out, file_in/off_in, file_out/off_out, crosses_clip, camera, speaker, words, first/last, text, gaps, trim_est; gfx[]: id, src, dst, on_word, kind, title, place.gfx_catalog, gfx_used, total, total_trimmed, source_total, n_say_parts, n_gaps.montage_plan.json даёт файл, идентичный историческому (0 расхождений); конвертер из легаси-скрипта — build_montage.py --plan-from-legacy.Экраны собираются из HTML-тел каталога (gfx_catalog[*].screens) в стиле профиля/клиента и рендерятся в 4K через chrome-headless-shell. Раскладка проверяется прямо в DOM (--dump-dom, body[data-qc]: title-safe и переполнение) — ноль токенов; варианты А/Б для спорных экранов; бейдж DRAFT из профиля. Ревью дизайна — один агент по одному контактному листу всех экранов (≤1568 px), не по 28 картинкам.
build_structure_html — лента фильма по montage.json + segments.json + мокапы: транскрипт никогда не перепечатывается руками. make_standalone — один самодостаточный HTML с data-URI превью для телефона/почты; плюс телефонный бриф (6.3).
Вход — путь к segments.json (тезисы с якорями), правила формата и описание фильма; выход — порядок, что оставить/снять и почему, список графики с якорями, главы. Пишет cloud/out/structure.json сам; structure_call.py --apply сливает в план, ручные note не трогает.
Один контактный лист мокапов + список экранов → ok/problems/fix на экран; --apply-design прикрепляет замечания к экранам.
Было: 11 агентов и ≈1 M токенов с непрошенной стадией сверки (YTEVO02, 11.09). Стало: ≈0,15–0,2 M.
scenes[]), не вставка в основной лист (иначе два призыва подряд).YTEVO02_evolution_manifesto).