From c19941aea04365216d9e418094d929fb463a26e5 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: Tue, 16 Jun 2026 10:17:55 +0300 Subject: [PATCH] =?UTF-8?q?docs(brain-plugin):=20handoff=20=E2=84=966=20?= =?UTF-8?q?=E2=80=94=20#1/#2/#3-cross-ref/#3-shell=20done,=20=D0=BE=D1=81?= =?UTF-8?q?=D1=82=D0=B0=D1=82=D0=BE=D0=BA=20observer+=D0=A4=D0=B0=D0=B7?= =?UTF-8?q?=D0=B02?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 (1M context) --- ...06-16-brain-as-plugin-session-handoff-6.md | 103 ++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 docs/superpowers/specs/2026-06-16-brain-as-plugin-session-handoff-6.md diff --git a/docs/superpowers/specs/2026-06-16-brain-as-plugin-session-handoff-6.md b/docs/superpowers/specs/2026-06-16-brain-as-plugin-session-handoff-6.md new file mode 100644 index 0000000..98e60ab --- /dev/null +++ b/docs/superpowers/specs/2026-06-16-brain-as-plugin-session-handoff-6.md @@ -0,0 +1,103 @@ +# Brain-as-plugin — handoff сессии №6 (закрытие 2026-06-16) + +**Кодовая фраза стены:** «роутер-наставник». **Канон дизайна:** `2026-06-15-brain-as-plugin-design-v6.md` (§14 фазы). +**План Фазы 1:** `2026-06-15-brain-plugin-phase1-config-seam.md`. Предыдущие handoff: 5/4/3/2/handoff. +Эта сессия — закрытие остатка Task 7 follow-up: **#1 deepseek тест-дрейф, #2 classifier_context wiring, +#3 greenfield-hardening (cross-ref + shell)**. Остаток: #3-observer + Фаза 2. + +--- + +## 1. Что сделано (свод 3994 passed, все коммиты в терминале владельца) + +| # | Что | Коммит | +|---|---|---| +| 1 | deepseek тест-дрейф — 3 assertions (router-config модель `deepseek-v4-pro`; 2 timeout `90000→300000`) | `8c4c50c` | +| 1b | устаревшие комментарии (`90с`→`300с`, sonnet→deepseek, alias-canonical) | `13e080b` | +| 2 | classifier_context wiring — `classify`(router-classifier:652) + `reviewViaDirectApi`(brain-retro:141) | `a160237` | +| 3-cross-ref | config-driven имена — `docStem` + `buildCrossRefPatterns` + `DEFAULT_ALIASES` + CLI | `deb5049` | +| 3-shell | config-driven защита — `buildProtectedPatterns(cfg,norm)` + wire 2 гейта | `3d76906` | + +**Находки:** +- #1 «parse plan_soundness» НЕ был сломан — judge-gate-тест падал на встроенном timeout-assert (стр. 222) ДО парс-проверки; `parseJudgeResponse` цел. +- `docStem` (снятие хвоста версии `_v\d+(?:[._]\d+)*`) — общий, **экспортирован из `cross-ref-checker.mjs`**; импортируется shell-content-rules. +- #3-shell: config-augment `buildProtectedPatterns` БЫЛ не подключён живьём (оба гейта строили `ctx.protectedPaths = DEFAULT_PROTECTED_PATTERNS`, стр. 102/192). Тест 281 пинит DEFAULT-защиту → **оставили хардкод 32-34 + augment** (НЕ «убрать», как было в дизайне §4); augment только ДОБАВЛЯет паттерны (защита монотонно растёт, fail-CLOSE). + +**Authoring-доки сессии №6:** specs/`2026-06-16-greenfield-regex-names-config-design.md`; +plans/`2026-06-16-{deepseek-testdrift-fix, classifier-context-wiring-plan, greenfield-cross-ref-config-plan, greenfield-shell-config-plan}.md`. + +--- + +## 2. УРОКИ ПРО СТЕНУ (НОВОЕ — для GUIDE «Уроки сессии №6») + +1. **Production-правки (`tools/*.mjs`) гейтит `enforce-tdd-gate` — и floor-escape его НЕ снимает** (это отдельный + PreToolUse-хук, не стена М2). Он требует свежий парный test-edit + vitest-**RED** в ходе; RED под Claude-Bash + недостижим (harness-collapse). **Единственный рабочий канал — master-override в промте владельца:** + `ремонт инфраструктуры` + вторая строка `ремонт: <причина>`. Override снимает Rule #3 И #6 на весь ход. + Тест-файлы (`.test.mjs`) — НЕ production (`isProductionCodePath`), gate молчит, хватает floor-escape. +2. **Floor-escape по гранту на КАЖДУЮ правку.** На один файл — несколько грантов (по одному на Edit). В одном + `AskUserQuestion` несколько грантов на ОДИН файл (один label) рискуют ts-коллизией при погашении → + группируй так, чтобы в раунде каждый файл максимум раз; повторные правки того же файла — следующим раундом. + `AskUserQuestion` — максимум 4 вопроса. +3. **Skill под стеной:** `systematic-debugging`/`brainstorming`/`writing-plans` грузятся в разговорном режиме + БЕЗ escape (think-навыки). `executing-plans` (импл) звал через `skill:superpowers:executing-plans`-escape. + `ToolSearch` и `TodoWrite` стена блокирует в разговорном режиме как «реализация» (TodoWrite недоступен). +4. **Коммит — терминал владельца** (как и весь авторитетный свод). Память живёт вне git-репо (`~/.claude/...`) — + отдельного коммита не требует. Печать (seal) за сессию №6 ни разу не понадобилась — весь impl через escape-per-step. +5. **AskUserQuestion-опция несёт точную метку** `FLOOR-ESCAPE: write:<путь-lowercase прямые-слэши>` / + `bash:<кмд>` / `skill:<имя>` — клик владельца подписывает грант. `write:` НЕ лоуэркейсится парсером → + путь в метке уже должен быть в выводе `pathNormalize` (lowercase + `/` + NFC). + +--- + +## 3. Остаток (порядок) + +### 3.1. #3-observer (последний кусок greenfield-hardening #3) +`observer-transcript-parser.mjs` `classifyFilePath` (стр. 360) — захардкоженные 'norm'-стемы 371-373 +(`Pravila_raboty_Claude`/`Plugin_stack_rules`/`Tooling`). Сделать `classifyFilePath(path, normativeStems = +DEFAULT_NORMATIVE_STEMS)` — цикл по стемам (`(?:^|/)[^/]*\.md$`→'norm'); дефолт = текущие 3. Универсальные +(CLAUDE/MEMORY/memory 370/375/376) + `Открытые_вопросы` (374) — хардкод (YAGNI). §/R citation-паттерны +(529-531/578-579) — **НЕ трогать** (Лидерра-нотация, greenfield без них безопасен). Wiring: протянуть +`normativeStems` через вызывающую цепочку (внутр. вызов стр. 401) до CLN/потребителя, читающего +`loadConfig().normative_files` → `docStem` (импорт из cross-ref-checker). Тесты 1883-1885 пинят текущее +(дефолт сохранит). Дизайн — `2026-06-16-greenfield-regex-names-config-design.md` §5 (Подход A). + +### 3.2. Фаза 2 — plugin packaging (design v6 §14, §6 группы) +Манифест плагина + docs; `${CLAUDE_PLUGIN_ROOT}`; группы хуков §6 (`enabled_hook_groups` уже хранится в +`brain.local.md`); инлайн-хуки в файлы плагина; команда `/brain-migrate` + `config_version`. Первый внешний +накат — greenfield (design v6 §14). + +--- + +## 4. Скилл-цепочка (как раньше) + +using-superpowers → (brainstorming → writing-plans для дизайна) → executing-plans ИНЛАЙН (через `skill:`-escape) ++ test-driven-development → claude-md-management/escape для памяти → systematic-debugging для разбора → +verification-before-completion перед коммитом. Печать H4 не встаёт → исполнение owner escape-per-step. + +--- + +## 5. Промт для сессии №7 (копировать целиком) + +``` +Продолжаем эпик «Мозг как плагин Claude Code» в проекте claude-brain. Кодовая фраза стены — «роутер-наставник», работаем ПО ПРАВИЛАМ (authoring-канал для новых .md в docs/superpowers/{specs,plans}; escape/память — только с моего разрешения; субагенты под стеной запрещены — инлайн; коммит + полный свод — в моём терминале). + +Сначала прочитай (разговорный режим, чтение свободно): +- docs/superpowers/specs/2026-06-15-brain-as-plugin-design-v6.md (канон дизайна; §14 фазы, §6 группы) +- docs/superpowers/plans/2026-06-15-brain-plugin-phase1-config-seam.md (план Фазы 1) +- docs/superpowers/specs/2026-06-16-brain-as-plugin-session-handoff-6.md (handoff №6 — что сделано #1/#2/#3-cross-ref/#3-shell, §2 уроки стены №6, §3 остаток, §5 этот промт) +- docs/superpowers/specs/2026-06-16-greenfield-regex-names-config-design.md (дизайн #3; §5 observer — Подход A) +- docs/superpowers/router-mentor-wall-GUIDE.md (как работать под стеной) +- память project-brain-plugin-phase1-progress.md (прогресс + How to apply, уроки №6) + +ВАЖНО про стену (handoff №6 §2): печать H4 не встаёт → owner escape-per-step (на КАЖДЫЙ Edit/Write/Bash/Skill отдельный грант FLOOR-ESCAPE: write:<путь-lowercase>/bash:<кмд>/skill:<имя>, окно 5 мин; на один файл — по гранту на правку; AskUserQuestion ≤4 вопроса). ПРАВКА production-файлов (tools/*.mjs) дополнительно гейтится enforce-tdd-gate, который floor-escape НЕ снимает, а vitest-RED под Claude-Bash недостижим (harness-collapse) → нужен мой override `ремонт инфраструктуры` + `ремонт: <причина>`. Тест-файлы (.test.mjs) — не production, хватает floor-escape. ToolSearch/TodoWrite стена блокирует в разговорном режиме. Полный свод + коммит — в МОЁМ терминале (npx vitest run --config vitest.config.tools.mjs). + +Скилл-цепочка: using-superpowers → (brainstorming → writing-plans для дизайна) → executing-plans ИНЛАЙН (через skill:-escape) + test-driven-development → claude-md-management/escape для памяти → systematic-debugging для разбора → verification-before-completion перед коммитом. + +Остаток (порядок): (1) #3-observer — classifyFilePath(path, normativeStems) из config, дефолт=текущие 371-373, §/R-паттерны не трогать, threading через вызов стр.401 + docStem из cross-ref-checker (дизайн greenfield §5); (2) Фаза 2 plugin packaging (манифест +docs, ${CLAUDE_PLUGIN_ROOT}, группы §6, инлайн-хуки в файлы, /brain-migrate + config_version, design v6 §14). + +Сделай в начале: +1. Спроси, какой канал для памяти (escape или claude-md-management). +2. Спроси, что берём первым из остатка (рекомендую #3-observer — закроет весь #3 greenfield-hardening, свод останется зелёным). + +Не пломбируй и не коммить без моего клика. Все находки фиксируй в authoring-доки, в память — только по правилам. +```