From 200b5b2da7fae4ff034bb6af262152dff0424af2 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: Fri, 5 Jun 2026 04:03:03 +0300 Subject: [PATCH] =?UTF-8?q?docs(m2):=20=D0=B0=D1=83=D0=B4=D0=B8=D1=82=20?= =?UTF-8?q?=D0=9C=D0=B0=D1=88=D0=B8=D0=BD=D1=8B=202=20=E2=80=94=20=D0=BA?= =?UTF-8?q?=D1=83=D1=87=D0=B0=20(T1-T9=20=D1=85=D0=B2=D0=BE=D1=81=D1=82?= =?UTF-8?q?=D1=8B=20+=20F1-F3=20=D0=B7=D0=B0=D0=BC=D0=B5=D1=87=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=20+=20=D1=84=D0=B8=D0=BA=D1=81-=D1=81=D0=B5=D1=82)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...-mentor-machine-2-lock-and-supreme-hook.md | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/docs/superpowers/plans/2026-06-03-router-mentor-machine-2-lock-and-supreme-hook.md b/docs/superpowers/plans/2026-06-03-router-mentor-machine-2-lock-and-supreme-hook.md index f1f12762..73507040 100644 --- a/docs/superpowers/plans/2026-06-03-router-mentor-machine-2-lock-and-supreme-hook.md +++ b/docs/superpowers/plans/2026-06-03-router-mentor-machine-2-lock-and-supreme-hook.md @@ -1188,3 +1188,30 @@ export function auditExempt({ exempt = [], isMutating }) { ## СЛЕДУЮЩИЙ ШАГ Чертёж Машины 2 актуализирован под C/L (2026-06-04): стена реализационного плана (Tasks 1–9) + надстройка двух планов / двух печатей / закрытой двери (Tasks 10–12). Стоит на проверенном фундаменте Машины 1 (✅ собрана). Перед сборкой — **владелец подтверждает D/E/F/G** (и заодно дефолты H–K). Исполнение — `subagent-driven-development`. Дальше — Машина 3 (Роутер-наставник): контракты скилов, машина охвата A/B/C/D, look-ahead, L-ядро; и Машина 4 (Судья): два гейта + апелляционный цикл. + +--- + +## АУДИТ МАШИНЫ 2 (2026-06-05) — куча: соответствие + хвосты + замечания + +Адверсари-сверка построчно (3 модуля + зависимость `classifyBashCommand`). **Все задачи собраны, логика стены цела, полная регрессия 2224 GREEN.** Брешей нет; зелёный проход Bash безопасен (редиректы хард-блокируются в `classifyBashCommand`). + +### ⏸ Хвосты — сознательно отложено (меж-машинные контракты, НЕ дыры) +- **T1** `[owner]` — регистрация matcher `*` в `.claude/settings.json` (без неё стена инертна). +- **T2** `[→ M4, K1]` — `freezePlan/freezeArtifact` зовётся кем угодно с ключом; «печатает только гейт-1» — судья. +- **T3** `[→ M4, K2]` — покрытие навыком по журналу, не по тексту. +- **T4** `[→ M5, K3]` — консервативный `classifyBashCommand` (сейчас безопасен через redirect-blacklist). +- **T5** `[→ M3]` — волны (дерево шагов); `step-pointer` построен, не вшит. +- **T6** `[→ M3 3-D, K4]` — узкое Write-исключение; сейчас Write в разговоре блокируется (верно). +- **T7** — `door-coverage` не вшит в живой прогон/STATUS (утилита есть, surfacing отложен). +- **T8** — `buildFrozenPlanFromApproval` не построен (опционально; канал печати — M4). +- **T9 (было B3)** `[→ M4, K6 — ВШИТ 2026-06-05]` — анти-откат high-water-mark. Несрываемый контракт судьи (§Машина 4 + аварийный блок выше). M2 сознательно НЕ строит (зарубка в runtime = призрак). + +### ⚠️ Замечания — непреднамеренные, минорные +- **B-F1** `[ИСПРАВЛЕНО 2026-06-05]` — `actionOf` брал объект из 4 полей (как до фикса B4); MCP-write с полем `filename`/`uri` не сматчился бы с шагом → блок (fail-closed, но рубит легитимный шаг). Фикс: список полей объекта выровнен с расширенным B4. +- **B-F2** `[ИСПРАВЛЕНО 2026-06-05]` — `decide()` при `artifact_id` проверял только равенство id (печать артефакта проверяла обёртка `decideMode`). Фикс: `decide()` теперь сам проверяет печать артефакта (самодостаточность, защита-в-глубину). +- **B-F3** `[residual]` — указатель шага `plan-step-` не подписан; целостность держится на `runtime-write-deny` (пол). Приемлемо; связан с T9/K6 (откат указателя — тот же класс). + +### Статус +- **Исправлено кодом (TDD):** F1 (`actionOf` поля), F2 (`decide` проверяет печать артефакта). +- **Записано/отложено:** T1–T8 (контракты M3/M4/M5 + owner-matcher), T9/B3→K6 (уже вшит в M4), F3 (residual). +- **Брешей нет.** Стена логически верна.