◂ База знанийRYA.AECut Review Cycle — цикл ревью ката: системаобновлено 22 сен 2026
Одна система для ревью ката монтажёра и ТЗ на монтаж: карточка фильма + профиль канала, стейт-машина review.py, Memex делает всё локальное автономно, облако — один компактный проход (≤10 агентов, без картинок), все поверхности — из одного pravki. Сессия Claude систему вызывает, а не переписывает.
Принцип. Ошибка ищется кодом и локальными моделями (0 токенов), маршрутизируется по классу, и только неразрешимое по тексту идёт одному судье; результат агента лежит на диске раньше, чем воркфлоу закончится. Форматы для монтажёра заморожены (6.4), меняется только цена.
кат на Drive→Memex кадры·OCR·транскрипт·VLM·LLM·пробы→Mac маршрутизация→облако J·F·V·S→pravki→таймлайн · док · лист · Drive · бриф
1Машина стадий2Где живёт: код в репо, состояние в проекте3Что должно стоять до первого запуска4Цепочка стадий и гейты5Что делать, когда…6Вход в сессию: /review и REVIEW_STATE.md7Контракты8Облако: один проход на фильм9Поверхности из одного pravki10Бюджет токенов на фильм (40 мин, ~200 экранов)11Правила и грабли12Проверка системы

🧭6.2 · 1Машина стадий: что она делает за один прогон

Ревью ката (cut_review): монтажёр прислал сборку → локальный разбор экранов и речи → один облачный проход → ТЗ и все поверхности. ТЗ из исходников (montage_tz): ката нет — монтажный лист собирается из съёмки по пословным якорям (6.6).

Общее: карточка фильма + профиль канала, одна стейт-машина review.py, транскрипт, рендер графики, телефонный бриф, Memex-раннер. Форматы поверхностей — канон 6.4 (6 слоёв, ОДНА таблица во вкладке, блоки ❌/▶/📋/📍/📚/🎬/💬) — не переизобретаются.

Зачем система: четыре цикла ревью сожгли ≈99 M токенов; 59 % — фан-аут воркфлоу (1 080 агентов, ≈54 k накладных на каждого), аудит экранов гонялся 5 раз (741 агент, 33,5 M), 271 разовый скрипт писался в сессиях. На данных YTUVI02 24 из 26 находок класса «вёрстка» прошли трёх скептиков, хотя по правилу Романа это не ошибки — качество даёт фильтр по классу в коде, а не скептики.

📁6.2 · 2Где живёт: код в репо, состояние в проекте

scripts/05_editing/0509_review_cycle/      # код (git); на Memex — rsync-копия с VERSION
├── review.py · proj_config.py · stages/ · cloud/ · montage/ · shared/ · memex/ · geo/ · templates/ · docs/contracts.md
{project}/00_Setup/05_Review/               # всё состояние фильма
├── review_card.json · review_state.json · REVIEW_STATE.md · review_terms.json
├── {CODE}_v1.words.json · {CODE}_review_v6.json (UXP Review-пикер сканирует эту папку)
├── pravki/ (pravki_v2.json — источник истины) · work/v1/ (кадры, OCR, VLM, LLM, пробы, кандидаты, находки)
├── cloud/ (in/ out/ raw/ state.json CALL.txt) · mockups/ · notes/ · logs/
YTs/{CH}/review_profile.json                 # профиль канала: стиль, каноны, классы ТЗ, чувствительность

Рабочих копий инструмента рядом с данными больше нет — так расходились три версии (репо · work/v6 · Memex). Карточка ищется по YTAI_CARD, YTAI_PROJECT_DIR или вверх от текущей папки; внешние id (док, Drive, лист) — только из неё. ⚠️ Фолбэка на прошлый фильм нет, но и отказа нет: при пустом ключе стадия отмечается пройденной с пометкой «пропущена», и круг доходит до конца без вкладки — см. 6.1.

6.2 · 3Что должно стоять до первого запуска

Цепочка не ставит себе зависимости сама. Если чего-то нет, прогон падает на середине, и по сообщению не всегда понятно, чего не хватило. Минимум — такой.

ЧтоЗачем и где нужно
Три окружения Python
.venv_transcribe · .venv_vlm · .venv_llm
расшифровка речи · чтение экранов зрячей моделью · текстовая модель и маршрутизация. Ставятся отдельно друг от друга: модели тянут разные версии библиотек
Локальные модели
whisper large-v3 · Qwen2.5-VL-7B · Qwen3-8B
речь · дословное чтение каждого экрана · признаки и доводка строк. Качаются один раз, живут в кеше моделей
Распознавание текста
vision_ocr_ru
системный OCR Apple: именно он находит все экранные опечатки. Без него стадия чтения экранов не пройдёт
ffmpegнарезка кадров и работа со звуком
rcloneскачать кат с Drive и положить туда материалы круга
node + UXP-панель проверочная сборка секвенции. ⚠️ Это останавливающая стадия: без node круг не дойдёт до поверхностей
chrome-headless-shell рендер графики в 4K. Обычный Chrome в headless подвисает — нужен именно shell-сборка
poppler (pdftoppm, pdftotext) постраничная приёмка вкладки по PDF
Доступы Google (док, лист, Drive) и Telegram — для брифа
⚠️ Первый прогон — не в рабочий док. Пока не сказано «пиши в настоящий», внешние поверхности отключаются флагами --no-doc и --no-drive, либо в карточку кладутся тестовые id. Иначе первый же добросовестный прогон перезапишет вкладку в живом документе заказчика — и правки, которых там ещё никто не видел, исчезнут.

⚙️6.2 · 4Цепочка стадий и гейты

Кто что делает и почему суждение отдано одному судье — 6.5 Review Stage. Здесь — порядок стадий, их гейты и команды. Автономный прогон на Memex: review.py memex start → nohup + caffeinate + сторож, вехи в Telegram, ноутбук можно выключить. Таблица ниже генерится из кода (review.py docs), поэтому не расходится с тем, что реально выполняется.

Стадии cut_review (генерится `review.py docs`)

#стадияхостинструментгейт
1downloadmemexrclone из cut_drive напрямуюкат на диске
2framesmemexffmpeg 1 fps 1080pкадров ≥ длительность − допуск
3staticmacstatic_stretches: где кадр не меняется (PIL, 0 токенов)static_stretches.json
4ocrmemexs2_ocr_hires (Apple Vision, bbox)селфчек ocr + якоря
5transcriptmemexwordrole_transcribe --plain (.venv_transcribe)words.json
6vlmmemexs3_vlm Qwen2.5-VL-7Bселфчек vlm
7llmmemexs4_llm Qwen3-8B (признаки, не вердикты)селфчек llm
8probememexs3b_probe_vlm: чужие следы, обрезка, zoom-перечитprobes на всех экранах
9selfcheckmemexs5_selfcheck allALL OK
10routemacroute_candidates: auto / cloud / dropcandidates.json
11cloudmacpack → Workflow wf_judge (J≤4, F, V, S) → collectвсе пакеты done, покрытие 100 %
12applymacs8_apply_audit: классовый фильтр, одна ТЗ на экранaudit_v6.json + pravki
13alignmacalign: n-gram кат ↔ план/прошлые версии (card.align_against)align.json
14chaptersmacchapters_from_plan --apply: главы ката по плану частей (card.chapters_plan) через align; chapter экранов перепомечаетсяchapters_proposal.json (инверсия → карточка не тронута)
15riskmacrisk_registry (YTCH): ⚠️ на подтверждение фонда, не ⛔risk.json
16actsmacacts_compact Qwen3-8B по актам + проверки структуры (YTCH)acts_compact.json
17submacsub_from_prev: подглавы прошлого круга → card.sub на ось этого ката (проекция + речь + пауза)card.sub заполнен (или в карточке нет prev_pravki)
18claimsmacclaims_pick: крупные фразы фильма → card.claims (дословно из ката, без чувствительных тем)claims_pick.json
19verdictmac1 облачный агент: вердикт, обязательные правки, структура (YTCH)verdict.json применён
20termsmacterms_indexterms_v6.json
21format_tzmacs10_format_tz + lintlint_v7.json
22polishmacs14_polish_local Qwen3-8B по одной строке + guardдлинных строк 0
23sourcesmacs11_apply_sources—
24rendermacmake_infographics_v6 (chrome-headless 4K PNG)PNG в mockups
25review_jsonmacmake_review_v6 (ytai-part-v1, 6 слоёв){CODE}_review_v6.json
26mockmacmockbuild_v6.js через partsBuilder0 ошибок
27previewsmacs7 + s12 --render + preview_qc_localqc 0 high
28drivemacs9_materials_drive + s12 --upload/--apply + ensure_shotsфайлы с комментами, все картинки pravki в shots_ids
29sheetmactz_sheetлист обновлён
30carrymacshared/tz_carry.py: несделанное из прошлого ТЗ → строки вкладки (номера своего круга)tz_carry.json собран из текущей модели сверки
31doc_tzmacensure_shots → doc_tab_tz_v4, 9 колонок с «Говорит»; кадры закрытого фильма — только run --images temp, с Мака (гейт: review.py edits)вкладка записана
32doc_navmacdoc_tab_review_v1 (навигатор)вкладка записана
33verifymacdoc_tab_tz_v4_verifyALL PASS
34doc_qcmacdoc_pdf_qc (pdftotext/pdfimages/PIL)0 high
35phone_briefmacphone_brief → Telegramфайл ≤1 МБ отправлен
36producer_pagemacproducer_page / review_pageHTML
37screens_planmacscreens_plan: каждому экрану — таймкод, длительность и макетscreens_plan.json, все экраны внутри длины ката
38structuremac1 облачный агент: структура/тезисы/графикаmontage_plan обновлён
39screens_pagemacscreens_page: витрина экранов одним самодостаточным HTML{CODE}_{cut}_screens.html, ноль внешних адресов
40doc_chaptersmacdoc_tab_chapters_v1: вкладка «Главы» — структура текстом, все главы и подглавы, варианты заставкивкладка записана (кадры — временным доступом)
41feedbackmacfeedback_model → 1 облачный агент-сверщик (feedback_call) → вливание; только при card.prev_pravkifeedback.json, ответ сверщика влит
42feedback_pagemacfeedback_page: HTML «Обратная связь по кату» продюсеру (в Telegram — отдельной командой){CODE}_{cut}_feedback.html
43doc_feedbackmacdoc_tab_feedback_v1 (кадры — только run --images temp, с Мака) → doc_tab_feedback_v1_verifyALL PASS

Стадии montage_tz

#стадияхостинструментгейт
1transcriptmemexwordrole_transcribe --plain (.venv_transcribe)words.json
2segmentmemexsegment_local Qwen3-8B: тезисы + якоряsegments.json
3montagemacbuild_montage по пословным якорямmontage.json
4structuremac1 облачный агент: структура/тезисы/графикаmontage_plan обновлён
5mockupsmacbuild_mockups + DOM-QCPNG 4K
6design_reviewmac1 облачный агент по контактному листу мокаповdesign_review.json применён
7structure_htmlmacbuild_structure_htmlHTML
8standalonemacmake_standalone (для телефона)один HTML
9phone_briefmacphone_brief → Telegramфайл ≤1 МБ отправлен
Слова из таблицы, которые нигде больше не объяснены.
  • J≤4, F, V, S — четыре роли в единственном облачном проходе: J судья (выносит вердикт по находке, не больше четырёх пакетов), F факты (проверяет числа и имена веб-поиском), V кропы (смотрит вырезанный кусок кадра), S скептик (пытается находку опровергнуть).
  • зонд — короткий повторный взгляд зрячей модели на тот же кадр: два вопроса «да/нет» (чужой след, обрезанный текст) и увеличенное перечитывание спорного места. Дешевле полного разбора и не требует облака.
  • инверсия (гейт стадии chapters) — порядок глав в кате разошёлся с планом частей. Такой прогон карточку не трогает: предложение остаётся в chapters_proposal.json, решает Роман.
  • ytai-part-v1 — формат файла-задания для UXP-панели: из него панель строит ревью-секвенцию. Это имя схемы JSON, а не версия скрипта или слоёв.

16 стадий из 43 — останавливающие (download · frames · ocr · transcript · vlm · llm · route · cloud · apply · terms · format_tz · render · review_json · mock · doc_tz · verify): их падение прекращает цепочку. Останавливающих ровно шестнадцать с самого начала, а мягких прибавляется — поэтому сверяйтесь с таблицей выше, а не с этим числом. Остальные мягкие — прогон идёт дальше, а замечание остаётся в логе. Каждая стадия идемпотентна, гейт — по артефактам на диске; review_state.json можно потерять — ничего не переделается. Пауза/стоп — флаги ~/.cache/<project>/PAUSE|STOP, стадии читают их на границе экрана.

6.2 · 5Что делать, когда…

1
…стадия упала

Смотреть хвост лога именно этой стадии в 05_Review/logs/ — там причина, а не в общем выводе. Починив, продолжать не с начала: review.py resume идёт с первой незакрытой стадии, --from <стадия> — с нужной, --only <стадия> — ровно одну. Уже сделанное не переделывается: гейты смотрят на артефакты на диске, поэтому даже потерянный файл состояния не заставляет проходить круг заново.

смотреть logs/<стадия>.logпродолжить resume · --from · --only
2
…Роман внёс правки в док

Сначала снять их: review.py edits читает вкладку и переносит в список правок — удалённые строки становятся снятыми, дописки сохраняются как его комментарии. Только после этого пересобирать поверхности: review.py run --from format_tz. Пропустить этот шаг нельзя — гейт откажется переписывать вкладку, и это защита от молчаливого затирания.

1 review.py edits2 run --from format_tz
3
…пришла новая версия ката

Новый круг живёт в своей подпапке: в карточке меняется cut_version (v2, v3…), и рабочие файлы прошлого круга остаются нетронутыми. Чтобы сверка с прошлым кругом заработала, в карточку добавляются прошлый список правок и версия прошлого ката — тогда на выходе появится «Обратная связь по кату»: что нового и что стало с каждым пунктом прошлого ТЗ. Номера ТЗ сквозные и не переиспользуются, поэтому «ТЗ-14» в переписке значит одно и то же в любом круге.

карточка cut_version · прошлый pravkiвыход обратная связь по кату

🚪6.2 · 6Вход в сессию: /review и REVIEW_STATE.md

Скилл /review читает ровно шесть файлов и в этом порядке: тикет сессии docs/TICKET_next_session.md (сценарии практики, карта «что менять где», открытые хвосты), README стадии, contracts.md, REVIEW_STATE.md проекта, карточку, профиль канала. Дальше он только вызывает review.py. Первым идёт именно тикет — в нём то, что успело измениться после прошлого круга. Тикет для новой сессии не пишется руками — review.py ticket генерит его из карточки и стейта: запуск в новом чате, факты, состояние стадий, следующий шаг, грабли проекта, «готово, когда».

R=~/YTAI/scripts/05_editing/0509_review_cycle/review.py
python3 $R init   --project <path|CODE> --channel YTUVI --mode cut_review --cut gdrive:…/cut.mp4
python3 $R memex  --project P push [--with-cut] · start · status · pause · resume · pull
python3 $R run    --project P --until route          # после pull: маршрутизация
python3 $R cloud  --project P judge --print-call     # → Workflow({...}) один раз → cloud collect --run <id>
python3 $R resume --project P                        # apply → … → doc → verify → бриф в TG
python3 $R edits  --project P                        # правки Романа из дока — ДО регенерации вкладок
⚠️ Workflow({...}) — не команда терминала. Флаг --print-call только печатает готовый вызов; исполняет его сессия Claude Code своим инструментом. Если вы в терминале и сессии нет — этот шаг так не пройти, а стадия cloud останавливающая: круг встанет на ней.

Второй путь, без сессии. review.py memex start --autonomous — вся цепочка целиком на Memex, и облачные проходы там выполняет безголовый агент (shared/headless_claude.py). Ноутбук можно закрыть, вехи приходят в Telegram, результат забирается memex pull --all. Без флага --autonomous Memex делает только «глаза» — от скачивания ката до самопроверки — и останавливается перед маршрутизацией.

Гигиена главного потока (нарушение = утечка токенов): кадры и скриншоты только через shared/shot.py (≤1280 px или кроп по bbox), JSON > 50 КБ только через shared/peek.py, никаких разовых скриптов в проекте (баг → правка в репо + memex push), Grep/Glob вместо cat, сессию закрывать status + ticket.

🧬6.2 · 7Контракты

  • review_card.json и review_profile.json — карточка фильма и профиль канала. Полная схема ключей с примерами — 6.1 Film Card & Channel Profile.
  • review_terms.json — термины и места фильма поверх базы канала (YTs/YTUVI/review_terms_base.json): плашки V3, мини-карты, канон «МЬЯНМА (БИРМА)», confusables, canon_words.
  • review_state.json — стадии (status, host, attempts, inputs_hash, log), облачные пакеты, поверхности, правки Романа.
  • pravki_v2.json — источник истины ТЗ: num (никогда не переиспользуется), class, parts{now,do}, material_rich, typo было→стало, decision, status rejected, roman_comment, skeptic, sensitive.
  • candidates.json — маршрутизация кандидатов (auto_confirm | cloud | drop) с сигналами и причиной.
  • cloud/in · out — пакеты судьи и ответы агентов (см. §6). montage.json — режим без ката (6.6).

Полные схемы — docs/contracts.md в папке стадии.

☁️6.2 · 8Облако: один проход на фильм

1
Маршрутизация кодом 0 токенов

Опечатки: токен вне словаря (pymorphy3 + каталог + canon_words), три независимых чтения (OCR = VLM = zoom) и найденное исправление из озвучки/каталога → auto; пары Й/И, Ё/Е, Щ/Ш и омоглифы — всегда в облако. Валюта, английский без перевода, дефисы — регексы по канону профиля. Дубли по OCR-сигнатуре, existing_tz по таймкоду. Класс «вёрстка/вкус» не кандидат. На YTUVI02: 61 из 84 старых находок решаются локально, 0 ложных auto, в облако — 24 кандидата.

out candidates.json · probes.jsonl
2
Пакеты судьи текст, без картинок

≤50 экранов и ≤60 кандидатов на пакет: строки OCR с индексами, текст и описание VLM, озвучка ±8 с, локальные сигналы, кандидаты, список существующих ТЗ, канон канала. Кадры не прикладываются намеренно: сомнение в буквах → need_frames, код нарежет кропы. 40-минутный фильм — 4 пакета по ~100 КБ.

out cloud/in/J_NN_<sha8>.json · state.json · CALL.txt
3
Один Workflow J ≤4 → F ‖ V → S

Судья J по пакетам (confirm/refute/need_frame/fact_check по кандидатам + новые находки по тексту всех экранов + clean_screens), факт-чек F одним агентом по списку утверждений (WebSearch по авторитетам канала), кропы V одним агентом (≤16 кропов ≤800 px или контактный лист 4×4), скептик S одним агентом на весь список — default real = true, опровержение только с кодом: T вкус · V допустимый вариант · H буквы за головой → «проверить исходник» · C покрыто ТЗ · F факт защитим · D дубль. Агент сначала пишет результат на диск (cloud/out/), потом возвращает — обрыв по лимиту ничего не теряет.

out 7–10 агентов вместо 233–560
4
Сбор и повтор

cloud collect собирает out/, журнал воркфлоу, task-output; проверяет покрытие (непокрытые экраны досылаются пакетом J_NNb); сливает в audit_findings.json. Повтор — только pending-пакеты; перед повтором cloud salvage (достаёт результаты упавшего прогона из логов сессии) и cloud cost (таблица прогонов — метрика экономии).

out audit_findings.json → s8_apply_audit → pravki

YTCH: локально n-gram выравнивание, стоп-реестр (25 паттернов, ⚠️ на подтверждение фонда), Qwen3-8B по актам + кодовые проверки структуры (фонд не раньше 34-й минуты, тизер не только из бед, последний звук) → 1 агент вердикта. YTEVO: 1 агент структуры + 1 дизайн-ревью по контактному листу (6.6).

🗂6.2 · 9Поверхности из одного pravki

Все поверхности собираются из одного pravki, поэтому не расходятся между собой: номер ТЗ — позиция записи в списке, снятая Романом строка исчезает разом везде. Что именно видят Роман и монтажёр, как устроена каждая вкладка и какие у них гейты — 6.3 Review Surfaces; канон кадра и шести слоёв секвенции — 6.4 Review Timeline.

Гейт стоит на двух вкладках из трёх — на ТЗ и на навигаторе: review.py edits перед их регенерацией. Удалённые Романом строки становятся снятыми, его дописки сохраняются; без этого шага пересборка этих двух вкладок отказывается стартовать. Вкладка «Обратная связь по кату» гейта не имеет намеренно — она целиком пересобирается кодом. Лист, папка на Drive, страница продюсера и бриф пересобираются свободно: правки Романа живут во вкладке ТЗ, а не в них.

Приёмка — кодом, а не агентами: doc_pdf_qc проверяет вкладку постранично по PDF (сироты заголовков, подписи под картинками, перечисления, длинные абзацы), preview_qc_local — геометрию и читаемость превью, s14_polish_local доводит строки ТЗ локальной моделью под кодовым стражем. Это заменило 37 облачных агентов.

🪙6.2 · 10Бюджет токенов на фильм (40 мин, ~200 экранов)

стадиябыло (агентов / токенов)стало
аудит экранов233–244 / 6,1–14,8 M0 — локально (OCR, VLM, LLM, пробы, маршрутизация)
догоняющая верификациядо 264 за 3 прогона / 12,6 M0 — pending-пакеты, salvage
судья J + факты F + кропы V + скептик S—7 (≤10) / ≈0,7–1,5 M
listify · QA дока · QA превью65 / ≈6,2 M0 — код + локальные модели
YTCH: документальный вердикт36 / 8,7 M1–2 / 0,12–0,25 M
YTEVO: ТЗ из исходников11 / ≈1 M2 / 0,15–0,2 M

Главный тред: ≤300 k на цикл (пять файлов на старте, кадров 0, скриптов 0). Замер: review.py cloud cost --session <id>.

⚖️6.2 · 11Правила и грабли

  • ТЗ — только настоящие ошибки: typo · grammar · fact · currency · language · mismatch · foreign_trace (+ structure у YTCH); вёрстка/вкус/темп не попадают по коду. Целевой размер списка никогда не задаётся.
  • Номера ТЗ не переиспользуются; status: rejected = Роман снял строку; повторный s8_apply_audit не перенумеровывает.
  • Чувствительное (YTCH) = ⚠️ «на подтверждение фонда / блюр», ⛔ только при письменном запрете (hard: true).
  • OCR путает Й/И и «чинит» слова VLM — auto_confirm только при трёх чтениях; ошибка показывается на секунде ДОПИСАННОГО титра.
  • Memex 16 ГБ: одна модель за раз; в неинтерактивном ssh export PATH=/opt/homebrew/bin:$PATH; версия кода на Memex = VERSION, дрейф виден в memex status.
  • alpha-рендер html,body{background:transparent}, chrome-headless-shell; стиллы ≤4,8 с; tc на сетке fps из карточки — частоты NTSC считаются точной дробью (29,97 = 30000/1001), иначе к концу фильма набегает сдвиг в кадры; клипы 23.976 интерпретировать в частоту секвенции.
  • Автоисправление опечатки — только при равной длине. На YTUVI01 из 41 автоподтверждения 20 оказались ложными: словарь «чинил» имена и термины — топонимы карты, названия огранок. Закономерность нашлась в длине: верные авто — всегда замена или перестановка букв (OCR путает начертания, длина та же), ложные — всегда вставка или удаление. Порог похожести тут не спасает: ложное «РОБЕРТС→РОБЕРТАС» даёт 0,93, ровно как верное «ВЫСОКВАЯ→ВЫСОКАЯ». Цена правила — две верные правки уходят к судье вместо авто.
  • Ручные привязки к номерам ТЗ живут ровно один круг. На кате v2 список вырос с 55 до 58 правок, номера сдвинулись — и картинки прошлого круга молча приехали к чужим пунктам (карта месторождения к правке про аббревиатуру, плашка «ШЁЛК» к правке про Мозамбик; 14 чужих картинок снимали руками). Поэтому такие привязки закрыты гейтом и по версии ката. Надёжнее привязывать не к номеру, а к заголовку правки.
  • Воркфлоу без файловой системы: результат пишет агент, а не скрипт; сохранять сразу; «ноль голосов» ≠ опровергнуто.

✅6.2 · 12Проверка системы

  • YTUVI02 (данные на диске): регенерация поверхностей из старых находок — 46 ТЗ / 210 сегментов / mock 0 ошибок; 172/172 PNG и review JSON байт-в-байт со старым кодом.
  • route_candidates --eval: 61/84 локально, 0 ложных auto, облачный список 24 на 95 экранов; пробы: вотермарк «唐» (s058) пойман, «ВЫСОКВАЯ» (s031) — три чтения → auto.
  • Облако целиком на YTUVI02: 3 прогона, 7 агентов, 924 k токенов (было 18,7 M), 55 находок, 41 подтверждена, 6 фактов опровергнуты с источниками; агенты пишут out/ сами, покрытие 100 %, стоимость — cloud cost.
  • Golden-теста режима без ката (6.6): montage.json = 0 расхождений, 28/28 мокапов побайтно.
  • Memex: автономный прогон download → probe 2 ч 18 мин, OCR и VLM совпали с маком; pull сверяет md5. Внешние поверхности (док, лист, Drive, бриф) прогнаны на тестовых ресурсах: verify ALL PASS, гейт edits сработал; полировка 41 строки ТЗ локальной Qwen3-8B за 78 с.

Регрессия перед каждым коммитом: review.py selftest — около минуты, ноль токенов. Проверяет, что весь python и javascript стадии компилируются, скрипты Memex синтаксически целы, карточка проходит проверку, каталог терминов грузится, маршрутизация не даёт ни одного ложного автоподтверждения, проверочная сборка секвенции проходит с нулём ошибок, русский и английский эталоны совпадают байт-в-байт, а в таблицах перевода нет дыр. В конце печатает «ИТОГ OK» либо «ИТОГ: FAIL N». Правило простое: правка кода без прошедшего selftest не уезжает ни в коммит, ни на Memex. ⚠️ Если выход изменился намеренно — скажем, вы поменяли дизайн заставки, и эталон честно разошёлся, — эталон надо переснять, а не игнорировать красный: иначе следующая сессия увидит чужую красноту и не поймёт, своя она или нет.

Тулинг-эталон и история решений — 6.4; исходники метода — docs/contracts.md, README.md стадии.

Скрипты в репо, состояние в проекте, суждение — одному агенту. Токены тратятся на смысл, не на повторы.