From 2c41971d886e0f8e44f8db631b30fab366b563ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=BC=D0=B8=D1=82=D1=80=D0=B8=D0=B9?= Date: Tue, 9 Jun 2026 10:32:47 +0300 Subject: [PATCH] docs(router-mentor): G1 closure + phase 8 handoff 2 --- .../2026-06-09-phase8-readiness-audit.md | 23 +++++++ .../plans/2026-06-09-phase8-handoff-2.md | 61 +++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 docs/superpowers/plans/2026-06-09-phase8-handoff-2.md diff --git a/docs/superpowers/audits/2026-06-09-phase8-readiness-audit.md b/docs/superpowers/audits/2026-06-09-phase8-readiness-audit.md index facd1f91..792be7a1 100644 --- a/docs/superpowers/audits/2026-06-09-phase8-readiness-audit.md +++ b/docs/superpowers/audits/2026-06-09-phase8-readiness-audit.md @@ -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`). + diff --git a/docs/superpowers/plans/2026-06-09-phase8-handoff-2.md b/docs/superpowers/plans/2026-06-09-phase8-handoff-2.md new file mode 100644 index 00000000..0a9d99e5 --- /dev/null +++ b/docs/superpowers/plans/2026-06-09-phase8-handoff-2.md @@ -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` (далее ``). + +--- + +## Что сделано этой серией (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 "/app" --config "/app/vitest.config.tools.mjs" <фильтр> --reporter dot`, БЕЗ `cd`/pipe — router-gate режет); git ТОЛЬКО PowerShell `git -C "" ...` отдельными командами (без `if` — PS-гейт режет); коммит = `git add <файлы поимённо>` + `git commit -m "ascii"` (lefthook «not in PATH» — ШУМ, игнор); TDD-gate требует it+expect в правке тест-файла (надёжнее — Write тест-файла целиком); coverage-hook: `skill:` требует инвокации Skill В ЭТОМ ходе (иначе `direct:`). + +--- + +## === ПРОМТ ДЛЯ НОВОЙ СЕССИИ (скопировать целиком) === + +роутер-наставник. Продолжаем эпик — **М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 "" ...`), отдельными командами без `if`, литеральные пути. Сверь верх: `git -C "" 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 ЗАПРЕЩЕНЫ (всё инлайн). Кодовая фраза: «роутер-наставник». + +## === КОНЕЦ ПРОМТА ===