13 KiB
Handoff — М7 Фаза 8 «Растворение зоопарка + переезд» (настроить → тест → бой)
Дата: 2026-06-09 · Кодовая фраза: «роутер-наставник».
Ветка: worktree-brainrepo · HEAD: 487a6f1d · commit-not-push (origin не тронут).
Дерево: c:\моя\проекты\портал crm\Документация\.claude\worktrees\brainrepo (далее <WT>).
Зачем эта фаза (формулировка владельца)
У владельца постоянные глюки в живой работе из-за старого v4-зоопарка хуков. Цель: растворить зоопарк,
настроить вместо него машины М1–М6, протестировать «всё работает» на ветке брейнрепо, затем выкатить в бой
(merge в main по слову «пуш»). Это ровно М7 Фаза 8 (дизайн docs/superpowers/specs/2026-06-08-router-mentor-machine-7-design.md §9/§10/§12).
Что сделано этой сессией (A1 — закрыт)
A1 (🟦-проводка судьи М4 на Гейт-2) реализован TDD, инертен ($0), commit-not-push:
tools/enforce-judge-gate.mjs:parseJudgeResponse(fail-closed) /extractGate2Product(Write-only детект планаdocs/superpowers/plans/*.md) /callJudgeModel(async транспортcallAnthropicAPI/Sonnet заROUTER_LLM_KEY; unavailable ≠ malformed) /runJudgeGateasync (судья недоступен → degraded-allow + WARN, не block-all — урок v4) /runJudgeTurn+main(inert=$0 / shadow=прогон+лог J8+allow / live-block=прогон+лог+decide).- Коммиты
0c6f084f..e8958155+ спека/план44c194bc/843097c0/cfca7ecf+ активационная заметка487a6f1d. - Регрессия tools-only 3323 passed / 2 skipped / 0 failed. Движок М4 / стены / пол / нормативка / CLAUDE.md — НЕ тронуты.
- Активация A1 (твои 🔴-шаги) —
docs/superpowers/runbooks/2026-06-09-A1-judge-gate2-activation.md. Войдёт в общий переезд Фазы 8, отдельно включать не нужно.
Дорожная карта (приоритет — твой)
- Хвосты: что осталось ДО настройки всех машин (ПЕРВЫЙ приоритет, read-only аудит — безопасно).
- Настройка машин на брейнрепо (регистрация + увольнение зоопарка — твой settings.json).
- Тест «всё ок» (тест-гейт §9.2).
- Выкат в бой (по «пуш» → merge в main).
⚠️ Жёсткий порядок (иначе вместо починки — дыра)
- §10 V1/V1-PS (БЛОКЁР):
router-gateиpowershell-gateснимаются только ПОСЛЕ переноса их полного чёрного списка (≈20 классов Bash + весь PowerShell) в пол М5 (content-floor, правило 8). Раньше — откроются все эти команды. - Правило 7 / L6 escape-survivability: остающиеся content-стражи (
read-path-deny/mcp-classification/normative-content-rules) обязаны читать escape-грант М6, иначе аварийная кнопка владельца работает лишь частично (DOC-1). - Тест-гейт §9.2 (обязателен до переключения): регрессия tools-only ≥ 2843 passed + 2 skip; per-machine smokes (каждая М1–М6 блокирует свой класс, fail-CLOSE, громко); интеграционные smokes (escape сквозной; манифест кричит при снятом страже; ЗАКОН требует ключ, КАРТА — нет; дисциплина fail-CLOSE+громко; журнал-факт не обходится текстом). Зелёное по каждому пункту.
- Big-bang без обкатки — ПРИНЯТ владельцем (§11), но рекомендация дизайнера: короткий тихий период D28 (shadow) у судьи М4 перед hard-block.
Шаг 1 — аудит готовности (с него начинает новая сессия)
Read-only: пройти §12 дизайна пункт-за-пунктом и сверить «собрано в коде / осталось» по факту (tools/*.mjs). Критично подтвердить в первую очередь:
- М5 content-floor port (
matchBashHardBlacklist/BASH_HARD_BLACKLIST→ пол; PowerShell-набор; floor-write-guard на содержимое node/PowerShell-команд) — блокёр увольнения router-gate/powershell-gate. - escape-survivability — читают ли
read-path-deny/mcp-classification/normative-content-rulesescape-грант. - ИИ-проводка судьи (live llmCall в
enforce-judge-gate— A1 шов готов; нужен реальный транспорт в live-block + ключ/флаг владельца). - PostToolUse skill-журналер (SE-K), доска «кто на посту», манифест-самопроверка (
floor-manifest-check— уже есть, §7), normative-канал КАРТА/ЗАКОН. - Память (M1–M6 *_done.md в
memory/) говорит «Фазы 0–7 собраны» — но это надо верифицировать по коду, не на доверии. Итог Шага 1 — точная карта остатка: «вот что достроить до безопасного увольнения зоопарка».
Источники истины (читать)
- Дизайн М7:
docs/superpowers/specs/2026-06-08-router-mentor-machine-7-design.md(§5 карты покрытия / §9 план переезда / §10 список увольнений / §11 пределы / §12 инвентарь для writing-plans). - Манифест регистрации (9 хуков М1–М6):
tools/floor-manifest-check.mjs→DEFAULT_REQUIRED_HOOKS:enforce-floor(М5 пол, PreToolUse) ·enforce-supreme-gate(М2 стена, PreToolUse) ·enforce-normative-content-rules·enforce-read-path-deny·enforce-mcp-classification·enforce-judge-gate(М4) ·enforce-snapshot(М6, PreToolUse после пола) ·enforce-floor-escape-consume(М6, PostToolUse) ·enforce-skill-journaler(М1, PostToolUse). - §10 увольнение (опасный порядок!): старая защита
router-gate/powershell-gate/runtime-write-deny/verify-before-push/verify-record/branch-switch; старый судьяllm-judge-per-tool/-response-scan; старый роутерrouter-prehook/router-tool-gate/router-stop-gate/router-embedding-warmup; поглощённая дисциплинаmemory-coverage/coverage-verify/tdd-gate/tdd-real-test-verifier/self-debrief-detector/rationalization-audit/todowrite-skill-verifier/prompt-injection; мёртвый грузdecomposition-detector/safe-baseline-metering/parallel-session-lock; субагентныеsubagent-return-scanner/subagent-prompt-prefix; Класс 6findOverride/findOverrideAttempt. Остаются:observer-stop-hook/cost-stop-hook/askuser-cosmetic-detector+ content-стражи М5. - Реестр хвостов эпика:
docs/superpowers/plans/2026-06-08-router-mentor-loose-ends-registry.md(раздел A — активация). - A1 активация:
docs/superpowers/runbooks/2026-06-09-A1-judge-gate2-activation.md.
Квирки среды (экономят время)
- vitest — через Bash tool (PowerShell-гейт режет
npx/node):npx vitest run --root "<WT>/app" --config "<WT>/app/vitest.config.tools.mjs" <фильтр> --reporter dot. БЕЗcd, абсолютный--root. - git — через PowerShell
git -C "<WT>" ..., отдельными командами (безif), короткие ASCII commit-msg.git --no-verifyзапрещён гейтом (G5).--%/Write-Outputрежутся PowerShell-гейтом — не использовать. - TDD-gate / real-test-verifier: новый describe в тест-файле добавлять так, чтобы правка содержала
it+expect(надёжнее —Writeтест-файла целиком). - settings.json + keychain — закрыты Claude'у (рубильники владельца). Память харнесса (
memory/) требует активногоclaude-md-management+coverage: direct:memory-sync. - «Can't find lefthook in PATH» — ШУМ, игнор. CLAUDE.md в worktree НЕ трогать (чужая зона).
- Субагенты / Task / Workflow — ЗАПРЕЩЕНЫ (всё инлайн). commit-not-push (пуш ТОЛЬКО по слову «пуш»). 1-я строка ответа «экономия:…», 2-я «coverage:…».
- Цепочка скилов для несущего кода (высылать на согласование ДО старта):
brainstorming → audit-context-building → sharp-edges → variant-analysis → writing-plans → executing-plans (инлайн TDD, наблюдаемый RED) → verification-before-completion → regression. НЕrequesting-code-review. Для read-only аудита — без adversarial-скилов.
=== ПРОМТ ДЛЯ НОВОЙ СЕССИИ (скопировать целиком) ===
роутер-наставник. Продолжаем эпик — М7 Фаза 8 «растворение v4-зоопарка + переезд». У владельца постоянные глюки в живой работе из-за старого зоопарка хуков; цель — растворить его, настроить машины М1–М6, протестировать на ветке брейнрепо, выкатить в бой. НЕ приступай к коду сразу: прочитай состояние, начни с аудита хвостов, согласуй со мной цепочку скилов перед несущим кодом. Всё инлайн, субагенты/Task/Workflow ЗАПРЕЩЕНЫ.
ДЕРЕВО: c:\моя\проекты\портал crm\Документация\.claude\worktrees\brainrepo, ветка worktree-brainrepo. Git — ТОЛЬКО PowerShell (git -C "<wt>" ...), литеральные пути. Сверь верх: git -C "<wt>" log -10 --oneline (верх — 487a6f1d A1 activation note; ниже A1 0c6f084f..e8958155).
ПРОЧИТАЙ ПЕРВЫМИ: docs/superpowers/plans/2026-06-09-phase8-migration-handoff.md (этот handoff) + docs/superpowers/specs/2026-06-08-router-mentor-machine-7-design.md (§5/§9/§10/§12) + tools/floor-manifest-check.mjs (DEFAULT_REQUIRED_HOOKS) + docs/superpowers/plans/2026-06-08-router-mentor-loose-ends-registry.md.
ПЕРВЫЙ ПРИОРИТЕТ (Шаг 1, read-only, безопасно): аудит готовности Фазы 8 — пройти §12 пункт-за-пунктом, сверить по коду tools/*.mjs «собрано / осталось». Критично подтвердить ПЕРВЫМ: (1) М5 content-floor port (BASH_HARD_BLACKLIST + PowerShell в пол — БЛОКЁР увольнения router-gate/powershell-gate, §10 V1/V1-PS); (2) escape-survivability content-стражей (правило 7/L6); (3) ИИ-проводка судьи live; (4) skill-журналер / доска / normative-канал. Память *_done.md верифицировать ПО КОДУ, не на доверии. Итог — карта остатка «что достроить до безопасного увольнения зоопарка».
ДАЛЬШЕ (после аудита): достроить остаток (несущий код, инлайн TDD — ВЫШЛИ цепочку скилов на согласование ДО старта) → карты покрытия §5 → точный deployment-runbook (9 хуков М1–М6 + §10 увольнение + ключи/флаги) → тест-гейт §9.2 (регрессия ≥2843+2skip + per-machine + интеграционные smokes, зелёное по каждому) → переключение settings.json (шаг ВЛАДЕЛЬЦА) → откат наготове → бой (по «пуш» merge в main).
ЖЁСТКОЕ: commit-not-push (пуш ТОЛЬКО по «пуш»); 1-я строка «экономия:…», 2-я «coverage:…»; CLAUDE.md в worktree НЕ трогать; стены М2/М5/М4/М6 не ослаблять; нормативку не двигать; settings.json/keychain — шаг владельца; чужую грязь дерева не коммитить — стейдж своих файлов поимённо. vitest через Bash tool (PowerShell-гейт режет npx/node). Кодовая фраза: «роутер-наставник».