docs(m2): аудит Машины 2 — куча (T1-T9 хвосты + F1-F3 замечания + фикс-сет)
This commit is contained in:
@@ -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-<sess>` не подписан; целостность держится на `runtime-write-deny` (пол). Приемлемо; связан с T9/K6 (откат указателя — тот же класс).
|
||||
|
||||
### Статус
|
||||
- **Исправлено кодом (TDD):** F1 (`actionOf` поля), F2 (`decide` проверяет печать артефакта).
|
||||
- **Записано/отложено:** T1–T8 (контракты M3/M4/M5 + owner-matcher), T9/B3→K6 (уже вшит в M4), F3 (residual).
|
||||
- **Брешей нет.** Стена логически верна.
|
||||
|
||||
Reference in New Issue
Block a user