# Машина 6 — handoff в новую сессию (М5 закрыта + переаудичена; М6 = НОВАЯ фаза дизайна)

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

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

---

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

роутер-наставник — МАШИНА 6 (новый слой эпика). Машина 5 (несущий пол) ПОЛНОСТЬЮ
собрана, переаудичена и закоммичена. Твоя задача — спроектировать и построить Машину 6,
СТРОГО соблюдая алгоритм скилов (нарушать ЗАПРЕЩЕНО). М6 — это **НОВАЯ фаза дизайна**:
начни с `superpowers:brainstorming` → `superpowers:writing-plans`, НЕ продолжай план М5.

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

2. ГДЕ СТОИМ (HEAD = 849723bc):
   - Машины 1-5 собраны. Машина 5 (несущий пол, вето-до-плана) ЗАКРЫТА: пакеты 5-8
     (`24ce7b39..5d350b69`) + handoff `2925d063`.
   - Машина 5 ПЕРЕАУДИЧЕНА свежим взглядом (2026-06-07): 3 практичные правки качества по TDD,
     атомарные коммиты `9c3205ad` (F-1) / `7dd3a165` (F-3) / `849723bc` (F-6). F-5 закрыт как
     не-дефект. F-2 (память) обновлена. F-4 — решение владельца C (без кода, дыр не делаем).
   - Регрессия tools-only **2789 passed + 2 skip** (новый baseline). **НЕ ЗАПУШЕНО** (commit-not-push).
   - Висящее в дереве (НЕ трогать): observer-шум (`.pii-counters.json`/`episodes-*.jsonl`) +
     чужие untracked (`patch-*.mjs`/`setup-nm.mjs`/`commit-msg.txt`) — не наша зона.

3. ЧТО ТАКОЕ МАШИНА 6 (из spec §5 шов + §6 YAGNI — прочитать ОБА):
   - М5 ЭКСПОРТИРУЕТ для М6 (шов, spec §5): `classifyDestructive` (единый классификатор
     разрушительности) · жёсткий floor-список (non-escapable предикат) · API подписанта
     (`floor-signer`, подпись GREEN/печатей) · API критерия (`criterion_id` из sealed-плана +
     чтение по-критерийного GREEN).
   - М6 ПОТРЕБЛЯЕТ это и реализует (spec §6 «Не входит в М5 → М6/М7»):
     • авто-снимок состояния ПЕРЕД разрушительным действием (откат);
     • портативный normative-канал правок (чтобы правка нормативки/памяти не зависела от
       одной машины и одного гейта);
     • escape-механизм (легитимный аварийный выход — полная замена «двери владельца» М5);
     • растворение старых дисциплинарных хуков (router-gate / branch-switch /
       verify-before-push / script-watcher / tdd-gate / decomposition / self-debrief /
       rationalization / coverage) — свести зоопарк к новому ядру;
     • (доска видимости «кто на посту» — это М7, НЕ М6).
   - ВАЖНО: М6 — это про дизайн ЭТОГО набора. Начни brainstorming с вопроса «что из §6
     входит именно в М6, а что отложить в М7» (декомпозиция), затем спроектируй выбранное.

4. ПРОЧИТАТЬ ПЕРВЫМ:
   - Память: topic-файл `project_router_mentor_machine_5_done.md` (полное состояние М5 +
     блок «Пост-аудит правки» + решение F-4=C) — через кодовую фразу.
   - Spec М5: `docs/superpowers/specs/2026-06-07-router-mentor-machine-5-floor-design.md`
     — §5 шов М5↔М6 + §6 YAGNI (что отложено в М6/М7) + §7 остаточные пределы (~0.5%
     неустранимо; абсолют ключа — только HSM/YubiKey, это v4.2-фаза).
   - План М5: `docs/superpowers/plans/2026-06-07-router-mentor-machine-5-floor.md` (как
     строился пол — образец дисциплины пакетов).
   - Реестр замечаний эпика: `docs/superpowers/plans/2026-06-05-brain-reengineering-remarks-v2.md`.

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

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

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 commit через PowerShell, БЕЗ переменных, по одной команде с литеральным путём:
     git -C "<wt>" add <files>  потом  git -C "<wt>" commit -F "<wt>\.scratch\msg.txt"
     («Can't find lefthook in PATH» — шум.)
   - Гейт АКТИВЕН: цепочки (&&/;/|) с мутацией → по одной простой команде; `>`/`>>` redirect,
     rm/mv/cp/Remove-Item → блок; git commit/push/clean → требуют approve владельца (но commit
     идёт через PowerShell — Bash-гейт его не матчит); node сужен до tools/<file>.mjs +
     vitest-runner + node --version. echo/`;`-цепочки → default-deny (запускай команды по одной).
   - tdd-gate: правка prod-файла без предшествующего RED-теста ЕГО *.test.mjs → блок (тест первым).
   - tdd-real-test-verifier: Edit тест-файла → new_string обязан содержать it(+expect(+строковый
     литерал basename prod-модуля, правленого В ЭТОЙ сессии; it.each( НЕ распознаётся → плоский it();
     новый тест-файл (Write) свободен от coverage-требования.
   - ЗАПИСЬ В ПАМЯТЬ = ДВА охранника (per-turn): (а) `enforce-normative-content-rules` требует
     активного скила `claude-md-management` В ЭТОМ ЖЕ turn'е (инвокируй `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-body возвращается как user-сообщение и сдвигает
     границу turn'а для Stop-скана → если в ходе много действий после Skill, хук может «не увидеть»
     инвокацию; тогда переключай coverage на `direct:<role>` с обоснованием.
   - Baseline tools-only: **2789 passed + 2 skip** (150 файлов passed + 1 skip).

8. ХВОСТЫ М5 (НЕ блокируют М6, можно закрыть позже):
   - Активация владельцем: регистрация в `.claude/settings.json` (enforce-floor +
     floor-manifest-check + enforce-reconcile + safe-baseline + llm-judge-обёртки) +
     ключ подписанта вне окружения контроллера; сперва тихий режим, затем hard-block.
   - 8.2 `enforce-reconcile.main()` — пустой каркас; второй такт Δ3 заработает только когда
     владелец/живая обёртка дадут reader журнала намерений (чистые функции готовы+тесты).
   - F-7 (rm -r без -f = не floor) / F-8 (snos БД через psql = suspicious не floor) —
     дизайн-выборы политики floor; трогать только по явному слову владельца.

9. СТАРТ: прочитай память М5-done + spec §5/§6/§7 → подтверди tree (git -C "<wt>" log -1
   --oneline → 849723bc; vitest → 2789) → `superpowers:brainstorming`: первый вопрос владельцу —
   «декомпозиция §6: что входит в М6, что отложить в М7?» (по одному, простым языком) →
   дизайн → одобрение → spec → writing-plans.

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

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

---

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

- **Машина 5 закрыта + переаудичена.** HEAD `849723bc`. Не запушено (commit-not-push).
- Память М5 актуальна: `project_router_mentor_machine_5_done.md` (+ блок пост-аудита + F-4=C),
  индекс MEMORY.md обновлён (baseline 2789, +3 правки).
- Регрессия tools-only 2789 + 2 skip.
- М6 — новая фаза дизайна (brainstorming → writing-plans), не продолжение плана М5.
- Шов М5↔М6 и YAGNI-граница М6/М7 — spec §5/§6 (читать первым).
