docs(router-mentor): G1 closure + phase 8 handoff 2

This commit is contained in:
Дмитрий
2026-06-09 10:32:47 +03:00
parent b92afad96c
commit 2c41971d88
2 changed files with 84 additions and 0 deletions
@@ -119,3 +119,26 @@ R-10 G6-адаптер (НЕ построен) · M4 think-layer 4 пункта
**Несущий остаток Claude = G1 (Гейт-3/подписанный-GREEN wiring) + G2 (манифест 9→11, решение).** Примитив подписи для G1 (`M5_GREEN`) готов.
Всё прочее — owner-активация (A-блок) и осознанно отложенное. §10-увольнение безопасно при G1 (для verify-before-push) и G2 (для coverage/todowrite); router-gate/powershell-gate — GO уже сейчас.
---
## G1 (Level A) — ПОСТРОЕН (2026-06-09, commit-not-push)
Цепочка скилов отработана полностью: `audit-context-building``sharp-edges``variant-analysis``writing-plans``executing-plans` (инлайн TDD, наблюдаемый RED) → `verification-before-completion`. План: `docs/superpowers/plans/2026-06-09-g1-gate3-verify-signed-green.md`.
**7 task-коммитов `1857773f..b92afad9`** на `worktree-brainrepo` (HEAD `b92afad9`), origin НЕ тронут:
- `1857773f` task1 — `RECEIPT_DOMAINS.VERIFY_PASS` (receipt-sign).
- `10885990` task2 — `verify-receipt.mjs` (`signVerifyReceipt`/`verifyReceiptSig`/`acceptVerifyReceipt`: sig + occurrence>0 + fingerprint-match).
- `0f20c944` task3 — `verify-gate-config.mjs` рубильник (`ROUTER_MENTOR_VERIFY_ENABLED`: OFF=inert$0 / ON+key=enforce / ON+no-key=fail-CLOSE).
- `93e516e6` task4 — producer pure `buildVerifyReceipt`.
- `9ce6041b` task5 — producer staged-fingerprint + I/O main (сам прогоняет сюиту, SE-G1-5).
- `2bd7efbe` task6 — consumer `enforce-verify-gate.mjs` (PreToolUse, fail-CLOSE + escape M6 + docs-only, fingerprint из реального `git diff --staged`).
- `b92afad9` task7 — `enforce-verify-gate` в `DEFAULT_REQUIRED_HOOKS` (9→10).
**Верификация:** vitest tools regression **3350 passed / 2 skipped / 0 failed** (167 файлов; свежий прогон 10:25:55), выше планки §9.2 ≥2843+2skip. +27 G1-тестов к baseline 3323.
**Решение реализации (deviation, обосновано):** verify-receipt пишется в ЕДИНЫЙ `~/.claude/runtime/verify-receipt.json` (НЕ session-scoped) — producer-CLI не имеет session_id из stdin как consumer-хук; свежесть держит fingerprint. Escape-гранты остаются session-scoped.
**§10 разблокировано:** `verify-before-push`/`verify-record` теперь увольняемы (замена = `enforce-verify-gate`). **GO/NO-GO таблица выше:** verify-before-push 🔴NO-GO→✅GO.
**Остаётся (owner / follow-on):** G2 (манифест coverage/todowrite 10→12 — строкой в A2); owner-активация A-блок (ключ подписанта + `ROUTER_MENTOR_VERIFY_ENABLED=1` + регистрация хуков + увольнение зоопарка §10 + shadow→block + «пуш»); Level B (per-criterion + мутация P18 через готовый `runCriterionGate`).
@@ -0,0 +1,61 @@
# Handoff #2 — М7 Фаза 8: аудит готовности ✅ + G1 (Level A) ✅ → дальше
**Дата:** 2026-06-09 · **Кодовая фраза:** «роутер-наставник».
**Ветка:** `worktree-brainrepo` · **HEAD:** `b92afad9` · commit-not-push (origin НЕ тронут).
**Дерево:** `c:\моя\проекты\портал crm\Документация\.claude\worktrees\brainrepo` (далее `<WT>`).
---
## Что сделано этой серией (2 эпика закрыты)
### 1. Аудит готовности Фазы 8 — ЗАВЕРШЁН (read-only, по коду)
Файл-якорь находок: `docs/superpowers/audits/2026-06-09-phase8-readiness-audit.md`. Скилы: `audit-context-building` (+`sharp-edges` по швам). Память `*_done.md` верифицирована ПО КОДУ.
- Контур М1–М6 собран на ~95%, криптоядра M1/M6 здоровы, швы M2/M4/M5 закрыты (C-1..C-11).
- **Блокёр №1 (content-floor port §10 V1/V1-PS) — закрыт в коде** (`floorDecide` Bash+PS, `matchBashHardBlacklist`/`matchPsHardBlacklist` полные P-1/V1-PS, `canonicalAction` PS-ветка P-2, `psProtectedWrite` P-3).
- escape-survivability подтверждён; транспорт судьи (`callAnthropicAPI`) есть; журналер/доска/normative-канал на месте; манифест полный (9 хуков).
- Найдено: **G1** (verify→Гейт-3 не проведён живьём) — несущий; **G2** (coverage/todowrite журнал-K2 не в манифесте) — решение → в A2.
- §10 GO/NO-GO таблица: router-gate/powershell-gate GO; verify-before-push был NO-GO до G1.
### 2. G1 (Level A) — ПОСТРОЕН (commit-not-push)
Подписанный verify-receipt перед push, замещает подделываемый sentinel `verify-before-push`/`verify-record` (Класс 1 закрыт). План: `docs/superpowers/plans/2026-06-09-g1-gate3-verify-signed-green.md`. Цепочка скилов целиком (audit-context→sharp-edges→variant-analysis→writing-plans→executing-plans TDD→verification-before-completion).
- **7 коммитов `1857773f..b92afad9`** (см. файл-якорь §«G1 ПОСТРОЕН» — поимённо).
- Новые модули: `verify-receipt.mjs` / `verify-gate-config.mjs` / `produce-verify-receipt.mjs` / `enforce-verify-gate.mjs`; +`RECEIPT_DOMAINS.VERIFY_PASS`; +`enforce-verify-gate` в манифест (9→10).
- **Регрессия 3350 passed / 2 skipped / 0 failed** (vitest tools, выше §9.2 ≥2843+2skip).
- **Level B** (per-criterion + мутация P18 через готовый `runCriterionGate`) — осознанный follow-on; **Δ4 forge** (keychain-ключ) — HSM-scope.
- **Deviation (обосновано):** verify-receipt в едином `~/.claude/runtime/verify-receipt.json` (producer-CLI без session_id; свежесть держит fingerprint).
---
## Что осталось (карта остатка)
| Кусок | Кто | Заметка |
|---|---|---|
| **«пуш»** — merge G1 в main | владелец (слово «пуш») | через `finishing-a-development-branch`; origin сейчас чист |
| **A-блок активация** Фазы 8 | владелец | ключ подписанта (keychain) + `ROUTER_MENTOR_VERIFY_ENABLED=1` + `ROUTER_MENTOR_JUDGE_ENABLED=1` + регистрация хуков в settings.json (М1–М6 9 + verify-gate + coverage/todowrite = 12) + увольнение зоопарка §10 + shadow→block |
| **G2** манифест coverage/todowrite (10→12) | строкой в A2 | журнал-K2-версии готовы; кода Claude нет |
| **Level B** per-criterion + мутация P18 | follow-on (Claude) | `runCriterionGate`/`fingerprintFresh`/`greenSignaturesValid` уже стоят; дострой = живой mapping план→критерии + автоматизация мутации (часть = M4 think-layer / owner) |
| **Фаза 2 observer** (авто-правка нормативки) | owner-scope | требует owner-scoping (правка Pravila/Tooling — то, что стерегут М1–М6) |
**Жёсткие правила (без изменений):** commit-not-push (пуш ТОЛЬКО по «пуш»); 1-я строка «экономия:…», 2-я «coverage:…»; CLAUDE.md в worktree НЕ трогать (чужая зона); стены М2/М5/М4/М6 не ослаблять; нормативку не двигать; settings.json/keychain — шаг владельца; чужую грязь дерева не коммитить — стейдж своих файлов поимённо; субагенты/Task/Workflow ЗАПРЕЩЕНЫ (всё инлайн).
**Квирки среды:** vitest ТОЛЬКО через Bash tool (`npx vitest run --root "<WT>/app" --config "<WT>/app/vitest.config.tools.mjs" <фильтр> --reporter dot`, БЕЗ `cd`/pipe — router-gate режет); git ТОЛЬКО PowerShell `git -C "<WT>" ...` отдельными командами (без `if` — PS-гейт режет); коммит = `git add <файлы поимённо>` + `git commit -m "ascii"` (lefthook «not in PATH» — ШУМ, игнор); TDD-gate требует it+expect в правке тест-файла (надёжнее — Write тест-файла целиком); coverage-hook: `skill:` требует инвокации Skill В ЭТОМ ходе (иначе `direct:<role>`).
---
## === ПРОМТ ДЛЯ НОВОЙ СЕССИИ (скопировать целиком) ===
роутер-наставник. Продолжаем эпик — **М7 Фаза 8**. Предыдущая серия ЗАКРЫЛА: (1) полный read-only аудит готовности Фазы 8 (файл-якорь `docs/superpowers/audits/2026-06-09-phase8-readiness-audit.md` — контур М1–М6 на ~95%, блокёр content-floor port закрыт, найдены G1/G2); (2) **G1 (Level A) построен и верифицирован** — подписанный verify-receipt перед push (7 коммитов `1857773f..b92afad9`, регрессия vitest tools **3350 passed/2 skipped/0 failed**, commit-not-push, origin чист). НЕ приступай к коду сразу: прочитай состояние, согласуй со мной следующий шаг.
ДЕРЕВО: `c:\моя\проекты\портал crm\Документация\.claude\worktrees\brainrepo`, ветка `worktree-brainrepo`. Git — ТОЛЬКО PowerShell (`git -C "<wt>" ...`), отдельными командами без `if`, литеральные пути. Сверь верх: `git -C "<wt>" log -10 --oneline` (верх — `b92afad9` G1 task7).
ПРОЧИТАЙ ПЕРВЫМИ: `docs/superpowers/plans/2026-06-09-phase8-handoff-2.md` (этот handoff) + `docs/superpowers/audits/2026-06-09-phase8-readiness-audit.md` (находки аудита + §G1 ПОСТРОЕН) + `docs/superpowers/plans/2026-06-09-g1-gate3-verify-signed-green.md` (план G1) + `docs/superpowers/specs/2026-06-08-router-mentor-machine-7-design.md` (§5/§9/§10/§12).
ВЫБОР СЛЕДУЮЩЕГО ШАГА (согласуй со мной, не угадывай):
- **«пуш»** → merge G1 в main через `superpowers:finishing-a-development-branch` (origin сейчас чист).
- **Level B** (per-criterion GREEN + мутация P18 через готовый `runCriterionGate`) — закрыть остаток Класса 5; цепочка скилов как у G1 (audit-context→sharp-edges→variant-analysis→writing-plans→executing-plans TDD→verification-before-completion); ВЫШЛИ цепочку/scope на согласование ДО кода.
- **A-блок активация** (owner): провижининг ключей + флаги (`ROUTER_MENTOR_VERIFY_ENABLED=1`, `ROUTER_MENTOR_JUDGE_ENABLED=1`) + регистрация хуков settings.json + увольнение зоопарка §10 + shadow→block — это ШАГИ ВЛАДЕЛЬЦА, Claude только готовит runbook.
- **deployment-runbook Фазы 8** (Claude может написать): точная последовательность регистрации 12 хуков + §10 увольнение + ключи/флаги + откат.
ЖЁСТКОЕ: commit-not-push (пуш ТОЛЬКО по «пуш»); 1-я строка «экономия:…», 2-я «coverage:…»; CLAUDE.md в worktree НЕ трогать; стены М2/М5/М4/М6 не ослаблять; нормативку не двигать; settings.json/keychain — шаг владельца; чужую грязь дерева не коммитить — стейдж своих файлов поимённо; vitest через Bash tool (без cd/pipe), git через PowerShell без `if`; субагенты/Task/Workflow ЗАПРЕЩЕНЫ (всё инлайн). Кодовая фраза: «роутер-наставник».
## === КОНЕЦ ПРОМТА ===