После закрытия M6 FIX-5 и верификации тест-гейта §9.2:
- 2026-06-10-phase8-state-snapshot.md: HEAD f2aa3fb7→33894a62; M6 FIX-5 из
«отложено» → закрыто (key-gated); D-3 доска live → закрыта (c9f823df);
регрессия 3449→3478; §9.2 верифицирован зелёным (предусловие C закрыто).
- 2026-06-09-phase8-deployment-runbook.md: Prerequisites регрессия →3478 +
§9.2 verified; +строка History 2026-06-10.
- 2026-06-10-phase8-settings-paste-block.md (новый): paste-ready записи для
settings.json — 13 хуков защитного контура (PreToolUse 10 / PostToolUse 2 /
Stop 1) + companion + список снятия зоопарка (~20). Merge-not-replace, атомарно,
пол #1 ДО снятия router-gate. Референс для владельца (Claude settings.json не пишет).
Только docs. Активация Фазы 8 (settings.json/keychain/ENV) — шаги владельца.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
8.4 KiB
Paste-ready блок settings.json — М7 Фаза 8 переезд (Шаги 3+4 runbook)
Дата: 2026-06-10 · Кодовая фраза эпика: «роутер-наставник» · Тип: референс для владельца (Claude .claude/settings.json не пишет — даёт текст).
Источник: runbook 2026-06-09-phase8-deployment-runbook.md Шаги 3 (регистрация 13) + 4 (снятие зоопарка) + spec М7 §9.3/§10.
⚠️ ПЕРЕД вставкой — четыре правила
- Это НЕ замена файла целиком. Claude не может прочитать твой
.claude/settings.json(он в Read-deny). Ниже — записи для слияния в существующий объектhooks.<Событие>[]+ список того, что удалить. Слить и удалить — в ОДНОЙ атомарной правке (Шаги 3+4 = один заход). - Порядок критичен (V1/V1-PS, DOC-1): пол
enforce-floor(#1) и стенаenforce-supreme-gate(#2) обязаны быть зарегистрированы ДО удаленияrouter-gate/powershell-gate. Иначе ≈20 Bash-классов + весь PowerShell открываются в окне между правками. Одна атомарная правка снимает риск. - Сверь форму матчера с уже существующими записями в твоём settings.json (Claude Code: matcher — строка-regex по имени инструмента; в разных конфигах встречается
"*"vs""для «все»,"mcp__.*"vs"mcp__*"). Ниже — форма по runbook-таблице; приведи к своей конвенции, если она иная. - Бэкап до правки (Шаг 0):
Copy-Item .claude\settings.json .claude\settings.json.bak-phase8-2026-06-10. Без него откат §9.4 невозможен.
ДОБАВИТЬ — 13 хуков защитного контура
Слить в соответствующие массивы hooks.PreToolUse[], hooks.PostToolUse[], hooks.Stop[].
PreToolUse (10 хуков — пол/стена первыми)
// 1. М5 пол — вето-до-плана на необратимое + content-floor (Bash/PowerShell)
{ "matcher": "*", "hooks": [ { "type": "command", "command": "node tools/enforce-floor.mjs" } ] },
// 2. М2 стена — default-deny вне запечатанного плана
{ "matcher": "*", "hooks": [ { "type": "command", "command": "node tools/enforce-supreme-gate.mjs" } ] },
// 3. М1/М5 защита нормативки/памяти (КАРТА/ЗАКОН)
{ "matcher": "Edit|Write|MultiEdit|NotebookEdit", "hooks": [ { "type": "command", "command": "node tools/enforce-normative-content-rules.mjs" } ] },
// 4. М5 read-exfil (transcript/runtime/secrets)
{ "matcher": "Read", "hooks": [ { "type": "command", "command": "node tools/enforce-read-path-deny.mjs" } ] },
// 5. М5 egress-exfil (исходящий MCP-payload)
{ "matcher": "mcp__.*", "hooks": [ { "type": "command", "command": "node tools/enforce-mcp-classification.mjs" } ] },
// 6. М6 снимок — точка отката перед разрушительным (после пола)
{ "matcher": "*", "hooks": [ { "type": "command", "command": "node tools/enforce-snapshot.mjs" } ] },
// 7. М4 судья (рубильник + режим; Гейт-2: Write плана + per-tool надзор)
{ "matcher": "*", "hooks": [ { "type": "command", "command": "node tools/enforce-judge-gate.mjs" } ] },
// 8. G1 — подписанный verify-receipt перед commit/push
{ "matcher": "Bash", "hooks": [ { "type": "command", "command": "node tools/enforce-verify-gate.mjs" } ] },
// 9. Level B — по-критерийный mutation-proven GREEN
{ "matcher": "Bash", "hooks": [ { "type": "command", "command": "node tools/enforce-criterion-gate.mjs" } ] },
// 10. поглощённая дисциплина (журнал-K2)
{ "matcher": "TodoWrite", "hooks": [ { "type": "command", "command": "node tools/enforce-todowrite-skill-verifier.mjs" } ] }
PostToolUse (2 хука)
// 11. М1 журналер навыков (неподделываемый канал K2)
{ "matcher": "Skill", "hooks": [ { "type": "command", "command": "node tools/enforce-skill-journaler.mjs" } ] },
// 12. М6 escape — one-shot погашение гранта
{ "matcher": "*", "hooks": [ { "type": "command", "command": "node tools/enforce-floor-escape-consume.mjs" } ] }
Stop (1 хук)
// 13. поглощённая дисциплина coverage (журнал-K2)
{ "hooks": [ { "type": "command", "command": "node tools/enforce-coverage-verify.mjs" } ] }
ОСТАВИТЬ / ДОБАВИТЬ — companion-хуки (не входят в 13 «required», но нужны контуру)
- SessionStart:
node tools/floor-manifest-check.mjs— самопроверка регистрации (кричит «ПОСТ ПУСТОЙ», если кто-то из 13 не зарегистрирован). - Доска «кто на посту»: генератор
STATUS.md(read-only) — оставить. - Наблюдение (оставить):
observer-stop-hook,cost-stop-hook,askuser-cosmetic-detector.
УДАЛИТЬ — зоопарк (та же атомарная правка, §10)
Удалить из hooks регистрации этих команд (по строке node tools/<имя>.mjs):
Старая защита (растворена в пол/стену): enforce-router-gate, enforce-powershell-gate, enforce-runtime-write-deny, enforce-verify-before-push, enforce-verify-record, enforce-branch-switch.
⚠️
router-gate/powershell-gate— снимать ТОЛЬКО после того, как пол #1 зарегистрирован (см. правило 2).
Старый судья (L4): enforce-llm-judge-per-tool, enforce-llm-judge-response-scan.
Старый роутер-классификатор: router-prehook, router-tool-gate, router-stop-gate, router-embedding-warmup (заменён М3).
Поглощённая дисциплина (СТАРЫЕ версии — не путать с новыми #10/#13): enforce-memory-coverage, старый coverage-verify, tdd-gate, enforce-tdd-real-test-verifier, enforce-self-debrief-detector, enforce-rationalization-audit, старый todowrite-skill-verifier, enforce-prompt-injection (reminder).
NB: новые журнал-K2 версии
enforce-coverage-verify.mjs(#13) иenforce-todowrite-skill-verifier.mjs(#10) — это НЕ старые одноимённые. Различить по тому, что новые входят вDEFAULT_REQUIRED_HOOKS(G2, манифест). Старые снять, новые (из блока выше) оставить.
Мёртвый груз (no-op): enforce-decomposition-detector, enforce-safe-baseline-metering, enforce-parallel-session-lock.
Бессмысленные (субагенты запрещены): enforce-subagent-return-scanner, subagent-prompt-prefix.
После правки (Шаг 5 → Verification)
- Три ENV-флага (user scope, затем перезапуск Claude):
ROUTER_MENTOR_VERIFY_ENABLED=1,ROUTER_MENTOR_JUDGE_ENABLED=1,ROUTER_MENTOR_JUDGE_MODE=shadow(позжеblock). - SessionStart
floor-manifest-check→mode: protected(не кричит «ПОСТ ПУСТОЙ»). Если кричит — WARN перечислит отсутствующие, дописать. - Доска
STATUS.md§7: все М1–М6 + режим судьи показаны. - Если
verify/criterion-gateблокируют commit сразу → ключrouter-mentor-receiptsне в keychain (Шаг 1) → провижинить или снять флаг.
Откат (Шаг 7): Copy-Item .claude\settings.json.bak-phase8-2026-06-10 .claude\settings.json -Force + снять три ENV-флага + перезапуск.
Полная процедура (Шаги 0–7, troubleshooting, escalation):
docs/superpowers/runbooks/2026-06-09-phase8-deployment-runbook.md. При расхождении — приоритет у runbook + spec М7 §9.3/§10.