pravki_v2.json) рождает секвенцию в Premiere, лист в Google Sheets, вкладку в сценарном доке и Drive-папку материалов с комментами. Эталонная реализация — YTUVI01 «Корунд — Рубин», Review_v6.| слой | что лежит | формат |
|---|---|---|
| V1 | ОРИГИНАЛ — рендер монтажёра целиком | не трогать никогда, A1 цело; звук вставок → A2/A3 |
| V2 | вставленные футажи: видео и фото (клипы, сканы, гравюры) | клипы по таймкодам; стиллы ≤ 4,8 с |
| V3 | ВСЯ инфографика: драфты схем/карт, плашки-определения терминов при каждом упоминании, мини-карты локаций, нарисованные исправления титров | прозрачный PNG 4K; полноэкранным остаётся только то, что заменяет кадр (карта, схема) |
| V4 | комментарии ТЗ: lower-third «ТЗ-NN · место + что сделать» | полный текст + Drive-ссылки в маркере мастер-клипа и по кнопке панели Copy ТЗ @ playhead |
| V5 | ошибки на экране: эллипс-обводка + стрелка в место ошибки + плашка «ТЗ-NN · ОПЕЧАТКА / ФАКТ / ВАЛЮТА» | координаты — из OCR-bbox кадра (×3840/2160), не на глаз |
| V6 | структура: плашки глав, подглавы на каждом титульном экране, прогресс перечислений «N из M» | прозрачные; главы — верх-лево с градиентом, подглавы/прогресс — левый борт середина (верх кадра занят титрами ката) |
Конвейер стал системой: 4.7 Cut Review Cycle — карточка фильма + профиль канала, стейт-машина review.py, Memex делает кадры/OCR/транскрипт/VLM/LLM/пробы автономно, маршрутизация кандидатов кодом, один облачный проход (судья J по текстовым пакетам, факт-чек F, кропы V, скептик S — 7–10 агентов вместо 233–560), QA дока и превью кодом. Эта страница остаётся каноном форматов: слои, формат ТЗ, приёмка, графика.
Роман (10.09): «сплошной текст сложен для восприятия». Каждое ТЗ печатается именованными блоками с жирными метками — глаз находит нужное за секунду:
v7 — «как карта структуры» (Роман, 10.09: «каждый таймкод — списком, друг под другом»). Эталон — кадр карты структуры: крупный заголовок, под ним вертикальный список «таймкод слева — пункт справа», одна строка = одна мысль:
SUB, terms_v6.json), — список в доке всегда совпадает с картинкой.typo_diff.py (difflib по символам, числа целиком).v7.1 — что добавила приёмка (глазами по всем страницам вкладки; правила лежат в v7_tools/listify_rules_v2.md и их проверяет guard_v7b.py):
decision и печатаются отдельным блоком.parts в pravki, а не готовый текст: элемент блока — строка или {"h": заголовок, "items": [пункты]}; ручные уточнения живут в tz_overrides.json и накладываются поверх при каждой сборке. Каждая картинка-материал несёт строку «📚 источник: …» — какая книга/статья, страница и ссылка на сам источник в архиве.Сборка «ALL PASS» по коду ещё не значит, что документ читается. Поэтому последний шаг цикла — приёмка постранично, как её увидит монтажёр:
v7_tools/export_tab_pdf.py (экспорт именно вкладки: /export?format=pdf&tab=t.…, дальше pdftoppm ~110 dpi).wf_final_doc_qa_v7.js: батч ≈8 страниц на агента, у каждого — критерии заказчика и просьба не додумывать («мелко — так и напиши»). На 64 страницах это дало 320 замечаний: 51 критичное.wf_final_qa_fix_v7.js: переписчик + скептик на батч, каждому ТЗ приложены ЕГО замечания, полные находки аудита и 💬 заказчика; результат проходит guard_v7b.py и сливается merge_r3.py.previews_v7.json.terms_catalog.py (regex по озвучке + определение, факты сверены), индекс упоминаний terms_index.py: плашка при каждом упоминании, cooldown 45 с на термин, 2–3 термина в окне ≤5 с — одна групповая плашка. Правый борт, середина кадра.PLACES (родитель, роль, старое имя, сноска), из неё выводится и плашка, и заголовок в ТЗ.MAP_WINDOWS).s12_doc_previews.py): оверлей — кроп по альфе; fix — «БЫЛО / СТАЛО» столбиком (цены — «БЫЛО / ВАРИАНТ А / ВАРИАНТ Б»); кадр со стрелкой — кроп вокруг ошибки; ТЗ без картинок — кадр в таймкод ТЗ. В доке превью стоит в своём абзаце на всю ширину колонки, под ним подпись «таймкод · что видно»; QA превью — агентами по батчам (пробный кроп → поправки в previews_v7.json).| поверхность | что несёт | генератор |
|---|---|---|
| Секвенция Premiere | 6 слоёв, маркеры глав; текст ТЗ — маркер клипа / кнопка «Copy ТЗ @ playhead» | make_review_v6.py → панель UXP (partsBuilder ≥1.11.1) |
| Лист «ТЗ монтажёру» | № · v1 TC · тип · название · что сделать · материалы со ссылками · 3 кадра =IMAGE · решение Романа · статус | tz_sheet.py (идемпотентно, gid меняется) |
| Вкладка дока «ТЗ монтажёру» | одна таблица: главы = строки с заливкой + [скобки]; ТЗ списками «таймкод ▸ пункт»; справа крупное превью в своём абзаце + подпись; активные ссылки | doc_tab_tz_v3.py (build_rows() — чистая функция) + _verify.py |
| Drive Review_materials/ | кадры со стрелками, fix-драфты, вся графика; на каждом файле коммент «ТЗ · таймкод · слой» | s9_materials_drive.py |
status: rejected; дописал текст в ячейку → roman_comment — печатается «💬 …» фиолетовым жирным в доке и в колонке J листа. Перед ЛЮБОЙ регенерацией — s13_doc_edits.py: текущая вкладка против build_rows() сборщика по тому же pravki → отчёт «пропали строки / дописки / правки ячеек / Drive-комменты» (запасной путь — диф экспорта ревизий Drive). Все поверхности регенерируются согласованно; номера ТЗ никогда не переиспользуются.resumeFromRunId.s14_polish_local.py. Задача даётся ПО ОДНОЙ строке («разбей на пункты, ничего не потеряй»), а не «перепиши ТЗ»: маленькую задачу модель 8B делает надёжно, а код сверяет таймкоды и слова и при провале берёт детерминированный разбор. Формулировки после неё всё равно читает человек.html,body{background:transparent}, иначе оверлей глушит видео; GUI-Chrome в headless на маке виснет — chrome-headless-shell из ~/.cache/puppeteer.sequence_name не кончать на _v\d — авто-версия билдера срежет.dropped).\s съедает — добавлять его после чистки строки и не чистить готовый текст повторно. И в регулярках стиля искать именно U+2007: с обычным пробелом «0:57» останется без моноширинного начертания, а «33:42» получит — столбик выйдет разнородным.get_doc тянет ВЕСЬ документ со всеми вкладками (~30 с на вызов): шапку вставлять одной пачкой с самостоятельным счётом индексов, а не «абзац → перечитать док». Разница — 25 минут против 4 на сборку вкладки.\d{1,2}:\d{2} — verify считал их за два таймкода. Шаблон один на все скрипты: диапазон и доли — часть одного таймкода.pad (узкая рамка) и badge:above (плашка «ИСПРАВЛЕНО» над текстом); индексы формул — настоящими <sub>/<sup>, иначе Georgia ставит их на базовую линию.Комплект живёт в репо: ~/YTAI/scripts/05_editing/0509_review_cycle/ (README = машинный ранбук, docs/contracts.md = схемы). Один вызов на всё — review.py; стадии, хосты и гейты — в таблице на 4.7 · 3. Старые воркфлоу (wf_audit_v6.js на 250 агентов, v7_tools/wf_*) лежат в cloud/_legacy/ и не запускаются.
R=~/YTAI/scripts/05_editing/0509_review_cycle/review.py python3 $R status --project YTUVI02 python3 $R resume --project YTUVI02 # продолжить с первой незакрытой стадии python3 $R edits --project YTUVI02 # правки Романа из дока перед регенерацией
00_Setup/05_Review/review_card.json). См. также 4.5 Assembly Brief Cycle, 4.3 Editor Montage Sheet, 4.8 Montage TZ from Source.