# Машина 7 — BUILD-handoff #2 (после фолжа критического разбора ПЛАНА)

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

> Состояние: дизайн закрыт → критразбор спеки внесён → план написан → **независимый критический разбор ПЛАНА проведён, 8 находок (2 КРИТ / 1 ВЫС / 3 СРЕД / 2 НИЗ) внесены в план и спеку**. Всё закоммичено (commit-not-push). **Код НЕ строили.** Следующий шаг — сборка Фазы 1 (content-floor) инлайн TDD, но **ТОЛЬКО по команде владельца**. Этот файл — состояние на момент переезда сессии + готовый промт. Заменяет build-handoff #1 (тот указывал stale HEAD `8ba9a21c`).

---

## === ПРОМТ ДЛЯ НОВОЙ СЕССИИ (скопировать целиком) ===

роутер-наставник. Машина 7. Состояние: дизайн + критразбор спеки + план реализации + **критический разбор самого плана (8 находок внесены)** — всё закоммичено (commit-not-push). **Код НЕ строили.** НИЧЕГО НЕ ДЕЛАЙ САМ — прочитай, подтверди состояние, и **жди решения владельца** (ревью правок / старт Фазы 1 / правки).

1. ДЕРЕВО (вся работа здесь, НЕ в основном репо):
   путь:  c:\моя\проекты\портал crm\Документация\.claude\worktrees\brainrepo
   ветка: worktree-brainrepo  (ОПЕЧАТКА-ловушка: «Документация» — русские а/и)
   Подтверди состояние: `git -C "<wt>" log -5 --oneline` (git через PowerShell). Верхний коммит = ЭТОТ handoff#2 (`docs(m7): build-handoff #2`); содержательный фолж разбора плана — `475d381e` строкой ниже; если сверху есть ещё memory-sync-коммит — это норма.

2. ГЛАВНЫЕ ФАЙЛЫ (прочитать первыми):
   - Этот build-handoff #2 (раздел «ГДЕ СТОИМ» + «ЧТО ДАЛЬШЕ»).
   - Спека М7 (поправленная):  docs/superpowers/specs/2026-06-08-router-mentor-machine-7-design.md
     — §1 предпосылки П1/П2/П3, §4.1 правила 7/8, §5 (content-floor + PowerShell-строка), §6 (КАРТА/ЗАКОН), §13 (changelog критразбора + **addendum «Поправки разбора ПЛАНА»**).
   - План реализации:  docs/superpowers/plans/2026-06-08-router-mentor-machine-7.md
     — мастер фазы 0-8 + **Фаза 1 в полной TDD-детализации (Task 1.0–1.6, ОБНОВЛЁННЫЕ под разбор)** + §«Поправки разбора плана» (трассировка P-1..P-8 в Self-Review).
   - Память (опц.): запись по «роутер-наставник».

3. ГДЕ СТОИМ:
   - М1–М6 собраны (commit-not-push, baseline tools-only 2843 passed + 2 skip). Сейчас ВЫКЛЮЧЕНЫ — живёт v4-зоопарк.
   - М7 цепочка коммитов: дизайн 9e7ca7ef → критразбор спеки b98b1885 → план 8ba9a21c → handoff#1 eac1c45b → **фолж разбора плана 475d381e** → handoff#2 (этот файл, верхний коммит). Реализация НЕ начата.
   - Разбор плана (цепочка audit-context-building → sharp-edges → variant-analysis → systematic-debugging, заземление против реального кода М1–М6) нашёл 8 находок — все внесены:
     **P-1 (КРИТ)** «полный port BASH_HARD_BLACKLIST» был подмножеством → единый источник matchBashHardBlacklist (Task 1.0.5).
     **P-2 (КРИТ)** canonicalAction без ветки PowerShell → все PS = `write:`, escape неспецифичен, тест был ложно-зелёным → Task 1.2b.
     **P-3 (ВЫС)** PS-ветка пола проскакивала runtime/secret-страж (forge escape-гранта) → psProtectedWrite (Task 1.4).
     **P-4/P-5/P-6/P-7/P-8** — per-segment паритет / suspicious|=contentBlock / §12 CI-инварианты по фазам / список fail-CLOSE-подмножества / честная пометка scoped-скелета.
   - **Фаза 1 теперь безопасна к старту** (корень переезда P-1/P-2/P-3 закрыт в плане).

4. ЧТО ДАЛЬШЕ (план §«Граф фаз»): сборка по фазам 0-8, dependency-ordered.
   - **Фаза 1 (content-floor V1/V1-PS) — КОРЕНЬ**: §10 запрещает увольнять router-gate/powershell-gate до неё. Детально расписана с кодом (Task 1.0.5/1.1/1.2b/1.3/1.4/1.5/1.6).
   - Фазы 0,2-8 — scoped в плане, разворачиваются в bite-sized через `superpowers:writing-plans` при подходе. §12 CI-инварианты закреплены за фазами (план, «правило перехода между фазами»).
   - Исполнение — ИНЛАЙН через `superpowers:executing-plans` (субагенты/Task/Workflow ЗАПРЕЩЕНЫ владельцем). TDD RED→GREEN; `audit-context-building` ПЕРЕД правкой каждого существующего модуля; регрессия ≥ 2843+2 после каждой фазы; `systematic-debugging` при любом непредвиденном красном.

5. ЖЁСТКОЕ: commit-not-push (пуш ТОЛЬКО по слову «пуш»); владельцу — простым языком, код/память — технически; дыр не делать; каждый ответ 1-я строка «экономия:…», 2-я «coverage:…».

6. КВИРКИ (подтверждены М1–М7):
   - vitest — через Bash, ОДНА абсолютная команда:
       node "<wt>\app\node_modules\vitest\vitest.mjs" run --root "<wt>\app" --config "<wt>\app\vitest.config.tools.mjs" [фильтр] --reporter dot
   - git — через PowerShell, по одной команде, литеральные пути, БЕЗ переменных (PowerShell-гейт режет $var=). Коммит: `git -C "<wt>" commit -F "<wt>\.scratch\msg.txt"`. «Can't find lefthook in PATH» — шум.
   - worktree junction: пути от родителя «Документация» с префиксом `.claude/worktrees/brainrepo/...`.
   - settings.json Claude'у на запись/чтение закрыт (read-path-deny); реестр хуков — через Grep, не Read.
   - В рабочем дереве есть НЕ-наша грязь (observer/*.jsonl авто-регенерат + чужие patch-*.mjs / setup-nm.mjs / commit-msg / .scratch от прошлых сессий) — НЕ коммитить, не трогать.
   - <wt> = c:\моя\проекты\портал crm\Документация\.claude\worktrees\brainrepo

7. СТАРТ новой сессии: прочитай handoff#2 + спеку §13 (addendum) + план Фазу 1 (Task 1.0.5–1.6) → подтверди состояние (верхний коммит = handoff#2, фолж разбора = 475d381e ниже) → **СПРОСИ владельца, что делаем** (старт Фазы 1 / ревью / правки). **Сам не начинай.**

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

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

---

## Артефакты на `worktree-brainrepo` (commit-not-push, HEAD 475d381e)

- Спека М7 (поправленная + addendum разбора плана): `docs/superpowers/specs/2026-06-08-router-mentor-machine-7-design.md` — commits b98b1885 + 475d381e.
- План реализации (Фаза 1 обновлена под разбор): `docs/superpowers/plans/2026-06-08-router-mentor-machine-7.md` — commits 8ba9a21c + 475d381e.
- Дизайн-handoff (предыдущая фаза): `docs/superpowers/plans/2026-06-08-router-mentor-machine-7-design-handoff.md` — commit 9e7ca7ef.
- Build-handoff #1 (stale HEAD, заменён этим): `...-build-handoff.md`.
- Этот build-handoff #2.

## Карта правок разбора плана (для быстрой ориентации в плане)

| Находка | Severity | Где в плане | Где в спеке |
|---|---|---|---|
| P-1 единый источник blacklist | КРИТ | Task 1.0.5 + 1.1 + Task 1.6 §12-инвариант | §5 router-gate-строка, §12 M5, §13 addendum |
| P-2 canonicalAction PowerShell | КРИТ | Task 1.2b + escape-специфичность 1.5 | §5 PowerShell-строка, §13 addendum |
| P-3 PS forge-страж | ВЫС | Task 1.4 (psProtectedWrite) | §5 PowerShell-строка, §13 addendum |
| P-4 per-segment паритет | СРЕД | Task 1.3 (bashIsContentBlock) | §12 M5 |
| P-5 suspicious видит content | СРЕД | Task 1.1 (suspicious\|=contentBlock) | §12 M5 |
| P-6 §12 CI-инварианты по фазам | СРЕД | «правило перехода между фазами» | — |
| P-7 список fail-CLOSE-подмножества | НИЗ | Фаза 0 (scoped) | — |
| P-8 честная пометка scoped-скелета | НИЗ | Self-Review п.2/п.4 | — |

## Что НЕ сделано (ждёт владельца)

- Ревью внесённых правок / дополнительные правки.
- Старт сборки Фазы 1 (инлайн TDD по Task 1.0.5–1.6) — только по «старт Фазы 1» / «роутер-наставник».
- Фазы 0,2-8 bite-sized разворачивание — при подходе.
- Push — только по «пуш». (Сейчас всё локально, origin не трогали.)
