◂ База знанийRYA.AEReview Timeline — 6-слойный ревью-таймлайн катаобновлено 26 сен 2026
Ревью готового ката монтажёра без правки его видео: рендер лежит на V1 нетронутым, а всё, что мы хотим сказать монтажёру, лежит слоями сверху — футажи, инфографика, плашки ТЗ, стрелки «где ошибка», структура. Один и тот же источник правды (pravki_v2.json) рождает все поверхности круга — секвенцию, три вкладки дока, лист, папку материалов, страницу продюсера и бриф (6.3). Эталонная реализация — YTUVI01 «Корунд — Рубин», Review_v6.
Принцип. Ошибка ищется машиной (кадры 1 fps → OCR → локальные VLM/LLM), подтверждается одним судьёй по тексту экранов (кадры прикладываются только там, где он сам их попросил), а показывается монтажёру прямо на кадре: стрелка в место ошибки + нарисованный правильный титр. Текст ТЗ копируется с таймлайна кнопкой панели.
рендер v1→prep кадры·OCR·VLM·LLM→маршрутизация кодом → один облачный проход→pravki_v2.json→PNG 4K + review JSON→UXP → Premiere · Sheet · Doc · Drive
16 слоёв2Конвейер3Аудит экранов4Формат ТЗ5Приёмка6Графика7Поверхности — на 6.38Экономия — на 6.29Правила и грабли10Скрипты — на 6.2

🧱6.4 · 16 слоёв поверх нетронутого оригинала

слойчто лежитформат
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»прозрачные; главы — верх-лево с градиентом, подглавы/прогресс — левый борт середина (верх кадра занят титрами ката)
Маркеры секвенции = только названия глав, разноцветные span (Green/Cyan/Orange/Magenta/Blue/Yellow по кругу). Никаких ТЗ и точек на линейке — навигация только по главам. Слои включаются/выключаются глазом: каждая категория информации на своём слое.

Как эти шесть слоёв оказываются в Premiere. Это единственный ручной шаг этапа — цепочка кладёт JSON на диск, но секвенцию в проект собирает человек.

  • 1Открыть UXP-панель в Premiere, вкладка «Review». При открытии вкладки список «Review versions to build» сам сканирует 00_Setup/05_Review/ проекта: берёт файлы *_review_*.json, у которых внутри указан кат-основа, и показывает их свежими сверху — с датой, числом сегментов и бейджем new или built ✓, если такая секвенция в проекте уже есть. Ссылки new · all · none · refresh отмечают галочки и перечитывают папку; по умолчанию отмечены только несобранные.
  • 2Отметить {CODE}_review_v6.json и нажать «Build Selected». Панель раскладывает слои и собирает секвенцию {CODE}_5_Review_v6_tz. Отмечено несколько — собираются по очереди, и сбой одной не останавливает остальные: итог строкой «Built N/M», упавшие перечислены по имени.
  • 3Списка на вкладке нет — значит в папке нет ни одного ревью-JSON: стадия review_json до конца не дошла. Смотреть надо не панель, а лог стадии: панель ничего не чинит, она только читает.
  • 4Кнопки «Auto: …» ниже списка — запасной путь, не основной. Они угадывают JSON скорингом и стабильно брали не тот файл; выбор делается галочкой в списке. Прежние «Process Review» и «Build Review» в панели скрыты и не используются.
  • 5Стадия mock — это не сборка. Она прогоняет тот же JSON тем же кодом панели, но нодой и без Premiere: проверка, что файл соберётся. Зелёная mock не означает, что секвенция уже есть в проекте.
  • 6Текст ТЗ копируется с таймлайна кнопкой Copy Brief @ playhead — она закреплена над вкладками и видна с любой: полный текст ближайшей плашки V4 и ссылки на её материалы — в буфер.

⚙️6.4 · 2Конвейер — на 6.2

Машина стадий, команды, гейты и облачный протокол — 6.2 Cut Review Cycle. Смысл этапа целиком — 6.5 Review Stage. Эта страница остаётся каноном кадра: из чего состоит секвенция, как выглядит текст ТЗ и какая графика ложится на видео.

код scripts/05_editing/0509_review_cycle/вход /review · review.py

🔍6.4 · 3Аудит экранов: что проверяем

Это разворот классов ТЗ на конкретику. Сам список классов и правило «вёрстка, вкус и темп в ТЗ не попадают» — 6.5 Review Stage: отбрасывает их код, а не глаз проверяющего.

  • ТЕКСТ опечатки, орфография, регистр химических символов (Al₂O₃:Cr, а не AL₂O₃:CR), ё/е внутри экрана, обрезка кадром.
  • ФАКТЫ каждое число/дата/имя/вес/цена — веб-поиском по авторитетным источникам, ссылка в evidence.
  • ВАЛЮТА знак перед числом и сокращение: «$30,3 МЛН»; единый формат по всему фильму.
  • ЯЗЫК английские графики/подписи без русского перевода или где английский крупнее русского.
  • ЭКРАН ≠ ОЗВУЧКА титр противоречит сказанному.
  • ЧУЖОЙ СЛЕД водяной знак или интерфейс плеера в чужой вставке — ищется зондом; свой логотип канала зонд не трогает.
Выход по каждой ошибке: стрелка на V5 + (если можно нарисовать) правильный титр на V3 — патч в цвет кадра (сэмплинг фона и «чернил» по bbox) + верный текст + бейдж «ИСПРАВЛЕНО · ТЗ-NN · драфт». Сомнительные OCR-флаги перепроверять кадром: анимация титров даёт ложные срабатывания.

6.4 · 4Формат ТЗ: блоки, а не стена текста

Роман (10.09): «сплошной текст сложен для восприятия». Вот одна правка целиком — ниже разобрано, из чего она собрана.

ТЗ-01⏱ 0:53–0:55🎨 графика
【ОПЕЧАТКА: «кристале ситнетического рубине»】
❌ СЕЙЧАС«кристале ситнетического рубине» — опечатка
▸«кристале» написано с одной Л — нужно «кристалле».
▶ СДЕЛАТЬИсправить (в доке изменённые знаки выделены красным):
0:53▸было «кристале ситнетического рубине»→стало «кристалле синтетического рубина»
кадр 250 pt
колонка 7 «Материал / ссылки»
0:53 · где ошибка (стрелка на кадре)
• Кадр 0:53 с отметкой ошибки (стрелка)
📚 источник: кадр рендера v1 + наша отметка (слой V5)
кадр драфта 250 pt
колонка 8 «Как надо»
0:53 · было / стало
на драфте изменённые буквы — другим цветом с подчёркиванием
📚 ИСТОЧНИК · OCR и VLM читают строку одинаково…
🎬 НА ТАЙМЛАЙНЕ · стрелка «где ошибка» — слой V5, драфт исправленного титра — слой V3
📋 СПИСОКне печатается: блок появляется, только когда правка покрывает несколько точек — термины, локации, подглавы. Здесь точка одна.
📍 ГДЕво вкладке не печатается: таймкод стоит колонкой 2. Блок живёт в листе.
💬 РОМАу этой правки колонка 9 пустая. Заполненной она выглядит так: 💬 а слово рубин? Если писать Мьянма (Бирма) нужно же слово рубин?
Чем факсимиле отличается от вкладки.
  • Кадры — заглушки: в доке на их месте картинки не мельче 250 pt, и в текстовый экспорт они не попадают.
  • Диф в доке — одна строка; здесь она переносится на узком экране, чтобы «было» и «стало» встали друг под другом.
  • «Было» и «стало» оба красные на розовом — так печатает док. На 5.4 у «как надо» подсветка зелёная: это другой артефакт, не расхождение.
  • Три блока внизу показаны выключенными: у этой правки они не печатаются. Это правило, а не пустота.

Из чего собрано. Не все блоки печатаются везде — третья колонка важна.

МеткаЧто внутриГде печатается
❌ СЕЙЧАСчто на экране сейчас и в чём проблема — по одной строке на находкувкладка + лист
▶ СДЕЛАТЬдействие монтажёра, без объяснений «почему»вкладка + лист
📋 СПИСОКесли правка покрывает много точек (термины, локации, подглавы) — ПОЛНЫЙ список с таймкодами, чтобы заказчик отметил, что оставляемвкладка + лист
📍 ГДЕтаймкод-диапазон и якорь из озвучкитолько лист — во вкладке таймкод стоит колонкой 2
📚 ИСТОЧНИКчем подтверждено: книга или журнал со страницей и ссылкой, лабораторная статья, официальный сайтвкладка, мелким серым
🎬 НА ТАЙМЛАЙНЕгде смотреть в ревью-секвенции: какой слой, какой файл драфтавкладка, мелким серым
💬 РОМАкомментарии заказчика — фиолетовым, переживают пересборкувкладка, колонка 9

v7 — «как карта структуры» (Роман, 10.09: «каждый таймкод — списком, друг под другом»). Эталон — кадр карты структуры: крупный заголовок, под ним вертикальный список «таймкод слева — пункт справа», одна строка = одна мысль. На образце выше это строка 0:53 ▸ было… → стало….

  • Одна строка — один таймкод любое перечисление с двумя и более таймкодами разбивается на пункты «M:SS ▸ что там» под коротким заголовком; в доке таймкод пункта моноширинный серый — «▸» встаёт столбцом. Lint в s10 и verify дока: 0 строк с ≥2 таймкодами (диапазон «a–b» = один).
  • «Почему» — отдельной строкой не хвостом к действию; длинные описания (варианты замены, контекст кадра) — заголовок + пункты.
  • Списки — из данных структура (главы и подглавы), термины и локации генерятся из тех же данных, что и графика (SUB, terms_v6.json), — список в доке всегда совпадает с картинкой.
  • Суммы цифрами «$30,3 МЛН (= $30 300 000)» — чтобы был виден размер числа; на драфте два варианта оформления (А — крупно все цифры, Б — «$X,X МЛН» и мелко цифрами), на таймлайне оба подряд — заказчик выбирает.
  • Опечатки: было → стало отдельная строка «было «…» → стало «…»», изменённые знаки красным (стало — жирным на розовом, было — зачёркнуто; вставленные пробел и запятая видны по фону). На драфте исправления — изменённые буквы другим цветом с подчёркиванием. Диф — typo_diff.py (difflib по символам, числа целиком).
  • Сомнительная «опечатка» если буква могла быть закрыта головой ведущей (титр за головой — приём канала), ТЗ формулируется как проверка исходника титра, а не как исправление.

Как это выглядит на настоящей правке. ТЗ-48 из круга YTUVI01 — одна правка на весь фильм, девять точек. Заголовки группируют, таймкоды стоят столбцом, одна строка — одна мысль. Эту правку Роман потом снял — здесь она показана как образец вёрстки длинного списка, а в свежую вкладку и в лист она уже не попадает.

▶ СДЕЛАТЬ · Добавить номер:
11:17▸«04. ТЕХПАСПОРТ РУБИНА» — сейчас только засечка, номера нет нигде
12:59▸«05. КОМУ ПОДХОДИТ РУБИН» — то же, и фон светлее всех, контраст ниже всех
Поставить заставку:
34:42▸у финала нет ни засечки, ни номера
24:47▸у главы 08 есть номер, но нет засечки — единственная такая
Разобраться с положением:
1:32▸«01. РУБИН» появляется через полторы минуты после начала главы, и кремовым по кремовой студии почти не читается
2:08▸«КОРОЛЬ САМОЦВЕТОВ» показан дважды в двух разных вёрстках
26:06▸карточка «ИСКУССТВЕННЫЙ РУБИН / НЕ ПОДДЕЛКА» по кеглю неотличима от заставки и читается как опоздавшая глава
…всего девять точек — в доке список идёт целиком, чтобы заказчик мог отметить, что оставляем
Что здесь видно.
  • Таймкод стоит в начале пункта и выровнен столбцом — в доке это делает цифровой пробел, здесь колонка таблицы.
  • Заголовки («Добавить номер», «Поставить заставку») режут девять точек на три понятные задачи — без них это была бы стена.
  • Ни в одной строке нет второго таймкода: это проверяет lint и приёмка вкладки.
  • Строки без таймкода тоже бывают — тогда пункт начинается прямо с «▸».

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.

6.4 · 5Приёмка: свою же работу смотрят глазами

Сборка «ALL PASS» по коду ещё не значит, что документ читается: проверка следит за структурой, а не за смыслом. Поэтому последний шаг круга — приёмка постранично, как её увидит монтажёр.

  • 1Вкладка → PDF → страницы. stages/export_tab_pdf.py выгружает именно вкладку и раскладывает её на изображения страниц.
  • 2Постраничная проверка кодом. stages/doc_pdf_qc.py ищет оторванный от текста заголовок правки, картинку без подписи, две метки времени в одном абзаце, перечисление в строку, сплошной абзац, битую картинку. Это стадия doc_qc, и она мягкая: замечания не останавливают круг, но разбираются.
  • 3Превью принимаются отдельно. stages/preview_qc_local.py смотрит геометрию и читаемость кропа: видно ли, о чём правка, не срезан ли объект, читается ли он при ширине колонки.
  • 4Последний проход — глазами. Приёмка находит то, что не ловит ни lint, ни QA: устаревшую цифру, ссылку на снятую правку, формулировку, спорящую с комментарием Романа. Правило: замечание либо чинится, либо становится вопросом — молча не остаётся.
Что чинит код, а что человек: картинки, подписи, ширины колонок, порядок строк и разрывы страниц — код; смысл, формулировки и противоречия — редактор. Прежние облачные проходы приёмки лежат в cloud/_legacy/ и не запускаются.

🎨6.4 · 6Графика: термины, карты, структура

  • Термины каталог terms_catalog.py (regex по озвучке + определение, факты сверены), индекс упоминаний terms_index.py: плашка при каждом упоминании, cooldown 45 с на термин, 2–3 термина в окне ≤5 с — одна групповая плашка. Правый борт, середина кадра.
  • Локации мини-карта при каждом упоминании на реальной географии (Natural Earth 50m, public domain): страна подсвечена, точка месторождения, подпись по-русски; координаты сверены. Полноразмерная карта — там, где карта заменяет кадр.
  • Канон названий зритель путает страну, город и старое имя страны, если их писать по-разному. Правило: современное имя первым, старое в скобках («МЬЯНМА (БИРМА)», «ШРИ-ЛАНКА (ЦЕЙЛОН)»); пояснение «одна страна, переименована в таком-то году» — один раз, при первом упоминании; город/долина/месторождение всегда подписаны своей страной («МОГОК», второй строкой «долина в Мьянме (Бирме)»). В списке ТЗ города идут сразу за своей страной, а не по частоте — иначе три строки читаются как три разных места. В данных это одна запись PLACES (родитель, роль, старое имя, сноска), из неё выводится и плашка, и заголовок в ТЗ.
  • Имя vs термин старое имя страны в торговле («бирманский рубин», «сиамские рубины») — не география: «сиамские рубины» оказались способом подделки, и это термин, а не карта. Проверять, что регексп ловит место, а не одноимённое слово («танзанит» ≠ Танзания), и что ASR-написание совпадает с каталогом («мазамбик» против «мозамбик»).
  • Перечисление стран когда в озвучке подряд звучат 6–9 стран, мини-карты схлопываются в одну точку и дерутся за место. Вместо них — одна большая карта в три шага, страны загораются по мере перечисления; мини-карты внутри этого окна глушатся (MAP_WINDOWS).
  • Заставки глав три варианта дизайна на выбор, задаются ключом карточки: полотно (по умолчанию), шторка, нижняя треть. Показываются не макетом, а на реальных кадрах этого фильма — на абстрактном примере выбрать нельзя. Демонстрация уезжает в шапку вкладки «Главы» (6.3). Выбранный вариант записывается в ch_plate_variant. На YTCH дальше идёт stages/bdd_plates.py titles: рисует языком брендбука фонда готовую заставку каждой главы и подглавы на своём кадре — берётся первый не тёмный кадр через несколько секунд после начала главы, чтобы не лечь поверх собственной заставки ката. Там же — название фильма сразу после хука (одной из трёх подач, film_title_*) и плашки спикеров (name_plates); ключи — 6.1.
  • Панель подглав пресет «Side slide», выбранный Романом 22.09.2026: боковая страница, заголовок сверху, под ним список, который накапливается — пункт за пунктом по ходу речи. Будущих пунктов не видно, поэтому подсвечивать нечего: свежий пункт всегда последняя строка. Прежние варианты (тёмная коробка, кружки-радиокнопки, полоса прогресса) Роман забраковал.
  • Почему так, а не на вкус решения замерены по самому кату. Все пункты одного кегля — размер пре-аттентивен, а цвет на пёстром кадре нет, поэтому текущий пункт искали бы глазами; накопительный список снимает вопрос сам. Страница начинается ниже собственного титра главы ката — прежняя полоса его накрывала. Кегль подобран так, чтобы самая длинная строка перечисления влезала в одну строку. Черта вдвое толще собственной черты подтемы ката, чтобы читалась как наша, а не его.
  • Темы панели тёмная принята, светлая осталась для сравнения. ⚠️ Тёмная непрозрачна: на 94 % кадров сквозь полупрозрачную просвечивали титры ката. Заодно на непрозрачной темноте фирменный цвет канала даёт контраст 3,2 : 1 и работает как черта и цифра, а на полупрозрачном скриме давал 2,08 — непригоден.
  • «БЫЛО → НАДО» карточка замен для правки, у которой список замен длиннее одной строки: слева как сейчас, справа как должно стать. Источник — поле wasnow записи ТЗ, поэтому карточка не расходится с текстом правки.
  • Прозрачность пояснительные панели (термины, определения) — на полупрозрачной подложке по центру: видео за ними должно быть видно. Тёмные глухие драфты — для карт и схем, заменяющих кадр. Исключение — панель подглав: она непрозрачна, потому что сквозь полупрозрачную просвечивали собственные титры ката (см. выше).
  • Титр подтемы приём самого фильма, а не наша плашка: ивори-сериф прямо по кадру и черта под ним. Рисуется на каждую подглаву из списка sub карточки — в этом круге их 62. Не путать с панелью подглав: титр — это момент («вот о чём сейчас»), панель — накопительный список по ходу главы. Для титра берётся кадр без собственного титра ката, иначе два титра лягут друг на друга.
  • Фраза во весь кадр одна мысль, две строки: первая рубином, вторая костью. Берётся дословно из речи ката — стадия claims предлагает кандидатов из якорей глав и тезисов актов, не больше одной на главу, чувствительные темы не трогает. Рядом — собственная страница фильма: ивори-лист с заголовком, строками и местом под портрет или предмет.
  • Карта структуры одним кадром: все главы с подглавами и таймкодами (блок H рендера графики — буква вида экрана, не стадия цепочки) — и как приложение к доку («чтобы удобно было проверить»), и как драфт зрительской «карты выпуска» с «ВЫ ЗДЕСЬ» на каждую главу.
  • Карта имён соседний лист: две колонки «что сказано голосом → что стоит на экране», у каждой строки счётчик упоминаний и первый таймкод. Ею сверяют канон названий по всему фильму разом — одна страна не должна быть на экране трижды по-разному. Это приложение к доку, а не экран для зрителя.
  • Превью для дока прозрачный 4K-оверлей в ячейке дока превращается в тёмную точку, поэтому для дока и листа каждое изображение накладывается на реальный кадр в свой таймкод и кропается на то, о чём речь (s12_doc_previews.py): оверлей — кроп по альфе; fix — «БЫЛО / СТАЛО» столбиком (цены — «БЫЛО / ВАРИАНТ А / ВАРИАНТ Б»); кадр со стрелкой — кроп вокруг ошибки; ТЗ без картинок — кадр в таймкод ТЗ. В доке превью стоит в своём абзаце на всю ширину колонки, под ним подпись «таймкод · что видно»; приёмка превью — локальным кодом (stages/preview_qc_local.py: геометрия, читаемость кропа, чёрные кадры), поправки — в previews_v7.json.
Все PNG — макеты смысла, а не финальная графика, но полосу «DRAFT · ПЕРЕРИСОВАТЬ В СТИЛЕ КАНАЛА» несёт только часть. Правило простое: полоса стоит на том, что монтажёр перерисует самостоятельным экраном — плашка термина, мини-карта, прозрачный драфт, плашка ТЗ, заставка главы, карточка «было → надо». На всём, что ложится поверх чужого кадра, полосы нет — стрелка ошибки, драфт исправленного титра, плашка спикера, титр подтемы, панель подглав, прогресс перечисления, карта структуры, плашка-утверждение, ивори-страница: полоса попала бы в кроп превью для дока и закрыла бы саму правку. У драфта исправления пометка своя — слово «драфт» в зелёном бейдже. Разбор пары «кадр ошибки → нарисованное исправление» — 6.3 · 2.

6.4 · 7Поверхности — на 6.3

Все выходы круга и их гейты собраны на 6.3 Review Surfaces: три вкладки дока, лист, материалы на Drive, страница продюсера, телефонный бриф. Здесь остаётся только то, что лежит на кадре.

6.4 · 8Экономия токенов — на 6.2

Сколько стоит круг, что считается локально и что отдаётся агентам — 6.2 Cut Review Cycle.

⚖️6.4 · 9Правила и грабли

  • alpha-рендер: у прозрачных страниц html,body{background:transparent}, иначе оверлей глушит видео; GUI-Chrome в headless на маке виснет — chrome-headless-shell из ~/.cache/puppeteer.
  • Стиллы ≤ 4,8 с (дефолт still-duration Premiere 5 с клампит длиннее); таймкоды на сетке fps из карточки — частоты NTSC считаются точной дробью (29,97 = 30000/1001), иначе к концу фильма набегает сдвиг в кадры; хвостовые встык — иначе чёрные проблески; sequence_name не кончать на _v\d — авто-версия билдера срежет.
  • Верхняя полоса кадра занята титрами ката: подглавы/прогресс — слева-посередине, термины/карты — справа-посередине; плашка уступает титульному экрану (сдвиг за его конец) и инфографике (окно −3…+6 с, иначе выпадает — с записью в dropped).
  • Клип-маркеры на Premiere 25.x приходят без имени/коммента — копируемый текст ТЗ обеспечивает кнопка панели «Copy Brief @ playhead» (читает review-JSON, чей sequence_name — префикс активной секвенции).
  • Вставки видео не класть без согласования — предлагать таймкодами; ссылки везде активные, у PDF — номер страницы; материалы — в Drive-папку проекта с комментом на каждом файле.
  • OCR путает Й/И на титрах — якоря селфчека сравнивать нормализованно; VLM читает кириллицу, но полукадры анимации даёт как обрезки — best-кадр = самый полный текст экрана.
  • Docs API: картинки вставлять пачками по 20, при сбое пачки — по одной; backoff на 429/5xx; картинку — в ПУСТОЙ абзац (иначе текст следующей строки встаёт справа от картинки). Регенерация вкладки ~10–15 мин — в фоне.
  • Выравнивающий цифровой пробел U+2007 Python-овский \s съедает — добавлять его после чистки строки и не чистить готовый текст повторно. И в регулярках стиля искать именно U+2007: с обычным пробелом «0:57» останется без моноширинного начертания, а «33:42» получит — столбик выйдет разнородным.
  • get_doc тянет ВЕСЬ документ со всеми вкладками (~30 с на вызов): шапку вставлять одной пачкой с самостоятельным счётом индексов, а не «абзац → перечитать док». Разница — 25 минут против 4 на сборку вкладки.
  • Таймкоды с долями секунды («2:46.0–2:48.6») ломают наивный шаблон \d{1,2}:\d{2} — verify считал их за два таймкода. Шаблон один на все скрипты: диапазон и доли — часть одного таймкода.
  • Автокроп превью по альфе: нижнюю полосу кадра исключать — водяной знак «DRAFT · перерисовать» растягивает рамку на весь кадр, и кроп теряет смысл.
  • Заплатка нарисованного исправления перекрывает соседние строки титра: у fix задаются pad (узкая рамка) и badge:above (плашка «ИСПРАВЛЕНО» над текстом); индексы формул — настоящими <sub>/<sup>, иначе Georgia ставит их на базовую линию.
  • Заголовок ТЗ из находки аудита не резать по числу знаков — обрыв посреди слова читается как брак; резать по границе слова и снимать OCR-скобки «ПУТАЛ[И]».
  • Строки таблицы внутри главы сортировать по времени, а не по номеру ТЗ: монтажёр идёт по фильму, а не по нумерации.

6.4 · 10Скрипты — на 6.2

Команды, стадии и их гейты — 6.2 Cut Review Cycle. Код живёт в репозитории:

~/YTAI/scripts/05_editing/0509_review_cycle/
Оригинал монтажёра неприкосновенен; ошибка показывается на кадре, исправление рисуется, текст копируется с таймлайна. Один JSON правок — семь согласованных поверхностей из девяти (6.3).