- gh 2.92.0 installed via choco (winget absent on Server 2022 Eval) - gh auth already wired via GITHUB_TOKEN env (CoralMinister) - Token scope: contents:read OK, issues/PRs forbidden - Memory workspace bootstrapped for c:/моя/проекты/claude-brain/ Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
20 KiB
Session 2026-05-11 — Brain v1.0 Bootstrap
Дата: 2026-05-11 (ночная сессия с переходом из 2026-05-10)
Скоуп: Извлечение «мозга Claude» из проекта Лидерра в независимый репозиторий + публикация на GitHub.
Итог: Brain v1.0 опубликован — CoralMinister/claude-brain (private), 14 commits + tag brain-v1.0, 8 sync-скриптов с TDD, end-to-end install+verify работают.
Контекст-родитель: Этот session log — отдельный документ. Architecture spec — ../architecture.md (копия Liderra spec на момент bootstrap).
1. Pre-bootstrap решения пользователя
| Решение | Выбор |
|---|---|
| Mode | Economy 0% (полная rigor — full reads, real outputs, file:line refs, no "should work" claims) |
| Execution | Subagent-Driven Development (фресный субагент per Phase, two-stage review для TDD-фаз) |
| Worktree | Не нужен (новый repo, не модификация Лидерры in-place) |
| Phase 0 Task 0.4 — rotate MAGIC_API_KEY | SKIP (deferred; masking placeholder обеспечивает security) |
| Phase 8.2 — GitHub repo | EXECUTE (опция (c) — repo создан вручную через web UI, потом push через token URL) |
2. Phase-by-phase хронология (с commit SHAs)
Phase 0 — Pre-bootstrap discovery
Commit Лидерры: b53ee28 (docs: brain bootstrap discovery results)
Артефакт: docs/superpowers/specs/2026-05-10-brain-bootstrap-discovery-results.md (317 строк)
Verified:
claudeCLI: 2.1.138 (Claude Code), но НЕ в$PATH— лежит в VSCode extension binaryC:\Users\Administrator\.vscode\extensions\anthropic.claude-code-2.1.138-win32-x64\resources\native-binary\claude.execlaude pluginsubcommands:disable|enable|install|list|marketplace|prune|tag|uninstall|update|validateclaude plugin marketplace add— правильная форма (плагин-вложенная), НЕclaude marketplace add- jq 1.8.1 (установлен через
choco install jq -yво время Phase 0 — было MISSING, system-state-change) - python 3.14.4 (no
python3alias — скрипты должны использоватьpython) - git 2.54.0
- gh CLI NOT installed
- gitleaks 8.30.1 (locally в
c:/моя/проекты/портал crm/Документация/bin/gitleaks.exe) - jq deep-merge:
+form broken ("Cannot index object with number"); рабочая формаjq -s '.[0] * {mcpServers: (.[0].mcpServers * .[1].mcpServers)}'ИЛИjq --slurpfile brain ... ~/.claude/backups/glob: реально*.backup.<unix_ms>, НЕ*.json(5 backups содержат старый un-masked API_KEY — local-only, no git exposure)
Phase 1 — Brain repo skeleton
Commit brain: 1e68fa9 (chore: initial brain repo scaffold)
Файлы: .gitignore (27 lines — plan estimate 22 был занижен), experiments/README.md, experiments/.gitkeep
Phase 2 — Extract artifacts
Commit brain: ed9bade (feat: extract brain artifacts)
21 файл:
project-files/: CLAUDE.md.template (266) + 4 docs templates (Pravila 720 / Plugin_stack 916 / Tooling 613 / CHANGELOG) + visualization HTML (3122) + .mcp.json.template (3 universal MCP, laravel-boost dropped)user-level-files/: 10 hook scripts + settings-fragment.json (enabledPlugins+permissions+hooks) + marketplaces.json (3) + plugins-manifest.json (4 plugins pinned) + mcp-user.template.json (magic с placeholder)
Security gate: gitleaks scan — no leaks found (793.91 KB scanned in 277ms). API_KEY masked через <<MAGIC_API_KEY>>.
Phase 3 — Library scripts TDD
Commits brain (5):
9557109common.sh (log_*, require_cmd, make_backup_dir) — 4 tests0ba32c2merge-settings.sh (jq --slurpfile assignment для replace) — 5 testsc37fd3cmerge-mcp.sh (jq --slurpfile pattern) — 6 tests042316esetup-secrets.sh (--secret/--skip/--list modes) — 4 testsba0a28binstall-plugins.sh (claude plugin marketplace add) — 2 tests
Phase 4 — Main scripts TDD
Commits brain (3):
dd238e5verify.sh (.brain-version + sha256 + strict-secrets) — 2 tests6949a9dinstall.sh (orchestrator, project/user mode detection) — 4 tests3d24925extract.sh (reverse sync diff/apply) — 2 tests
Phase 5 — Meta docs
Commit brain: 917ef33 (docs: brain meta documentation + manifest.json)
11 файлов: CLAUDE.md (37), README.md (47), CHANGELOG.md (38), manifest.json (32, sha256 для 23 файлов), docs/architecture.md (778, copy of Liderra spec), docs/how-to-use-brain.md (42), docs/how-to-experiment.md (42), docs/secrets-and-tokens.md (55), docs/consumer-projects.md (20), user-level-files/README.md (15), project-files/README.md (17).
Phase 6+7 — CI + verification
Commit brain: 97b5da3 (ci: GitHub Actions workflow)
CI workflow: Python syntax + JSON valid + 8 script tests + 3 hook test files + gitleaks + markdownlint
Verification:
- gitleaks: 0 findings (926.75 KB scanned)
- 8/8 script tests OK
- 64/64 hook subtests PASS (54 economy-mode + 4 economy-self-check + 6 economy-state-guard)
- install.sh
--dry-runна Лидерре —Detected mode: project+ exit 0 (черезBRAIN_ROOT_OVERRIDE=1)
Phase 8.1 — Tag
Brain tag: brain-v1.0 (annotated, объект SHA менялся)
Phase 8.2 — GitHub push (был BLOCKED → resolved)
Block: fine-grained PAT (используется в Liderra) не имеет Administration: Write permission на user-level. POST /user/repos → HTTP 403 «Resource not accessible by personal access token».
Resolution: Пользователь создал repo вручную через https://github.com/new (private, empty). Push via token URL:
git branch -M main # master → main (Windows git default vs GitHub default)
git remote add origin "https://${GITHUB_TOKEN}@github.com/CoralMinister/claude-brain.git"
git push -u origin main # 14 commits pushed
git push origin brain-v1.0 # tag pushed
git remote set-url origin "https://github.com/CoralMinister/claude-brain.git" # token stripped
Phase 9 — Self-test (revealed 5 critical bugs)
Bug 1: merge-mcp.sh через jq --slurpfile fails на Cyrillic paths Windows MSYS2 (Could not open — jq C-level fopen не понимает UTF-8 path).
Bug 2: install.sh ${rel%.template} — только trailing .template, не middle segment. CHANGELOG_claude_md.template.md оставался с .template. внутри.
Bug 3: manifest.json хранит brain-repo paths, verify.sh ищет target paths — pathing semantic mismatch (verify не может пройти на real consumer install).
Bug 4: make_backup_dir создаёт пустой dir, файлы не backupятся — overwrite consumer'а необратим.
Bug 5: brain's project-files/README.md overwrites consumer's README.md (оба попадают в target root после template stripping).
Phase 9b — Hotfix
Commit brain: 52584df (fix(scripts): 5 critical bugs from Phase 9 self-test) — 7 files changed / +277 / -35, ONE atomic commit.
Fixes:
- Bug 1:
merge-mcp.sh—jq --argjson brain "$(cat ...)"вместо--slurpfile(cat handles UTF-8 paths fine, jq получает pre-parsed JSON) - Bug 2:
install.sh—dst_rel="${rel//.template\./.}; dst_rel="${dst_rel%.template}"(strip middle + trailing) - Bug 3: manifest.json restructured into
files: {project-mode, user-mode, brain-internal}maps с target-relative paths; verify.sh detects mode, picks matching map - Bug 4: install.sh —
rsync -a --exclude .git/ --exclude .brain-backup-*fallbackcp -rПЕРЕД modifications - Bug 5: install.sh skip
README.mdin copy loops (brain READMEs — internal docs, не consumer content)
Re-test: install + verify end-to-end PASS на /tmp/test-consumer-fix-final-udzgWI. +17 new test assertions added (12 install + 9 merge-mcp + 6 verify).
Tag re-pointed: brain-v1.0 annotation preserved, target moved 97b5da3 → 52584df (tag не был ещё push'нут).
Phase 10 — Liderra marker + memory
Commit Лидерры: d598aec на supplier-sync-plan3 (subagent landed там потому что это был current branch). .brain-version = brain-v1.0\nsha: 52584df34e1a8b2117b3f254731b06f52d84645c.
Memory: project_claude_brain.md (новый), MEMORY.md (entry added), project_state.md (top), reference_github.md (планируемый repo упомянут).
Phase 8.2 follow-up — GitHub publish + Liderra branch cleanup
- ✅ Brain pushed (см. Phase 8.2 resolution выше)
- ✅ Cherry-pick
d598aec→ main (новый SHA8965650), main локально 3 commits ahead origin/main - ✅
git rebase --onto 8c70255 d598aec supplier-sync-plan3—d598aecудалён из feature branch; 9 Plan 3 commits replayed с новыми SHA (8a611eb..8fc9d3e) - ⏸ Push main BLOCKED — pre-push lychee нашёл 33 битые ссылки в 4 .md (28 в Plan 3 supplier-sync docs из прошлой сессии, 5 в моих brain extraction spec/plan). Pre-existing problem. User выбрал skip push до отдельной сессии для починки.
3. Обнаруженные плановые баги (8 total)
Plan был написан до bootstrap. Эти баги обнаружены при первом реальном запуске:
| ID | Где | Симптом | Fix |
|---|---|---|---|
| A | Plan §Task 3.3 | jq -s '.[0] | .mcpServers = (... + .[1].mcpServers)' → "Cannot index object with number" |
jq --slurpfile brain ... или --argjson |
| B | Plan §Task 3.5 | claude marketplace add → no such subcommand |
claude plugin marketplace add |
| C | Plan §Task 3.5 | claude not in $PATH (VSCode extension only) |
Fallback to JSON edit mode в install-plugins.sh |
| D | Plan §Task 3.2 | jq '.[0] * {enabledPlugins: ...}' → recursive merge (union, not replace) |
Explicit --slurpfile $frag + .key = $frag[0].key assignment |
| E | Plan §Task 4.2 | cp -r project-files/* target/ не strip'ает .template суффикс |
find loop + dst_rel="${rel%.template}" |
| F | Plan §Task 4.3 | extract.sh middle-elif heuristic был syntactically buggy | Cleaner two-step fallback |
| Phase 9 #1 | install.sh runtime | Cyrillic path → jq fopen fail | --argjson "$(cat ...)" |
| Phase 9 #2 | install.sh runtime | ${rel%.template} only trailing |
${rel//.template\./.} + ${rel%.template} |
| Phase 9 #3 | verify.sh + manifest | Path semantic mismatch | manifest.files → {project-mode, user-mode, brain-internal} maps |
| Phase 9 #4 | common.sh + install.sh | Empty backup | rsync/cp -r target tree to backup BEFORE modifications |
| Phase 9 #5 | install.sh | README.md overwrite consumer | Skip brain READMEs in copy loops |
Итого: 11 багов обнаружены и исправлены за bootstrap. План v1.0 был ~70% корректен — оставшиеся 30% потребовали runtime discovery.
4. Quirks среды (Windows Server 2022 + Git Bash + VSCode)
- Cyrillic paths: jq на MSYS2 не открывает файлы с UTF-8 путями. Workaround:
--argjson "$(cat ...)"вместо--slurpfile. pythonnotpython3: толькоpythonalias существует.claudeCLI vsclaude plugin marketplace: subcommand структураclaude plugin <sub>(включаяmarketplace).- Git default branch на Windows =
master, GitHub default =main.git branch -M mainнужен перед первым push. core.autocrlf=true: git нормализует EOL на checkout. Может изменять sha256 файла при clone на другой машине. Для brain v1.0 — within-machine sync, не проблема.- gitleaks путь: либо в
$PATH, либо вc:/моя/проекты/портал crm/Документация/bin/gitleaks.exe(предустановлен в Liderra). - Fine-grained PAT vs classic PAT: fine-grained не имеет user-level Administration:Write по умолчанию — POST
/user/repos→ 403. Classic PAT сreposcope работает, или создать repo через web UI. - Lefthook pre-push hooks: gitleaks-full-history + lychee + larastan + pint + pest + markdownlint + cspell. Можно ловить на pre-existing проблемах не введённых текущим коммитом.
~/.claude/backups/filename pattern:*.backup.<unix_ms>, НЕ*.json(могут содержать unredacted API_KEY).
5. Outstanding items для будущих сессий
Critical
- Push Liderra main → origin/main — 3 commits ahead, blocked by lychee (33 broken links). Опции:
- Fix broken links в 4 .md (Plan 3 plan/spec + мои brain plan/spec) — нужна правка relative paths
- Добавить exclude patterns в
.lychee.toml
- Rotate MAGIC_API_KEY на 21st.dev (Phase 0 Task 0.4 deferred). Текущий ключ formally compromised (виден в session logs).
Important
- Tooling/Pravila обновить — добавить brain extraction в реестр инструментов как infrastructure category (#34 claude-brain или similar). После push main.
- gh CLI install —
choco install ghдля будущих GitHub операций без curl boilerplate. - Plan 3 supplier-sync docs broken links — Plan 3 documentation использует
app/...paths изdocs/superpowers/plans/...но resolve неправильно. Hardcoded../../../app/...или.lychee.tomlexclude.
Nice-to-have
.gitattributesв brain repo с* -textдля CRLF stability (для clone на другие machines с разными autocrlf settings).- Tag immutability:
brain-v1.0был moved из97b5da3→52584dfпосле Phase 9b hotfix. Push не было между. Для будущих версий — не moveать после push, лучше bump доbrain-v1.0.1. - Mock
claudeCLI in install-plugins-test: пишет в global/tmp/claude-calls.log— race condition если parallel CI runs.
6. Workflow learnings
Что работало хорошо
- TDD discipline на bash scripts — каждый failing-test-first cycle поймал по 1-3 бага до commit'а.
- Subagent-driven dispatch per Phase — 16 subagent dispatches (вместо 47 по плану TDD-granularity) — эффективный balance cost/quality.
- Security gates (gitleaks) — на Phase 2 (extract) и Phase 7 (pre-release). Поймали бы leak'и до commit'а.
- Plan corrections inline in dispatcher prompt — Phase 0 нашёл baги в плане; не редактировал план, передавал corrections в каждый последующий subagent через prompt. Чистая commit-история плана.
Что нужно улучшить в следующий раз
- Plan corrections должны быть applied к самому плану перед dispatch — если plan живёт в repo и читается несколькими subagent'ами, inline corrections в prompt становятся single-point-of-failure.
- Mock CLI bin (Phase 3 Task 3.5) —
claudemock должен был сразу матчить real subcommand структуру. Plan указал устаревший интерфейс, subagent fixed it on the fly. - Phase 9 self-test надо было дублировать с TDD-стилем — 5 багов dropped на нас сразу. Если бы каждый test-консьюмер имел свой failing-test, мы поймали бы их по одному, не batch.
Decision pattern, который сработал
- Subagent reports DONE_WITH_CONCERNS → controller (я) читает concerns, классифицирует как scope/correctness/observation → only correctness ones влияют на следующий dispatch → observation ones flagged в session log без блока.
7. Файлы и refs
В brain repo
CLAUDE.md— meta descriptionREADME.md— quick startCHANGELOG.md— v1.0 release notesmanifest.json— sha256 + tool requirementsdocs/architecture.md— copy of Liderra specdocs/how-to-use-brain.md/how-to-experiment.md/secrets-and-tokens.md/consumer-projects.mddocs/sessions/2026-05-11-bootstrap-session.md— этот файлscripts/{install,verify,extract}.sh+ 5 lib helpers + 8 tests + 3 fixtures.github/workflows/ci.yml
В Liderra
docs/superpowers/specs/2026-05-10-claude-brain-extraction-design.md(776 строк, design spec)docs/superpowers/plans/2026-05-10-claude-brain-extraction.md(3430 строк, implementation plan)docs/superpowers/specs/2026-05-10-brain-bootstrap-discovery-results.md(317 строк, Phase 0 results).brain-version(на local main; на supplier-sync-plan3 удалён через rebase)
В Liderra memory (~/.claude/projects/c---------------------crm-------------/memory/)
project_claude_brain.md— brain architecture summaryMEMORY.md— index entry addedproject_state.md— top updated с brain extraction statusreference_github.md— claude-brain repo URL добавлен
8. Метрики
| Метрика | Значение |
|---|---|
| Brain commits total | 14 (12 feature/docs + 2 hotfix/CI) |
| Brain tag | brain-v1.0 @ 52584df |
| Script tests passing | 8/8 (54 assertions всего, +17 added в Phase 9b) |
| Python hook subtests | 64/64 (54 economy-mode + 4 self-check + 6 state-guard) |
| Gitleaks findings | 0 (за все сканы) |
| Bugs обнаружено и исправлено | 11 (6 plan + 5 runtime) |
| Files в manifest.json | 23 |
| Brain repo size | ~270 KB |
| Subagent dispatches | 16 (включая Phase 9 + 9b) |
| Liderra commits созданные сессией | 2 (b53ee28 discovery + 8965650 marker on main) |
| Liderra commits отрезанные ребейзом | 1 (d598aec на supplier-sync-plan3) |
9. Followup (2026-05-11, позже)
Короткая follow-up сессия в новом workspace c:/моя/проекты/claude-brain/:
- Closed Outstanding #4 (gh CLI install) — поставлен через
choco install gh -y, версияgh 2.92.0в/c/Program Files/GitHub CLI/gh.exe. PATH в текущем bash не подхватился (Bash tool inherited PATH со старта Claude Code до choco install) — вызов абсолютным путём. - gh auth уже работал через env
GITHUB_TOKENкакCoralMinister(безgh auth login). - Token scope ограничен:
contents:read✓,issues:read/pull_requests:read✗ (GraphQL "Resource not accessible by personal access token"). Если для будущих задач понадобится Issues/PRs — расширить scope. - winget отсутствует на Server 2022 Eval (как и предполагалось в outstanding #4 fallback).
- Memory bootstrap для brain workspace в
~/.claude/projects/c--------------claude-brain/memory/:MEMORY.md+ 4 entries (user_role, reference_bootstrap_session, project_outstanding_items, reference_environment).
Конец session log.