Files
brain/docs/superpowers/plans/2026-06-17-open-items-multi-session-roadmap.md
T
2026-06-18 08:10:39 +03:00

8.9 KiB
Raw Blame History

Открытые вопросы claude-brain — роадмап по сессиям (для распараллеливания)

Дата фиксации: 2026-06-17 · HEAD на момент: cd831b8 · бэкап = gitea (github 🔴 мёртв). Источник: разбор открытых вопросов после закрытия Фазы 2a + фикса silent-swallow.

ВСЕ СЕССИИ ЗАКРЫТЫ (2026-06-18).

  • A producer — путь починен (resolveVitestConfig, c50ac7c); истинный блокер был глубже: vitest коллапсил под Claude-Bash (Git Bash, НЕ путь). Корень найден научным методом (пул/песочница отвергнуты, Bash vs PowerShell — решающий). Фикс операционный: продюсер/vitest гонять через PowerShell-инструментsigned GREEN. Других app/-хардкодов нет.
  • B флап + silent-swallow — прозвон завершён: все producer'ы (mentor/judge/gate3) дают видимый degraded, supreme-gate — fail-CLOSED с видимым сообщением, оркестратор ловит только pre-вердикт I/O. Новый фикс НЕ нужен.
  • C/D/E — Фазы 2b (gate3card судья) / 2c (delivery честность) / 2d (приёмка владельца в живой петле), commit 2380e82. Эпик переговоров/арбитража закрыт.
  • F1 MEMORY.md подрезан (36→13 КБ, все 141 запись целы). F2 CRLF — все .mjs LF, индекс LF (no-op; docs-CRLF git игнорирует). F3 worktree + ветки track-* снесены. F4 vitest collapse = тот же Git-Bash корень (закрыт вместе с A).

Детали — память feedback-vitest-harness-collapse-vs-terminal, project-arbitration-machinery-into-plugin.

Цель документа — раскидать остаток на независимые сессии, чтобы A/B/C/D можно было гнать параллельно (разные сессии/дни), а зависимые собрать после. Каждая сессия самодостаточна.


Граф зависимостей (критический путь)

A (producer end-to-end)      ─┐  независима
B (флап + silent-swallow)    ─┤  независима
C (2b gate3card судья)  ──┐   │
D (2c delivery честность)─┤   │  C,D зависят только от 2a (СДЕЛАНО)
                          ├─→ E (2d проводка в Stop-хук)  ← интеграция, нужна C+D
F (гигиена)              ─┘   фоном, ни от чего не зависит

Параллелить можно: A ∥ B ∥ (C+D) ∥ F. Строго после: E ждёт C и D. Рекомендованный старт: A и B первыми (разблокируют процесс и жгут меньше денег), C+D параллельно.


Сессия A — Producer end-to-end + наследие app/ (инфра-разблокировка) 🔴 высокий

Почему: разблокирует мои (Claude) коммиты без терминала владельца; чинит класс «наследие сплита».

  • Проверить под Claude: подписывает ли tools/produce-verify-receipt.mjs расписку реально (его внутренний execSync('npx vitest') может коллапсировать так же, как Claude-Bash). Если да — фикс пути недостаточен, нужна стратегия (non-collapsing прогон / читать готовый sentinel).
  • Прозвонить tools/ на ДРУГИЕ хардкоды app/ / layout Лидерры (producer criterion-greens и пр.). Файлы: produce-verify-receipt.mjs, produce-criterion-greens.mjs(?), criterion-green.mjs. Зависит от: ничего.

Сессия B — Флап наставника/судьи + silent-swallow в других хуках 🔴 высокий

Почему: флап повторяется на deepseek (2× за сессию 17.06), каждый перезапуск = лишние LLM-вызовы (1-3 ₽); невидимые срывы в судье возможны как в наставнике (уже починен).

  • Корень флапа: «несодержательный вердикт: пустые слоты [recommendation]» при положительном разборе НЕ должен заворачивать (или авто-ретрай 1× внутри хука перед NO-GO).
  • Прозвонить enforce-judge-gate.mjs / enforce-gate3-loop.mjs на тот же паттерн молчаливого catch {} в main() (как был в enforce-mentor-on-plan-write, починен cd831b8). Файлы: enforce-mentor-on-plan-write.mjs/mentor-verdict.mjs, enforce-judge-gate.mjs, judge-engine.mjs. Зависит от: ничего. TDD.

Сессия C — Фаза 2b: судья-карточки gate3card 🟡 средний

Почему: второй слой приёмки — судья сверяет карточку с продуктом до показа владельцу.

  • Линзы gate3card в judge-engine.VOTE_LAYOUTS + requiredLensesFor (card_matches_product / no_overstatement / verify_steps_real).
  • НЕ ЗАБЫТЬ: подключить gate3card-видимость в снимок+баннер (раздел «ОТЛОЖЕНО — НЕ ПОТЕРЯТЬ» в спеке видимости вердиктов). Файлы: judge-engine.mjs, verdict-surface/баннер-проводка. Зависит от: 2a (СДЕЛАНО). TDD.

Сессия D — Фаза 2c: честность пометки delivery на gate-2 🟡 средний

Почему: план, доводящий цель до пользы, не может прятаться за delivery:'internal'.

  • Судья плана (gate-2) проверяет delivery против шагов/цели спеки → NO-GO «прячешь готовый результат». Файлы: судья плана (enforce-judge-gate/линза), plan-lock/парсер delivery (Фаза 1 уже завёл проводку). Зависит от: 2a (СДЕЛАНО). Параллельно с C. TDD.

Сессия E — Фаза 2d: проводка приёмки в enforce-gate3-loop (Stop-хук) 🟡 финал эпика

Почему: оживить ядро 2a в живой петле — собрать карточку, отдать судье-карточки, показать владельцу.

  • В Stop-хуке: delivery:'user-result' + код-GO → buildOwnerCard → судья gate3card → показ владельцу (вкл. degraded-эскалацию с предупреждением) → ждать gate3-arb:accept → закрытие. Файлы: enforce-gate3-loop.mjs, loop-termination.mjs (входы уже готовы в 2a). Зависит от: C (gate3card) + D (delivery честность) + 2a. Делать ПОСЛЕ C и D.

Сессия F — Гигиена / инфра 🟢 фоном

  • MEMORY.md превышает лимит (35.5 КБ vs 24.4 КБ) — подрезать длинные строки, детали в файлы.
  • Незакоммиченные docs с начала сессии 17.06 (bag, черновики/спеки прошлых фаз, observer) — коммит или чистка.
  • Вторая точка отказа кроме gitea (github мёртв) — обсудить с владельцем, нужна ли.
  • vitest harness-collapse под Claude — разобраться, почему рушится (опц., снимет постоянное трение). Зависит от: ничего.

Дисциплина (для каждой кодовой сессии)

Все правки tools/*.mjsпо церемонии (спека→план→печать→TDD), кодовая фраза «роутер-наставник». Если вердикт не появляется — читать код оркестратора, не опрашивать/не спрашивать; флап лечить перезапуском плана новым именем (GUIDE «Уроки №7»). Коммит — после фикса producer (Сессия A) сам через escape, иначе в терминале владельца. Память/коммит — по клику владельца.