10 KiB
10 KiB
Дизайн: выделение «мозга» в отдельный проект claude-brain
Дата: 2026-06-14 Статус: согласован заказчиком (дизайн), ожидает spec-review → writing-plans Кодовая фраза среды: «роутер-наставник» (работа идёт под стеной supreme-gate)
Цель
Разделить текущий смешанный репозиторий c:\моя\проекты\портал crm\Документация на два:
claude-brain(новый,C:\моя\проекты\claude-brain) — дом дальнейшей разработки «мозга» (Claude-governance / router-mentor / observer / registry / enforcement-машинерия M1–M7).Документация(здесь) — продукт Лидерра (Laravel+Vue CRM) + замороженный работающий рантайм мозга, который продолжает гейтить работу. Дальнейшая работа здесь — только над Лидеррой.
Мозг копируется в claude-brain (не вырезается). Здесь он остаётся как замороженный рантайм. Цель — ювелирная полнота: claude-brain работает автономно, рантайм здесь не сломан.
Решения (locked)
- Модель связи — снимок-рантайм. Здесь — замороженный рантайм мозга + Лидерра. claude-brain — дом разработки. Будущие улучшения мозга вносятся в claude-brain и при желании вручную ре-синкаются сюда по команде владельца.
- git claude-brain — чистый старт. Новый репозиторий, первый коммит = текущее состояние мозга. История остаётся в исходном репо (мозг и Лидерра переплетены в общих коммитах — чистое разделение истории невозможно). origin позже (GitHub-аккаунт
CoralMinistersuspended → 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-граф — второстепенный, слеп к M1–M7; import-closure tools/; конфиг-классификация; doc/memory cross-refs; hook-closure из settings.json — owner-зависимость) + critic-проход.
A. Копируется в claude-brain (мозг развивается там)
tools/*.mjs(~180–190 production) +tools/*.test.mjs(~160–170) + 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-список, ручная классификация.
Критическая последовательность
- Сначала собрать claude-brain (полная копия мозга) + верифицировать автономно: 3931 vitest tools GREEN в claude-brain, стена-смок (хуки исполняются), gitleaks 0, 0 Лидерра-секретов/данных. Эта фаза НЕ требует settings.json.
- Только после автономной верификации 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/, квартет) — не трогаются. - Перед пруном — 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("}
]