Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
8.9 KiB
Открытые вопросы 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 — все
.mjsLF, индекс 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, иначе в терминале владельца. Память/коммит — по клику владельца.