pravki_v2.json) рождает все поверхности круга — секвенцию, три вкладки дока, лист, папку материалов, страницу продюсера и бриф (6.3). Эталонная реализация — YTUVI01 «Корунд — Рубин», Review_v6.| слой | что лежит | формат |
|---|---|---|
| V1 | ОРИГИНАЛ — рендер монтажёра целиком | не трогать никогда, A1 цело; звук вставок → A2/A3 |
| V2 | вставленные футажи: видео и фото (клипы, сканы, гравюры) | клипы по таймкодам; стиллы ≤ 4,8 с |
| V3 | ВСЯ инфографика: драфты схем/карт, плашки-определения терминов при каждом упоминании, мини-карты локаций, нарисованные исправления титров | прозрачный PNG 4K; полноэкранным остаётся только то, что заменяет кадр (карта, схема) |
| V4 | комментарии ТЗ: lower-third «ТЗ-NN · место + что сделать» | полный текст + Drive-ссылки в маркере мастер-клипа и по кнопке панели Copy Brief @ playhead |
| V5 | ошибки на экране: эллипс-обводка + стрелка в место ошибки + плашка «ТЗ-NN · ОПЕЧАТКА / ФАКТ / ВАЛЮТА» | координаты — из OCR-bbox кадра (×3840/2160), не на глаз |
| V6 | структура: плашки глав, подглавы на каждом титульном экране, прогресс перечислений «N из M» | прозрачные; главы — верх-лево с градиентом, подглавы/прогресс — левый борт середина (верх кадра занят титрами ката) |
Как эти шесть слоёв оказываются в Premiere. Это единственный ручной шаг этапа — цепочка кладёт JSON на диск, но секвенцию в проект собирает человек.
00_Setup/05_Review/ проекта: берёт файлы *_review_*.json, у которых внутри указан кат-основа, и показывает их свежими сверху — с датой, числом сегментов и бейджем new или built ✓, если такая секвенция в проекте уже есть. Ссылки new · all · none · refresh отмечают галочки и перечитывают папку; по умолчанию отмечены только несобранные.{CODE}_review_v6.json и нажать «Build Selected». Панель раскладывает слои и собирает секвенцию {CODE}_5_Review_v6_tz. Отмечено несколько — собираются по очереди, и сбой одной не останавливает остальные: итог строкой «Built N/M», упавшие перечислены по имени.review_json до конца не дошла. Смотреть надо не панель, а лог стадии: панель ничего не чинит, она только читает.mock — это не сборка. Она прогоняет тот же JSON тем же кодом панели, но нодой и без Premiere: проверка, что файл соберётся. Зелёная mock не означает, что секвенция уже есть в проекте.Copy Brief @ playhead — она закреплена над вкладками и видна с любой: полный текст ближайшей плашки V4 и ссылки на её материалы — в буфер.Машина стадий, команды, гейты и облачный протокол — 6.2 Cut Review Cycle. Смысл этапа целиком — 6.5 Review Stage. Эта страница остаётся каноном кадра: из чего состоит секвенция, как выглядит текст ТЗ и какая графика ложится на видео.
Это разворот классов ТЗ на конкретику. Сам список классов и правило «вёрстка, вкус и темп в ТЗ не попадают» — 6.5 Review Stage: отбрасывает их код, а не глаз проверяющего.
Роман (10.09): «сплошной текст сложен для восприятия». Вот одна правка целиком — ниже разобрано, из чего она собрана.
Из чего собрано. Не все блоки печатаются везде — третья колонка важна.
| Метка | Что внутри | Где печатается |
|---|---|---|
| ❌ СЕЙЧАС | что на экране сейчас и в чём проблема — по одной строке на находку | вкладка + лист |
| ▶ СДЕЛАТЬ | действие монтажёра, без объяснений «почему» | вкладка + лист |
| 📋 СПИСОК | если правка покрывает много точек (термины, локации, подглавы) — ПОЛНЫЙ список с таймкодами, чтобы заказчик отметил, что оставляем | вкладка + лист |
| 📍 ГДЕ | таймкод-диапазон и якорь из озвучки | только лист — во вкладке таймкод стоит колонкой 2 |
| 📚 ИСТОЧНИК | чем подтверждено: книга или журнал со страницей и ссылкой, лабораторная статья, официальный сайт | вкладка, мелким серым |
| 🎬 НА ТАЙМЛАЙНЕ | где смотреть в ревью-секвенции: какой слой, какой файл драфта | вкладка, мелким серым |
| 💬 РОМА | комментарии заказчика — фиолетовым, переживают пересборку | вкладка, колонка 9 |
v7 — «как карта структуры» (Роман, 10.09: «каждый таймкод — списком, друг под другом»). Эталон — кадр карты структуры: крупный заголовок, под ним вертикальный список «таймкод слева — пункт справа», одна строка = одна мысль. На образце выше это строка 0:53 ▸ было… → стало….
SUB, terms_v6.json), — список в доке всегда совпадает с картинкой.typo_diff.py (difflib по символам, числа целиком).Как это выглядит на настоящей правке. ТЗ-48 из круга YTUVI01 — одна правка на весь фильм, девять точек. Заголовки группируют, таймкоды стоят столбцом, одна строка — одна мысль. Эту правку Роман потом снял — здесь она показана как образец вёрстки длинного списка, а в свежую вкладку и в лист она уже не попадает.
| ▶ СДЕЛАТЬ · Добавить номер: | ||
| 11:17 | ▸ | «04. ТЕХПАСПОРТ РУБИНА» — сейчас только засечка, номера нет нигде |
| 12:59 | ▸ | «05. КОМУ ПОДХОДИТ РУБИН» — то же, и фон светлее всех, контраст ниже всех |
| Поставить заставку: | ||
| 34:42 | ▸ | у финала нет ни засечки, ни номера |
| 24:47 | ▸ | у главы 08 есть номер, но нет засечки — единственная такая |
| Разобраться с положением: | ||
| 1:32 | ▸ | «01. РУБИН» появляется через полторы минуты после начала главы, и кремовым по кремовой студии почти не читается |
| 2:08 | ▸ | «КОРОЛЬ САМОЦВЕТОВ» показан дважды в двух разных вёрстках |
| 26:06 | ▸ | карточка «ИСКУССТВЕННЫЙ РУБИН / НЕ ПОДДЕЛКА» по кеглю неотличима от заставки и читается как опоздавшая глава |
| …всего девять точек — в доке список идёт целиком, чтобы заказчик мог отметить, что оставляем | ||
v7.1 — что добавила приёмка. Шесть пунктов — это пары «так нельзя → так надо»; правила лежат в stages/listify_rules_v2.md, проверяет их stages/guard_v7b.py.
| Так нельзя | Так надо |
|---|---|
| «добавить плашку на 3:08–3:11» | «3:08–3:11 ▸ добавить плашку» — таймкод в начале строки. В скобках внутри фразы он допустим только в строке-сводке |
| перечисление в строку через «→», «/», «|», «;», «vs» | шаги — пунктами по порядку, варианты — «А ▸ …», «Б ▸ …». Исключение: дословная цитата экранного титра |
| «h0555», «нота 049», «ночной разбор», «166.0–168.6 с» | без внутреннего жаргона: имена кадров и секунды переводятся в таймкоды |
| «линия уходит…», «так пишут только про…» | мысль восстанавливается из полной находки или переформулируется без обрыва |
| «6:11» про длительность | «6 мин 11 с» — иначе читается как таймкод |
| шапка вкладки сплошным абзацем, «{N}» в имени секвенции | шапка тоже списками: по строке на пункт |
decision и печатаются отдельным блоком.parts в pravki, а не готовый текст: элемент блока — строка или {"h": заголовок, "items": [пункты]}; ручные уточнения живут в tz_overrides.json и накладываются поверх при каждой сборке. Каждая картинка-материал несёт строку «📚 источник: …» — какая книга или статья, страница и ссылка на сам источник в архиве. Геометрия вкладки и три настоящие строки — 6.3.Сборка «ALL PASS» по коду ещё не значит, что документ читается: проверка следит за структурой, а не за смыслом. Поэтому последний шаг круга — приёмка постранично, как её увидит монтажёр.
stages/export_tab_pdf.py выгружает именно вкладку и раскладывает её на изображения страниц.stages/doc_pdf_qc.py ищет оторванный от текста заголовок правки, картинку без подписи, две метки времени в одном абзаце, перечисление в строку, сплошной абзац, битую картинку. Это стадия doc_qc, и она мягкая: замечания не останавливают круг, но разбираются.stages/preview_qc_local.py смотрит геометрию и читаемость кропа: видно ли, о чём правка, не срезан ли объект, читается ли он при ширине колонки.cloud/_legacy/ и не запускаются.terms_catalog.py (regex по озвучке + определение, факты сверены), индекс упоминаний terms_index.py: плашка при каждом упоминании, cooldown 45 с на термин, 2–3 термина в окне ≤5 с — одна групповая плашка. Правый борт, середина кадра.PLACES (родитель, роль, старое имя, сноска), из неё выводится и плашка, и заголовок в ТЗ.MAP_WINDOWS).ch_plate_variant. На YTCH дальше идёт stages/bdd_plates.py titles: рисует языком брендбука фонда готовую заставку каждой главы и подглавы на своём кадре — берётся первый не тёмный кадр через несколько секунд после начала главы, чтобы не лечь поверх собственной заставки ката. Там же — название фильма сразу после хука (одной из трёх подач, film_title_*) и плашки спикеров (name_plates); ключи — 6.1.wasnow записи ТЗ, поэтому карточка не расходится с текстом правки.sub карточки — в этом круге их 62. Не путать с панелью подглав: титр — это момент («вот о чём сейчас»), панель — накопительный список по ходу главы. Для титра берётся кадр без собственного титра ката, иначе два титра лягут друг на друга.claims предлагает кандидатов из якорей глав и тезисов актов, не больше одной на главу, чувствительные темы не трогает. Рядом — собственная страница фильма: ивори-лист с заголовком, строками и местом под портрет или предмет.s12_doc_previews.py): оверлей — кроп по альфе; fix — «БЫЛО / СТАЛО» столбиком (цены — «БЫЛО / ВАРИАНТ А / ВАРИАНТ Б»); кадр со стрелкой — кроп вокруг ошибки; ТЗ без картинок — кадр в таймкод ТЗ. В доке превью стоит в своём абзаце на всю ширину колонки, под ним подпись «таймкод · что видно»; приёмка превью — локальным кодом (stages/preview_qc_local.py: геометрия, читаемость кропа, чёрные кадры), поправки — в previews_v7.json.Все выходы круга и их гейты собраны на 6.3 Review Surfaces: три вкладки дока, лист, материалы на Drive, страница продюсера, телефонный бриф. Здесь остаётся только то, что лежит на кадре.
Сколько стоит круг, что считается локально и что отдаётся агентам — 6.2 Cut Review Cycle.
html,body{background:transparent}, иначе оверлей глушит видео; GUI-Chrome в headless на маке виснет — chrome-headless-shell из ~/.cache/puppeteer.fps из карточки — частоты NTSC считаются точной дробью (29,97 = 30000/1001), иначе к концу фильма набегает сдвиг в кадры; хвостовые встык — иначе чёрные проблески; 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 ставит их на базовую линию.Команды, стадии и их гейты — 6.2 Cut Review Cycle. Код живёт в репозитории:
~/YTAI/scripts/05_editing/0509_review_cycle/