◂ База знанийRYA.AEПрокси — что делает этап и что об этом знает базасобрано 28.09.2026, 18:55
Этап 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:….

3.4.1 · 1Конвейер целиком

Слева — откуда берётся клип, справа — гейт, который решает, уедет он в комплект или нет. Бирюзовым — то, чего в базе знаний нет.

Конвейер этапа 16_proxy на 28.09.2026 Исходник читается пробой, решение decide выбирает кодировать или копировать, кодирование идёт с битностью и таймкодом источника, поворот возвращается отдельным проходом, гейт из восьми пунктов пропускает клип, дальше доукомплектование и заливка на Drive. ОТКУДА Drive исходники проекта фабрика 1603_farm Локальный диск T9 · T7-Beige · T7-Blue farm_local · proxy.py ЧТО ЗА КЛИП probe() разрешение · fps строкой кадры по пакетам битность · дорожки таймкод rtmd/tmcd поворот из матрицы телефон из тегов РЕШЕНИЕ decide() спаннер по имени → мимо телефон → копия недекодируемая дорожка уже лёгкий HEVC легче заказанного → копия иначе → кодировать СБОРКА кодирование hevc_videotoolbox битность и TC с источника поворот назад -noautorotate + remux restore_rotation() ПРИЁМКА гейт, 8 пунктов разрешение + поворот fps · кадры · битность путь · дорожки таймкод · теги цвета не сошлось → не уезжает + коридор битрейта ДАЛЬШЕ — И ЗДЕСЬ ДВА РАЗНЫХ ПРОДУКТА Комплект монтажёру {PROJECT}/01_Source_Proxy/ зеркало сцен · timeline-WAV · Transcription 00_LUT · гид editor_guide.html собирает kit.py · канон 17.08.2026 цель: монтажёр режет по прокси, финал пересобирается на оригиналах Библиотека прокси вместо оригиналов _PROXY_10bit/{VOLUME}/{PROJECT}/ ВСЁ, кроме тяжёлого видео — копией как есть видео заменено прокси 10 бит с таймкодом собирает kit_full.py · появилось 24.09.2026 цель: работать без оригиналов и освободить диски — 842 ГБ библиотеки вместо терабайтов

Два продукта внизу — не два способа сделать одно и то же, а разные вещи: слева комплект одному проекту для монтажёра, справа библиотека вместо оригиналов, чтобы освободить диски. Путать их дорого.

3.4.1 · 2Гейт: восемь пунктов плюс коридор

Проверяется на каждом клипе. Не сошлось — клип не уезжает и попадает в отчёт. Пункты — из кода gate(), в том же порядке.

#что сверяему источникачем обязана быть проксипочему так
1разрешение + поворот3840×2160 ↻0ровно то же, и метка поворота тоже⚠️ поворот добавлен 26.09: потерянная метка = лежачий кадр у монтажёра
2частота кадров25/1та же, сверка строкой29.97 = 30000/1001 ≠ 30
3число кадров804ровно столько же, по пакетамне по длительности
4битность10 бит yuv422p10leс источника: 10 → Main 10, 8 остаётся 8повышать так же неправильно, как понижать
5имя и путь{сцена}/{камера}/клип1:1подмена на оригинал = смена одной корневой папки
6звук2 дорожки × 2 каналастолько же и в том же порядкеL и R часто разные микрофоны — схлопывать нельзя
7таймкод00:30:07:23 на rtmdтот же, на tmcdу Sony format_tags пуст — читать обе дорожки
8цветовые тегинетнет — пусто равно пустоbt709 на логе — регрессия, а не починка
+коридор битрейта140 Мбит/с0.35–2.5× от заказанного, и легче оригиналаклипы короче 4 с от проверки освобождены

Отличаться имеет право только кодек с битрейтом и субдискретизация 4:2:2 → 4:2:0. Всё остальное совпадает, потому что подмена прокси на оригинал — это смена одной корневой папки, а не пересчёт таймлайна.

3.4.1 · 3Решение: кодировать или взять как есть

Десять ветвей, порядок значим — срабатывает первое совпадение. Правило одно: перекодируется только тяжёлый лог-материал с камеры. Вычеркнутое — ветка, которую убрали 26.09.

  • 1
    спаннер по имени — __S##.MP4 и донор есть в наборе → мимо — копия на Drive server-side
  • 2
    недекодируемая дорожка ⚠️ — apac 4ch не читается → копия байт-в-байт
    перекодирование потеряет дорожку
  • 3
    телефонНОВОЕ — format_tags назвали Apple/iPhone → копия байт-в-байт
    правило без порогов, потому что числом это не решалось: пороги дважды попадали ровно в рабочий диапазон айфона (48 → 64 Мбит/с). Настоящая причина — VFR: перекодирование выравнивает частоту, число кадров расходится, гейт заворачивает, и клип остаётся без прокси вовсе (11 клипов iPhone 14 Pro Max на ALL BTS)
  • 4
    повёрнутое = копияНОВОЕ — ветки больше нет — на её месте девять строк комментария → кодируется как все
    надгробие в коде работает лучше строчки в changelog: следующий, кто захочет копировать повёрнутое, сначала прочитает про 214 ГБ
  • 5
    уже лёгкий HEVC — ≤ 1.6× от заказанного → копия
  • 6
    готовый Rec.709 8 бит — HEVC с тегами, ≤ 8× заказанного → копия
    порог поднимали дважды (48 → 64 Мбит/с) и оба раза он снова попадал в рабочий диапазон телефона
  • 7
    легче заказанногоНОВОЕ — битрейт источника ≤ цели → копия
    мимо правил «про HEVC» проходил целый класс — скринкасты OBS, сток, выгрузки с YouTube, web-экспорты. Жать их не уменьшает, а раздувает: замер на YTFP01_web.mp4 — 97 МБ → 2572 МБ
  • 8
    всё остальное — тяжёлый лог-материал с камеры → кодировать
    битность и таймкод с источника

⚠️ Второй проход живёт в контракте, но зовёт его каждый сам. build_cmd() отдаёт только команду кодирования; метку поворота возвращает restore_rotation(), и он вызывается из proxy.do_encode() (оттуда его даром получает rebuild.py), из farm.py:411 и из 0120_day_ingest/s11_proxy.py:131 — у каждого свой цикл кодирования. Четвёртый потребитель со своим циклом обязан не забыть, иначе гейт завернёт каждый повёрнутый клип.

⚠️ Правила «повёрнутое = копия» здесь больше нет: поворот теперь честно переносится в прокси, а не служит поводом взять клип целиком. Это и освободило 203 ГБ на комплекте YTCR.

3.4.1 · 4Два продукта, а не один

Комплект монтажёру внутри проекта

{PROJECT}/01_Source_Proxy/
  • →
    зеркало папок сцен, имена 1:1
  • →
    петличные *_timeline.wav
  • →
    Transcription/ и 00_LUT/
  • →
    гид по материалу

Собирает kit.py. Канон 17.08.2026. Цель — монтажёр режет по прокси, финал пересобирается на оригиналах.

Библиотека прокси вместо оригиналов С 24.09

_PROXY_10bit/{VOLUME}/{PROJECT}/
  • →
    всё, кроме тяжёлого видео — копией как есть
  • →
    видео заменено прокси 10 бит с таймкодом
  • →
    раскладка по исходному тому: T9 · T7-Beige · T7-Blue
  • →
    842 ГБ на 28.09

Собирает kit_full.py. Требование Романа 24.09: «цельные проекты, со всеми файлами и таймкодами, чтобы полноценно работать — только не с оригиналами». Цель другая: освободить диски.

3.4.1 · 5Инструменты этапа

Шестнадцать файлов. Семь из них лежат в корне этапа, вне нумерованных подэтапов — этап нарушает собственную структуру.

файлрольчто делаетверсия
1601_build/contract.pyядропроба → решение → команда → гейт. Одна точка правдыgit ✓ но правлен
1601_build/proxy.pyвходкомплект одному проекту с локального дискаgit ✓
1601_build/rebuild.pyвходночная пересборка канала, кодирование и заливка внахлёстgit ✓
1601_build/kit.pyдоборWAV, транскрипты, луты по канону YTCHgit ✓
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 — в этапе не лежат. То есть работали не тем, что сохранено.

3.4.1 · 6Что записано в базе знаний

Прямой ответ на вопрос. Страница передачи монтажёру помечена «обновлено 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 и не влита пятый день.

3.4.1 · 7Имена путей — только латиницей

Правило: кириллица живёт внутри файла, а не в его имени — иначе ломаются выгрузки, чужие клиенты и скрипты. Проверено по этапу и по дискам.

состояниеимячто этогде
исправлено_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 копирует не-видео с исходными именами. Переименовывать чужой материал молча не стал — это решение Романа, и это перенос, а не удаление.

3.4.1 · 8Чем это выстрелит

По убыванию цены ошибки. Первое — единственное, где потеря невосстановима, и оно бьёт по чистке карт.

  • 1
    Подтверждение перед чисткой может указать на комплект вместо архива цена невосстановима
    media_prep.py выбрасывает из индекса только буквальное 01_Source_Proxy/ и не знает про _PROXY_v2/, _PROXY_10bit/, Video_Light/ и автопрокси Premiere *_PROXY_*.mp4 (415 таких на YTCR). А в новых комплектах часть клипов лежит байт-в-байт — телефон, повёрнутые провалы, VFR, лёгкий материал: совпадает и имя, и размер. Прокси засчитывается за оригинал, и карта стирается зря.
  • 2
    Кто пойдёт по странице про прокси — повторит 214 ГБ диск и ночь работы
    Три места требуют не перекодировать повёрнутое. Значка «отстаёт» на странице нет.
  • 3
    Инструменты ночи живут в скретчпаде самое дорогое знание недели
    rot_reencode.py · kit_dedup.py · ytcr_split2.py · ytcr_fail_copies.sh · finish_night.py — только в /private/tmp/…/scratchpad/, и хэндофф ссылается ровно туда. Одна перезагрузка — правило останется в комментарии, инструмент исчезнет.
  • 4
    Спутник контракта активно врёт следующая сессия
    project_knowledge/contract.md утверждает «правило выражено ДВУМЯ проверками в decide()» — их четыре плюс телефон, и поворота нет вовсе. Лежит там, куда агент пойдёт читать первым.
  • 5
    21 правка вне git вся неделя
    Включая саму правку под поворот, busy_gate, pause_guard, kit_full, confirm и units.json с девятью юнитами ручной раскладки. Любой checkout — и из коммита фабрика умеет один проект.
  • 6
    restore_rotation() надо не забыть в трёх местах лежачие кадры
    build_cmd() отдаёт только команду кодирования. Новый потребитель напишет свой цикл и отдаст монтажёру лежачие кадры — узнает от гейта. Один из трёх вызовов (s11_proxy.py) вообще не под git.
  • 7
    Теневой корень уже разошёлся с диском ручной труд
    _PROXY_10bit/T7-Beige/YTEVO-Projects/… против T7-Beige-RYA/YTEVO/YTEVO-Projects/…. Обратного манифеста нет, пару восстанавливают глазами. Подмена перестала быть сменой ОДНОЙ папки.
  • 8
    night_proxy указывает на том, которого нет задание молча не сработает
    Два задания ведут на /Volumes/T7-Blue-RYA/ — тома с таким именем не существует (смонтированы T7-Beige-RYA, T7-Blue-2-RYA, T9-Black-RYA). Плюс JOBS зашиты в исходник и служат журналом решений вместо данных.
  • 9
    Осадок на T7-Beige путаница
    Сирота _PROXY_10bit/YTAgeFree_Oleskina/ вне схемы; папка-соседка YTEVO/YTEVO_Proxy/ — забракованная 17.08, ещё и с кириллическим именем; у YTEVO02 три комплекта в трёх местах. Схему корня ничто не гейтит.

3.4.1 · 9Что сделать

По убыванию отдачи. Первое — десять минут и закрывает половину разрыва.

1
Научить media_prep новым прокси-ветвям час, но делать первым

Пока подтверждение перед стиранием карты не знает про _PROXY_v2/, _PROXY_10bit/, Video_Light/ и автопрокси Premiere — не стирать ничего по подтверждению, попавшему в ветку комплекта. Лучше импортом фильтра из confirm.py, чтобы правило жило в одном месте.

2
Спасти скрипты ночи из /private/tmp 15 минут

rot_reencode.py · kit_dedup.py · ytcr_split2.py · ytcr_fail_copies.sh. Это они вернули 203 ГБ и доказали новое правило поворота. Каталог вычищается при перезагрузке — знание ночи держится на честном слове.

3
Поправить §5 страницы про прокси 20 минут

Страница требует «повёрнутое не перекодируем вообще» — правило, отменённое 26.09 ценой 485 клипов и 214 ГБ. Пока не поправлено, база знаний активно вредит.

4
Закоммитить этап полчаса

21 изменение вне git, включая правку контракта под поворот и семь инструментов. Единственная точка правды снова не под версией — ровно то, что стоило комплекта YTCH.

5
Подтянуть локальный чекаут сайта 10 минут

~/RYA/yt-rya-ae отстал от origin/main на 98 коммитов и держит страницы от 17 августа. Читать базу знаний в нём — значит читать прошлое; я сам на это попался в этом разборе.

6
Дописать в /kb/proxy/ сутки 24–26.09 два часа

Поворот · центральный комплект _PROXY_10bit · цельные проекты (kit_full) · шесть драйверов · сборка двумя машинами · сторожа занятости · дедуп клонами APFS. Семь разделов.

7
Обновить project_knowledge/contract.md час

Спутник кода заморожен на 22.09, а обещает двигаться с ним одним коммитом. Либо догнать, либо снять обещание — сейчас он врёт тише, но ближе к глазам.

8
Разложить инструменты по подэтапам полчаса

Семь файлов лежат в корне 16_proxy/ вместо нумерованного подэтапа — этап нарушает собственную структуру.

3.4.1 · 10Пути

~/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/
Прокси — лёгкие, а не мелкие: тот же кадр, та же битность, тот же таймкод.
версия 1.0 · собрано 28.09.2026, 18:55 · этап 16_proxy · источник цифр — код и web/kb/, не память