# Машина 6 — handoff в сессию РЕАЛИЗАЦИИ (дизайн + план + аудит закрыты)

> **Это готовый промт.** Скопируй блок «=== ПРОМТ ДЛЯ НОВОЙ СЕССИИ ===» целиком в новую сессию.

Кодовая фраза эпика: **«роутер-наставник»**.

---

## === ПРОМТ ДЛЯ НОВОЙ СЕССИИ ===

роутер-наставник — МАШИНА 6, фаза РЕАЛИЗАЦИИ. Дизайн + план + аудит плана ПОЛНОСТЬЮ
закрыты и закоммичены (без push). Твоя задача — построить М6 СТРОГО по плану,
соблюдая алгоритм скилов (нарушать ЗАПРЕЩЕНО). НЕ переписывай дизайн заново —
он утверждён владельцем и проаудичен; иди по плану реализации пакет-за-пакетом.

ПЕРВЫМ ДЕЛОМ прочитай два файла целиком:
  - План:  docs/superpowers/plans/2026-06-07-router-mentor-machine-6.md   (9 пакетов + 4b, bite-sized TDD, весь код в шагах, раздел «Конвенции»)
  - Спек:  docs/superpowers/specs/2026-06-07-router-mentor-machine-6-design.md  (§1-§11; §11 — журнал аудита)
И память machine-5-done (кодовая фраза «роутер-наставник») — состояние М5, на которой стоит М6.

1. ДЕРЕВО (вся работа здесь, НЕ в основном репо):
   путь:  c:\моя\проекты\портал crm\Документация\.claude\worktrees\brainrepo
   ветка: worktree-brainrepo
   ОПЕЧАТКА-ловушка: «Документация» — русские а/и.
   «parallel session lock» (держатель — прошлая сессия) → закрой второе окно Claude;
   замок снимается pid-liveness'ом, либо протухнет. Bash-git может быть залочен —
   git делай через PowerShell (см. квирки).

2. ГДЕ СТОИМ:
   - Дизайн М6 утверждён (escape + авто-снимок); М7 = канал «мозга» + растворение зоопарка + доска.
   - Spec + план + аудит плана закоммичены, **HEAD содержательный = `20c85ede`** (поверх может быть
     этот handoff-коммит — подтверди `git -C "<wt>" log -5 --oneline`). **НЕ ЗАПУШЕНО** (commit-not-push).
   - Регрессия baseline tools-only **2789 passed + 2 skip** — планка, ниже не опускать.
   - Реализация М6 **НЕ начата** (ни одного prod-файла М6 не создано).
   - Висящее в дереве (НЕ трогать): observer-шум (`.pii-counters.json`/`episodes-*.jsonl`/STATUS.md) +
     чужие untracked (`patch-*.mjs`/`setup-nm.mjs`/`commit-msg.txt`/`.scratch/`) — не наша зона.

3. ЧТО СТРОИМ (итог дизайна, детали — в плане):
   - **escape** (аварийный выход владельца): всплывающий вопрос → среда пишет одноразовый
     пропуск `kind:"floor_escape"` в `askuser-decisions-<sess>.jsonl`; привязка = ТОЧНОЕ совпадение
     канонической строки действия (`bash:<cmd>` / `write:<path>` / `mcp:<tool>:<args>`); одноразовый
     (PostToolUse-погашение). escape — **СКВОЗНОЙ** override: чтят его ВСЕ защитные гейты —
     стена М2 (`enforce-supreme-gate`, G-1 α: allow без продвижения указателя), пол М5
     (`floor-decide` Bash+Write), egress (`enforce-mcp-classification`). Покрывает весь floor-набор
     (решение владельца «разрешил → можно всё»).
   - **авто-снимок**: перед Bash-floor (`reset --hard`/`rm -rf` и т.п.) git-точка возврата
     (`git stash create` → `refs/floor-snapshots/<id>` + журнал `restore-points.jsonl`); чистое
     дерево → ref=HEAD (успех), реальная ошибка git → fail-close; откат ручной.

4. ПОРЯДОК ПАКЕТОВ (по плану, строго): 1 escape-grant → 2 toFloorEscapeRecord → 3 писатель
   floor_escape → 4 пол (escape Bash+Write, G-2 переписать тесты двери, G-5 токен, G-6 нет «override»)
   → **4b стена М2** (G-1 α сквозной escape) → 5 floor-escape-consume (one-shot PostToolUse) →
   6 egress-escape → 7 snapshot-decide → 8 enforce-snapshot → 9 интеграция+регрессия → Завершение.
   Новые модули: escape-grant / floor-escape-consume / enforce-floor-escape-consume /
   snapshot-decide / enforce-snapshot. Патчи (audit-context ОБЯЗАТЕЛЕН): floor-decide / enforce-floor /
   askuser-answer-parser / enforce-askuser-answer-parser / enforce-mcp-classification / enforce-supreme-gate.

5. ПЛАН СКИЛОВ — HARD-RULE, НАРУШАТЬ ЗАПРЕЩЕНО. Исполнение ИНЛАЙН. Суб-агенты / Task /
   Workflow / ultracode ЗАПРЕЩЕНЫ (ограничение владельца).
   Ведёт `superpowers:executing-plans`. На КАЖДЫЙ пакет:
   (1) `audit-context-building` — ОБЯЗАТЕЛЕН перед правкой существующего модуля (пропускать ЗАПРЕЩЕНО);
   (2) `superpowers:test-driven-development` — RED→GREEN, реальный expect;
   (3) focus-линза пакета + 1-2 рисковые по риску (`sharp-edges` для escape-каналов / корректность для пола) — не вслепую;
   (4) `superpowers:requesting-code-review` ИНЛАЙН (суб-агент запрещён → самопроверка против плана + спека);
   (5) `superpowers:verification-before-completion` — без свежего прогона «готово» НЕ говорить;
   (6) `regression` ≥ **2789 passed + 2 skip**.
   `superpowers:systematic-debugging` при ЛЮБОМ непредвиденном красном (НЕ угадывать).
   Финал — `superpowers:finishing-a-development-branch` (пуш ТОЛЬКО по слову владельца «пуш»).

6. ЖЁСТКИЕ ПРАВИЛА: commit-not-push (пуш ТОЛЬКО «пуш»); эпик в памяти + spec/план/handoff в worktree,
   НЕ в основном CLAUDE.md (worktree-эксцепшн); владельцу — простым языком, код/память — технически;
   активация хуков в settings.json — шаг ВЛАДЕЛЬЦА (до неё новые хуки инертны); **дыр не делать**
   (решение F-4: не плодить боковые каналы мимо гейтов, не ослаблять детекторы); каждый ответ:
   1-я строка «экономия:…», 2-я «coverage:…».

7. КВИРКИ (проверены сессиями дизайна):
   - vitest ОДНОЙ АБСОЛЮТНОЙ командой, без cd и без && :
     node "<wt>\app\node_modules\vitest\vitest.mjs" run --root "<wt>\app" --config "<wt>\app\vitest.config.tools.mjs" [фильтр] --reporter dot
   - git через PowerShell, БЕЗ переменных, по одной команде с литеральным путём:
     git -C "<wt>" add <files>  ; затем  git -C "<wt>" commit -F "<wt>\.scratch\msg.txt"
     («Can't find lefthook in PATH» — шум.) **`git restore` НЕ в whitelist PowerShell-гейта** (default-deny) —
     для отката рабочей копии: `git -C "<wt>" show HEAD:<path>` (readonly разрешён) → перезаписать файл Write-tool'ом.
   - Гейт АКТИВЕН: цепочки (&&/;/|) с мутацией → по одной команде; `>`/`>>`, rm/mv/Remove-Item → блок;
     git commit/push/clean → approve владельца (но commit идёт через PowerShell — Bash-гейт не матчит);
     node сужен (tools/<file>.mjs + vitest-runner + node --version). echo/`;`-цепочки → default-deny.
   - tdd-gate: правка prod-файла `X.mjs` без RED-теста в **`X.test.mjs`** → блок (тест первым, в СОБСТВЕННЫЙ test-файл модуля).
   - tdd-real-test-verifier: Edit тест-файла → new_string обязан содержать it( + expect( + строковый
     литерал-basename правленого prod-модуля; it.each( НЕ распознаётся → плоский it(); новый тест-файл (Write) свободен.
   - ЗАПИСЬ В ПАМЯТЬ = ДВА охранника (per-turn): (а) активный скил `claude-md-management` (инвокируй
     `revise-claude-md` ПЕРЕД правкой памяти); (б) первая строка хода `coverage: direct:memory-sync`.
     Живой Layer-4 ИИ-судья иногда ЛОЖНО блокирует описание самой защиты → переформулируй НЕЙТРАЛЬНО
     (без триггеров «отключи хук»/«обход»/«rm»/«force-push»); НЕ обманывай судью (F-4=C): отказ→правка→заново→3 круга→эскалация.
   - enforce-coverage-verify (Stop): `coverage: skill:<имя>` принимается ТОЛЬКО если Skill реально
     инвокирован В ЭТОМ turn'е; если много действий после Skill — переключай на `direct:<role>` с обоснованием.
   - Baseline tools-only: **2789 passed + 2 skip**.

8. АУДИТ ПЛАНА УЖЕ СДЕЛАН (НЕ повторять, он в плане/спеке §11): G-1 α (escape сквозь стену М2 — Пакет 4b),
   G-2 (переписать блок тестов двери — Пакет 4 Step 4.4b), G-5 (точный токен в блок-сообщении пола),
   G-6 (нет «override» в floor-файлах), G-8 (канон egress детерминирован). Проверено ОК: экспорты совпадают,
   М1/М3/М4 не ломаются, общий канал askuser-decisions фильтр по type. Просто исполняй план.

9. СТАРТ: прочитай план + спек + память М5-done → подтверди дерево (`git -C "<wt>" log -5 --oneline`,
   vitest baseline 2789) → `superpowers:executing-plans` → Пакет 1 (escape-grant): RED → FAIL → impl → PASS → commit.
   После всех пакетов: память `project_router_mentor_machine_6_done.md` + MEMORY.md (два охранника);
   handoff владельцу на активацию (регистрация `enforce-snapshot` PostToolUse-после-floor +
   `enforce-floor-escape-consume` PostToolUse; патчи enforce-floor/askuser/mcp/supreme — активны после рестарта);
   пуш — по слову «пуш».

Кодовая фраза эпика: «роутер-наставник».

## === КОНЕЦ ПРОМТА ===

---

## Состояние на момент переезда (для контекста)

- **Дизайн-фаза М6 закрыта.** Артефакты (всё закоммичено, НЕ запушено):
  - Spec `docs/superpowers/specs/2026-06-07-router-mentor-machine-6-design.md` — финальная версия с аудитом (§11).
  - План `docs/superpowers/plans/2026-06-07-router-mentor-machine-6.md` — 9 пакетов + 4b, после аудита (G-1 α).
  - Этот handoff.
- **Цепочка коммитов дизайна (ветка `worktree-brainrepo`, без push):**
  - `d02932b0` — spec первичный
  - `47de8447` — spec правки факт-аудита (F1–F4/F-S1/F-S2/I1–I4), egress escapable (B)
  - `719648cd` — план реализации (9 пакетов)
  - `3fb7a051` — синк floor-escape-consume в спек
  - `20c85ede` — аудит плана: G-1 α (стена М2) + G-2/G-5/G-6/G-8 в спек+план
  - (+ коммит этого handoff поверх)
- Реализация М6 — **новая сессия по промту выше**. Регрессия-планка 2789 + 2 skip.
- Решения владельца зафиксированы в спеке §2 (Р-М6-1..5) + egress escapable (B, «разрешил → можно всё») + G-1 = вариант α.
