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

11 KiB
Raw Blame History

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

Дата: 2026-06-14

Цель

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

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

Управляющий слой копируется в claude-brain (не вырезается). В текущем репозитории он остаётся как замороженная рабочая копия. Требование — полнота переноса: claude-brain работает автономно, рабочая копия в текущем репозитории не ломается.

Решения

  • Модель связи — снимок. Текущий репозиторий держит замороженную рабочую копию управляющего слоя + Лидерру. claude-brain — дом разработки. Будущие улучшения вносятся в claude-brain и вручную переносятся в текущий репозиторий по отдельной команде.
  • git у claude-brain — чистый старт. Новый репозиторий, первый коммит = текущее состояние управляющего слоя. История остаётся в исходном репозитории (управляющий слой и Лидерра переплетены в общих коммитах — чистое разделение истории невозможно). Удалённый origin подключается позже.
  • Нормативный квартет — копия. claude-brain получает копию CLAUDE.md / Pravila_raboty_Claude_v1_1.md / Plugin_stack_rules_v1.md / Tooling_v8_3.md / CHANGELOG_claude_md.md как есть. В текущем репозитории квартет остаётся как есть. Разбор содержимого на «управление vs продукт» — отдельная будущая задача, не эта.
  • Тесты управляющего слоя — только в claude-brain. ~3931 vitest-теста (tools/*.test.mjs) + vitest.config.tools.mjs (сейчас физически в app/) + скрипты test:tools / eval:llm / brain:dashboard переезжают в claude-brain. В текущем репозитории test:tools убирается из корневого package.json, vitest.config.tools.mjs выносится из app/.

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

Источник: триангуляция нескольких независимых углов (граф проекта; карта импортов tools/; классификация конфигов; перекрёстные ссылки docs/memory; список активных runtime-процессов) + перепроверочный проход.

A. Копируется в claude-brain

  • tools/*.mjs (~180–190 рабочих модулей) + tools/*.test.mjs (~160–170 тестов) + данные tools/ (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) + скрипты управляющего слоя.
  • docs/observer/, docs/registry/, docs/router-procedure.md, docs/routing-off-phase.md, docs/discovery/, управляющие руководства из docs/superpowers/.
  • управляющие specs/plans (правило ключевых слов — {#D3}), управляющие ADR (011, 016 + ADR off-phase-тулинга 003010, 012015, 017, 019).
  • нормативный квартет (копия).
  • память управляющего слоя + агенты normative-sync, reviewer-agent.
  • подмножества общих конфигов (lefthook 9 управляющих job'ов, .mcp.json 4 сервера redis/perplexity/exa/firecrawl, управляющая часть package.json, копии cspell-words.txt / .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 (полностью), docs/observer/ + docs/registry/ (подтвердить, что читаются рабочими процессами), квартет (как есть). Тесты tools/*.test.mjs здесь не нужны.
  • Память Лидерры.

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

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

Правило ключевых слов для 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-тулинга.
  • → остаётся: 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-тулинг) — в список ручной классификации перепроверочного прохода.

Последовательность

  1. Сначала собрать claude-brain (полная копия управляющего слоя) и верифицировать автономно: ~3931 vitest-теста проходят в claude-brain, хуки исполняются, gitleaks 0, отсутствуют данные/секреты Лидерры.
  2. Только после автономной верификации claude-brain — удаление в текущем репозитории. Удаление минимальное: только артефакты разработки управляющего слоя, которые не читаются ни одним рабочим процессом (tools/*.test.mjs, управляющие design-specs/plans, заметки brain-retro, vitest.config.tools.mjs из app/, test:tools из корня). Рабочие входы (tools/*.mjs, docs/observer/, docs/registry/, квартет) — не трогаются.
  3. Перед удалением в текущем репозитории — зафиксировать полный список активных runtime-процессов и то, какие пути они читают, чтобы не удалить нужное. До этой фиксации удаление не начинается.

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

  • vitest.config.tools.mjs физически лежит в app/, хотя на 100% относится к управляющему слою; вынос затрагивает app/, но чисто.
  • Зависимости рантайма claude-brain: node_modules (js-yaml, ajv, @xenova/transformers, undici, keytar, shell-quote, proper-lockfile, glob, natural), внешний API-прокси, системное хранилище ключей, git, powershell. claude-brain нужен собственный npm install (свой package.json + lockfile).
  • Точный набор путей, читаемых рабочими процессами, фиксируется до фазы удаления (см. {#D4} п.3); фаза копирования этим не блокируется (claude-brain получает всё).
  • Откат: удаление в текущем репозитории идёт в отдельной git-ветке/worktree, до слияния всё восстановимо git restore. claude-brain — новый каталог, на исходный репозиторий не влияет.

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

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