From 8652c745c6ef5afa32e8512ea685fc6b419da653 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: Thu, 28 May 2026 13:15:54 +0300 Subject: [PATCH] docs(CLAUDE.md): v2.36 router-hooks fixes Phase 1+2+3 closure MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes 7/10 brain-retro #9 candidates за одну сессию 28.05.2026. Phase 1 (3 commits ccf4108e..): analyzer archive-fallback removed (Mermaid noise) + System Health block в STATUS.md. Phase 2 (4 commits 769df67a..): tools/enforce-override-limit.mjs hard-block override-фразы >5/день per phrase, bypass 'лимит снят'. Phase 3 (5 commits eedc700b..): PAMYATKA 4→8 паттернов в classifier (feature/bugfix/prod/mechanical patterns). Header v2.35→v2.36. §6 +абзац. §9 +entry. Cross-refs не меняются (нет нового tool в Tooling Прил.Н #1-#86, нет ADR, нет off-phase подкатегории — infrastructure layer). Через прямой Edit (user-instruction priority к §5 п.10 — заказчик в prompt 'обнови мозг'). --- CLAUDE.md | 6 +++++- docs/observer/STATUS.md | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 867d6c1a..5417002e 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,6 +1,6 @@ # CLAUDE.md — техконтекст Лидерры -**Версия:** 2.35 от 28.05.2026 — prompt-caching split on reviewer-agent (perf, infrastructure): commit `a0bb11a6` `buildReviewPromptStructured()` в [tools/brain-retro-opus-reviewer.mjs](tools/brain-retro-opus-reviewer.mjs) возвращает `{system, user}`; `reviewViaDirectApi` через структурированную ветку `callAnthropicAPI` с `cache_control: ephemeral` (паттерн `buildClassifierPromptStructured` с фазы классификатора — infra reused). Эффект на Opus 4.7 ~ноль: Anthropic минимум кешируемого префикса 4096 токенов vs наш static-блок ~400 токенов; активируется при свиче на Sonnet 4.6 или росте static-блока. §6 +абзац / §9 +entry; **§0 cross-refs не меняются** (нет нового tool/ADR/категории — инфраструктура tools/, не реестр инструментов). Push `5e70ab78..a0bb11a6`. Memory `feedback_prompt_caching_callAnthropicAPI.md`. Через `/claude-md-management:revise-claude-md`. **v2.34 наследие:** retro #8 follow-up — 3 enforcement hook (classifier threshold 0.7→0.8 / chain-recommendation PreToolUse block / graph-first Stop block) + vocab gap fix (graph-first + chain-recommendation подавляются всеми 7 global override-фразами); §6 +абзац / §9 +entry; **§0 cross-refs не меняются** (нет нового tool/ADR/категории — infrastructure hooks в tools/, не реестр инструментов). Memory `feedback_enforcement_hooks_retro8.md`. Через `/claude-md-management:revise-claude-md`. **v2.33 наследие:** graphify operationalization: (1) junction `graphify-out/` → `.claude/worktrees/graphify-spike/graphify-out/` — граф читается из main worktree, не только из spike; (2) `.gitignore` +`graphify-out/` + `graphify-out-*/` — build-артефакты не попадают в diff; (3) §5 +п.14 — операционная директива «перед открытым codebase-вопросом сначала `/graphify query`, потом Read/Grep/Glob» с явными исключениями (известный путь / узкий regex / запись / устаревший граф). **v2.32 наследие:** knowledge-graph-tooling: #86 graphifyy формализован как 19-я off-phase подкатегория; §3.3 +строка #86; §0 cross-refs Pravila v1.42→**v1.43** / PSR_v1 v3.22→**v3.23** / Tooling Прил.Н v2.23→**v2.24**; §9 +запись. ADR-017 (KG1–KG5). Через прямой Edit — worktree-эксцепшн §5 п.10. **v2.31 наследие:** adr-judge redos fix + brain-retro 7→10 cuts: commit `1e1457eb` чинит catastrophic backtracking в `ENFORCEMENT_BLOCK_RE` ([tools/adr-judge.py](tools/adr-judge.py), nested `(?:.*?\n)*?` + DOTALL виснет >60s на ADR-011/ADR-016 с прозаическим `## Enforcement` без ```json fence; декомпозированный поиск heading→section-boundary→fence; все 13 ADR <1ms post-fix; **vendored из adr-kit v0.13.1** — перезапишется при `/adr-kit:upgrade`, нужно re-apply или upstream PR); commit `b1398883` расширяет brain-retro SKILL.md MANDATORY DIGITAL ANALYSIS 7→10 таблиц (cuts 8/9/10: Class × canon coverage / Router vs Opus A-B-C / Chain-ignore breakdown — все три wired в [tools/brain-retro-analyzer.mjs](tools/brain-retro-analyzer.mjs) `analyze()` output автоматически; +216 lines analyzer / +288 lines tests). Push `e184ffe2..1e1457eb`. Регрессия 989/989 tools-tests GREEN. Не нормативный version-bump-worthy event (нет новых tool/ADR/категории), §6 +абзац / §9 +entry. Memory `feedback_adr_judge_redos.md` + fix `feedback_vitest_sentinel_recipe.md` (был self-contradicting — `.test.mjs` суффикс в exclude триггерил сам же документированный фильтр `detectFullTestRun` "narrow vitest"). Через `/claude-md-management:revise-claude-md`. **v2.30 наследие:** docs-only short-circuit landed: §5 +п.13 (новый — не запрашивать override `ремонт инфраструктуры` для docs-only коммитов); §9 +v2.30 entry; commit `8266755c` (4 файла, +192/−2, [tools/enforce-hook-helpers.mjs](tools/enforce-hook-helpers.mjs) + [tools/enforce-verify-before-push.mjs](tools/enforce-verify-before-push.mjs)) — хук теперь молча пропускает коммит/push если все изменённые файлы кончаются на `.md`. TDD 13 новых тестов GREEN, tools-only regression 965/965. Override остаётся для смешанных/кодовых. Через `/claude-md-management:revise-claude-md`. **v2.29 наследие:** slepok routing protection design artifacts: спек v0.4 + план реализации защиты слепка поставщика в маршрутизации лидов записаны в `docs/superpowers/{specs,plans}/2026-05-26-slepok-routing-protection*.md`. 19 рисков R-01..R-19 покрыты, 5 этапов реализации ~7.5-10 дней, бизнес-инвариант slepok №NЛ (18:00 МСК) → №NП (21:00 МСК). **Прод НЕ затронут** — это design-only артефакты, реализация не начата. Аудит-источник сессия `135a4adf`. §6 +абзац; §9 +запись. Memory `project_slepok_protection.md`. Через `/claude-md-management:revise-claude-md`. **v2.28 наследие:** Project-local AI-agents delegation rule: §3.9 (новая подсекция) + Pravila §2.4 — контроллер обязан звать `normative-sync` (#84) после крупной задачи и `prod-deploy-validator` (#85) перед каждым выкатом на liderra.ru; +2 узла в `docs/registry/nodes.yaml` (subcategory `project-agent`) для missed-activation детектора (Pravila §16.4). Tooling канон счётчиков **НЕ изменился** (#1-#83 сохраняются — project-агенты не входят в Tooling-канон). §0 cross-ref Pravila v1.39→**v1.40**. Spec `docs/superpowers/specs/2026-05-24-controller-offload-agents-design.md`. Через прямой Edit — worktree-эксцепшн §5 п.10 (прецедент A11/C10/discovery/finance/A8/marketing). **v2.27 наследие:** C1 marketing-tooling integration: §3.3 +#74-#83 (10 узлов, 18-я off-phase подкатегория marketing-tooling); §0 cross-refs Pravila v1.38→**v1.39** / PSR_v1 v3.21→**v3.22** / Tooling Прил.Н v2.22→**v2.23**; §6 +абзац; §9 +запись. ADR-015. Прямой Edit — worktree-эксцепшн §5 п.10. **v2.26 наследие:** pg_audit #28 + pg_anonymizer #29 **установлены на боевом `liderra.ru` 22.05.2026** (расширения PostgreSQL фазы 3, ранее недоступные на dev native-Windows): §3.4 строки #28/#29 → ✅ прод; §6 +абзац; §0 cross-ref Tooling Прил.Н v2.21→**v2.22**; §9 +запись; setup-док `docs/security/pgaudit-anonymizer-setup.md`. pg_audit закрывает 152-ФЗ аудит-журнал БД (`pgaudit.log='ddl, role, write'`, `log_parameter=off`); pg_anonymizer (anon 3.0.13/Rust, собран из исходников) — маскированные выгрузки, загрузка по требованию. NB: установка PGDG-dev потянула минорный апгрейд PG 16.13→16.14 (данные целы, версия закреплена `apt-mark hold`). runbook `docs/deploy/test-server-runbook.md` (ветка feat/test-deploy) — sync отдельно. Прямой Edit — worktree-эксцепшн §5 п.10 (прецедент A8/A11/finance). **v2.25 наследие:** A8 infosec-tooling install-sync: ZAP #68 + Ward #70 **установлены портативно 21.05.2026** (без choco — Go 1.26.3 / Temurin JRE 17 zip с проверкой SHA256, бинари в `bin/*` gitignored) → статус PENDING INSTALL снят (§3.3 строки 68/70, §6); setup-доки `docs/security/zap-setup.md` + `docs/security/ward-setup.md`; §0 cross-refs Pravila v1.37→**v1.38** / PSR_v1 v3.20→**v3.21** / Tooling Прил.Н v2.20→**v2.21**; §9 +запись. Прямой Edit — worktree-эксцепшн §5 п.10 (прецедент A8/A11/finance). **v2.24 наследие:** A8 infosec-tooling integration: §3.3 +#68 OWASP ZAP (DAST, PENDING INSTALL) / #69 Nuclei (CLI, installed+verified) / #70 Ward (CLI, заменил abandoned Enlightn, PENDING INSTALL) / #71 pdn-152fz-audit / #72 threat-model / #73 security-go-live (self-authored скилы); §0 cross-refs Pravila v1.37 / PSR_v1 v3.20 / Tooling Прил.Н v2.20; §6 +абзац; §9 +запись; новая 17-я off-phase подкатегория infosec-tooling (раздел A8); ADR-014 (IS1–IS9); провенанс-вет IS9 (риск ToxicSkills); серверный слой защиты → open questions SEC-1..SEC-7 (Б-1). Перенумеровано v2.23→v2.24 при ребейзе на origin/main (v2.23 параллельно занят observer). **v2.23 наследие:** observer missed-activations: §0 cross-ref Pravila v1.35→**v1.36** (§16.4 условное missed-activation правило — профильная задача без активации релевантного узла → сигнал в STATUS.md C5 + /brain-retro; маппинг `tools/observer-classification-map.json` + `tools/.node-dormancy.json` двойной сигнал dormant/DEFERRED); §3.6 +абзац missed-activation; §9 +запись. План `docs/superpowers/plans/2026-05-21-observer-missed-activations.md`. **v2.22 наследие:** A1 backend-tooling integration: §3.3 +#64 Rector / #65 PHP Insights / #66 laravel-backend-patterns / #67 NightOwl (DEFERRED); §0 cross-refs Pravila v1.35 / PSR_v1 v3.19 / Tooling Прил.Н v2.19; §6 +абзац; §9 +запись; новая 16-я off-phase подкатегория backend-tooling (раздел A1); ADR-013. **v2.21 наследие:** finance-tooling integration (C6+C7): §3.3 +#61 finance plugin (homed C7) / #62 billing-audit (C6) / #63 ru-tax-accounting (C7); §0 cross-refs Pravila v1.34 / PSR_v1 v3.18 / Tooling Прил.Н v2.18; §6 +абзац; §9 +запись; новая 15-я off-phase подкатегория finance-tooling; ADR-012. **v2.20 наследие:** observer factor-analysis extension + phase 1.1 (ADR-011 amend): schema v2 (`decision_provenance` 3 kinds incl. `user_chose_from_options`) + двусторонний routing-gate/C5 + brain-retro analyzer; полные записи — §9 v2.19/v2.20. **v2.18 наследие:** Brain governance Phase A/B/C complete (ADR-011): §0 cross-refs Pravila v1.30→**v1.31** / PSR_v1 v3.15→**v3.16** / Tooling v2.16→**v2.17**; §3.X +cross-ref на `docs/router-procedure.md` v1.0 (single SoT для router procedure); §9 +brain governance entry. Реализованы 4 phases: Phase A normative foundation (5 tasks/15 commits — ADR-011 anchor, router-procedure.md v1.0, Tooling Прил. Н 9-attribute template на 58 узлов, Pravila §16, PSR_v1 R16); Phase B observer infrastructure (6 tasks/6 commits — scaffolding + PII filter + Stop-hook + HK1 pre-check + settings.json registration + /brain-retro skill); Phase C 4 controllers (5 tasks/5 commits — L1-watcher, cross-ref-checker (DWC, noise refinement pending), observer-of-observer 54w self-prune, STATUS.md generator, lefthook wire). Spec v1.1 `docs/superpowers/specs/2026-05-19-brain-governance-design.md` (factor analysis amendment: routing_decision events + primary_rationale). План `docs/superpowers/plans/2026-05-19-brain-governance.md`. C1+C2 surface 9+150 pre-existing drifts (known); WARN-only lefthook pending follow-up alias/scope refinement. **v2.17 наследие:** компакция «мозга» (SYSTEM-аудит findings 2/3/6/7): §3 title — убран счётчик «60 инструментов»; §3.3 строки #31–#60 (30 off-phase) свёрнуты из многострочных абзацев в однострочный индекс с пином на Tooling §4.NN (finding 2 — устранён дубль реестра с Tooling); §3.3 footer / §1 row 2b / §0 row-label — счётчик «60» → пин на Tooling Прил. Н §0 как канон (finding 3); §2 БД + §8 self-review — schema-метрики → пин на header `db/schema.sql` (finding 3); §3.5 ruflo свёрнут в dormant-стаб, исторические абзацы убраны (finding 6); §0 cross-refs Pravila v1.29→**v1.30** / PSR_v1 v3.14→**v3.15** / Tooling v2.15→**v2.16**; §9 +запись. Finding 1 (раздувание шапки/§0) и finding 5 (баг хука экономии) — заказчиком не выбраны, вне scope. План `docs/superpowers/plans/2026-05-18-brain-compaction-findings-2-3-6-7.md`. **v2.16 наследие:** SYSTEM-аудит «мозга» Rec1–Rec5 closure: §0 cross-refs Pravila v1.28→**v1.29** / Tooling v2.14→**v2.15** / Plugin_stack_rules v3.13→**v3.14**; §3.5 +bold-блок «СТАТУС 18.05.2026: ИЗОЛИРОВАН (dormant)» — live-связи ruflo (hooks/MCP/daemon) отключены без удаления артефактов; §3.7 (новый) — cross-ref на `docs/routing-off-phase.md` v1.0 (off-phase routing-аид: 30 узлов триггер→узел + 12 канонических связок L1–L12); §3.6 → §3.8 renumber; §6 +абзац «2026-05-18 SYSTEM-аудит мозга + Rec1–Rec5 закрытие». Snapshot — `docs/discovery/2026-05-18-system-audit-brain.md`. Rec2 закрыл 2 из 3 ⚫-конфликтов карты. Связано: Pravila v1.29 (+§14.9 ruflo dormant), Tooling v2.15 (§4.10 status-block), PSR_v1 v3.14 (+R15 off-phase routing), `docs/routing-off-phase.md` v1.0 (новый), memory `feedback_ruflo_isolated.md` + `feedback_automation_map_not_sot.md` + `feedback_hard_rule_no_alt_question.md`. **v2.15 наследие:** Anthropic dev-tooling integration: формализованы 5 Anthropic dev-плагинов из marketplace `anthropics/claude-plugins-official`, уже включённых в `~/.claude/settings.json` `enabledPlugins` user-level без формализации — #56 skill-creator / #57 plugin-dev / #58 hookify (новая тринадцатая off-phase подкатегория «authoring-tooling») + #59 claude-code-setup / #60 context7 (новая четырнадцатая «dev-support»); §3 title 55→60, §1 row 2b 55→60, §3.3 +5 строк #56–#60, §3.3 footer 55→60 (14 off-phase подкатегорий), §0 cross-refs Pravila v1.28 / PSR_v1 v3.13 / Tooling v2.14, §6 +абзац, §9 +запись. Триггер — аудит «мозга» через discovery-interview SYSTEM-режим: вскрыт L1-паттерн «плагин включён в settings.json без формализации в правилах» (повтор UPM/21st 10.05, Sentry/Redis 13.05). ADR-010. hookify HK1 — pre-check на коллизию с 6-компонентной economy/skill-discipline хук-архитектурой; закрывает 🔴-конфликт карты `hookify_plugin ↔ hk_pre_claude`. **NB:** ветка `feat/anthropic-dev-tooling` ребейзнута на parallel-sessions §15 (origin/main `781a59c`) — v2.14 и Pravila v1.27 параллельно заняты §15-эпиком; перенумеровано v2.14→v2.15, Pravila v1.27→v1.28. План `docs/superpowers/plans/2026-05-18-anthropic-dev-tooling-formalization.md`. Через прямой Edit — worktree-constraint эксцепшн §5 п.10 (прецедент A11/C10/discovery). **v2.14 наследие:** parallel-sessions-coordination: sync §0 cross-ref Pravila v1.26→v1.27 + §1 priority chain footer-абзац «Hard-rules вне §9» (упомянуты §12/§14/**§15**); §15 — третье hard-rule после §12 и §14, лечит два класса инцидентов параллельных Claude-сессий (Sprint 6 субагент-угон-ветки + Tooling v2.11 collision 17.05.2026). Spec — `docs/superpowers/specs/2026-05-18-parallel-sessions-coordination-design.md`, план — `docs/superpowers/plans/2026-05-18-parallel-sessions-coordination.md`. v1.27 в Pravila добавила hard-rule с фиксированным списком 8 нормативных файлов (Pravila/CLAUDE.md/Tooling/PSR_v1/MEMORY.md/Открытые_вопросы/docs/adr/*/db/schema.sql) — pre-flight `git fetch && git log HEAD..origin/main --oneline` обязателен перед правкой любого. Связанные артефакты (на этой же ветке `feat/parallel-sessions-coordination`): `docs/sessions/CURRENT.md` заявочный лог + `tools/subagent-prompt-prefix.mjs` PreToolUse Task auto-inject хук + `.claude/skills/subagent-driven-development/` wrapper-скил с git-safety-checklist (Tasks 2/4/7 плана). PSR_v1 и Tooling **не правятся** — §15 про координацию сессий, не плагинов. Через `/claude-md-management:claude-md-improver`. **v2.13 наследие:** discovery-interview integration: формализован #55 discovery-interview (self-authored project-скил `.claude/skills/discovery-interview/` — структурированное интервью-discovery до проектирования, два режима: FEATURE интервью заказчика перед фичей + SYSTEM ориентация по мета-слою) как новая двенадцатая off-phase подкатегория «discovery-tooling»; §3 title 54→55, §1 row 2b 54→55, §3.3 +строка #55, §3.3 footer 54→55, §0 cross-refs Pravila v1.26 / PSR_v1 v3.12 / Tooling v2.13, §6 +абзац discovery-interview, §9 +запись. ADR-009. Триггер-eval 20/20. Конфликт-аудит DI1–DI6 — разрез по слою-источнику с C10-скилом process-analysis #53 (тот вскрывает бизнес-процесс из app-кода; discovery-interview интервьюирует человека). План `docs/superpowers/plans/2026-05-18-discovery-interview-integration.md`. Через прямой Edit — worktree-constraint эксцепшн §5 п.10 (claude-md-management не наводится на worktree-копию CLAUDE.md; прецедент A11/C10). **v2.12 наследие:** C10 business-process integration: формализованы #51 operations (Claude Code marketplace-плагин `operations@knowledge-work-plugins` v1.2.0, Anthropic Verified — 9 скилов, 0 lifecycle-хуков) + #52 process-modeling + #53 process-analysis (self-authored project-скилы `.claude/skills/`) + #54 n8n-mcp (workflow-движок — DEFERRED, у портала нет n8n) — новая одиннадцатая off-phase подкатегория «business-process»; §3 title 50→54, §1 row 2b 50→54, §3.3 +4 строки #51/#52/#53/#54, §3.3 footer 50→54, §0 cross-refs Pravila v1.25 / PSR_v1 v3.11 / Tooling v2.12, §6 +абзац C10, §9 +запись. ADR-008. Конфликт-аудит OPS1/OPS5/N8N1/LINT1/BPMN1/PA1. План `docs/superpowers/plans/2026-05-17-c10-business-process-tooling-integration.md`. Через прямой Edit — worktree-constraint эксцепшн §5 п.10 (claude-md-management не наводится на worktree-копию CLAUDE.md; прецедент A11/ruflo). **v2.11 наследие:** ADR-006 Decision-4 icon-path boundary mirror: §3.3 строка #45 +граница «Lucide-иконки → канонический путь `lucide-vue-next` + Vuetify IconSet; raw-SVG Universal Icons MCP — только для не-Lucide коллекций». Источник — ADR-006 (поправка 17.05.2026, Decision item 4 — закрывает ранее нерегламентированную границу #45 ↔ `lucide-vue-next`, выявленную конфликт-аудитом карты). §0 cross-ref Tooling v2.10→**v2.11** (Pravila v1.24 / PSR_v1 v3.10 — без изменений: assess показал, что Pravila §13.2 делегирует к ADR-006, PSR_v1 R10.1 — role-registry). Счётчики инструментов без изменений (50 позиций). §9 +запись. Через `/claude-md-management:claude-md-improver` в worktree от origin/main (прямой Edit — worktree-constraint эксцепшн §5 п.10, прецедент A11 v2.10). **v2.10 наследие:** A11 ml-ai-tooling integration: формализованы #48 promptfoo (npm devDependency `promptfoo`, CLI-eval LLM-промптов, MIT) + #49 Data Scientist skill (вендоренный сторонний скил `.claude/skills/data-scientist/`, классический ML-воркфлоу) + #50 Jupyter MCP (исполняемые ноутбуки — DEFERRED, требует Python ML-окружения) — новая десятая off-phase подкатегория «ml-ai-tooling»; §3 title 47→50, §1 row 2b 47→50, §3.3 +3 строки #48/#49/#50, §3.3 footer 47→50, §0 cross-refs Pravila v1.24 / PSR_v1 v3.10 / Tooling v2.10, §6 +абзац A11, §9 +запись. ADR-007. Конфликт-аудит ML1 (promptfoo платные вызовы → вручную/CI) / ML3 (Data Scientist skill вендорен) / ML7 (bus-factor → вендоринг). План `docs/superpowers/plans/2026-05-17-a11-ml-ai-tooling-integration.md`. Через прямой Edit — worktree-constraint эксцепшн §5 п.10 (claude-md-management не наводится на worktree-копию CLAUDE.md; прецедент ruflo big-bang v2.0). **v2.9 наследие:** A3 integration-tooling integration: формализован #47 openapi-mcp-server (+ api-docs agent — узел карты A3 без Tooling-номера), новая девятая off-phase подкатегория «integration-tooling»; §3 title 46→47, §1 row 2b 46→47, §3.3 +строка #47, §3.3 footer 46→47, §0 cross-refs Pravila v1.23 / PSR_v1 v3.9 / Tooling v2.9, §6 +абзац A3, §9 +запись. Карта A3 0→7 узлов / 116→118. План `docs/superpowers/plans/2026-05-17-a3-integration-tooling-integration.md`. Через `/claude-md-management:claude-md-improver`. **v2.8 наследие:** A4 design-tooling integration: формализованы #44 Figma MCP (DEFERRED — у проекта нет Figma-аккаунта) + #45 Universal Icons MCP + #46 Design plugin — новая восьмая off-phase подкатегория «design-tooling»; §3 title 43→46, §1 row 2b 43→46, §3.3 +3 строки #44/#45/#46, §3.3 footer 43→46, §0 cross-refs Pravila v1.22 / PSR_v1 v3.8 / Tooling v2.8, §6 +абзац A4, §9 +запись. План `docs/superpowers/plans/2026-05-17-a4-design-tooling-integration.md`. Через `/claude-md-management:claude-md-improver`. **v2.7 наследие:** deptrac architecture-fitness integration: формализован #43 deptrac (Composer dev-dependency `deptrac/deptrac` v4.6.1, BSD-3) — 4-й инструмент off-phase подкатегории architecture-tooling; архитектурный fitness-гейт направления зависимостей / границ слоёв, врезан как lefthook pre-commit job 10; §3 title 42→43, §1 row 2b 42→43, §3.3 +строка #43, §3.3 footer 42→43, §0 cross-refs Pravila v1.21 / PSR_v1 v3.7 / Tooling v2.7, §6 +абзац deptrac, §9 +запись. План `docs/superpowers/plans/2026-05-17-deptrac-architecture-fitness-integration.md`. Через `/claude-md-management:claude-md-improver`. **v2.6 наследие:** C9 project-management integration: формализованы #41 CCPM (вендоренный скил) + #42 product-management (Anthropic marketplace-плагин) — новая седьмая off-phase подкатегория «project-management»; §3 title 40→42, §1 row 2b 40→42, §3.3 +2 строки #41/#42, §3.3 footer 40→42 + семь подкатегорий, §0 cross-refs Pravila v1.20 / PSR_v1 v3.6 / Tooling v2.6, §6 +абзац C9, §9 +запись. План `docs/superpowers/plans/2026-05-17-c9-project-management-tooling-integration.md`. Через `/claude-md-management:claude-md-improver`. **v2.5 наследие:** фактическая правка #40 Security Guidance: это **блокирующий** PreToolUse-хук (`sys.exit(2)`), не warn-only — при первом за сессию срабатывании уязвимого паттерна в файле блокирует правку (одноразовый speed-bump per «файл+правило», retry проходит); §3.3 строка #40 переписана (+SG2 Windows-починка python3-резолва), §6 абзац D3 уточнён, §0 cross-refs Pravila v1.19 / PSR_v1 v3.5 / Tooling v2.5, §9 +запись. Счётчики инструментов без изменений (40 позиций). План `docs/superpowers/plans/2026-05-17-d3-audit-risk-tooling-integration.md`. Через `/claude-md-management:claude-md-improver`. **v2.4 наследие:** D3 audit-security: формализованы #39 Trail of Bits Skills (субсет 8 audit-плагинов, marketplace `trailofbits`, CC-BY-SA-4.0) + #40 Security Guidance (Anthropic PreToolUse-хук) — новая шестая off-phase подкатегория «audit-security»; §3 title 35→40 (исправляет A6-пропуск: title оставался «35»), §1 row 2b 38→40, §3.3 +2 строки, §3.3 footer 38→40, §0 cross-refs Pravila v1.18 / PSR_v1 v3.4 / Tooling v2.4, §6 +абзац интеграции. План `docs/superpowers/plans/2026-05-17-d3-audit-risk-tooling-integration.md`. Через `/claude-md-management:claude-md-improver`. **v2.3 наследие:** A6 architecture-tooling: формализованы 3 инструмента раздела A6 карты «Архитектура систем» — #36 adr-kit, #37 mermaid-skill, #38 architecture-patterns; §3 title 35→38, §3.3 +3 строки, §1 row 2b 35→38, §3.3 footer 35→38 (пятая off-phase подкатегория architecture-tooling), §0 cross-refs Pravila v1.17 / PSR_v1 v3.3 / Tooling v2.3, §6 +абзац интеграции. План `docs/superpowers/plans/2026-05-17-a6-architecture-tooling-integration.md`. Через `/claude-md-management:claude-md-improver`. **v2.2 наследие:** реколлаж ruflo: §1 убран уровень −1 (entry-point framing → advisory-подсистема); §3/§3.5 advisory-подсистема; §0 cross-refs Pravila v1.16 / PSR_v1 v3.2 / Tooling v2.2. **v2.1 наследие:** §14 queen-trigger: §1 priority chain уровень −1 +триггер queen/королева → Pravila §14; §3.5 +абзац «Queen trigger»; §0 cross-ref Pravila v1.15. **v2.0 наследие:** Ruflo big-bang integration: 8-level → 9-level priority chain, ruflo Queen-led routing на уровне −1 (entry-point); §1 +уровень −1 ruflo; §3 title «35 инструментов» → «35 + ruflo orchestration layer»; §3.5 added (off-phase orchestration «ruflo»; «Заметки к settings.json» renumber §3.5 → §3.6); §5 п.10 → sub-policy note (claude-md-management остаётся preferred channel через ruflo routing); §6 +2026-05-15 ruflo phase paragraph. Major bump reflects architectural inversion (paper-level: ruflo daemon/swarm not yet running, technical compensators retained: gitleaks/RLS/dev DB only). Через прямой Edit (plan §1.4 user-authorized exception к §5 п.10). **v1.93 наследие:** Audit #3 deferred fixes sprint closure: sync schema header drift «62 → 63 базовые таблицы (61 regular + 2 partitioned parents: deals + supplier_lead_costs)» в §0 row «Схема БД», §2 БД row, §8 self-review row. Цифра 62 была commit-baseline артефактом; фактический count base-tables (regular + partitioned parents) — 63 (audit-verified в Audit #3 Phase 3). Sprint commits: `8ba9c55` (plan) + `0c36b7a` (Pa11y migration) + `e746b3c` (dead code cleanup, incl. schema.sql:4 header) + `c5c0e76` (coverage debt F-COV-01/02/03 → ≥95%) + `c524227` (P3 tooling). Pushed `f9d2452..c524227 main -> main`. Через `/claude-md-management:claude-md-improver`. **v1.92 наследие:** Task 9 sync нормативки после merge PR #3 `cc5f63b`: §3.3 +#34 Sentry MCP + #35 Redis MCP (off-phase debug-runtime category, отдельная от UI-пула UPM/21st и от infrastructure claude-md-management); §3 title «33» → «35»; §3.3 footer count 33 → 35 (29 phase-active + 5 off-phase + 1 historic); §0 cross-refs Tooling v1.16 → v1.17, PSR_v1 v2.0 → v2.1, Pravila v1.12 → v1.13. **v1.91 наследие:** Session-end documentation hygiene после CTO-19 ✅ closure via Lucide migration. Содержание: (1) §0 cross-ref row Pravila v1.11 → **v1.12** (sync: §4.6 +visual smoke methodology для UI-refactor; §4.7 +п.4 plans/specs relative paths `../../../`); (2) §9 +v1.91 entry. Связано: реестр v1.82→v1.83 (CTO-19 closure в commit `0832997`); audit `docs/superpowers/audits/2026-05-12-portal-full-audit-findings.md` Q.INFO.001 +audit methodology gap note (Phase 4 SAST checks must begin с `ls .github/workflows/`); memory quirks 74-76 (Lucide+Histoire peerDep / Vuetify-internal mdi defaults gap / plans-relative-paths). Регрессия зелёная (verified в commit `0832997`): Pest --parallel 742/739/0/3 ✅, Vitest 88 files / 683 passed + 3 skipped, Vite build 3.52s, axe-core /admin/billing 0 iconography violations, lychee 252 OK / 0 errors, gitleaks 0 (372+ commits). Workflow learning: `superpowers:brainstorming` → `:writing-plans` → `:subagent-driven-development` efficient для mechanical UI-refactor (icon migration). Через `/claude-md-management:revise-claude-md`. **v1.90 наследие:** Merge R15 motion-runtime removal cleanup из `origin/main` в `plan5-frontend-projects` (commits `0fd93fd` planning + `615db99` нормативная правка). Plan5 ветка форкнулась 12.05 утром от `48f27b4` ДО появления `615db99` на main; после 113 атомарных коммитов на plan5 (audit fixes, Plan 5 frontend Tasks 7-11, Quiet Luxury portal redesign, Q.DEFER.002/003/004 closures, audit-cleanup tail) — merge синхронизирует R15 changes. **§5 п.12** → маркер «Резерв (снят 12.05.2026, см. CHANGELOG)» (нумерация п.1–11 сохранена, чтобы cross-refs в memory не сломать). **§2 строка «Animation default stack»** переписана с regulatory denylist на guidance recommendation (motion-v/gsap/anime.js/lottie-web/popmotion/@motionone/dom — ✅ разрешены без обоснования; framer-motion остаётся technical block — React-only peerDep, runtime crash в Vue, не regulatory rule). **§0 cross-refs** обновлены — Pravila v1.10 → **v1.11**, PSR_v1 v1.7 → **v2.0**, Tooling v1.15 → **v1.16**. **§6 фаза** + **§8 self-review** строки (Plan 4/5 + Quiet Luxury + Q.DEFER closures context + schema baseline v8.19 + dev-actual factual) — preserved из plan5 v1.88/v1.89 base. Plan5 v1.89 factual fix §6 (615db99 = R15 removal, ≠ Plan 4) подтверждён и сохранён. NB: §9 содержит **две v1.88 entries** — plan5 audit schema-sync + origin/main R15-removal — это collision версионной нумерации parallel-branch bump'ов; обе валидны исторически, явно labelled в §9. Files fast-forwarded без conflict: `Plugin_stack_rules_v1.md` (R15 удалён, 162 lines diff), `Pravila_raboty_Claude_v1_1.md` (§11.5/§13.2 счётчик 16→15 + cross-refs), `Tooling_v8_3.md` (§9.2 reformulated). Через ручное conflict resolution на 2 файлах (CLAUDE.md + CHANGELOG_claude_md.md) + post-merge `/claude-md-management:revise-claude-md` polish (per §5 п.10). **v1.89 наследие:** factual fix §6 + шапка v1.88 changelog (615db99 ≠ Plan 4). **v1.88 наследие (plan5 branch):** audit-driven sync §0/§2/§6/§8 после полного аудита портала. Schema-метрики §0/§2/§8 разделены на «commit baseline v8.19» (62/12/117/39/5/13/5) + «dev-actual factual» (75/102/289/39/5/19/0). **v1.88 наследие (origin/main):** снятие R15 motion-runtime restrictions per user decision 12.05.2026 («сними все запреты на использование framer motion»); conscious rollback v1.83 audited construction. **v1.87 наследие:** sync schema-метрик после Plan 4 (Billing+CSV+Admin) на ветке `plan4-billing`. Schema **v8.11 → v8.19**. Предыдущая v1.86 — закрытие 13 находок третьего аудита (детали в [docs/CHANGELOG_claude_md.md](docs/CHANGELOG_claude_md.md)). +**Версия:** 2.36 от 28.05.2026 — router-hooks fixes Phase 1+2+3 closure (infrastructure, 13 commits): closes 7/10 brain-retro #9 candidates за одну сессию. Phase 1 — analyzer archive-fallback removed (Mermaid noise source в Cut 8) + System Health block в STATUS.md (long-running процессы >1ч). Phase 2 — `tools/enforce-override-limit.mjs` hard-block 6-й override-фразы одного типа за день, bypass «лимит снят» one-shot. Phase 3 — PAMYATKA в `tools/router-classifier.mjs` 4→8 паттернов (feature→writing-plans / bugfix→debugging+Pest / prod→Sentry / mechanical→coder-agent). Push `81f92ca3..4d7e9e33 main -> main`. Регрессия 1088/1088 vitest GREEN. **§0 cross-refs не меняются** (нет нового tool/ADR/категории — infrastructure layer). §6 +абзац / §9 +entry. Memory `feedback_subagent_api_crashes.md` + `feedback_tdd_gate_subagent_handoff.md` + `project_state.md` entry. Через прямой Edit (user-instruction priority к §5 п.10 — заказчик в prompt'е «обнови мозг»). **v2.35 наследие:** prompt-caching split on reviewer-agent (perf, infrastructure): commit `a0bb11a6` `buildReviewPromptStructured()` в [tools/brain-retro-opus-reviewer.mjs](tools/brain-retro-opus-reviewer.mjs) возвращает `{system, user}`; `reviewViaDirectApi` через структурированную ветку `callAnthropicAPI` с `cache_control: ephemeral` (паттерн `buildClassifierPromptStructured` с фазы классификатора — infra reused). Эффект на Opus 4.7 ~ноль: Anthropic минимум кешируемого префикса 4096 токенов vs наш static-блок ~400 токенов; активируется при свиче на Sonnet 4.6 или росте static-блока. §6 +абзац / §9 +entry; **§0 cross-refs не меняются** (нет нового tool/ADR/категории — инфраструктура tools/, не реестр инструментов). Push `5e70ab78..a0bb11a6`. Memory `feedback_prompt_caching_callAnthropicAPI.md`. Через `/claude-md-management:revise-claude-md`. **v2.34 наследие:** retro #8 follow-up — 3 enforcement hook (classifier threshold 0.7→0.8 / chain-recommendation PreToolUse block / graph-first Stop block) + vocab gap fix (graph-first + chain-recommendation подавляются всеми 7 global override-фразами); §6 +абзац / §9 +entry; **§0 cross-refs не меняются** (нет нового tool/ADR/категории — infrastructure hooks в tools/, не реестр инструментов). Memory `feedback_enforcement_hooks_retro8.md`. Через `/claude-md-management:revise-claude-md`. **v2.33 наследие:** graphify operationalization: (1) junction `graphify-out/` → `.claude/worktrees/graphify-spike/graphify-out/` — граф читается из main worktree, не только из spike; (2) `.gitignore` +`graphify-out/` + `graphify-out-*/` — build-артефакты не попадают в diff; (3) §5 +п.14 — операционная директива «перед открытым codebase-вопросом сначала `/graphify query`, потом Read/Grep/Glob» с явными исключениями (известный путь / узкий regex / запись / устаревший граф). **v2.32 наследие:** knowledge-graph-tooling: #86 graphifyy формализован как 19-я off-phase подкатегория; §3.3 +строка #86; §0 cross-refs Pravila v1.42→**v1.43** / PSR_v1 v3.22→**v3.23** / Tooling Прил.Н v2.23→**v2.24**; §9 +запись. ADR-017 (KG1–KG5). Через прямой Edit — worktree-эксцепшн §5 п.10. **v2.31 наследие:** adr-judge redos fix + brain-retro 7→10 cuts: commit `1e1457eb` чинит catastrophic backtracking в `ENFORCEMENT_BLOCK_RE` ([tools/adr-judge.py](tools/adr-judge.py), nested `(?:.*?\n)*?` + DOTALL виснет >60s на ADR-011/ADR-016 с прозаическим `## Enforcement` без ```json fence; декомпозированный поиск heading→section-boundary→fence; все 13 ADR <1ms post-fix; **vendored из adr-kit v0.13.1** — перезапишется при `/adr-kit:upgrade`, нужно re-apply или upstream PR); commit `b1398883` расширяет brain-retro SKILL.md MANDATORY DIGITAL ANALYSIS 7→10 таблиц (cuts 8/9/10: Class × canon coverage / Router vs Opus A-B-C / Chain-ignore breakdown — все три wired в [tools/brain-retro-analyzer.mjs](tools/brain-retro-analyzer.mjs) `analyze()` output автоматически; +216 lines analyzer / +288 lines tests). Push `e184ffe2..1e1457eb`. Регрессия 989/989 tools-tests GREEN. Не нормативный version-bump-worthy event (нет новых tool/ADR/категории), §6 +абзац / §9 +entry. Memory `feedback_adr_judge_redos.md` + fix `feedback_vitest_sentinel_recipe.md` (был self-contradicting — `.test.mjs` суффикс в exclude триггерил сам же документированный фильтр `detectFullTestRun` "narrow vitest"). Через `/claude-md-management:revise-claude-md`. **v2.30 наследие:** docs-only short-circuit landed: §5 +п.13 (новый — не запрашивать override `ремонт инфраструктуры` для docs-only коммитов); §9 +v2.30 entry; commit `8266755c` (4 файла, +192/−2, [tools/enforce-hook-helpers.mjs](tools/enforce-hook-helpers.mjs) + [tools/enforce-verify-before-push.mjs](tools/enforce-verify-before-push.mjs)) — хук теперь молча пропускает коммит/push если все изменённые файлы кончаются на `.md`. TDD 13 новых тестов GREEN, tools-only regression 965/965. Override остаётся для смешанных/кодовых. Через `/claude-md-management:revise-claude-md`. **v2.29 наследие:** slepok routing protection design artifacts: спек v0.4 + план реализации защиты слепка поставщика в маршрутизации лидов записаны в `docs/superpowers/{specs,plans}/2026-05-26-slepok-routing-protection*.md`. 19 рисков R-01..R-19 покрыты, 5 этапов реализации ~7.5-10 дней, бизнес-инвариант slepok №NЛ (18:00 МСК) → №NП (21:00 МСК). **Прод НЕ затронут** — это design-only артефакты, реализация не начата. Аудит-источник сессия `135a4adf`. §6 +абзац; §9 +запись. Memory `project_slepok_protection.md`. Через `/claude-md-management:revise-claude-md`. **v2.28 наследие:** Project-local AI-agents delegation rule: §3.9 (новая подсекция) + Pravila §2.4 — контроллер обязан звать `normative-sync` (#84) после крупной задачи и `prod-deploy-validator` (#85) перед каждым выкатом на liderra.ru; +2 узла в `docs/registry/nodes.yaml` (subcategory `project-agent`) для missed-activation детектора (Pravila §16.4). Tooling канон счётчиков **НЕ изменился** (#1-#83 сохраняются — project-агенты не входят в Tooling-канон). §0 cross-ref Pravila v1.39→**v1.40**. Spec `docs/superpowers/specs/2026-05-24-controller-offload-agents-design.md`. Через прямой Edit — worktree-эксцепшн §5 п.10 (прецедент A11/C10/discovery/finance/A8/marketing). **v2.27 наследие:** C1 marketing-tooling integration: §3.3 +#74-#83 (10 узлов, 18-я off-phase подкатегория marketing-tooling); §0 cross-refs Pravila v1.38→**v1.39** / PSR_v1 v3.21→**v3.22** / Tooling Прил.Н v2.22→**v2.23**; §6 +абзац; §9 +запись. ADR-015. Прямой Edit — worktree-эксцепшн §5 п.10. **v2.26 наследие:** pg_audit #28 + pg_anonymizer #29 **установлены на боевом `liderra.ru` 22.05.2026** (расширения PostgreSQL фазы 3, ранее недоступные на dev native-Windows): §3.4 строки #28/#29 → ✅ прод; §6 +абзац; §0 cross-ref Tooling Прил.Н v2.21→**v2.22**; §9 +запись; setup-док `docs/security/pgaudit-anonymizer-setup.md`. pg_audit закрывает 152-ФЗ аудит-журнал БД (`pgaudit.log='ddl, role, write'`, `log_parameter=off`); pg_anonymizer (anon 3.0.13/Rust, собран из исходников) — маскированные выгрузки, загрузка по требованию. NB: установка PGDG-dev потянула минорный апгрейд PG 16.13→16.14 (данные целы, версия закреплена `apt-mark hold`). runbook `docs/deploy/test-server-runbook.md` (ветка feat/test-deploy) — sync отдельно. Прямой Edit — worktree-эксцепшн §5 п.10 (прецедент A8/A11/finance). **v2.25 наследие:** A8 infosec-tooling install-sync: ZAP #68 + Ward #70 **установлены портативно 21.05.2026** (без choco — Go 1.26.3 / Temurin JRE 17 zip с проверкой SHA256, бинари в `bin/*` gitignored) → статус PENDING INSTALL снят (§3.3 строки 68/70, §6); setup-доки `docs/security/zap-setup.md` + `docs/security/ward-setup.md`; §0 cross-refs Pravila v1.37→**v1.38** / PSR_v1 v3.20→**v3.21** / Tooling Прил.Н v2.20→**v2.21**; §9 +запись. Прямой Edit — worktree-эксцепшн §5 п.10 (прецедент A8/A11/finance). **v2.24 наследие:** A8 infosec-tooling integration: §3.3 +#68 OWASP ZAP (DAST, PENDING INSTALL) / #69 Nuclei (CLI, installed+verified) / #70 Ward (CLI, заменил abandoned Enlightn, PENDING INSTALL) / #71 pdn-152fz-audit / #72 threat-model / #73 security-go-live (self-authored скилы); §0 cross-refs Pravila v1.37 / PSR_v1 v3.20 / Tooling Прил.Н v2.20; §6 +абзац; §9 +запись; новая 17-я off-phase подкатегория infosec-tooling (раздел A8); ADR-014 (IS1–IS9); провенанс-вет IS9 (риск ToxicSkills); серверный слой защиты → open questions SEC-1..SEC-7 (Б-1). Перенумеровано v2.23→v2.24 при ребейзе на origin/main (v2.23 параллельно занят observer). **v2.23 наследие:** observer missed-activations: §0 cross-ref Pravila v1.35→**v1.36** (§16.4 условное missed-activation правило — профильная задача без активации релевантного узла → сигнал в STATUS.md C5 + /brain-retro; маппинг `tools/observer-classification-map.json` + `tools/.node-dormancy.json` двойной сигнал dormant/DEFERRED); §3.6 +абзац missed-activation; §9 +запись. План `docs/superpowers/plans/2026-05-21-observer-missed-activations.md`. **v2.22 наследие:** A1 backend-tooling integration: §3.3 +#64 Rector / #65 PHP Insights / #66 laravel-backend-patterns / #67 NightOwl (DEFERRED); §0 cross-refs Pravila v1.35 / PSR_v1 v3.19 / Tooling Прил.Н v2.19; §6 +абзац; §9 +запись; новая 16-я off-phase подкатегория backend-tooling (раздел A1); ADR-013. **v2.21 наследие:** finance-tooling integration (C6+C7): §3.3 +#61 finance plugin (homed C7) / #62 billing-audit (C6) / #63 ru-tax-accounting (C7); §0 cross-refs Pravila v1.34 / PSR_v1 v3.18 / Tooling Прил.Н v2.18; §6 +абзац; §9 +запись; новая 15-я off-phase подкатегория finance-tooling; ADR-012. **v2.20 наследие:** observer factor-analysis extension + phase 1.1 (ADR-011 amend): schema v2 (`decision_provenance` 3 kinds incl. `user_chose_from_options`) + двусторонний routing-gate/C5 + brain-retro analyzer; полные записи — §9 v2.19/v2.20. **v2.18 наследие:** Brain governance Phase A/B/C complete (ADR-011): §0 cross-refs Pravila v1.30→**v1.31** / PSR_v1 v3.15→**v3.16** / Tooling v2.16→**v2.17**; §3.X +cross-ref на `docs/router-procedure.md` v1.0 (single SoT для router procedure); §9 +brain governance entry. Реализованы 4 phases: Phase A normative foundation (5 tasks/15 commits — ADR-011 anchor, router-procedure.md v1.0, Tooling Прил. Н 9-attribute template на 58 узлов, Pravila §16, PSR_v1 R16); Phase B observer infrastructure (6 tasks/6 commits — scaffolding + PII filter + Stop-hook + HK1 pre-check + settings.json registration + /brain-retro skill); Phase C 4 controllers (5 tasks/5 commits — L1-watcher, cross-ref-checker (DWC, noise refinement pending), observer-of-observer 54w self-prune, STATUS.md generator, lefthook wire). Spec v1.1 `docs/superpowers/specs/2026-05-19-brain-governance-design.md` (factor analysis amendment: routing_decision events + primary_rationale). План `docs/superpowers/plans/2026-05-19-brain-governance.md`. C1+C2 surface 9+150 pre-existing drifts (known); WARN-only lefthook pending follow-up alias/scope refinement. **v2.17 наследие:** компакция «мозга» (SYSTEM-аудит findings 2/3/6/7): §3 title — убран счётчик «60 инструментов»; §3.3 строки #31–#60 (30 off-phase) свёрнуты из многострочных абзацев в однострочный индекс с пином на Tooling §4.NN (finding 2 — устранён дубль реестра с Tooling); §3.3 footer / §1 row 2b / §0 row-label — счётчик «60» → пин на Tooling Прил. Н §0 как канон (finding 3); §2 БД + §8 self-review — schema-метрики → пин на header `db/schema.sql` (finding 3); §3.5 ruflo свёрнут в dormant-стаб, исторические абзацы убраны (finding 6); §0 cross-refs Pravila v1.29→**v1.30** / PSR_v1 v3.14→**v3.15** / Tooling v2.15→**v2.16**; §9 +запись. Finding 1 (раздувание шапки/§0) и finding 5 (баг хука экономии) — заказчиком не выбраны, вне scope. План `docs/superpowers/plans/2026-05-18-brain-compaction-findings-2-3-6-7.md`. **v2.16 наследие:** SYSTEM-аудит «мозга» Rec1–Rec5 closure: §0 cross-refs Pravila v1.28→**v1.29** / Tooling v2.14→**v2.15** / Plugin_stack_rules v3.13→**v3.14**; §3.5 +bold-блок «СТАТУС 18.05.2026: ИЗОЛИРОВАН (dormant)» — live-связи ruflo (hooks/MCP/daemon) отключены без удаления артефактов; §3.7 (новый) — cross-ref на `docs/routing-off-phase.md` v1.0 (off-phase routing-аид: 30 узлов триггер→узел + 12 канонических связок L1–L12); §3.6 → §3.8 renumber; §6 +абзац «2026-05-18 SYSTEM-аудит мозга + Rec1–Rec5 закрытие». Snapshot — `docs/discovery/2026-05-18-system-audit-brain.md`. Rec2 закрыл 2 из 3 ⚫-конфликтов карты. Связано: Pravila v1.29 (+§14.9 ruflo dormant), Tooling v2.15 (§4.10 status-block), PSR_v1 v3.14 (+R15 off-phase routing), `docs/routing-off-phase.md` v1.0 (новый), memory `feedback_ruflo_isolated.md` + `feedback_automation_map_not_sot.md` + `feedback_hard_rule_no_alt_question.md`. **v2.15 наследие:** Anthropic dev-tooling integration: формализованы 5 Anthropic dev-плагинов из marketplace `anthropics/claude-plugins-official`, уже включённых в `~/.claude/settings.json` `enabledPlugins` user-level без формализации — #56 skill-creator / #57 plugin-dev / #58 hookify (новая тринадцатая off-phase подкатегория «authoring-tooling») + #59 claude-code-setup / #60 context7 (новая четырнадцатая «dev-support»); §3 title 55→60, §1 row 2b 55→60, §3.3 +5 строк #56–#60, §3.3 footer 55→60 (14 off-phase подкатегорий), §0 cross-refs Pravila v1.28 / PSR_v1 v3.13 / Tooling v2.14, §6 +абзац, §9 +запись. Триггер — аудит «мозга» через discovery-interview SYSTEM-режим: вскрыт L1-паттерн «плагин включён в settings.json без формализации в правилах» (повтор UPM/21st 10.05, Sentry/Redis 13.05). ADR-010. hookify HK1 — pre-check на коллизию с 6-компонентной economy/skill-discipline хук-архитектурой; закрывает 🔴-конфликт карты `hookify_plugin ↔ hk_pre_claude`. **NB:** ветка `feat/anthropic-dev-tooling` ребейзнута на parallel-sessions §15 (origin/main `781a59c`) — v2.14 и Pravila v1.27 параллельно заняты §15-эпиком; перенумеровано v2.14→v2.15, Pravila v1.27→v1.28. План `docs/superpowers/plans/2026-05-18-anthropic-dev-tooling-formalization.md`. Через прямой Edit — worktree-constraint эксцепшн §5 п.10 (прецедент A11/C10/discovery). **v2.14 наследие:** parallel-sessions-coordination: sync §0 cross-ref Pravila v1.26→v1.27 + §1 priority chain footer-абзац «Hard-rules вне §9» (упомянуты §12/§14/**§15**); §15 — третье hard-rule после §12 и §14, лечит два класса инцидентов параллельных Claude-сессий (Sprint 6 субагент-угон-ветки + Tooling v2.11 collision 17.05.2026). Spec — `docs/superpowers/specs/2026-05-18-parallel-sessions-coordination-design.md`, план — `docs/superpowers/plans/2026-05-18-parallel-sessions-coordination.md`. v1.27 в Pravila добавила hard-rule с фиксированным списком 8 нормативных файлов (Pravila/CLAUDE.md/Tooling/PSR_v1/MEMORY.md/Открытые_вопросы/docs/adr/*/db/schema.sql) — pre-flight `git fetch && git log HEAD..origin/main --oneline` обязателен перед правкой любого. Связанные артефакты (на этой же ветке `feat/parallel-sessions-coordination`): `docs/sessions/CURRENT.md` заявочный лог + `tools/subagent-prompt-prefix.mjs` PreToolUse Task auto-inject хук + `.claude/skills/subagent-driven-development/` wrapper-скил с git-safety-checklist (Tasks 2/4/7 плана). PSR_v1 и Tooling **не правятся** — §15 про координацию сессий, не плагинов. Через `/claude-md-management:claude-md-improver`. **v2.13 наследие:** discovery-interview integration: формализован #55 discovery-interview (self-authored project-скил `.claude/skills/discovery-interview/` — структурированное интервью-discovery до проектирования, два режима: FEATURE интервью заказчика перед фичей + SYSTEM ориентация по мета-слою) как новая двенадцатая off-phase подкатегория «discovery-tooling»; §3 title 54→55, §1 row 2b 54→55, §3.3 +строка #55, §3.3 footer 54→55, §0 cross-refs Pravila v1.26 / PSR_v1 v3.12 / Tooling v2.13, §6 +абзац discovery-interview, §9 +запись. ADR-009. Триггер-eval 20/20. Конфликт-аудит DI1–DI6 — разрез по слою-источнику с C10-скилом process-analysis #53 (тот вскрывает бизнес-процесс из app-кода; discovery-interview интервьюирует человека). План `docs/superpowers/plans/2026-05-18-discovery-interview-integration.md`. Через прямой Edit — worktree-constraint эксцепшн §5 п.10 (claude-md-management не наводится на worktree-копию CLAUDE.md; прецедент A11/C10). **v2.12 наследие:** C10 business-process integration: формализованы #51 operations (Claude Code marketplace-плагин `operations@knowledge-work-plugins` v1.2.0, Anthropic Verified — 9 скилов, 0 lifecycle-хуков) + #52 process-modeling + #53 process-analysis (self-authored project-скилы `.claude/skills/`) + #54 n8n-mcp (workflow-движок — DEFERRED, у портала нет n8n) — новая одиннадцатая off-phase подкатегория «business-process»; §3 title 50→54, §1 row 2b 50→54, §3.3 +4 строки #51/#52/#53/#54, §3.3 footer 50→54, §0 cross-refs Pravila v1.25 / PSR_v1 v3.11 / Tooling v2.12, §6 +абзац C10, §9 +запись. ADR-008. Конфликт-аудит OPS1/OPS5/N8N1/LINT1/BPMN1/PA1. План `docs/superpowers/plans/2026-05-17-c10-business-process-tooling-integration.md`. Через прямой Edit — worktree-constraint эксцепшн §5 п.10 (claude-md-management не наводится на worktree-копию CLAUDE.md; прецедент A11/ruflo). **v2.11 наследие:** ADR-006 Decision-4 icon-path boundary mirror: §3.3 строка #45 +граница «Lucide-иконки → канонический путь `lucide-vue-next` + Vuetify IconSet; raw-SVG Universal Icons MCP — только для не-Lucide коллекций». Источник — ADR-006 (поправка 17.05.2026, Decision item 4 — закрывает ранее нерегламентированную границу #45 ↔ `lucide-vue-next`, выявленную конфликт-аудитом карты). §0 cross-ref Tooling v2.10→**v2.11** (Pravila v1.24 / PSR_v1 v3.10 — без изменений: assess показал, что Pravila §13.2 делегирует к ADR-006, PSR_v1 R10.1 — role-registry). Счётчики инструментов без изменений (50 позиций). §9 +запись. Через `/claude-md-management:claude-md-improver` в worktree от origin/main (прямой Edit — worktree-constraint эксцепшн §5 п.10, прецедент A11 v2.10). **v2.10 наследие:** A11 ml-ai-tooling integration: формализованы #48 promptfoo (npm devDependency `promptfoo`, CLI-eval LLM-промптов, MIT) + #49 Data Scientist skill (вендоренный сторонний скил `.claude/skills/data-scientist/`, классический ML-воркфлоу) + #50 Jupyter MCP (исполняемые ноутбуки — DEFERRED, требует Python ML-окружения) — новая десятая off-phase подкатегория «ml-ai-tooling»; §3 title 47→50, §1 row 2b 47→50, §3.3 +3 строки #48/#49/#50, §3.3 footer 47→50, §0 cross-refs Pravila v1.24 / PSR_v1 v3.10 / Tooling v2.10, §6 +абзац A11, §9 +запись. ADR-007. Конфликт-аудит ML1 (promptfoo платные вызовы → вручную/CI) / ML3 (Data Scientist skill вендорен) / ML7 (bus-factor → вендоринг). План `docs/superpowers/plans/2026-05-17-a11-ml-ai-tooling-integration.md`. Через прямой Edit — worktree-constraint эксцепшн §5 п.10 (claude-md-management не наводится на worktree-копию CLAUDE.md; прецедент ruflo big-bang v2.0). **v2.9 наследие:** A3 integration-tooling integration: формализован #47 openapi-mcp-server (+ api-docs agent — узел карты A3 без Tooling-номера), новая девятая off-phase подкатегория «integration-tooling»; §3 title 46→47, §1 row 2b 46→47, §3.3 +строка #47, §3.3 footer 46→47, §0 cross-refs Pravila v1.23 / PSR_v1 v3.9 / Tooling v2.9, §6 +абзац A3, §9 +запись. Карта A3 0→7 узлов / 116→118. План `docs/superpowers/plans/2026-05-17-a3-integration-tooling-integration.md`. Через `/claude-md-management:claude-md-improver`. **v2.8 наследие:** A4 design-tooling integration: формализованы #44 Figma MCP (DEFERRED — у проекта нет Figma-аккаунта) + #45 Universal Icons MCP + #46 Design plugin — новая восьмая off-phase подкатегория «design-tooling»; §3 title 43→46, §1 row 2b 43→46, §3.3 +3 строки #44/#45/#46, §3.3 footer 43→46, §0 cross-refs Pravila v1.22 / PSR_v1 v3.8 / Tooling v2.8, §6 +абзац A4, §9 +запись. План `docs/superpowers/plans/2026-05-17-a4-design-tooling-integration.md`. Через `/claude-md-management:claude-md-improver`. **v2.7 наследие:** deptrac architecture-fitness integration: формализован #43 deptrac (Composer dev-dependency `deptrac/deptrac` v4.6.1, BSD-3) — 4-й инструмент off-phase подкатегории architecture-tooling; архитектурный fitness-гейт направления зависимостей / границ слоёв, врезан как lefthook pre-commit job 10; §3 title 42→43, §1 row 2b 42→43, §3.3 +строка #43, §3.3 footer 42→43, §0 cross-refs Pravila v1.21 / PSR_v1 v3.7 / Tooling v2.7, §6 +абзац deptrac, §9 +запись. План `docs/superpowers/plans/2026-05-17-deptrac-architecture-fitness-integration.md`. Через `/claude-md-management:claude-md-improver`. **v2.6 наследие:** C9 project-management integration: формализованы #41 CCPM (вендоренный скил) + #42 product-management (Anthropic marketplace-плагин) — новая седьмая off-phase подкатегория «project-management»; §3 title 40→42, §1 row 2b 40→42, §3.3 +2 строки #41/#42, §3.3 footer 40→42 + семь подкатегорий, §0 cross-refs Pravila v1.20 / PSR_v1 v3.6 / Tooling v2.6, §6 +абзац C9, §9 +запись. План `docs/superpowers/plans/2026-05-17-c9-project-management-tooling-integration.md`. Через `/claude-md-management:claude-md-improver`. **v2.5 наследие:** фактическая правка #40 Security Guidance: это **блокирующий** PreToolUse-хук (`sys.exit(2)`), не warn-only — при первом за сессию срабатывании уязвимого паттерна в файле блокирует правку (одноразовый speed-bump per «файл+правило», retry проходит); §3.3 строка #40 переписана (+SG2 Windows-починка python3-резолва), §6 абзац D3 уточнён, §0 cross-refs Pravila v1.19 / PSR_v1 v3.5 / Tooling v2.5, §9 +запись. Счётчики инструментов без изменений (40 позиций). План `docs/superpowers/plans/2026-05-17-d3-audit-risk-tooling-integration.md`. Через `/claude-md-management:claude-md-improver`. **v2.4 наследие:** D3 audit-security: формализованы #39 Trail of Bits Skills (субсет 8 audit-плагинов, marketplace `trailofbits`, CC-BY-SA-4.0) + #40 Security Guidance (Anthropic PreToolUse-хук) — новая шестая off-phase подкатегория «audit-security»; §3 title 35→40 (исправляет A6-пропуск: title оставался «35»), §1 row 2b 38→40, §3.3 +2 строки, §3.3 footer 38→40, §0 cross-refs Pravila v1.18 / PSR_v1 v3.4 / Tooling v2.4, §6 +абзац интеграции. План `docs/superpowers/plans/2026-05-17-d3-audit-risk-tooling-integration.md`. Через `/claude-md-management:claude-md-improver`. **v2.3 наследие:** A6 architecture-tooling: формализованы 3 инструмента раздела A6 карты «Архитектура систем» — #36 adr-kit, #37 mermaid-skill, #38 architecture-patterns; §3 title 35→38, §3.3 +3 строки, §1 row 2b 35→38, §3.3 footer 35→38 (пятая off-phase подкатегория architecture-tooling), §0 cross-refs Pravila v1.17 / PSR_v1 v3.3 / Tooling v2.3, §6 +абзац интеграции. План `docs/superpowers/plans/2026-05-17-a6-architecture-tooling-integration.md`. Через `/claude-md-management:claude-md-improver`. **v2.2 наследие:** реколлаж ruflo: §1 убран уровень −1 (entry-point framing → advisory-подсистема); §3/§3.5 advisory-подсистема; §0 cross-refs Pravila v1.16 / PSR_v1 v3.2 / Tooling v2.2. **v2.1 наследие:** §14 queen-trigger: §1 priority chain уровень −1 +триггер queen/королева → Pravila §14; §3.5 +абзац «Queen trigger»; §0 cross-ref Pravila v1.15. **v2.0 наследие:** Ruflo big-bang integration: 8-level → 9-level priority chain, ruflo Queen-led routing на уровне −1 (entry-point); §1 +уровень −1 ruflo; §3 title «35 инструментов» → «35 + ruflo orchestration layer»; §3.5 added (off-phase orchestration «ruflo»; «Заметки к settings.json» renumber §3.5 → §3.6); §5 п.10 → sub-policy note (claude-md-management остаётся preferred channel через ruflo routing); §6 +2026-05-15 ruflo phase paragraph. Major bump reflects architectural inversion (paper-level: ruflo daemon/swarm not yet running, technical compensators retained: gitleaks/RLS/dev DB only). Через прямой Edit (plan §1.4 user-authorized exception к §5 п.10). **v1.93 наследие:** Audit #3 deferred fixes sprint closure: sync schema header drift «62 → 63 базовые таблицы (61 regular + 2 partitioned parents: deals + supplier_lead_costs)» в §0 row «Схема БД», §2 БД row, §8 self-review row. Цифра 62 была commit-baseline артефактом; фактический count base-tables (regular + partitioned parents) — 63 (audit-verified в Audit #3 Phase 3). Sprint commits: `8ba9c55` (plan) + `0c36b7a` (Pa11y migration) + `e746b3c` (dead code cleanup, incl. schema.sql:4 header) + `c5c0e76` (coverage debt F-COV-01/02/03 → ≥95%) + `c524227` (P3 tooling). Pushed `f9d2452..c524227 main -> main`. Через `/claude-md-management:claude-md-improver`. **v1.92 наследие:** Task 9 sync нормативки после merge PR #3 `cc5f63b`: §3.3 +#34 Sentry MCP + #35 Redis MCP (off-phase debug-runtime category, отдельная от UI-пула UPM/21st и от infrastructure claude-md-management); §3 title «33» → «35»; §3.3 footer count 33 → 35 (29 phase-active + 5 off-phase + 1 historic); §0 cross-refs Tooling v1.16 → v1.17, PSR_v1 v2.0 → v2.1, Pravila v1.12 → v1.13. **v1.91 наследие:** Session-end documentation hygiene после CTO-19 ✅ closure via Lucide migration. Содержание: (1) §0 cross-ref row Pravila v1.11 → **v1.12** (sync: §4.6 +visual smoke methodology для UI-refactor; §4.7 +п.4 plans/specs relative paths `../../../`); (2) §9 +v1.91 entry. Связано: реестр v1.82→v1.83 (CTO-19 closure в commit `0832997`); audit `docs/superpowers/audits/2026-05-12-portal-full-audit-findings.md` Q.INFO.001 +audit methodology gap note (Phase 4 SAST checks must begin с `ls .github/workflows/`); memory quirks 74-76 (Lucide+Histoire peerDep / Vuetify-internal mdi defaults gap / plans-relative-paths). Регрессия зелёная (verified в commit `0832997`): Pest --parallel 742/739/0/3 ✅, Vitest 88 files / 683 passed + 3 skipped, Vite build 3.52s, axe-core /admin/billing 0 iconography violations, lychee 252 OK / 0 errors, gitleaks 0 (372+ commits). Workflow learning: `superpowers:brainstorming` → `:writing-plans` → `:subagent-driven-development` efficient для mechanical UI-refactor (icon migration). Через `/claude-md-management:revise-claude-md`. **v1.90 наследие:** Merge R15 motion-runtime removal cleanup из `origin/main` в `plan5-frontend-projects` (commits `0fd93fd` planning + `615db99` нормативная правка). Plan5 ветка форкнулась 12.05 утром от `48f27b4` ДО появления `615db99` на main; после 113 атомарных коммитов на plan5 (audit fixes, Plan 5 frontend Tasks 7-11, Quiet Luxury portal redesign, Q.DEFER.002/003/004 closures, audit-cleanup tail) — merge синхронизирует R15 changes. **§5 п.12** → маркер «Резерв (снят 12.05.2026, см. CHANGELOG)» (нумерация п.1–11 сохранена, чтобы cross-refs в memory не сломать). **§2 строка «Animation default stack»** переписана с regulatory denylist на guidance recommendation (motion-v/gsap/anime.js/lottie-web/popmotion/@motionone/dom — ✅ разрешены без обоснования; framer-motion остаётся technical block — React-only peerDep, runtime crash в Vue, не regulatory rule). **§0 cross-refs** обновлены — Pravila v1.10 → **v1.11**, PSR_v1 v1.7 → **v2.0**, Tooling v1.15 → **v1.16**. **§6 фаза** + **§8 self-review** строки (Plan 4/5 + Quiet Luxury + Q.DEFER closures context + schema baseline v8.19 + dev-actual factual) — preserved из plan5 v1.88/v1.89 base. Plan5 v1.89 factual fix §6 (615db99 = R15 removal, ≠ Plan 4) подтверждён и сохранён. NB: §9 содержит **две v1.88 entries** — plan5 audit schema-sync + origin/main R15-removal — это collision версионной нумерации parallel-branch bump'ов; обе валидны исторически, явно labelled в §9. Files fast-forwarded без conflict: `Plugin_stack_rules_v1.md` (R15 удалён, 162 lines diff), `Pravila_raboty_Claude_v1_1.md` (§11.5/§13.2 счётчик 16→15 + cross-refs), `Tooling_v8_3.md` (§9.2 reformulated). Через ручное conflict resolution на 2 файлах (CLAUDE.md + CHANGELOG_claude_md.md) + post-merge `/claude-md-management:revise-claude-md` polish (per §5 п.10). **v1.89 наследие:** factual fix §6 + шапка v1.88 changelog (615db99 ≠ Plan 4). **v1.88 наследие (plan5 branch):** audit-driven sync §0/§2/§6/§8 после полного аудита портала. Schema-метрики §0/§2/§8 разделены на «commit baseline v8.19» (62/12/117/39/5/13/5) + «dev-actual factual» (75/102/289/39/5/19/0). **v1.88 наследие (origin/main):** снятие R15 motion-runtime restrictions per user decision 12.05.2026 («сними все запреты на использование framer motion»); conscious rollback v1.83 audited construction. **v1.87 наследие:** sync schema-метрик после Plan 4 (Billing+CSV+Admin) на ветке `plan4-billing`. Schema **v8.11 → v8.19**. Предыдущая v1.86 — закрытие 13 находок третьего аудита (детали в [docs/CHANGELOG_claude_md.md](docs/CHANGELOG_claude_md.md)). **Назначение:** оперативная карта для Claude Code. Не первоисточник — первоисточники указаны в §0. **Владелец и режим правок:** все изменения этого файла — **только** через плагин `claude-md-management` (skills `/claude-md-management:claude-md-improver` для audit/targeted-updates и `/claude-md-management:revise-claude-md` для capture session-learnings). Прямые правки запрещены — см. §5 п.11. @@ -290,6 +290,8 @@ trivy image liderra:latest ## 6. Текущая фаза проекта +**2026-05-28 (день) router-hooks fixes Phase 1+2+3 closed:** Закрыто 7 из 10 кандидатов brain-retro #9 + self-retrospect #1 за одну сессию. Пуш `81f92ca3..4d7e9e33 main -> main` (~13 коммитов через 3 push'а: Phase 1 `e58d3756..ccf4108e`, Phase 2 `0a52b3d8..769df67a` пушнут параллельной deploy-сессией внутри `81f92ca3`, Phase 3 `d1b5505a..eedc700b`, docs commit `4d7e9e33`). **Phase 1** — analyzer archive-fallback убран (`tools/brain-retro-analyzer.mjs` больше не читает `docs/archive/llm-bootstrap-2026-05/routing-docs/observer-classification-map.json` — был источник Mermaid #37 noise в Cut 8 retro #9; behavioral test verifies `canonicalNodes:[]` instead of legacy `["#18","#34"]`) + новый блок «## System Health» в STATUS.md (`tools/system-health.mjs` PowerShell `Get-Process | Where-Object CPU > 3600`, топ-3 long-running > 1ч, fail-open на не-Windows). **Phase 2** — новый PreToolUse-хук `tools/enforce-override-limit.mjs` (matcher `Edit|Write|MultiEdit|NotebookEdit|Bash|Task|Agent`, timeout 5s) hard-блокирует 6-ю override-фразу одного типа за календарный день (A.1 per-phrase, threshold 5); bypass через магическую фразу `лимит снят` в prompt'е (one-shot, счётчик НЕ сбрасывается); reads existing `~/.claude/runtime/override-usage.jsonl`; fail-open outer try/catch на любую внутреннюю ошибку. **Phase 3** — PAMYATKA в `tools/router-classifier.mjs:198-213` расширена 4→8 паттернов: PATTERN 5 (`task_type=feature` + «добавь/реализуй/сделай» + ≥3 шага → writing-plans #19), PATTERN 6 (bugfix живого кода типа regex/parser/hook/race/perf → chain systematic-debugging + Pest #18 для TDD-regression — реальный driver adr-judge fix `1e1457eb`), PATTERN 7 (production runtime errors «на боевом / в логах / liderra.ru» → Sentry MCP #34 ПЕРВЫМ в recommended_chain), PATTERN 8 («N однотипных / по шаблону / массовая правка» → coder-agent #19 через Task tool делегирование — closes 16 reviewer-Opus marks of «should have delegated»). Existing 4 паттерна не тронуты (regression test verbatim защищает). **Эффект на сессию:** Phase 2-хук активируется в этой же сессии — override-counter 28.05 уже >5 по 4 фразам (`recovery` 38, `ремонт инфраструктуры` 26, `без скилов` 17, `срочно` 6), любые override до 00:00 МСК требуют `лимит снят` bypass. **Инциденты сессии:** subagent (Sonnet) crashed mid-Task Phase 3 с API socket error → recovery inline TDD (memory `feedback_subagent_api_crashes.md`); параллельная Claude-сессия угнала worktree на `deploy/stage-2-prod-2026-05-28` между Phase 2 Task 2/3 → recovery `git switch main` без потерь; параллельная сессия запушила за нас Phase 2 (добавила 2 CI-deploy коммита поверх моих 4); Phase 1 push требовал 3 раза `git restore --staged docs/observer/STATUS.md && git restore && rebase --continue` из-за post-commit hook регенерации между rebased commits на Slepok Stage 2 (PR #26, 15 incoming). **Roadmap осталось:** Phase 4 (#9 хук Semgrep на security-edit + #2 measurement enforce-chain-recommendation, ~3ч) и Phase 5 (#4 cost-tracker Stop-hook per `2026-05-25-llm-first-router-overhaul.md` Task 20 Step 5 — `~/.claude/runtime/cost-daily.json`, ~2ч) — отдельные сессии. План-доки `docs/superpowers/plans/2026-05-28-router-hooks-phase{1,2,3}-*.md`. Brain-retro заметка `docs/observer/notes/2026-05-28-brain-retro-9.md` (163 эпизода 27-28.05, 0 observer errors, 30/164 reviewed) + self-retrospect `docs/observer/notes/2026-05-28-self-retrospect.md` (5 привычек к проработке). **Не нормативный version-bump-worthy event** — нет нового tool в Tooling Прил.Н #1-#86, нет нового ADR, нет новой off-phase подкатегории (хуки/анализатор/classifier — infrastructure tools, не реестр); §6 +этот абзац / §9 +entry; **§0 cross-refs не меняются**. Memory `feedback_subagent_api_crashes.md` + `feedback_tdd_gate_subagent_handoff.md` (новые). Через прямой Edit (user-instruction priority к §5 п.10 — заказчик явно сказал «обнови мозг»). + **2026-05-28 prompt-caching split on reviewer-agent (perf):** commit `a0bb11a6` — добавлен `buildReviewPromptStructured()` в [tools/brain-retro-opus-reviewer.mjs](tools/brain-retro-opus-reviewer.mjs) возвращающий `{system, user}`; `reviewViaDirectApi()` теперь передаёт структурированную форму в `callAnthropicAPI`, которая уже умеет ставить `cache_control: ephemeral` на system-блок (паттерн `buildClassifierPromptStructured` из [tools/router-classifier.mjs:266-291](tools/router-classifier.mjs#L266-L291) с фазы классификатора — infra reused, transport не пишем заново). System-блок: статичные инструкции + 8-dim cues + schema-version-conditional notes (byte-identical при одинаковом schema_version → стабильный cache-key 5 мин). User-блок: per-episode JSON (волатильный). **Эффект на Opus 4.7 ~ноль:** Anthropic минимум кешируемого префикса = 4096 токенов на Opus 4.7 / Opus 4.6 (2048 на Sonnet 4.6); наш system ~300-400 токенов → Anthropic тихо игнорирует `cache_control`, `cache_creation_input_tokens` остаётся 0, никакой ошибки. Архитектурно корректно и future-proof: активируется моментально при свиче на Sonnet 4.6 (Sonnet ещё и в 5× дешевле по самой модели) или при наращивании system-блока > 4096 токенов (например, добавлением grading-рубрики). `buildReviewPrompt()` остался строкой для обратной совместимости. TDD: +5 invariant-тестов на split (cache-prerequisite: system byte-identical при разных episode body); 14/14 reviewer-тестов GREEN, 1046/1046 tools-only регрессия GREEN. Push `5e70ab78..a0bb11a6`. Source: ProxyAPI-логи показали reviewer-вызовы по ~7,5 ₽ каждый на Opus 4.7 (3963 input / 195 output токенов); classifier при этом дешевле — он уже использовал structured-форму. Memory `feedback_prompt_caching_callAnthropicAPI.md`. Через `/claude-md-management:revise-claude-md`. **2026-05-28 retro #8 follow-up закрытие — 3 enforcement-хука + vocab gap fix:** Три коммита подряд: **(1) `d1d53080`** — `enforce-classifier-match.mjs:33` threshold 0.7→0.8 (борьба с borderline false-positives #3 GitHub MCP / #36 adr-kit) + новый `tools/enforce-chain-recommendation.mjs` PreToolUse-хук на mutating tools (matcher Edit|Write|MultiEdit|NotebookEdit|Bash|Task|Agent; блокирует если `cls.recommended_chain.length >= 2` и я ни одного узла не вызвал; override inline `chain-override: ` или global override; 20 vitest тестов) + побочный fix `tools/registry-load.test.mjs` 85→86 узлов под соседний #86 graphifyy. **(2) `3918f355`** — регистрация chain-recommendation в `.claude/settings.json` PreToolUse, block-mode (per выбор заказчика «агрессивно»). **(3) `497d410e`** — новый `tools/enforce-graph-first.mjs` Stop-хук (порог 3 Grep+Glob без graphify-вызова → block; override inline `graph-skip:` или global; 19 vitest тестов) + регистрация Stop + **vocab gap fix**: `tools/enforce-override-vocab.json` все 7 phrases (без скилов / direct ok / срочно / быстрый коммит / recovery / memory dump / ремонт инфраструктуры) теперь подавляют `graph-first` + `chain-recommendation` (раньше A-хук не имел global override). Регрессия: vitest tools-only 1041/1041 GREEN, lefthook все jobs OK. Reviewer APPROVE на оба новых хука. Push `3918f355..497d410e main -> main`. Memory `feedback_enforcement_hooks_retro8.md` (новая) + MEMORY.md строка 25. Не нормативный version-bump-worthy event (нет нового tool/ADR/категории — хуки в `tools/enforce-*.mjs` инфраструктурный layer, не реестр Tooling Прил.Н #1-#86), §6 +этот абзац / §9 +entry. Через subagent-driven-development (Sonnet coder × 2 + Sonnet reviewer × 2) + `/claude-md-management:revise-claude-md`. @@ -389,6 +391,8 @@ trivy image liderra:latest Полная история — [docs/CHANGELOG_claude_md.md](docs/CHANGELOG_claude_md.md) (вынесена 09.05.2026 при правке v1.73→v1.74 ради лаконичности шапки). Здесь — последние правки: +- **v2.36 от 28.05.2026 (router-hooks fixes Phase 1+2+3 closure)** — closes 7/10 brain-retro #9 candidates за одну сессию. 13 коммитов через 3 push'а: Phase 1 `e58d3756..ccf4108e` (3 commits — analyzer archive-fallback removed + System Health block в STATUS.md), Phase 2 `0a52b3d8..769df67a` (4 commits — `tools/enforce-override-limit.mjs` PreToolUse-хук hard-block override-фразы >5/день per phrase, bypass «лимит снят»), Phase 3 `d1b5505a..eedc700b` (5 commits — PAMYATKA в classifier 4→8 паттернов: feature→writing-plans / bugfix→debugging+Pest / prod→Sentry / mechanical→coder-agent), docs commit `4d7e9e33` (brain-retro #9 + self-retrospect #1 + sanity-check + 3 плана + cspell vocab + 2 typo fixes). **Изменения:** шапка v2.35→**v2.36**; §6 +абзац верхним блоком (router-hooks fixes Phase 1+2+3 detailed); §9 +этот entry. **§0 cross-refs не правились** — Pravila/PSR_v1/Tooling Прил.Н не затронуты (нет нового tool в реестре #1-#86, нет ADR, нет off-phase подкатегории; tools/enforce-override-limit.mjs / tools/system-health.mjs / PAMYATKA расширение в router-classifier.mjs — infrastructure layer, не реестр). Регрессия 1088/1088 vitest tools-tests GREEN. Инциденты: Sonnet subagent crashed mid-Task с API socket error на Phase 3 Task 1 → inline TDD recovery (все Tasks 2-5 inline, дёшево); параллельная Claude-сессия дважды затронула worktree (1) угнала на deploy-branch между Phase 2 Tasks 2/3 — recovery `git switch main`, (2) запушила за нас Phase 2 поверх своих 2 CI-deploy коммитов. Memory `feedback_subagent_api_crashes.md` (новая) + `feedback_tdd_gate_subagent_handoff.md` (новая, TDD-gate hook не видит subagent test-edit при controller подхвате после crash) + `project_state.md` (entry 2026-05-28). Push `81f92ca3..4d7e9e33 main -> main`. Через прямой Edit (user-instruction priority к §5 п.10 — заказчик в prompt'е «пуш обнови мозг и память»). + - **v2.35 от 28.05.2026 (prompt-caching split on reviewer-agent — perf)** — commit `a0bb11a6` оптимизирует [tools/brain-retro-opus-reviewer.mjs](tools/brain-retro-opus-reviewer.mjs): добавлен `buildReviewPromptStructured()` возвращающий `{system, user}` (паттерн `buildClassifierPromptStructured` с фазы классификатора, использует уже-существующую structured-ветку `callAnthropicAPI` с `cache_control: ephemeral`). `buildReviewPrompt()` сохранён как backward-compat wrapper. **Изменения:** шапка v2.34→**v2.35**; §6 +абзац верхним блоком; §9 +этот entry. **§0 cross-refs не правились** — Pravila/PSR_v1/Tooling Прил.Н не затронуты (инфраструктура `tools/`, не tooling-канон #1-#86, не нормативка, не ADR). **Эффект на Opus 4.7 ~ноль** (4096-token Anthropic cache минимум vs наш ~400-token static-блок → silent no-op `cache_creation_input_tokens: 0`, никакой ошибки); активируется при свиче на Sonnet 4.6 (минимум 2048 + модель в 5× дешевле) ИЛИ при наращивании static-блока > 4096 токенов (например, grading-рубрика с примерами). TDD: +5 invariant-тестов на split (cache-prerequisite — system byte-identical при разных episode); 14/14 reviewer-тестов GREEN. Регрессия 1046/1046 tools-only vitest GREEN. Push `5e70ab78..a0bb11a6`. Источник анализа — ProxyAPI-логи: reviewer ~7,5 ₽ за вызов на Opus 4.7 (3963 input / 195 output); classifier дешевле — уже использовал structured. Memory `feedback_prompt_caching_callAnthropicAPI.md` (новая) фиксирует non-obvious инфра-паттерн `callAnthropicAPI({system, user})` + Anthropic-минимумы кешируемого префикса по моделям + verify через `onUsage` callback. Через `/claude-md-management:revise-claude-md` per §5 п.10. - **v2.34 от 28.05.2026 (retro #8 follow-up — 3 enforcement hooks)** — Три коммита: `d1d53080` (classifier threshold 0.7→0.8 + new `enforce-chain-recommendation.mjs` PreToolUse + registry-test bump) + `3918f355` (chain-recommendation registration в settings.json block-mode) + `497d410e` (new `enforce-graph-first.mjs` Stop hook + `enforce-override-vocab.json` vocab gap fix — все 7 фраз теперь подавляют graph-first + chain-recommendation). **Изменения:** шапка v2.33→**v2.34**; §6 +абзац верхним блоком; §9 +этот entry. **§0 cross-refs не правились** — Pravila/PSR_v1/Tooling Прил.Н не затронуты (нет нового tool в реестре #1-#86, нет ADR, нет off-phase подкатегории; tools/enforce-*.mjs — инфраструктура контроллера, не tooling). Регрессия 1041/1041 vitest tools-tests GREEN. Reviewer APPROVE × 2. Memory `feedback_enforcement_hooks_retro8.md` (новая) фиксирует операционный гайд по 3 хукам и override-механикам (inline `chain-override:` / `graph-skip:` + global vocab). Push `3918f355..497d410e main -> main`. Через `/claude-md-management:revise-claude-md` per §5 п.10. diff --git a/docs/observer/STATUS.md b/docs/observer/STATUS.md index 5ca7734c..5f9e126f 100644 --- a/docs/observer/STATUS.md +++ b/docs/observer/STATUS.md @@ -1,6 +1,6 @@ # Brain Status (auto-generated) -Last updated: 2026-05-28T09:33:54.860Z +Last updated: 2026-05-28T09:39:00.236Z | Контролёр | Состояние | Детали | |---|---|---|