# Router-mentor — передача в новую сессию (Машина 2: ревью решений A–G)

**Кодовая фраза для возобновления:** `роутер-наставник машина 2`

**Где мы:** Машина 1 (Фундамент) ПОЛНОСТЬЮ собрана и проверена. Машина 2 (Замок плана + Верховный хук) — есть детальный чертёж; идёт **построчное ревью проектных решений A–G с владельцем**. **Прогресс 2026-06-04:** пункт **C ЗАКРЫТ** (C-1…C-14: два плана / два гейта / look-ahead / закрытая дверь / контракт+адаптер / апелляция / охват A-B-C-D). **L-серия ЗАКРЫТА** (улучшения итераций: L1/L3/L4/L5/L7 приняты, L2/L6 в утиль, принцип «умный не баран»). **Машина 1 — переделка НЕ нужна (проверено по коду).** Остаются **D/E/F/G**. Код Машины 2 ещё НЕ строим — сначала владелец подтверждает D-G.

**Язык с владельцем — простой, человеческий** (он не программист). Артефакты технические, владельцу — пересказ сути.

---

## РАБОЧЕЕ ОКРУЖЕНИЕ (важно — не перепутать)

- **Дерево:** работаем в worktree **`brainrepo`**, ветка `worktree-brainrepo`. Абсолютные пути под `C:\моя\проекты\портал crm\Документация\.claude\worktrees\brainrepo\`. Git — через `git -C "<путь к brainrepo>"`. Основное дерево (`Документация\`) сейчас на чужой ветке `feat/gate-allow-worktree-cd` — туда НЕ коммитить (хук branch-switch заблокирует).
- **Тесты (vitest tools-only):** из корня репо
  `npx vitest run --root ".claude/worktrees/brainrepo/app" --config vitest.config.tools.mjs <фильтр-имени-файла>`
  Полный прогон — без фильтра. На сейчас база **2035 зелёных / 2 skipped**.
- **Коммиты под гейтом:** `git -C <brainrepo> commit` обычно проходит; если parallel-session-lock «призрак» (мёртвый pid) — повторить через минуту (TTL) ИЛИ владелец вставит строку в терминал VS Code. **Коммит/push — ТОЛЬКО с явного разрешения владельца.**
- **TDD-гейт квирк:** правка существующего прод-файла требует тест-правку+vitest-RED **впритык, без разрыва** (инъектированные напоминания рвут окно «хода»). Порядок: правка теста → `vitest` (RED) → правка прод-файла — подряд, без лишних шагов между. Новые файлы (Write) этого не требуют.
- **real-test-verifier квирк:** тест-правка обязана содержать `expect` (голую правку импорта он блокирует — объединять импорт с тест-блоком, где есть expect).
- **Память правится ТОЛЬКО через skill `claude-md-management`** (прямая правка memory заблокирована нормативным хуком — это правильно).
- **Портативность/детерминизм — жёстко:** никакого project-specific хардкода; стена/судья РАССУЖДАЮТ или сверяют детерминированно, не читают зашитые списки. Каждое усиление — детерминированный механизм, не «умнее ИИ». Когда владелец говорит «читай!/проверь!» — реально читать исходник.

---

## ИСХОДНИКИ (читать для контекста, в `brainrepo`)

- `docs/superpowers/specs/2026-06-01-router-discipline-plan-anchor-design-notes.md` — логика план→роутер→судья→владелец (D1–D36, OQ1–OQ7, судья A–I, снаряжение роутера).
- `docs/superpowers/specs/2026-06-01-router-mentor-hooks-decisions.md` — хуки, 26-пунктная карта, пред-спека 🟥/🟩/🟨/🆕.
- `docs/superpowers/plans/2026-06-03-router-mentor-master-roadmap.md` — мастер-карта (7 машин).
- `docs/superpowers/plans/2026-06-03-router-mentor-machine-1-foundation.md` — чертёж Машины 1 (СОБРАНА).
- `docs/superpowers/plans/2026-06-03-router-mentor-machine-2-lock-and-supreme-hook.md` — чертёж Машины 2 (ревью идёт), решения помечены `[РЕШЕНИЕ A–G]`.
- **Этот файл** — реестр решений ревью + что осталось.

---

## МАШИНА 1 — СОБРАНА (готово, в `brainrepo`)

Код-коммиты (ветка `worktree-brainrepo`): `d7dc0327` receipt-key-config · `9bd45ce5` receipt-sign (HMAC) · `e3da14a7` action-journal (журнал S1) · `3af57e18` askuser signed receipts · `56da7fab` pathNormalize NFC · `7af68d62` runtime-write-deny all-channels · `b83cea2e` cross-invariants. Регрессия 2035 GREEN. Журнал ловит подмену/перезапись; расписки без ключа не подделать; runtime закрыт. **Хвост:** 2 файла `receipt-key-config*` staged в основном дереве (feat-ветка) — безвредные дубли, `git restore --staged` снимет.

**ПЕРЕДЕЛКА М1 — НЕ нужна (проверено по КОДУ 2026-06-04, не по сводке):** `receipt-sign.mjs` `signPayload/verifyReceipt` подписывают/проверяют ЛЮБОЙ объект; `action-journal.mjs` `journalAppend` принимает ЛЮБОЙ payload + хеш-цепочка + HMAC-голова. → две печати / счётчик апелляции / записи приёмки = новые нагрузки и типы записей на тех же примитивах. Чертёж (стр. 22 / 1002) прямо проектирует М1 как **библиотеки, ПОТРЕБЛЯЕМЫЕ Машинами 2/4**. Всё новое (защита контрактов, гейты, роутер, логика двух печатей) — хуки Машин 2/3, импортируют М1, не правят. **Ноль переделок, только надстройка.**

---

## РЕШЕНИЯ РЕВЬЮ МАШИНЫ 2 — ЗАФИКСИРОВАНО

**A — структура шага плана ✅ ПРИНЯТО.** Шаг = {**инструмент** (Правка/Запись/Команда/Скил/Агент), **объект** (путь/команда/имя скила/имя агента), **зачем** (пояснение — для владельца и судьи, в матче НЕ участвует)}. Весь план подписан ключом-вне-меня = «печать»; правка плана = новая подпись (видно владельцу).

**B — матч «действие ↔ шаг» = СТРОГИЙ ✅ ПРИНЯТО.** Совпадение по ДВУМ осям: точный **инструмент** И точный **объект** (файл — через `pathNormalize`; команда — нормализованная). Обе обязаны совпасть. Без LLM, детерминированно. Следствие: план **подробный** — каждое действие = свой шаг; число действий на шаг ограничено. Ось «инструмент» уже пинит «это скил/агент/правка»; «объект» пинит «какой именно». Третьей оси нет (инструмент = имя инструмента).
  - *Что стена ловит/не ловит (для ясности владельцу):* ловит «делаю не то» через **объект** (биллинг = биллинг-файлы, не в лендинг-плане → блок). НЕ ловит: качество содержания (на владельце) и «биллинг-логика, спрятанная в лендинг-файл при совпавшем объекте» (грубо судья на исполнении + владелец). «План сам кривой» ловит судья + D29.

**Поток заморозки (печать) ✅ ПРИНЯТО (с поправками владельца):**
```
Я + РОУТЕР собираем план
   ↓
D29: план ↔ живая просьба владельца
   ↓
СУДЬЯ судит сухой план+цель (слеп к рассуждениям)
   ├─ GO ───────────→ печать ставит СУДЬЯ САМ … НО:
   │                    • план касается ДЕНЕГ → эскалация к владельцу (печать = его клик), даже при GO
   │                    • остальное → судья морозит сам
   └─ замечание ───→ ЭСКАЛАЦИЯ К ВЛАДЕЛЬЦУ:
        ├─ (а) переделать: ВЛАДЕЛЕЦ даёт замечания → Я перерабатываю → иду к РОУТЕРУ →
        │        вместе (по сути НОВЫЙ план) → роутер → СУДЬЯ (полный новый проход)
        └─ (б) отбросить замечания + утвердить как есть → печать (владелец)
```
  - **Кто физически ставит печать (я подделать не могу):** ветка GO → процесс судьи (ключ мне недоступен); ветка владельца → его одобрение через харнесс (AskUser / режим планирования), подпись Машины 1.
  - **Развилка эскалации на печать:** к владельцу на клик уходит ТОЛЬКО «деньги» (при GO). Прод/файлы/рефакторинг/необратимое-не-деньги судья при GO морозит сам. (Это сознательный выбор владельца — упрощение J10 до «деньги».) Эскалация при НЕдовольстве судьи — всегда, независимо от денег.
  - Переделка (ветка а) идёт **к роутеру, не к судье**: судья только судит, не перекраивает (D34/D35 — план правит роутер). И начинается переделка **с меня** (я несу правку владельца → к роутеру вместе).

**C-расширение — полнота плана и провалы 1/2 ✅ ЗАФИКСИРОВАНО (2026-06-04):**
Возникло при разборе сценария «лендинг»: стена гарантирует, что я следую плану, но НЕ гарантирует, что план полон («мусор на входе → мусор на выходе»). Два провала: **провал 1** — фундаментный диалог (интервью/брейншторм) слеп к тому, что понадобится скилу ниже (рецепт скила был неизвестен) → вопрос (цвет/шрифт) не подняли; **провал 2** — вопрос всплыл поздно, на шаге дизайна, где глубокого диалога уже нет → решили мелко-наспех, мимо цели.
- **C-1.** Семена работают НЕ только в начале, но и в середине (возврат к диалогу = «петля»). Роль семян шире, чем «стартовые».
- **C-2.** Приняты ОБЕ формы: (1) **look-ahead** — при сборке плана роутер читает рецепты скилов, которые план вызовет, и тащит их вопросы ВПЕРЁД в фундаментный диалог; (2) **петля** — если вопрос всё же всплыл поздно, шаг возвращает нас в дисциплинированный диалог, а не отвечает на ходу.
- **C-3.** **Вход судьи = 4, не 2:** план + цель + **рецепты вызываемых скилов** (судья сам, независимо, выводит «что нужно») + **артефакты-решения** (спека/brief). Судья слеп к ЖИВОМУ разговору/рассуждениям (защита от уговоров), но артефакты-документы читать может и должен.
- **C-4.** «Проработали вопрос» обязано **осесть в артефакт** (спека/brief). Осталось только в разговоре → для судьи его НЕТ (принцип H4: верим записанному делу, не словам).
- **C-5 (закрытие «мелкой двери», провал 2).** Не ловим мелкий ответ — делаем его невозможным (как стена с действиями). Три правила вместе: (а) исполнение применяет ТОЛЬКО опечатанные решения; (б) шаг реализации обязан **ссылаться** на конкретное решение спеки («крашу в цвет §X»), ссылка не резолвится → стоп; (в) нужно решение, которого в спеке нет → единственный легальный ход — **возврат в диалог (семя) → пере-печать** (судья + владелец). Хода «спросил на ходу и продолжил» физически нет → петля становится обязательной, не добровольной.
- **C-6 (граница).** Машина держит **наличие + происхождение** решения (прошло ли через диалог+печать); **глубину/вкус** — владелец. Провал 2 закрыт не «надзором за глубиной», а тем, что другой двери, кроме глубокой, нет.
- **Цена (принята осознанно):** план тяжелее — look-ahead перечисляет входы каждого скила, шаги реализации ссылаются на решения спеки; судье больше сверки.

**C-7 — ДВА типа плана ✅ ЗАФИКСИРОВАНО (2026-06-04):** «разговор тоже план, но по другим принципам, чем реализация».
- **Разговорный план (думательный):** последовательность НЕ фиксируется заранее (следующий вопрос рождается из ответа — интервью иначе невозможно). Задаётся тремя вещами: **цель** + **разрешённые инструменты** (только думать/спрашивать — семена; реализация запрещена) + **обязательный результат-артефакт и условие «готово»** (бриф/спека заполнены). Один разговорный план на всю фазу (НЕ новый на каждую реплику — иначе избыточность); внутри — петля до условия готовности. Защита в этом окне — НЕ печать (её ещё нет), а запрет инструментов реализации + всегда-включённые защиты (секреты/runtime/force-push).
- **Реализационный план (строящий):** фиксированный, опечатан заранее, строгий матч A/B, каждый шаг ссылается на решения из артефакта.
- **Семена = инструменты разговорного режима** (чище модель: семя не отдельная сущность).
- **Бэкстоп:** реализационный план не опечатается без полного артефакта разговорной фазы → ничего не построится без управляемого разговора позади (страхует от ошибки в границе).

**C-8 — ЕДИНЫЙ источник «список нужд скила» ✅ ЗАФИКСИРОВАНО:** один и тот же список нужд скила служит ОБОИМ — (1) полнота артефакта против провала 1 («добрали ли всё, что нужно скилам ниже»), (2) граница против провала 2 («существенное решение = то, что в списке нужд скила → требует опечатанного §; не в списке → деталь реализации, свободно»). Граница «существенное/деталь» так становится не произвольной, а выводимой из рецептов скилов.

**C-9 — предел честности ✅ ЗАФИКСИРОВАНО:** конструкция полна настолько, насколько точно объявлены/выведены нужды скилов. **Свои скилы** — дописываем явный список нужд в рецепт → проверка детерминированная. **Чужие скилы** (маркетплейс, править нельзя) — судья выводит нужды рассуждением по тексту рецепта → мягче, остаточный риск; и эта слабость протекает из провала 1 в провал 2 (что не выявлено как нужда — то не потребует §, то и проедет мелким). Добивает владелец. Также машина держит «сослался на §» (наличие), но не «применил именно его значение» (обман) — это владелец (граница C-6/B).
- **Открытый суб-вопрос (не финал):** где граница «свободная болтовня vs разговорный план» — по умолчанию «свободно, пока разговор не ведёт к стройке; ведёт → разговорный план». Подтвердить отдельно.

**C-10 — ДВА гейта судьи / ДВЕ печати ✅ ЗАФИКСИРОВАНО (2026-06-04):** новый слой плана (разговорный) → у судьи появляется вторая точка суда. Но судье НЕ нужен свой «план разговора» — нужен гейт над ПРОДУКТОМ разговора.
- **Гейт 1 (после разговора — судим продукт):** артефакт полон и здоров? Судья читает артефакт + рецепты скилов + цель (слеп к живой болтовне). GO → печать артефакта → к плану стройки. Ловит провал 1 РАНО, до вложения в план стройки.
- **Гейт 2 (после реализационного плана — судим план):** план верно применяет опечатанный артефакт, строгий, ссылки §X резолвятся? GO → печать плана → стройка.
- **Асимметрия (честная, по природе):** реализацию судим ДО (план фиксирован), разговор — ПОСЛЕ (эмерджентный — шаги заранее не зафиксировать → судим продукт-артефакт).
- **Судья не ведёт диалог и не перекраивает** (D34/D35); замечание → к владельцу. Регресса «кто судит судью» нет: судья — фиксированный механизм с ключом, не агент под планом; корень доверия — владелец.
- **На гейте 1 две проверки:** судья — структурная полнота (нужды скилов покрыты); владелец — верность сути («правильно ли поняли мою проблему»).
- **Открытый суб-вопрос:** артефакт на гейте 1 идёт к владельцу ВСЕГДА или только при «замечании» судьи — не финал.

**C-11 — закон открыт настолько, насколько безопасен при огласке ✅ ЗАФИКСИРОВАНО (2026-06-04):** дилемма «скрытый закон → честный строитель спотыкается вслепую; открытый закон → обходчик обходит».
- **Структурные законы** (матч A/B, «шаг ссылается на §», полнота нужд, защиты, семена) — **публикуются целиком** (= чек-лист C-8). Знание помогает честному, НЕ помогает обходчику (соблюдение буквы = цель). Это как СНиП.
- **Судейские законы** (рассуждение: план↔цель, артефакт↔нужды) — **критерий открыт, вердикт защищён** (судья слеп к уговорам/болтовне + независим + несколько углов/консенсус). Знаешь ЧТО проверят, но не можешь подкрутить вердикт.
- **Принцип «нет защиты через секретность»:** если закон обходим, как только узнан → закон слабый → переделать (keyword-судья → рассуждение+слепота+консенсус).
- **Остаток:** у судейских законов щель «буква критерия vs дух» неустранима (рассогласование целей) → бэкстоп владелец (деньги+замечания+просмотр).
- **«Преступник» по сути = контроллер (я)**, не владелец; владелец знает законы = чистый плюс.

**C-12 — апелляционный цикл; владелец = ВТОРАЯ инстанция, не «полуторная» ✅ ЗАФИКСИРОВАНО (2026-06-04):**
- **Деньги** → эскалация сразу к владельцу (как было).
- **Структурные замечания** (нет §, ссылка не резолвится, нужда скила не покрыта, матч не сошёлся) → судья **мотивированным решением** назад ко мне → правлю по схеме (сначала сам, потом роутер) → роутер возвращает **СУХОЕ** (без своих мотиваций и без наших диалогов) → судья пере-судит. **Цикл до 3 раз; не прошло на 3-й → к владельцу.**
- **Суть/дух** («план плохо служит цели по духу») → НЕ в цикл, **сразу к владельцу** (это его домен C-6/B). Заодно закрывает «оракул обхода» (в цикле нет судейства духа — нечего подбирать заплатками).
- **3 страховки:** (1) счётчик раундов неподделываемый — живёт у процесса судьи / в журнале-расписке Машины 1, подписан, я не обнулю; (2) канал пере-подачи механически **сухой** — судья читает файлы (артефакт+план), не переписку, + анти-инъекция (нельзя зашить уговор внутрь артефакта); (3) классификация «деньги» **детерминированно-осторожная** (по объекту: трогает биллинг/баланс/начисление → деньги; ошибка в сторону «деньги→владелец»).
- Цикл-3 применяется на **ОБОИХ гейтах** (артефакт + план).

**C-13 — структурный контракт скила + этикетка-адаптер для чужих ✅ ЗАФИКСИРОВАНО (2026-06-04):**
- **Корень — контракт скила:** скил объявляет машинно-читаемо `{needs / produces / constraints}`. На этом контракте все проверки полноты/декомпозиции становятся операциями над множествами и графом (механика, не «ум ИИ»). Свои скилы — пишем контракт сами (точная сверка). Портативно: каждый объявляет про себя, без центрального проектного списка.
- **Адаптер для чужих** (маркетплейсных) скилов, которые РЕАЛЬНО в ходу: кладём рядом тонкий файл-контракт {needs/produces/constraints} → возвращает точную сверку. Гард-рейлы (обязательны):
  - **G1** — контракт САМОГО скила (из его доков), проектно-нейтрально; никаких проектных фактов (не «лендингу нужен teal») — иначе хардкод.
  - **G2** — лениво: адаптер только для реально используемого скила; хвост остаётся на мягком рассуждении судьи.
  - **G3** — детерминированная диспетчеризация: машина ищет адаптер по id скила; есть+свежий → точная сверка; нет/устарел → откат на мягкое рассуждение. Молча не доверять.
  - **G4 (критично)** — тревога дрейфа: адаптер хранит версию + ХЕШ файла чужого скила; при использовании сверяем; расхождение → громкий флаг «устарел, перепроверь» + откат на мягко. Тихий дрейф → громкая тревога (урок adr-judge). Без G4 адаптер = мина.
  - **G5** — честная рамка: адаптер не убирает мягкость, а переносит её в ОДНОРАЗОВОЕ авторство + детерминированный переиспользуемый ярлык + страж дрейфа. «Мягко на каждом использовании» → «мягко раз + точно много + сигнал при дрейфе».
  - **G6** — адаптер сам = артефакт под журналом М1; судья может сверить его с прозой; ленивый/кривой адаптер = риск обмана → владелец просматривает.
  - **Цена:** дёшево per-skill + сопровождение триггерится дрейфом (G4), не постоянное → реально недорого (держится на G2+G4).
- **Ждёт подтверждения владельца (предложено, не финал):** проверки поверх контракта — **A** граф зависимостей (декомпозиция/порядок/дыры/пропущенный скил из needs↔produces), **B** двусторонний реестр нужды↔решения (нет дыр, нет сирот), **D** ограничения как полноправные нужды; **C** чек-лист «просьбы цели → план» (мягкий край на извлечении просьб); прецеденты прошлых планов — advisory, не гейт.

**C-14 — механика охвата/декомпозиции поверх контракта ✅ ЗАФИКСИРОВАНО (2026-06-04, владелец подтвердил A+B+C+D):**
- **A — граф зависимостей.** Узлы = скилы-кандидаты (фильтр по описаниям); рёбра «B нужен выход, который A produces». Декомпозиция = связные группы/слои; порядок = топосортировка; **дыра охвата** = нужда без producer и не данная владельцем; **пропущенный скил** = его produces нужен, а скил не в плане; цикл = флаг. Декомпозиция/порядок ВЫЧИСЛЯЮТСЯ из графа, не придумываются.
- **B — двусторонний реестр нужды↔решения.** Нужда без решения = дыра; решение без нужды = сирота (скоуп-крип/непонимание).
- **C — чек-лист «просьбы цели → план».** Каждая явная просьба цели упирается в шаг/решение (усиленный D29). Мягкий край: выделение просьб из текста — частично рассуждение; сопоставление — механика; владелец просматривает.
- **D — ограничения (constraints) как полноправные нужды** (охват «чего нельзя»).
- Прецеденты прошлых планов — advisory-подсказка, **не** гейт.
- **Хребет:** буквальный чек-лист готовности (нужда/ограничение = галочка + указатель §; «готово» = все галочки + указатели резолвятся).
- Широкий скан соседей (по фильтру описаний) — для разговора/декомпозиции, владелец отсекает (YAGNI); печать требует узко — нужды РЕАЛЬНО вызываемых скилов (C-8).

> **ИТОГ ПУНКТА C ревью (семена + полнота) — ЗАКРЫТ.** C-1…C-14. Остаются D/E/F/G.

---

## M2 → ДЕЛЬТА К 26 ХУКАМ (анализ 2026-06-04; источник — `2026-06-01-router-mentor-hooks-decisions.md`)

Наши решения Машины 2 НЕ ломают ни один из 26 — **надстраивают**. Сводка через 7 добавок.

**Добавки M2 (линза):**
- **M2-1** ДВА плана: разговорный (эмерджентный, по тулзам+артефакту) + реализационный (строгий). Пред-спека знала по сути один.
- **M2-2** ДВЕ печати/гейта: гейт-1 артефакт (после разговора) + гейт-2 план. Было — один суд.
- **M2-3** Контракт скила {needs/produces/constraints} + адаптер чужих с хеш-стражем (G4, C-13).
- **M2-4** Машина охвата A/B/C/D (граф зависимостей / двусторонний реестр / чек-лист просьб цели / ограничения-как-нужды) + look-ahead.
- **M2-5** Закрытая дверь (C-5): шаг реализации ссылается на опечатанный §; неопечатанный вход не применить.
- **M2-6** Апелляционный цикл (C-12): структурное → 3 раунда сухой петли судья↔я; суть → владелец; деньги → владелец.
- **M2-7** Закон открыт насколько безопасен (C-11): структурные = открытый чек-лист; судейские = критерий открыт, вердикт защищён.

**Покрытие по 26 (только дельта; ⭐ = крупное):**
- 1 разрушит. shell — +M2-5 (рушить только названный в опечатанном шаге). 2 цепочки — нет. 3 git-трюки — нет. 4 git-одобрение — +M2-6 (структурное в петлю; деньги/прод к владельцу). 5 чужая ветка — нет (W-1). 6 тесты перед push — +M2-2 (шаг тестов в реализ. плане, держит гейт-2).
- 7 script-watcher — нет. 8 read .env — нет. 9 shell-нормативка — нет. 10 запись runtime — ⭐ +M2-2/6 (в защ. папку: ДВЕ печати + неподделываемый счётчик раундов). 11 правка нормативки — нет. 12 внешний MCP — +M2-3 (чужой скил → адаптер). 13 субагенты — +M2-1/2 (тот же двух-плановый режим+печати, результат в журнал). 14 parallel-lock — нет.
- 15 верховный хук — ⭐⭐ ДВА режима: разговорный (только семена, артефакт обязателен, матча нет) + реализационный (строгий матч B + закрытая дверь M2-5). Надстройка над P15-a/e/g.
- 16 роутер-наставник — ⭐⭐ look-ahead (M2-4) + декомпозиция графом A из контрактов (M2-3) + авторство ОБОИХ планов + сухая пере-подача петли (M2-6). Поверх P16-a…h.
- 17 TDD-порядок — +M2-2/5 (порядок в реализ. плане, держит гейт-2 + закрытая дверь). 18 фейк-тест — нет (мутация). 19 safe-baseline (удаляем) — +M2-1 (принципиальная замена: семена = тулзы разговорного режима). 20 decomposition — +M2-4 (декомпозиция реально графом A, растяжка получает опору). 21 журнал S1 — +M2-2 (в журнал: две печати + счётчик апелляции). 22 self-debrief — +M2-1 (разговорный план формализует, ГДЕ живёт содержательная мысль). 23 рационализация — +M2-6/7 (слепота судьи держится через все 3 раунда сухой петли).
- 24 Судья A–I — ⭐⭐ ДВА гейта (артефакт-1 + план-2) + машина охвата на гейте-1 (B/C/D + нужды из контрактов) + апелляционный цикл (M2-6) + 4 входа (план/артефакт/цель/контракты) + критерий открыт/вердикт защищён (M2-7). Поверх J1–J10.
- 25 coverage-ярлык — +M2-1 (сверять ДВА плана против журнала; аудит P25-d на обе печати). 26 escape — +M2-1/6 (семена = тулзы разговорного режима; апелляция снижает спрос на escape). Owner-anchored E1–E10 — как было.

**Новое в TO-BUILD (сверх списка пред-спеки):**
1. Движок разговорного плана + разговорный режим default-deny (M2-1).
2. Вторая печать — заморозка АРТЕФАКТА (гейт-1), рядом с заморозкой плана (P15-f ×2).
3. Читатель контрактов скилов + проверщик графа охвата A/B/C/D (M2-3/4).
4. Адаптер чужих скилов + хеш-страж дрейфа G4 (C-13).
5. Контроллер апелляции: 3 раунда, только структурное, сухой канал, неподделываемый счётчик (M2-6).
6. Резолвер закрытой двери: шаг реализации ↔ опечатанный § (M2-5), заостряет P15-a/g.

**Вывод:** M2 расщепляет «план» на разговорный+реализационный (15/16/19/22), удваивает суд (24 → два гейта + охват + апелляция), добавляет контрактно-графовую механику (16/20/24). Защитный пол (1/3/8/10/11/14) почти не тронут — расширен лишь состав runtime (две печати + счётчик).

---

## УНИВЕРСАЛЬНЫЕ УЛУЧШЕНИЯ ИТЕРАЦИЙ (L-серия; брейншторм 2026-06-04, скил brainstorming)

Цель: снизить ЧИСЛО итераций и поднять КПД каждой — **универсально** (финансы / БП-автоматизация / логистика / маркетинг / …), не заточка под лендинг.
**Решение дилеммы «универсальность ↔ качество»:** тонкая универсальная машина ДВИЖЕТ тем, что каждый скил про себя ОБЪЯВЛЯЕТ. Расширяем контракт скила (C-13) полями: `preview-form` / `defaults` / `key-decisions` / `constraints` (есть) / `acceptance-criteria`. **Универсальность — в оркестровке; качество — в контрактах.** Предел — C-9 (чужой скил не объявил → мягко/адаптер).
**Честная универсальная правда:** машина гасит БОЛЬШЕ итераций в объективных доменах (финансы/логистика — «хорошо» проверяемо) и МЕНЬШЕ во вкусовых (маркетинг/дизайн — «хорошо» = вкус владельца).

**L1 — дешёвый образец до полной стройки ✅ ЗАФИКСИРОВАНО ОБЯЗАТЕЛЬНЫМ (2026-06-04):**
- Суть: сначала самый дешёвый конкретный образец итога (ловит ошибку рано), потом полная стройка. Форма доменная, принцип универсальный. Примеры: лендинг → макет 1 экрана; финансы → отчёт на 5–10 строках; БП → dry-run одного кейса (без реальных списаний); логистика → маршрут на 5 точках; кампания → черновик одного письма.
- Встраивание (3 точки): (1) контракт +`preview-form` (скил объявляет, чем дёшево показать; `none` для мелочи → ноль церемонии); (2) шаблон реализационного плана: **[шаг-образец] → [ЧЕК-ПОЙНТ: владелец смотрит] → [полная стройка]**; (3) гейт-2: если `preview-form ≠ none`, а план идёт сразу в полную стройку без шага-образца+чек-пойнта → судья НЕ печатает.
- Режим: **ОБЯЗАТЕЛЬНЫЙ** когда `preview-form ≠ none` (выбор владельца, под менталитет «7 раз отмерь»). Мелочь освобождает себя сама.
- Эффект: вкусовая итерация уезжает на дешёвый артефакт РАНО; «построил→ненавижу→перестроил» → «образец→ткнул→построил раз».

**L2 — референсы-примеры ❌ ОТКЛОНЕНО (2026-06-04):** task-class-specific (визуал/контент), не универсально — из ядра убрано.

**L3 — предложи-и-вето ✅ ЗАФИКСИРОВАНО (2026-06-04):**
- Суть: машина не спрашивает «что хочешь?», а предлагает разумный дефолт; владелец «да / поправь». Узнать+одобрить легче, чем родить с нуля; решение всё равно всплывает (охват цел).
- Примеры: финансы «дефолт: кассовый/УСН 6%, так?»; логистика «дефолт: минимум км, окно 9–18»; БП «дефолт: 3 повтора→эскалация»; лендинг «дефолт: палитра брендбука».
- Встраивание: (1) контракт +`defaults` (скил объявляет дефолт под каждую нужду: брендбук/стандарт домена/прошлый выбор); (2) разговорный план: вместо открытых вопросов — дефолты на вето → артефакт заполняется быстрее/полнее (каждая нужда получает значение); (3) честная пометка «это дефолт, не твой явный выбор».
- **Связка L3↔L4 (режим подтверждения):** порог влияния (из графа, L4) решает — высоко-влиятельные (база учёта/аудитория/цель оптимизации) требуют ЯВНОГО «да»; мелкие/листовые (отступ/формат даты) можно «молча принял дефолт». (выбор владельца)
- Эффект: разведка дешевле для владельца (вето вместо изобретения), охват полный.
- ⚠️ **Оговорка «не баран» (2026-06-04):** дефолт = СВЕЖЕ продуманное предложение под ЭТУ задачу (лучшая догадка из контекста), **никогда не замороженный штамп**. Иначе вырождается в баранье шаблонирование.

**L4 — порядок решений по влиянию ✅ ЗАФИКСИРОВАНО (2026-06-04):**
- Суть: сначала фундаментные решения (от них зависит всё ниже), мелочь потом; поздняя смена фундамента = взрыв итераций. Примеры фундаментного: финансы «база учёта», логистика «цель оптимизации», БП «триггер+владелец шага», лендинг «аудитория+оффер».
- Источник «влиятельности» — ТРИ: (1) граф A — счёт стрелок вниз [роутер]; (2) поле `key-decisions` в контракте [этикетка]; (3) **ручная пометка владельца** — чутьё поверх машины (владелец объявляет решение фундаментным). *(выбор владельца)*
- Встраивание: высоко-влиятельные → первыми в разведке [роутер] + явное «да» (L3) + обязательны на гейте-1 [судья].
- Физ-дома: **роутер** (счёт+порядок) + **контракт** (key-decisions) + **хук-гейт** (обязательность явного «да») + **владелец** (ручная пометка).
- Предел: новое фундаментное вне графа/контракта/чутья → C-9.

**L5 — ограничения как пре-мортем ✅ ЗАФИКСИРОВАНО (2026-06-04):**
- Суть: заранее вытащить «от чего провалимся» как явный чек-лист «нельзя нарушить»; провал часто в нарушенном ограничении, не в забытой фиче.
- Примеры: финансы (двойная запись бьётся / не в минус / 152-ФЗ); логистика (вместимость / окно доставки / часы водителя); БП (SLA / не пропустить согласование); лендинг (WCAG / мобайл / скорость).
- Источник: контракт `constraints` (есть) + **ручная добавка владельца** (доменное чутьё: «не писать в выходные», «не трогать боевую БД в рабочие часы»). *(выбор владельца)*
- Встраивание: роутер тащит ограничения в артефакт как полноправные нужды; судья не печатает, пока каждое не соблюдено / нет проверки; машинно-проверяемые → авто-тесты приёмки (связка L7).
- Физ-дома: **контракт** (constraints) + **владелец** (ручная) + **роутер** (в артефакт) + **хук-гейт** (обязательность).
- Предел: необъявленное и неназванное ограничение → C-9.

**L6 — скелет из прецедента ❌ ОТКЛОНЕНО (2026-06-04, «не баран в стойле»):** якорит на старом шаблоне → машина тупеет, штампует вчерашнее, слепнет к новому в ЭТОЙ задаче. Полноту («не забыть этапы») **уже даёт лучше граф A + look-ahead** (выводят этапы свежо из задачи+контрактов, не копируют прошлое). Избыточен + вреден → утиль.

**ПРИНЦИП «умный, не баран» ✅ ЗАФИКСИРОВАНО (2026-06-04):** «без стандартизации» относится к **половине ПЛАНИРОВАНИЯ/РАССУЖДЕНИЯ** (роутер/разведка/декомпозиция рассуждают свежо каждую задачу, никаких шаблонов-РЕШЕНИЙ). Контракт — карта «о чём подумать» (вопросы к закрытию), **не** шаблон ответа. НО **половина ЗАЩИТЫ/ПРИНУЖДЕНИЯ** (стена/гейт/судья/фундамент) **обязана оставаться тупо-механической** — тупой гейт нельзя уболтать, «умный» гейт = уговариваемый. **Не стандартизируем мышление; не «оумняем» стены.**

**L7 — критерий приёмки заранее ✅ ЗАФИКСИРОВАНО (2026-06-04):**
- Суть: до стройки договариваемся «как поймём, что сделано ПРАВИЛЬНО»; объективные критерии машина проверяет авто (pass/fail), вкусовые → чек-пойнт владельца (L1-образец). Чем больше «хорошо» выражено проверяемым условием — тем меньше итераций.
- **Главная правда (универсальная):** сила зависит от объективности домена — финансы/логистика много авто; вкус (маркетинг/дизайн) мало, остаётся глаз владельца.
- Примеры: финансы «сходится до копейки / активы=пассивы» (авто); логистика «доставки в окне / нет перегруза» (авто); БП «< N часов / нет застрявших» (авто); лендинг «WCAG / <2с / форма шлёт» (авто) + «цепляет» (глаз).
- Источник: контракт `acceptance-criteria` + ручные критерии владельца.
- Встраивание: роутер тащит в артефакт, проверяемые → авто-тесты в плане; судья на «готово» требует прохождения объективных машинно, вкусовые → чек-пойнт; машинный критерий = неподделываемый GREEN (журнал S1).
- Физ-дома: **контракт** + **владелец** + **роутер** + **судья/гейт** + **журнал**.
- «Умный не баран»: критерии из цели ЭТОЙ задачи, не шаблон. Предел: чужой скил не объявил → C-9.

> **ИТОГ L-серии (2026-06-04):** приняты L1/L3/L4/L5/L7; в утиль L2/L6; зафиксирован принцип «умный не баран». **Контракт скила расширяется полями:** `preview-form` (L1) / `defaults` (L3, свежие не штамп) / `key-decisions` (L4) / `constraints` (L5, уже есть) / `acceptance-criteria` (L7).

**L-серия → ДЕЛЬТА К 26 ХУКАМ (re-scan 2026-06-04):**
- ⭐ **НОВАЯ защитная правка:** контракты скилов **под анти-отраву (#9/#11)** — стали несущими для охвата → «ослабление контракта (убрал нужду/критерий/расширил дефолт) = блок + да владельца + diff». В пред-спеке этого не было.
- Куда садится L-серия: **контракт** (новые поля) + **роутер #16** (look-ahead / граф A / дефолты L3 / образец L1 / ограничения L5 / критерии L7 — ЯДРО) + **судья #24** (гейт-1: охват A/B/C/D + L5 + L7-объявлены + L4-явно; гейт-2/«готово»: L1-образец present + L7-объективные ПРОШЛИ машинно) + **стена #15** (в плане = +шаг-образец +явное «да» на фундаментном; стена остаётся механической — «умный не баран»).
- **Тест-ось = частный случай L7:** #6 (GREEN=критерий), #17 (тесты прошли=критерий), #18 (мутация = критерий настоящий, не пустышка).
- Прочие: #10/#21 (в журнал: приёмка / чек-пойнты / вето-дефолты), #12 (чужой → адаптер с L-полями), #13 (субагент наследует L1/L7), #20 (декомпозиция реально графом A), #25 (два плана + приёмка против журнала). Защитный пол #1-5/7/8/14/23/26 — «—».
- НОВОЕ в TO-BUILD: схема контракта с L-полями (+в адаптере); **защита контрактов от само-ослабления**; авто-проверка acceptance-criteria = неподделываемый GREEN (стык S1 + мутация P18-a); роутер — L-ядро.
- **Вывод:** L-серия не плодит новых отдельных хуков — садится на контракт + роутер(16) + судью(24) + стену(15); единственная новая ЗАЩИТНАЯ правка — контракты под анти-отраву (9/11).

---

## ОСТАЛОСЬ ОБСУДИТЬ (по порядку, по одному; владелец ведёт)

**C — «семена» (чем загружается стена) — ТЕКУЩИЙ ПУНКТ.**
Стена запрещает всё вне плана, но план чем-то надо создать (иначе дедлок). Семена проходят всегда, даже без плана:
- writing-plans (пишет план) · brainstorming · discovery-interview (думать до плана) · EnterPlanMode (режим планирования) · AskUserQuestion (вопрос владельцу).
Две гарантии: (1) **H4** — семя ПРОВЕРЯЕТСЯ, не «обещает» (writing-plans только пишет файл-план, AskUser только спрашивает; делает лишнее → не семя); (2) семя снимает только **дисциплину**, НЕ защиту (секреты/runtime/force-push под семенами держатся).
**Открытый вопрос владельцу:** список семян (5 выше) — годится, или добавить/убрать мыслительный скил? *(Здесь и остановились — пункт большой, перенесён в новую сессию.)*

**D — default-deny матчер = `*`** (стена видит ВСЕ инструменты по сути, не по имени; урок F1 PowerShell мимо Bash; регистрация `*` в settings.json — шаг владельца). Совет: принять.

**E — указатель шага: линейный счётчик** (просто, для прямого плана). НЕ покрывает «волны» (под-план раскрывается, D6/OQ1) — для ветвления нужно дерево указателей. Совет: линейный сейчас, волны — в Машину 3 (роутер). *Спросить владельца: линейный сейчас или сразу волны.*

**F — авто-аудит дверей (P15-b):** перечислить все инструменты, непокрытый стеной → флаг (забытый канал как класс). Совет: принять.

**G — сверка план↔журнал (P25-d):** каждое журнальное действие обязано иметь шаг плана; сирота → флаг владельцу. Совет: принять.

После C/D/E/F/G — все A–G финальны → внести в чертёж Машины 2 (`[РЕШЕНИЕ A–G]` обновить под итог) → затем сборка Машины 2 по TDD (по разрешению владельца).

---

## ПОРЯДОК ДЕЙСТВИЙ НОВОЙ СЕССИИ
1. Прочитать ЭТОТ файл целиком + (по необходимости) исходники выше — через Read, не по памяти.
2. Кратко, простым языком, доложить владельцу: «Машина 1 собрана; решения A/B/заморозка зафиксированы; на очереди пункт C (семена) — вот вопрос…» и продолжить ревью с C по одному.
3. НЕ строить код Машины 2, пока владелец не подтвердит A–G.
4. Коммит/push/правка памяти — только по явному слову владельца.
