# Машина 4 (Судья) — дизайн

**Кодовая фраза возобновления:** `роутер-наставник` (Машина 4).

**Статус:** дизайн согласован с владельцем 2026-06-05 (через `superpowers:brainstorming`). Это полный дизайн Машины 4 ПЕРЕД планом реализации (`writing-plans` — следующий шаг). Код НЕ строим, пока не написан и не одобрен детальный план. **Само-аудит свежими глазами 2026-06-05** закрыл F1–F10 (фикс-сет — раздел в конце).

**На чём стоит:** Машины 1 (фундамент: журнал S1, подпись расписок, защита служебки), 2 (стена + замок плана + две печати + закрытая дверь), 3 (роутер: контракты скилов, граф узлов, машина охвата, движок, очередь) — собраны и проревьюены. Машина 5 (укрепление пола) — параллельна. Судья на runtime стыкуется с роутером (М3); на build-time собирается на тестовых планах после М1+М2+граф-из-реестра.

**Источники-предшественники:** мастер-карта `2026-06-03-router-mentor-master-roadmap.md` §«МАШИНА 4» (контракты K1–K7, функции A0–A3, усиления J1–J10) · `2026-06-04-router-mentor-m3-shape-and-k4-design.md` (K5) · `2026-06-05-router-conversational-input-and-emergent-catch-design.md` (гейт-1 два слоя, выходная 3-шаговая лесенка, K7).

---

## 1. Назначение и место

**Судья — критик, а не исполнитель.** Он не чинит и не строит — он выносит **мотивированные возражения** («не согласен вот с этим, потому что…») и пропускает/блокирует. Починку делает контроллер через стандартный конвейер (план-исправления → роутер → пере-суд).

Судья — **один судья в разных «шляпах»** (функциях), у каждой свой набор голосов и свой режим. Пять функций:

1. **Гейт-1** — приёмка спеки (продукта разговорной фазы).
2. **Гейт-2** — приёмка плана реализации.
3. **A2** — надзор за действиями во время стройки.
4. **Приёмка части** — однократная проверка качества готового куска по ходу стройки.
5. **Гейт-3** — приёмка собранного результата против цели (НОВАЯ функция, добавлена 2026-06-05; замыкает кольцо результат↔цель).

**Сквозные принципы судьи:**
- Слеп к рассуждениям контроллера и владельца и к живой переписке (иначе свалится в чужую логику).
- Никогда не переопределяет детерминированный пол (J9): «да» судьи не отпирает force-push / отправку секретов / необратимое. Обманутый судья = ограниченный ущерб, не катастрофа.
- Выносит возражения **с мотивировкой** (не голое «стоп»), чтобы можно было починить именно нужное.
- Принцип «умный не баран»: где сверяемо — механика ($0, не уболтать); где нет — рассуждение модели, обвешанное механическими проверками.

---

## 2. Унаследованные контракты (канон — аварийный блок мастер-карты §М4)

- **K1 (гейт-1/печать):** печать ставит ТОЛЬКО процесс одобрения гейта (ключ контроллеру недоступен); артефакт доводится до владельца. Замена снятой сверки D29.
- **K2 (A2/покрытие навыком):** «взял ли навык» — по фактическому журналу вызовов, не по тексту.
- **K5 (гейт-2):** судья судит план как БУДУЩЕЕ — проверяет наличие+конкретность критерия приёмки; слово «проверено» в плане за факт не принимает; реальное «проверено» = рантайм-сентинел (М5).
- **K6 (анти-откат):** монотонная зарубка (high-water-mark по seq журнала / номеру шага) ВНЕ откатываемого набора, **per-session_id** → ловит подмену на раннюю валидно-подписанную пару файлов (свежая сессия стартует с генезиса — отката там нет).
- **K7 (пре-мортем на Гейте-1):** отдельный обязательный слот вердикта «какие следствия решений НЕ закрыты?» — другая линза, чем полнота.
- **K3 → Машина 5** (консервативный `classifyBashCommand`), **K4 → Машина 3** (узкое Write-исключение в `decideMode`) — здесь не реализуются, упомянуты для полноты.

---

## 3. Функции судьи

### 3.1 Гейт-1 — приёмка спеки

**Когда:** контроллер объявил по спеке «готово» → запускается проверка-лесенка.

**Что проверяет:** не код (его нет) — а сам ДОКУМЕНТ: полон ли, здоров ли, нет ли дыр; служит ли цели.

**Лесенка (3 шага, любой не прошёл → стоп раньше):**
1. **Существование ($0, код, не ИИ):** все вопросы разговора отвечены (вопросы трекаются как слоты-id, R7 разговорной фазы) + обещанные навыки (из look-ahead-списка разговорной фазы) реально вызваны (по журналу — неподделываемому каналу, см. §9.1). Чистое «было/не было».
2. **Верность спеки (ИИ, роутер — М3):** готовая спека честно отражает сырые ответы владельца + одобренный разговорный план. Ловит «прошёл движения, написал своё».
3. **Полнота + пре-мортем (ИИ, судья — М4):** машина охвата (дыра/сирота/цикл) + линза K7.

**Что судья видит:** спека + цель + карточки задействованных навыков + карта узлов (справочно). Слеп к переписке/рассуждениям.

**Жёсткость:** судья может «не принять» и по своему уму (неполнота/пре-мортем), не только на механических дырах. **Блок не вечен:** не прошло → ко мне → план-исправления → роутер → пере-суд; 3 круга → к тебе, решаешь ты.

**Печать (K1):** ГО → **судья сам ставит печать** (ключ в его процессе, контроллеру недоступен). **Печать ставит владелец** только в двух случаях: 3-круговой тупик и **любой вопрос денег** (деньги распознаёт осторожный механический детектор, не «на глаз»). По умолчанию владелец **видит запечатанную спеку, но не вмешивается** (вмешивается, когда сам захочет).

**Возражения — с мотивировкой.** Призраки думающей части **не глушим подчистую** — оцениваем, в них бывают здравые зёрна.

### 3.2 Гейт-2 — приёмка плана реализации

**Когда:** контроллер составил план стройки (по запечатанной спеке), перед стройкой.

**Что проверяет:** план верно строит запечатанную спеку, строгий и проверяемый.

**Механический пол ($0, не голоса):** спека→план покрытие (каждый § покрыт хотя бы шагом) · резолв ссылок § · наличие якоря у критерия K5.

**Голоса (раздельно, всегда; см. §7):** Верность спеке · Проверяемость (K5) · Здравость плана · Риск исполнения (реальный аудит на риске) · Чёткость шага (расплывчатость + крупность). По триггеру: Деньги/необратимость · Атакующий (auth/безопасность).

**K5 (жемчужина Г2):** каждый ЗНАЧИМЫЙ шаг объявляет конкретный проверяемый критерий приёмки; «проверено» в тексте за факт не берём. **Значимость определяется осторожно** — сомнение → значим (критерий нужен); нельзя «разжаловать» реальный шаг в пустяк, чтобы проскочить K5. Чисто-механические микрошаги (создать пустой файл, прогнать линтер) — без критерия.

**Чёткость шага** критикует: (а) расплывчатые формулировки («сделать надёжным» → что именно?); (б) слишком крупные шаги (делает много / прячет под-решения / один критерий не покрывает → «разбей»). Возражение «разбей» → пере-планирование мельче → пере-печать.

**Процедура** (жёсткость / петля / печать / видимость / деньги) — **единообразна с Гейтом-1.** План читаем (не код) → владелец полноценный последний рубеж.

### 3.3 A2 — надзор за действиями

**Когда:** во время стройки, на каждое действие. Судья — редкий будильник; основную работу несёт механика.

**Механика ($0, без судьи):** стена (op+object матч — тот же инструмент, тот же навык, тот же объект) · журнал (навык реально взят K2, цепочка не схлопнута, **запланированное действие ПРОИЗОШЛО** — факт совершения, см. F7) · пол (необратимо-катастрофичное — глухой блок; прод/деньги — отдельная церемония с «да» владельца).

**NB (F7):** A2 механически подтверждает только, что плановое действие **совершено** (журнал). «Достигло ли оно намерения» — это уже не $0-механика A2, а проверка позже: критерий/М5 → приёмка части → Гейт-3.

**Судья просыпается только на двух поводах:**
- **Расхождение** (действие не легло чисто на шаг) → 1 голос, один проход: **Верность намерению шага** (это всё ещё планируемое — или реальный увод).
- **Разрушительная команда** (`rm`/`DROP`/`migrate`/push) → несколько голосов, раздельно: **Радиус/обратимость** (как далеко, откатимо, есть бэкап — реальный `differential-review`) + **Атакующий** (не смуглит ли наружу / не злоупотребление). Деньги/необратимость тут не отдельный голос — работа пола/церемонии.

**По ходу стройки владельца НЕ дёргают** на обычные обратимые действия. Необратимо-опасное: пол стопорит сам / прод-деньги — отдельная церемония. Владелец смотрит ПОСЛЕ (приёмка части / целого).

### 3.4 Приёмка части

**Когда:** по ходу стройки, на готовый кусок (код есть). **Однократная проверка, без петли, судья не надсмотрщик.**

**Механика ($0):** объявленный критерий части реально зелёный (тест + мутация, М5) · часть совпала со своими шагами плана (стена уже проверила).

**Голоса:**
- **Обычная часть — один лёгкий проход:** Корректность · Эффективность/простота · Грабли (код-footgun).
- **Рисковая/критичная/плотная — раздельные голоса + реальный аудит:** Радиус/тесты (`differential-review`) · Близнецы (`variant-analysis`) · Атакующий (auth/данные/ввод) · `audit-context-building` построчно на самых плотных.

**Спор по части НЕ зацикливаем** — откладываем на ворота целого (Гейт-3) и решаем там один раз.

### 3.5 Гейт-3 — приёмка результата (НОВОЕ)

**Зачем:** замыкает кольцо **результат ↔ цель** — «достигли ли цели», а не «шли ли по плану» (это A2). Без него цикл схлопывается (процесс охраняется идеально, а попадание в цель не подтверждается).

**Когда:** стройка закончена (последний шаг выполнен, тесты прогнаны), контроллер объявил «результат готов».

**Каскад из двух уровней:**
- **Приёмка части** (по ходу, см. §3.4) — технически, судья↔я, без петли.
- **Приёмка целого** (в конце) — полные ворота.

**Лесенка приёмки целого:**
1. **Механика ($0):** каждый объявленный критерий приёмки сопоставлен со своим **настоящим зелёным прогоном** (М5) + накопленные споры по частям подняты сюда.
2. **Судья (ум):** результат против цели — что не достигнуто / что вылезло (премортем по факту).
3. **Владелец (всегда):** финальное «принято» по **живой демо + отчёту**.

**Голоса (раздельно, всегда):** Достигнута ли цель (адвокат цели) · Премортем целого · Поведение vs цель (демо). На риске + раздельно: Атакующий целого · Радиус/целостность сборки · Близнецы.

**Жёсткость целого — как Г1** (механика блочит, ум может «не принять», блок не вечен, 3 круга → ты).

**Владелец судит ПОВЕДЕНИЕ, не код** (он не программист). Три корзины:
- **Видимое поведение** — судит владелец (по демо `verify`/`run`: «вводишь X → получаешь Y; цель была Z; совпало?»).
- **Показуемые гарантии** — судья инсценирует, владелец видит доказательство («попробовал подделать журнал — отбито»).
- **Невидимые внутренности** — машина (тесты+мутация) + судья ручаются, владелец **доверяет тестам**, не читает код.

**Демо честная (правило против подтасовки):** ведётся по объявленным критериям приёмки + ключевым сценариям ЦЕЛИ, **включая граничные и провальные**. **Предпосылка (F3, обязательна):** набор сценариев — включая граничные/провальные — обязан быть **перечислен в запечатанном артефакте (Гейт-1/Гейт-2)**; контроллер НЕ дозаполняет его на демо-времени. Без запечатанного набора сценариев правило полое → демо невалидно. «Объявленные критерии» (F9) берутся из **запечатанного плана** (K5).

**Финал всегда за владельцем:** даже при согласии судьи+контроллера владелец утверждает целое по демо+отчёту. При споре — демо+отчёт **плюс** по-пунктный расклад (замечание судьи + его довод + мой довод + где я передумал за 3 круга). Технический тупик приходит к владельцу **деловым выбором** (быстрее vs чище), не кодом. (Деньги-карвут Г1 здесь не нужен — владелец и так всегда в финале.)

**Терминальность (F10):** Гейт-3 ничего не авторизует «вниз» (стройки после него нет) → **печати-вниз у Гейта-3 НЕТ**; исход — «принято/не принято». Правила печати §6 относятся к Г1/Г2.

---

## 4. Вход судьи и независимость

**Две разные независимости (не путать):**
- **Независимость от НАС** (рассуждения контроллера/владельца, живая переписка, уговоры) — судье **НЕЛЬЗЯ**.
- **Богатство справочного материала** (карточки, граф, файлы навыков) — чем больше, тем независимее (судья сам проверяет, не верит нашей выжимке).

**Судья видит:**
- **ВСЕ карточки навыков** (не только задействованных) — чтобы ловить и «не закрыта нужда использованного навыка», и «надо было позвать навык, который не позвали».
- **Полный граф узлов + файлы навыков** в полном объёме (справочная библиотека; карточки — быстрый указатель, файлы — чтобы копнуть/сверить).
- **Цель** (приколочена как неизменный якорь, см. §11).
- На каждом гейте — соответствующий продукт (спека / план / результат).

**Не видит:** нашу переписку, мои/твои рассуждения, служебный шум. **Обрезка механическая (J4 — G3):** проза/рассуждения отсекаются на входе судьи **КОДОМ**, а не «по доверию» — слепота это механика, не обещание.

**Граница «судья ≠ исполнитель» при реальных запусках:** судья запускает только **читающие/рассуждающие** навыки — НИКОГДА мутирующие. Под-прогоны работают на ОГРАНИЧЕННОМ входе судьи (не на переписке) → запуски углубляют мысль, но не расширяют окно входа. **Уточнение (F5):** «никогда не мутирует» относится к под-навыкам, которые судья ЗАПУСКАЕТ (читают/рассуждают); собственная **печать** судьи — это его единственная разрешённая запись (власть ворот через ключ), не «мутация проекта». **Под пол (G4):** под-прогоны судьи (в т.ч. реальный аудит, читающий код) подчиняются полу — `read-path-deny` и пр.: не читают секреты/`.env`/чужие транскрипты даже ради аудита.

---

## 5. Лесенка проверки (где применима, Г1/Г3)

Сквозная 3-шаговая лесенка (из спеки разговорной фазы): **существование ($0, код) → верность (ИИ, роутер М3) → судья (ИИ, М4)**. Провал любого → стоп раньше. На Г2 эквивалент — механический пол + голоса. На приёмке части / A2 — механика + точечный судья.

---

## 6. Жёсткость, печать, реакция владельца

- **Ум блочит, но не вечно:** ИИ-вывод судьи может «не принять», но всегда есть выход к владельцу (3 круга → он).
- **Что блокирует vs что совет (A3 / J1 / блок C — G1):** граница «грубо vs качество» режется **ОБРАТИМОСТЬЮ.** **Фатальное = тяжёлое И необратимое → блок.** Обратимое / косметика / качество → **пропуск + совет владельцу**, не блок. Якорь-тест (§9.3) решает, кто МОЖЕТ блокировать (анкеровано); этот критерий решает, что ИЗ анкерованного реально блокирует (необратимое), а что идёт советом. Без него «ум блочит» переблокировал бы обратимое.
- **A0 — подсудный не контролирует ворота (G2):** ворота срабатывают **структурно** от состояния (запечатан/готово + стена М2), судью «не зовут по желанию» — без прохождения ворот стройка невозможна (нет печати → стена не пускает).
- **Печать:** судья сам печатает на ГО (ключ ему доступен, контроллеру — нет); владелец печатает при 3-круговом тупике и на деньгах. **Печать связывает ХЕШ ровно того содержания, что судья судил, атомарно с вердиктом (F4)** — зазора «одобрил X → подменили на X′ → печать» нет. Печать — **единственная разрешённая запись судьи** (власть ворот через ключ).
- **Перенос вейвера (F6):** замечание, которое владелец СНЯЛ (принял вопреки судье), помечается принятым и **не пере-блокируется на нижних воротах** — судья на Г2/Г3 не поднимает заново то, что владелец уже отвёл.
- **Видимость:** по умолчанию владелец видит, но не вмешивается; вмешивается по желанию.
- **Реакция владельца (block H):** при эскалации — по-пунктно (замечание + довод судьи + мой довод + где я передумал) + демо/отчёт для результата. Решение владельца после судьи = **финал, не пере-судится**; блок снимает только владелец.

---

## 7. Голоса (палитра + раскладка по функциям)

**Палитра (роль = угол взгляда):** Атакующий · Адвокат пользователя/цели · Корректность · Премортем · Полнота · Грабли · Деньги/необратимость · Простота/эффективность · Верность спеке/цели · Чёткость шага.

**«Несколько голосов» = РАЗДЕЛЬНО** (каждый угол — свой независимый проход, любой НЕТ → блок, журнал-дисциплина на каждый). **«Один проход» = СОВМЕЩЁННО.** Разнообразие берём **углами** (роли на сильной модели), не плоскими доп-моделями; Хайку не основа (он склонен к плоскому «вроде ок») — опционально дешёвым доп-голосом, безопасен под «любой НЕТ → блок» + якорь-тест. Якорь-тест работает в обе стороны: голос-призрак с безъякорным «НЕТ» демотится в совет, ворота не клинит.

**Раскладка:**

| Функция | Механика ($0) | Голоса |
|---|---|---|
| **Гейт-1** | — | 4 ядра раздельно, всегда: Полнота · Премортем (K7) · Адвокат цели · Корректность/здравость. + Деньги/необратимость по триггеру. (Атакующий/эффективность/грабли — НЕ берём: нет кода/поведения.) |
| **Гейт-2** | спека→план покрытие · резолв ссылок · якорь K5 | 5 голосов раздельно, всегда: Верность спеке · Проверяемость (K5) · Здравость плана · Риск исполнения (реальный аудит на риске) · Чёткость шага (расплывчатость+крупность). + Деньги/необратимость · Атакующий по триггеру. |
| **A2** | стена · журнал (K2) · пол | расхождение → 1 голос (Верность намерению); разрушительная команда → раздельно: Радиус/обратимость · Атакующий. |
| **Приёмка части** | критерий зелёный (М5) · совпад. с шагами | обычная → 1 лёгкий проход: Корректность · Эффективность/простота · Грабли. рисковая → раздельно: Радиус/тесты · Близнецы · Атакующий (+ audit-context построчно). |
| **Гейт-3** | критерии→реальные прогоны · споры по частям | 3 ядра раздельно, всегда: Достигнута ли цель · Премортем целого · Поведение vs цель (демо). на риске раздельно: Атакующий · Радиус/целостность · Близнецы. |

---

## 8. Как судья пользуется навыками (линзы → запуски)

**Решение: меняем линзы на реальные запуски.** Все думающие навыки судья реально гоняет, каждый под-прогон — в журнале. Чистая «линза-без-запуска» остаётся лишь для совсем мелкого, где запускать нечем. Остаётся ровно два сорта: **механический пол ($0)** + **реальные запуски (все в журнале)**. Серой непроверяемой зоны нет.

**Режим — по гейтам, не общим проходом** (реальный запуск имеет смысл, где есть что запускать И момент рисковый/дорогой):

| Функция | Режим |
|---|---|
| **Гейт-1** | Реальный, глубокий запуск думающих навыков **ВСЕГДА** (фундамент: «без нормального ТЗ результат ХЗ»). Код-аудита нет — кода нет. |
| **Гейт-2** | 4 ядра — всегда (рассуждение по тексту); реальный код-аудит существующего кода — на риске. |
| **A2** | Механика $0; реальный заход на разрушительной команде. |
| **Приёмка части** | Лёгкий проход по умолчанию; реальный аудит/тесты — на рисковых частях. |
| **Гейт-3** | Реальный запуск обязателен (демо + настоящие критерии) + премортем. |

---

## 9. Дисциплина судьи (1–5, жёстко; чтоб сам не халтурил)

1. **Реальный запуск по ЖУРНАЛУ (тот же K2, но на судью), ЖЁСТКО.** Где навык должен быть реально запущен — вердикт принимается, только если журнал показывает реальный под-прогон. Нет под-прогона → вердикт фейк, **не принимается**. Судья не над журналом — его проверяют журналом, которым он проверяет контроллера. **Защита от форжа (F1):** под-прогоны судьи фиксируются в канале, **неподделываемом контроллером** — запись под-прогона подписана ключом судьи (как печать) ЛИБО лежит в отдельном judge-only журнале. В общий журнал, куда пишет контроллер, доверять записи «судья прогнал X» НЕЛЬЗЯ — иначе контроллер дописал бы фейк-запись и подделал прилежность судьи.
2. **Структурные слоты + ОТДЕЛЬНЫЙ валидатор.** Вердикт несёт слот на каждую требуемую для гейта линзу; пустой/тривиальный слот → невалиден, ГО не выдаётся. Проверяет отдельный код, не сам судья.
3. **Якорь у каждого возражения.** Возражение указывает якорь (§ спеки / нужда карточки / имя теста / проваленный критерий / наблюдение). Анкерованное → может блокировать; безъякорное → авто-в-совет (не блокирует, не глушится).
4. **Оценщик постфактум (D31).** Отдельный — сверяет прошлые вердикты судьи (и роутера) с тем, что вылезло ниже (на Г3 / у владельца). Систематическую халтуру ловит по следу.
5. **Счётчик халтуры.** Частота голых ГО / тонких вердиктов / пропусков линзы → флаг.

Отвергнуто как призраки: судья сам оценивает свою тщательность · строгий промпт «думай тщательно» · мета-судья в реальном времени.

---

## 10. Премортем (думающая часть)

1. **Метод — направляемый по КЛАССАМ провала**, не вольный. Проходит фиксированный набор общих классов и по каждому спрашивает «что от наших решений тут не закрыто?»: **Техника · Стык · Пользователь · Будущее изменение · Злоупотребление · Деньги/необратимое.** Это перенос урока проекта (классы до перечисления дыр). **Классы — общая карта видов провала, НЕ растущий список прошлых косяков** (последнее отвергнуто как баран).
2. **Якорь премортема = решение-источник (§).** Хоть провал в будущем — находка указывает на конкретное решение/§, создающее риск → анкерована → может блокировать. «Вообще тревожно» без источника → в совет.
3. **Глубина по ставке.** Высокая (Г1/Г3): по каждому классу копаем, пока новые не иссякнут (с потолком кругов). Низкая: один проход.
4. **Своя полоса:** премортем = НЕназванные следствия решений; полнота = названные-но-незакрытые нужды; грабли = легко применить неправильно. Не дублируют.

---

## 11. Пять механических усилений + K6

1. **Якорь у возражения** (см. §9.3) — механическая граница «находка vs призрак».
2. **Цель приколочена** — исходная цель пинится неизменным якорем, судья меряет против неё на каждом гейте (анти-дрейф «цель → мой пересказ»).
3. **Спека → план полностью** (Г2) — каждый запечатанный § покрыт хотя бы одним шагом (ловит «план выкинул кусок»).
4. **Критерий реально прогнан** (Г3) — каждый объявленный критерий сопоставлен со своим настоящим зелёным прогоном (ловит «объявили, не выполнили»).
5. **Страж карточки** — прежде чем опираться на карточку, она есть + (для чужих) хеш сходится; иначе судья громко помечает «сужу вслепую».

**K6 (анти-откат):** монотонная зарубка (max seq журнала / max номер шага) живёт **в OS-хранилище ключей (рядом с ключом печати)** — контроллеру недоступно, не откатывается вместе с журналом. Зарубка **per-session_id (F2)** — глобальная дала бы ложные срабатывания между сессиями; свежая сессия стартует с генезиса (отката там нет — это не обход). При проверке номер меньше виденного в этой сессии → откат → блок.

---

## 12. Машинерия

- **Апелляция (C-12):** структурное → ко мне → план-исправления → роутер → пере-суд; **3 круга НА ОДНО несогласие (F8)** → к владельцу. Деньги/«не тот дух» → сразу к владельцу. Судья пере-судит **исправленный материал** (не мои доводы — сухой канал, анти-инъекция). Счётчик кругов — в журнале (не подделать). Классификация «деньги» — детерминированно-осторожная.
- **Пол:** судья **не отпирает** необратимое (J9); fail-closed на разрушительном, fail-open на обратимом (J1).
- **Правила судьи — в защищённом файле** (J6), контроллер не смягчит. **Правка кода самого судьи = высший ярус** (полная церемония + «да» владельца; исполняется закоммиченная версия, не правка из рабочей копии).
- **Лог вердиктов** — каждый append-only в журнал (J8).
- **Здоровье судьи (J5):** упал/деградировал → ГРОМКО кричит на доске «пост пустой», никогда не пропускает молча. Доска «кто на посту» (М7) показывает статус судьи.
- **Судья НЕ работает (сбой/бюджет):** **деградация до пола + громкий крик.** Механика (стена/журнал/пол/охват/якоря) держит; думающий слой временно отсутствует и об этом ОРЁТ. **Катастрофу пол блокирует без судьи** (force-push/секреты/прод — детерминированно). Работа не встаёт колом, владелец видит «судья не на посту» и может паузу.

---

## 13. Честный потолок (~0.5%, заложен сознательно)

Заставить **реально запустить и заполнить слоты** — механика (журнал + слоты + якорь). «Гениально ли подумал ВНУТРИ заполненного слота» — не гарантируешь. Это добивают оценщик постфактум (D31) + владелец. Призраки премортема — оцениваем, не глушим (бывают зёрна). Судья настолько хорош, насколько честны карточки навыков (предел честности C-9) — слот «полнота» видит только названное; пре-мортем — сеть для неназванного, но это уже ум → призраки.

---

## 14. Границы — что НЕ в Машине 4

- Печать-механизм (`freezeArtifact`/`freezePlan`) — примитив Машины 2; судья (гейт) лишь триггерит его через канал одобрения.
- Защитный пол (секреты/runtime/force-push) — Машины 1/5, независим от судьи.
- Неподделываемый GREEN + мутация — Машина 5.
- Роутер (выбор навыка), стена (матч действия) — Машины 3/2.
- Live-wiring (регистрация хуков в settings.json, реальные вызовы моделей вместо моков, режим D28 «сперва тихо») — шаг владельца + последняя фаза.

---

## 15. Решённые открытые вопросы

- **Хайку в консенсусе:** разнообразие берём углами, не Хайку; Хайку — опциональный дешёвый доп-голос (безопасен под «любой НЕТ → блок» + якорь-тест). Основа — углы.
- **Где живёт зарубка K6:** OS-хранилище ключей.
- **Линзы vs запуски:** меняем линзы на реальные запуски (журнал-покрыты), режим — по гейтам.
- **Жёсткость дисциплины #1:** жёстко (нет под-прогона → вердикт не принимается).
- **Судья-down:** деградация до пола + громкий крик.
- **Г2 глубина:** 4 ядра-голоса всегда (рассуждение по тексту дёшево), реальный код-аудит — на риске.

---

## Само-аудит спеки (2026-06-05) — фикс-сет F1–F10

Свежими глазами (forget-context adversarial-разбор), реальные огрехи по факту. **Ядро архитектуры цело** (5 функций, голоса, дисциплина, линзы→запуски, премортем, 5 усилений — логически непротиворечивы); находки — **незащищённые предпосылки и неуказанный scoping**, не сломанная логика.

- **F1 🔴** — дисциплина #1 подделываема через общий журнал → под-прогоны судьи в неподделываемом канале (§9.1).
- **F2 🔴** — зарубка K6 без scoping → **per-session_id** (§2 / §11).
- **F3 🔴** — анти-подтасовка демо опиралась на непровозглашённую предпосылку → набор сценариев (вкл. провальные) **запечатан на Г1/Г2** (§3.5).
- **F4 🟡** — TOCTOU судья→печать → печать связывает **хеш ровно судимого**, атомарно (§6).
- **F5 🟡** — «не мутирует» vs «печатает» → печать = единственная запись судьи (§4 / §6).
- **F6 🟡** — снятое владельцем **не пере-блокируется** ниже (§6).
- **F7 🟡** — «сделано=шагу» в A2 = **факт совершения**, не достижение цели (§3.3).
- **F8 🟡** — 3 круга апелляции **на одно несогласие** (§12).
- **F9 🟢** — источники названы: критерии из запечатанного плана, навыки из look-ahead (§3.1 / §3.5).
- **F10 🟢** — Гейт-3 **терминален**, печати-вниз нет (§3.5).

### Проверка против 26 хуков коверидж-таблицы (2026-06-05)

Построчно. **Дыр покрытия 26 пунктов НЕТ:** прямые точки Машины 4 — **#21** (TodoWrite липовый скил → A2/K2, усилен F1) и **#24** (llm-judge → Судья A–I, J1–J10); со-покрытие/зависимости (#6/#16/#17/#18/#25) целы; конфликтов с чужими машинами нет (#19 «счётчик халтуры» считает штамповку судьи, не чтения — не возврат safe-baseline; #20 «крупность шага» Г2 ≠ скрытое дробление сессии — разные вещи). Внутренние пропуски самой Машины 4 закрыты тут же:

- **G1 🔴** — пропущен критерий блок-vs-совет (A3/J1) → §6 (фатальное = тяжёлое И необратимое → блок; обратимое/качество → совет).
- **G2 🟡** — A0 (подсудный не контролирует ворота) → §6.
- **G3 🟡** — J4 обрезка прозы названа **механической** → §4.
- **G4 🟡** — под-прогоны судьи **подчиняются полу** (read-path-deny, не читать секреты ради аудита) → §4.
- **O1 (наблюдение):** Машина 4 теперь **шире 26-таблицы** — Гейт-3 (приёмка результата vs цель), приёмка части, 5 усилений, K6 — новые возможности (ворота качества/полноты), а не хук-преветеры. Строку «4» мастер-коверижда (#21/#24) при сборке пометить «расширена».

---

## СЛЕДУЮЩИЙ ШАГ

По одобрению владельцем этого документа — детальный TDD-план реализации Машины 4 через `superpowers:writing-plans`, затем сборка (`subagent-driven-development`), затем live-wiring (шаг владельца + режим D28). Параллельная сессия достраивает Машину 3 (код `tools/*.mjs`) — пересечения по файлам нет (там код, здесь спека).
