Files
portal/docs/superpowers/specs/2026-06-14-claude-brain-split-design.md
T

10 KiB
Raw Blame History

Дизайн: выделение «мозга» в отдельный проект claude-brain

Дата: 2026-06-14 Статус: согласован заказчиком (дизайн), ожидает spec-review → writing-plans Кодовая фраза среды: «роутер-наставник» (работа идёт под стеной supreme-gate)

Цель

Разделить текущий смешанный репозиторий c:\моя\проекты\портал crm\Документация на два:

  1. claude-brain (новый, C:\моя\проекты\claude-brain) — дом дальнейшей разработки «мозга» (Claude-governance / router-mentor / observer / registry / enforcement-машинерия M1M7).
  2. Документация (здесь) — продукт Лидерра (Laravel+Vue CRM) + замороженный работающий рантайм мозга, который продолжает гейтить работу. Дальнейшая работа здесь — только над Лидеррой.

Мозг копируется в claude-brain (не вырезается). Здесь он остаётся как замороженный рантайм. Цель — ювелирная полнота: claude-brain работает автономно, рантайм здесь не сломан.

Решения (locked)

  • Модель связи — снимок-рантайм. Здесь — замороженный рантайм мозга + Лидерра. claude-brain — дом разработки. Будущие улучшения мозга вносятся в claude-brain и при желании вручную ре-синкаются сюда по команде владельца.
  • git claude-brain — чистый старт. Новый репозиторий, первый коммит = текущее состояние мозга. История остаётся в исходном репо (мозг и Лидерра переплетены в общих коммитах — чистое разделение истории невозможно). origin позже (GitHub-аккаунт CoralMinister suspended → push обоих репо сейчас невозможен; claude-brain пока локальный).
  • Нормативный квартет — копия-снимок. claude-brain получает копию CLAUDE.md / Pravila / PSR_v1 / Tooling / CHANGELOG_claude_md как есть. Здесь квартет остаётся как есть (рантайм стены его читает — ломать нельзя). Контент-split «governance-only vs product-only» — отдельный будущий рефактор, НЕ эта задача.
  • Тест-харнесс мозга — только в claude-brain. 3931 vitest-тест + vitest.config.tools.mjs (сейчас физически в app/) + brain-scripts (test:tools/eval:llm/brain:dashboard) переезжают в claude-brain. Здесь — рантайм без своих brain-тестов: test:tools убирается из корневого package.json, vitest.config.tools.mjs выносится из app/.

Инвентарь — три корзины

Источник: триангуляция 5 углов (graphify-граф — второстепенный, слеп к M1M7; import-closure tools/; конфиг-классификация; doc/memory cross-refs; hook-closure из settings.json — owner-зависимость) + critic-проход.

A. Копируется в claude-brain (мозг развивается там)

  • tools/*.mjs (~180190 production) + tools/*.test.mjs (~160170) + tools-data (observer-chain-map.json, router-test-prompts.json, subagent-output-schema.json, .node-dormancy.json, enforce-override-vocab.json, observer-known-nodes.txt). Кроме tools/liderra-monitoring/.
  • vitest.config.tools.mjs (выносится из app/ → корень claude-brain) + brain-scripts.
  • docs/observer/, docs/registry/, docs/router-procedure.md, docs/routing-off-phase.md, docs/discovery/, docs/superpowers/router-mentor-wall-GUIDE.md.
  • brain-specs/plans (keyword-правило ниже), governance-ADR (011/016 + off-phase-tooling ADR 003-010/012-015/017/019).
  • нормативный квартет (копия).
  • brain-память + brain-агенты (normative-sync, reviewer-agent).
  • shared-конфиги — brain-подмножество (lefthook 9 brain-jobs, .mcp.json 4 brain-сервера redis/perplexity/exa/firecrawl, package.json brain-часть, копии cspell/.gitignore).

B. Остаётся здесь (Лидерра + замороженный рантайм)

  • app/, db/, web/, лендинг/, liderra_v8_handoff/, .github/workflows/.
  • Лидерра-доки: docs/CRM_*, docs/Открытые_вопросы_*, docs/Analiz_*, docs/security/, docs/deploy/, docs/api/, docs/architecture/, docs/audit/, docs/ml/, docs/process/, docs/backend/, docs/projects/, docs/support/.
  • Лидерра-specs/plans (billing/supplier/lead-region/slepok/audit/project/admin), Лидерра-ADR (001/002/018).
  • Лидерра-агенты (pest-parallel-debugger, rls-reviewer, prod-deploy-validator), tools/liderra-monitoring/.
  • Замороженный рантайм мозга: tools/*.mjs (полностью — runtime стены), docs/observer/ + docs/registry/ (writable/readable рантаймом — подтвердить hook-closure), квартет (как есть). brain *.test.mjs здесь не нужны (рантайм их не читает).
  • Лидерра-память.

C. Shared — расщепляется по факту

  • lefthook.yml / .mcp.json / package.json / .gitignore — каждому репо своё подмножество; 3 shared-jobs (gitleaks/markdownlint/cspell) + 2 shared-MCP (github/semgrep) — в обоих.
  • cspell-words.txt — неразделим → копия в обоих.
  • user-level скилы (~/.claude/skills/, ~/.claude/plugins/) — общая инфраструктура, не трогаем (вне git-дерева обоих репо). .claude/skills/ в репо — пусто (.gitkeep).

keyword-правило для specs/plans

  • → claude-brain: router-mentor, router-gate, router-discipline, judge, floor, escape, machine, observer, brain-governance, brain-factor, automation-graph, print-sanity, sealed-plan, safe-baseline, llm-first-router, off-phase-tooling-design (адр-номерные).
  • → остаётся здесь: billing, supplier, lead-region, slepok, audit, project, admin, deals, csv-reconcile, webhook, migrate, delete, parallel-sessions, controller-offload.
  • Спорные (enforce-hard-rules, controller-offload-agents, off-phase-tooling) — в critic-список, ручная классификация.

Критическая последовательность

  1. Сначала собрать claude-brain (полная копия мозга) + верифицировать автономно: 3931 vitest tools GREEN в claude-brain, стена-смок (хуки исполняются), gitleaks 0, 0 Лидерра-секретов/данных. Эта фаза НЕ требует settings.json.
  2. Только после автономной верификации claude-brain — прун здесь. Прун минимальный: убрать лишь brain DEV-артефакты, которые не читает ни один активный хук (brain *.test.mjs, brain design-specs/plans, brain-retro-заметки, vitest.config.tools.mjs из app/, test:tools из корня). Рантайм-входы (tools/*.mjs, docs/observer/, docs/registry/, квартет) — не трогаются.
  3. Перед пруном — owner присылает блок "hooks" из .claude/settings.json (мне Read-denied по READ_DENY_PATTERNS) → доказываем hook-closure (что именно рантайм читает) → решаем, что безопасно удалить. До этого прун не начинаем.

Крайние случаи / риски

  • vitest.config.tools.mjs в app/ — тест-харнесс мозга вплетён в Лидерра-каталог; вынос трогает app/, но чисто (конфиг 100% brain).
  • Runtime-зависимости claude-brain: ~/.claude/runtime (session-scoped, не код), node_modules (js-yaml, ajv, @xenova/transformers, undici, keytar, shell-quote, proper-lockfile, glob, natural), ProxyAPI/keychain/git/powershell. claude-brain нужен свой npm install (свой package.json + lockfile).
  • Hook-closure неизвестен мне (settings.json Read-denied) → owner-gate перед пруном (см. D4 п.3). Фаза копирования им не блокируется (claude-brain получает всё).
  • Откат: прун здесь — отдельная git-ветка/worktree, до мержа всё восстановимо git restore. claude-brain — новый каталог, на исходный репо не влияет.
  • Под стеной: реальные правки кода/конфигов — только опечатанными шагами плана; правки квартета/памяти — owner FLOOR-ESCAPE per write.

Критерий готовности

  • claude-brain: npm install ок, npx vitest run --config vitest.config.tools.mjs = 3931 passed (база), хуки исполняются автономно, gitleaks 0, 0 Лидерра-данных.
  • Здесь после пруна: стена по-прежнему гейтит (live-смок), Лидерра-регрессия зелёная (Pest/Vitest/build), git status чист.
  • Независимый review: claude-brain полон (ничего load-bearing не забыто) И здесь рантайм не сломан.
[
  {"id": "vc-tools-data", "kind": "EXTRACTED", "ref": "tools/cost-pricing.mjs", "anchor": "export const PRICING = Object.freeze("}
]