16_proxy за пять дней ушёл далеко вперёд. Здесь по порядку: как он работает сейчас, что появилось с 23.09 и что об этом знает база. Короткий ответ: контракт записан — страницы /kb/proxy/ и /kb/editor-handoff/ обновлены 26 сентября. А вот сутки 24–26.09 не записаны вовсе, и одна страница теперь прямо противоречит коду: требует не перекодировать повёрнутое — то самое правило, которое убрали ценой 485 клипов и 214 ГБ.1601_build/contract.py построчно. Покрытие базы знаний проверено по origin/main, а не по локальному чекауту. Состояние — на 28.09.2026.~/RYA/yt-rya-ae отстал от origin/main на 98 коммитов и держит страницы от 17 августа. Первый прогон поиска дал «в базе нет ничего» — и это было неверно: я читал прошлое. Правду о базе знаний даёт только git show origin/main:….Слева — откуда берётся клип, справа — гейт, который решает, уедет он в комплект или нет. Бирюзовым — то, чего в базе знаний нет.
Два продукта внизу — не два способа сделать одно и то же, а разные вещи: слева комплект одному проекту для монтажёра, справа библиотека вместо оригиналов, чтобы освободить диски. Путать их дорого.
Проверяется на каждом клипе. Не сошлось — клип не уезжает и попадает в отчёт. Пункты — из кода gate(), в том же порядке.
| # | что сверяем | у источника | чем обязана быть прокси | почему так |
|---|---|---|---|---|
| 1 | разрешение + поворот | 3840×2160 ↻0 | ровно то же, и метка поворота тоже | ⚠️ поворот добавлен 26.09: потерянная метка = лежачий кадр у монтажёра |
| 2 | частота кадров | | та же, сверка строкой | 29.97 = 30000/1001 ≠ 30 |
| 3 | число кадров | 804 | ровно столько же, по пакетам | не по длительности |
| 4 | битность | 10 бит | с источника: 10 → Main 10, 8 остаётся 8 | повышать так же неправильно, как понижать |
| 5 | имя и путь | | 1:1 | подмена на оригинал = смена одной корневой папки |
| 6 | звук | 2 дорожки × 2 канала | столько же и в том же порядке | L и R часто разные микрофоны — схлопывать нельзя |
| 7 | таймкод | | тот же, на tmcd | у Sony format_tags пуст — читать обе дорожки |
| 8 | цветовые теги | нет | нет — пусто равно пусто | bt709 на логе — регрессия, а не починка |
| + | коридор битрейта | 140 Мбит/с | 0.35–2.5× от заказанного, и легче оригинала | клипы короче 4 с от проверки освобождены |
Отличаться имеет право только кодек с битрейтом и субдискретизация 4:2:2 → 4:2:0. Всё остальное совпадает, потому что подмена прокси на оригинал — это смена одной корневой папки, а не пересчёт таймлайна.
Десять ветвей, порядок значим — срабатывает первое совпадение. Правило одно: перекодируется только тяжёлый лог-материал с камеры. Вычеркнутое — ветка, которую убрали 26.09.
__S##.MP4 и донор есть в наборе → мимо — копия на Drive server-sideapac 4ch не читается → копия байт-в-байтformat_tags назвали Apple/iPhone → копия байт-в-байтYTFP01_web.mp4 — 97 МБ → 2572 МБ⚠️ Второй проход живёт в контракте, но зовёт его каждый сам. build_cmd() отдаёт только команду кодирования; метку поворота возвращает restore_rotation(), и он вызывается из proxy.do_encode() (оттуда его даром получает rebuild.py), из farm.py:411 и из 0120_day_ingest/s11_proxy.py:131 — у каждого свой цикл кодирования. Четвёртый потребитель со своим циклом обязан не забыть, иначе гейт завернёт каждый повёрнутый клип.
⚠️ Правила «повёрнутое = копия» здесь больше нет: поворот теперь честно переносится в прокси, а не служит поводом взять клип целиком. Это и освободило 203 ГБ на комплекте YTCR.
Комплект монтажёру внутри проекта
{PROJECT}/01_Source_Proxy/*_timeline.wavTranscription/ и 00_LUT/Собирает kit.py. Канон 17.08.2026. Цель — монтажёр режет по прокси, финал пересобирается на оригиналах.
Библиотека прокси вместо оригиналов С 24.09
_PROXY_10bit/{VOLUME}/{PROJECT}/Собирает kit_full.py. Требование Романа 24.09: «цельные проекты, со всеми файлами и таймкодами, чтобы полноценно работать — только не с оригиналами». Цель другая: освободить диски.
Шестнадцать файлов. Семь из них лежат в корне этапа, вне нумерованных подэтапов — этап нарушает собственную структуру.
| файл | роль | что делает | версия |
|---|---|---|---|
1601_build/contract.py | ядро | проба → решение → команда → гейт. Одна точка правды | git ✓ но правлен |
1601_build/proxy.py | вход | комплект одному проекту с локального диска | git ✓ |
1601_build/rebuild.py | вход | ночная пересборка канала, кодирование и заливка внахлёст | git ✓ |
1601_build/kit.py | добор | WAV, транскрипты, луты по канону YTCH | git ✓ |
1601_build/audit.py | проверка | прокси по всем дискам: где есть, где негодные | git ✓ |
1603_farm/farm.py | вход | фабрика от Drive: очередь, лизы, два пула | git ✓ |
1603_farm/plan.py | служебный | манифест «сцена → файл на Drive» | git ✓ |
1603_farm/make_unit.py | служебный | юнит фабрики из разбора сверки с Drive | ⛔ вне git |
1603_farm/memex_space_guard.sh | сторож | место на Мемексе | ⛔ вне git |
kit_full.py | вход | доукомплектование до ЦЕЛЬНОГО проекта: всё, кроме видео | ⛔ вне git |
farm_local.py | вход | фабрика с локального диска | ⛔ вне git |
night_proxy.py | вход | ночной прогон | ⛔ вне git |
night_ytfp.py | вход | ночной прогон YTFP | ⛔ вне git |
busy_gate.py | сторож | занятость машины | ⛔ вне git |
pause_guard.py | сторож | пауза прогона | ⛔ вне git |
confirm.py | проверка | подтверждение по Drive | ⛔ вне git |
⚠️ Инструменты из хэндоффа ночи 25→26.09 — kit_dedup.py, rot_reencode.py, ytcr_split2.py, ytcr_fail_copies.sh — в этапе не лежат. То есть работали не тем, что сохранено.
Прямой ответ на вопрос. Страница передачи монтажёру помечена «обновлено 17 авг 2026» и описывает рецепт, которого больше нет.
| состояние | что | сказано в базе | как на самом деле | где править |
|---|---|---|---|---|
| ЗАПИСАНО | Контракт из восьми пунктов | /kb/proxy/ «обновлено 26 сен 2026»: 13 разделов, 11 упоминаний контракта, битность, таймкод, теги цвета, гейт приёмки, три драйвера, 1603_farm. | Совпадает с кодом. Записано также в /kb/editor-handoff/, /kb/stage/pre-editing/ и на хабе /kb/. Ветка feat/kb-proxy-contract влита. | — |
| ПРОТИВОРЕЧИТ | Поворот кадра — страница против кода | /kb/proxy/ §5 требует: «Поворот ≠ 0 → не перекодируем вообще». | Это правило убрали 26.09. Теперь повёрнутое кодируется как лежит (-noautorotate) и получает метку назад ремуксом (restore_rotation), а гейт сверяет поворот в пункте «разрешение». Дата в шапке «26 сен» обманчива — этот раздел от 23.09. Кто послушает страницу, вернёт 214 ГБ мусора. | /kb/proxy/ §5 |
| ПРОТИВОРЕЧИТ | Где живёт комплект | Обе страницы и CLAUDE.md: «прокси живут ВНУТРИ проекта, {PROJECT}/01_Source_Proxy/, не папкой-соседкой». | С 24.09 прокси всего парка собираются в один корень на внешнем диске: _PROXY_10bit/{VOLUME}/{PROJECT}/, ~16 проектов, 842 ГБ. Из 11 юнитов фабрики в 01_Source_Proxy пишет один — YTEVO03. Канон не отменён, но и не описан рядом со вторым продуктом. | /kb/proxy/, /kb/editor-handoff/ §1, CLAUDE.md |
| ПРОТИВОРЕЧИТ | Что внутри комплекта | /kb/editor-handoff/ §1: оригиналы рекордера *_orig_*.wav в комплект не входят (−4,7 ГБ), prproj живёт в корне проекта. | kit_full.py копирует всё, кроме видео: 00_Setup, 02_Exports, 99_Pipeline, все .prproj и все *_orig*.wav — таких уже 510 в комплектах. Это осознанно (требование 24.09: «цельные проекты»), но страница обещает обратное. | /kb/editor-handoff/ §1 |
| ПРОТИВОРЕЧИТ | Генератор гида | «Генератор гида gen_guide.py — рядом с проектом», «параметризован: меняются данные, не структура». Гид лежит «в корне 01_Source_Proxy» — и это пункт чеклиста передачи. | gen_guide.py никогда не существовало — во всём ~/YTAI ни файла, ни строки. Гид собирает 999_extra/ytch12_restructure/editor_html.py с захардкоженными описаниями сцен YTCH12. Все пять готовых гидов (YTCH10–14) лежат в 00_Setup/05_Review/, ни одного внутри комплекта. | /kb/editor-handoff/ §2, §3, §6 |
| ПРОТИВОРЕЧИТ | Сколько драйверов | «Три драйвера — один контракт»: proxy.py · rebuild.py · farm.py. | Драйверов шесть: добавились farm_local.py (Drive → локальный диск), night_proxy.py (очередь корней с трёх томов) и night_ytfp.py (неканоничная раскладка YTFP). Хорошая новость: своей копии рецепта нет ни у одного — все зовут contract.py. | /kb/proxy/, /kb/editor-handoff/ §3 |
| НЕТ ВОВСЕ | Сутки 24–26.09 целиком | — | Поиск по всей web/ на origin/main даёт ноль совпадений: noautorotate · restore_rotation · _PROXY_10bit · kit_full · busy_gate · pause_guard · farm_local · night_proxy · «двумя машинами» · дедуп клонами APFS. Это самые дорогие сутки этапа. | должно лечь в /kb/proxy/ |
| НЕТ ВОВСЕ | Скрипты ночи — в /private/tmp | — | ⛔ Самое срочное. Работу ночи 25→26.09 сделали четыре инструмента, которых нет в ~/YTAI вовсе: rot_reencode.py (489 повёрнутых → честные прокси, вернул 203 ГБ), kit_dedup.py (клоны APFS, 71 ГБ), ytcr_split2.py, ytcr_fail_copies.sh. Хэндофф ссылается на них по пути в /private/tmp — каталог вычищается при перезагрузке. | спасти в 16_proxy/ |
| ПРОТИВОРЕЧИТ | Своя база знаний этапа | 1601_build/project_knowledge/contract.md, «Версия 1.0 · 22.09.2026», и в своей же преамбуле: «меняется правило — меняются оба, одним коммитом». | Обещание нарушено четыре правки подряд: за это время contract.py вырос на +116 строк, а в md нет ни поворота, ни «телефон = копия», ни «уже легче целевого». Читают его первым — он лежит внутри этапа. Здесь сайт свежее кода-спутника. | project_knowledge/contract.md |
| ПРОТИВОРЕЧИТ | Правило поворота стоит в трёх местах | /kb/proxy/ §2 строка 10, §5 строка матрицы и §5 итоговое «геометрию переписывать не надо» — все три требуют не перекодировать повёрнутое. | И хаб базы знаний ставит ⟳ «отстаёт» на /kb/editor-handoff/, но не на /kb/proxy/ — то есть база считает страницу догнавшей код ровно там, где та ему противоречит. Дата «26 сен» усыпляет: коммит 26.09 перенумеровал главы и заново вписал старое правило от 23.09. | /kb/proxy/ §2, §5 |
| НЕТ ВОВСЕ | Сквозная проверка слепа к новому дому | — | audit.py ищет только 01_Source_Proxy и на 843 ГБ собранных комплектов отвечает «комплекта нет». Единственный сквозной проверяльщик этапа не видит большую часть его работы. | /kb/proxy/ §13 |
| ЗАПИСАНО | Номера и ссылки | Страница ссылается на 3.4, 3.6, 4.1–4.3, 5.1, 5.3, 5.4. | Проверено по web/_data/kb.json: все девять валидны, перенумерация глав 25.09 их не сдвинула. Чинить нечего. | — |
Отдельно: страница /kb/proxy/ в main — тоже от 17 августа, ноль разделов про контракт. Исправленная версия «обновлено 23 сен» с семью разделами лежит в ветке origin/feat/kb-proxy-contract с 23.09 11:09 и не влита пятый день.
Правило: кириллица живёт внутри файла, а не в его имени — иначе ломаются выгрузки, чужие клиенты и скрипты. Проверено по этапу и по дискам.
| состояние | имя | что это | где |
|---|---|---|---|
| исправлено | _farm_REBUILDING.md | Маркер «идёт пересборка», который фабрика кладёт в комплект на Drive, назывался _farm_ПЕРЕСБОРКА_ИДЁТ.md. Переименован; русский текст живёт внутри файла, а не в имени. | 1603_farm/farm.py, два места |
| исправлено | 00_MEDIA_ON_GOOGLE_DRIVE.md | Записка в корне проекта называлась 00_MEDIA_на_Google_Drive.md. | YTEVO03_Plechko_day/ |
| осталось | YTEVO_Proxy/Резиденция Присутствие/ | Папка-соседка, забракованная каноном 17.08, ещё и с кириллическим именем. Внутри CAM-A, CAM-B. | /Volumes/T7-Beige-RYA/YTEVO/ |
| осталось | YTCGRU 4 Пять ошибок при открытии счёта/ | Приехала в комплект как есть: kit_full.py копирует не-видео с исходными именами и имя папки не правит. | _PROXY_10bit/T9-Black/YTCG/ |
| осталось | README — Что здесь и как использовать.md, Производство видео — гайд (YTGS).html | То же: пришли из исходного проекта. Тире в имени — отдельная беда для скриптов. | _PROXY_10bit/T9-Black/YTGS/ |
Имена файлов самого этапа 16_proxy/ — все латиницей. Оставшиеся четыре пришли из исходных проектов: kit_full.py копирует не-видео с исходными именами. Переименовывать чужой материал молча не стал — это решение Романа, и это перенос, а не удаление.
По убыванию цены ошибки. Первое — единственное, где потеря невосстановима, и оно бьёт по чистке карт.
media_prep.py выбрасывает из индекса только буквальное 01_Source_Proxy/ и не знает про _PROXY_v2/, _PROXY_10bit/, Video_Light/ и автопрокси Premiere *_PROXY_*.mp4 (415 таких на YTCR). А в новых комплектах часть клипов лежит байт-в-байт — телефон, повёрнутые провалы, VFR, лёгкий материал: совпадает и имя, и размер. Прокси засчитывается за оригинал, и карта стирается зря.rot_reencode.py · kit_dedup.py · ytcr_split2.py · ytcr_fail_copies.sh · finish_night.py — только в /private/tmp/…/scratchpad/, и хэндофф ссылается ровно туда. Одна перезагрузка — правило останется в комментарии, инструмент исчезнет.project_knowledge/contract.md утверждает «правило выражено ДВУМЯ проверками в decide()» — их четыре плюс телефон, и поворота нет вовсе. Лежит там, куда агент пойдёт читать первым.busy_gate, pause_guard, kit_full, confirm и units.json с девятью юнитами ручной раскладки. Любой checkout — и из коммита фабрика умеет один проект.build_cmd() отдаёт только команду кодирования. Новый потребитель напишет свой цикл и отдаст монтажёру лежачие кадры — узнает от гейта. Один из трёх вызовов (s11_proxy.py) вообще не под git._PROXY_10bit/T7-Beige/YTEVO-Projects/… против T7-Beige-RYA/YTEVO/YTEVO-Projects/…. Обратного манифеста нет, пару восстанавливают глазами. Подмена перестала быть сменой ОДНОЙ папки./Volumes/T7-Blue-RYA/ — тома с таким именем не существует (смонтированы T7-Beige-RYA, T7-Blue-2-RYA, T9-Black-RYA). Плюс JOBS зашиты в исходник и служат журналом решений вместо данных._PROXY_10bit/YTAgeFree_Oleskina/ вне схемы; папка-соседка YTEVO/YTEVO_Proxy/ — забракованная 17.08, ещё и с кириллическим именем; у YTEVO02 три комплекта в трёх местах. Схему корня ничто не гейтит.По убыванию отдачи. Первое — десять минут и закрывает половину разрыва.
Пока подтверждение перед стиранием карты не знает про _PROXY_v2/, _PROXY_10bit/, Video_Light/ и автопрокси Premiere — не стирать ничего по подтверждению, попавшему в ветку комплекта. Лучше импортом фильтра из confirm.py, чтобы правило жило в одном месте.
rot_reencode.py · kit_dedup.py · ytcr_split2.py · ytcr_fail_copies.sh. Это они вернули 203 ГБ и доказали новое правило поворота. Каталог вычищается при перезагрузке — знание ночи держится на честном слове.
Страница требует «повёрнутое не перекодируем вообще» — правило, отменённое 26.09 ценой 485 клипов и 214 ГБ. Пока не поправлено, база знаний активно вредит.
21 изменение вне git, включая правку контракта под поворот и семь инструментов. Единственная точка правды снова не под версией — ровно то, что стоило комплекта YTCH.
~/RYA/yt-rya-ae отстал от origin/main на 98 коммитов и держит страницы от 17 августа. Читать базу знаний в нём — значит читать прошлое; я сам на это попался в этом разборе.
Поворот · центральный комплект _PROXY_10bit · цельные проекты (kit_full) · шесть драйверов · сборка двумя машинами · сторожа занятости · дедуп клонами APFS. Семь разделов.
Спутник кода заморожен на 22.09, а обещает двигаться с ним одним коммитом. Либо догнать, либо снять обещание — сейчас он врёт тише, но ближе к глазам.
Семь файлов лежат в корне 16_proxy/ вместо нумерованного подэтапа — этап нарушает собственную структуру.
~/YTAI/scripts/16_proxy/1601_build/contract.py ~/YTAI/scripts/16_proxy/1603_farm/farm.py ~/YTAI/scripts/16_proxy/kit_full.py ~/YTAI/scripts/16_proxy/HANDOFF_2026-09-26_ytcr_proxy_night.md ~/RYA/yt-rya-ae/web/kb/editor-handoff/index.html ~/RYA/yt-rya-ae/web/kb/proxy/index.html /Volumes/T7-Beige-RYA/_PROXY_10bit/
web/kb/, не память