diff --git a/.gitignore b/.gitignore index 6c465a19..11278d5c 100644 --- a/.gitignore +++ b/.gitignore @@ -151,6 +151,12 @@ app/playwright/node_modules/ # Superpowers using-git-worktrees — локальные worktrees вне репо .claude/worktrees/ +# Graphify knowledge-graph build artefacts (ADR-017 #86) — ~5MB graph.json + 1.8MB +# graph.html + cache/. Local-only, не коммитятся; восстанавливается пересборкой +# через /graphify --update. В main worktree graphify-out — junction на spike worktree. +graphify-out/ +graphify-out-*/ + # Vitest coverage output (app/coverage/) — генерируется npm run test:coverage /app/coverage/ diff --git a/CLAUDE.md b/CLAUDE.md index a07634db..dc58655f 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,6 +1,6 @@ # CLAUDE.md — техконтекст Лидерры -**Версия:** 2.31 от 27.05.2026 вечер — 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.33 от 27.05.2026 — 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. @@ -12,9 +12,9 @@ | Тема | Документ | |---|---| -| Продуктовые правила работы Claude | [docs/Pravila_raboty_Claude_v1_1.md](docs/Pravila_raboty_Claude_v1_1.md) (**v1.42 от 25.05.2026** — §17.7 «Coverage announcement»: новая подсекция — правило показывать `coverage: :` пометку на каждой non-conversation задаче (6 каналов: skill/node/chain/hook/agent/direct). **v1.41 наследие** — LLM-first router overhaul Phase 1 Tasks 4-5: §12 «Superpowers hard rule» снят в архив, §17 «Universal skill-coverage» добавлен (classifier-driven default-deny, ADR-016), §16.4 cross-refs мигрированы на nodes.yaml; полные детали в шапке Pravila «Что изменилось в v1.41». **v1.40 наследие** — Делегирование проектным AI-агентам: §2.4 (новая подсекция) — контроллер обязан звать `normative-sync` (#84) после крупной задачи + `prod-deploy-validator` (#85) перед каждым выкатом liderra.ru; прежние `pest-parallel-debugger` + `rls-reviewer` тоже формализованы в одной таблице. Project-агенты в `docs/registry/nodes.yaml` subcategory `project-agent`, **не входят в Tooling канон счётчиков** #1-#83. Связано: CLAUDE.md v2.28, spec `docs/superpowers/specs/2026-05-24-controller-offload-agents-design.md`. **v1.39 наследие** — C1 marketing-tooling: §13.2 +абзац «Off-phase marketing-tooling» (#74 marketing / #75 marketingskills / #76 brand-voice / #77 marketing-ru / #78 Яндекс.Метрика MCP / #79 Яндекс.Директ+Wordstat MCP / #80 Telegram MCP / #81 Postiz / #82 DataForSEO MCP DEFERRED / #83 Unisender Go MCP DEFERRED), 18-я off-phase подкатегория; провенанс-вет IS9 (`docs/security/marketing-vet.md`); VK out-of-scope; ADR-015. **v1.38 наследие** — A8 infosec-tooling install-sync: ZAP #68 + Ward #70 установлены портативно 21.05 → статус PENDING снят (§13.2). **v1.37 наследие** — A8 infosec-tooling §13.2 +абзац «Off-phase infosec-tooling» (A8: #68 OWASP ZAP DAST PENDING / #69 Nuclei CLI / #70 Ward CLI PENDING / #71 pdn-152fz-audit / #72 threat-model / #73 security-go-live), 17-я off-phase подкатегория; провенанс-вет IS9; ADR-014. **v1.36 наследие** — A8 infosec-tooling install-sync: ZAP #68 + Ward #70 установлены портативно 21.05 → статус PENDING снят (§13.2). **v1.37 наследие** — A8 infosec-tooling §13.2 +абзац «Off-phase infosec-tooling» (A8: #68 OWASP ZAP DAST PENDING / #69 Nuclei CLI / #70 Ward CLI PENDING / #71 pdn-152fz-audit / #72 threat-model / #73 security-go-live), 17-я off-phase подкатегория; провенанс-вет IS9; ADR-014. **v1.36 наследие** — §16.4 расширен симметрией missed activation (условное правило): эпизод с профильной классификацией (`tools/observer-classification-map.json`) при `node_chosen === 'direct'` и наличии non-dormant рекомендуемого узла → сигнал, surface в STATUS.md C5 + /brain-retro; DEFERRED-исключения через `tools/.node-dormancy.json`. **v1.35 наследие** — A1 backend-tooling §13.2 +абзац «Off-phase backend-tooling» (A1: #64 Rector / #65 PHP Insights / #66 laravel-backend-patterns / #67 NightOwl DEFERRED), 16-я off-phase подкатегория. **v1.34 наследие** — finance-tooling §13.2 +абзац «Off-phase finance-tooling» (C6+C7: #61 finance plugin / #62 billing-audit / #63 ru-tax-accounting). **v1.33 наследие** — observer factor-analysis phase 1.1 (ADR-011 amend): §16.2 — `decision_provenance.kind` расширен до 3 значений (`autonomous` \| `user_directed_method` \| `user_chose_from_options`); 3-й kind — collaborative-choice case (заказчик выбирает один из предложенных Claude вариантов в предыдущем ходе); §16.7 +абзац «Граница `user_chose_from_options`» — routing-gate НЕ блокирует этот kind (выбор из choice-space самого Claude, не навязанный извне метод). **v1.32 наследие** — observer factor-analysis extension (ADR-011 amend): §16.2 +абзац «Схема эпизода v2» (`schema_version`, `decision_provenance`, `environment`, `task_size`, `task_ref`, `prompt_signal`; `outcome` `unknown` при записи; +`hook_fired`/`interrupt`/`retry`/`time_burn`/`parse_gap`; `observer_error` маркер); §16.3 4→5 контролёров (+C5 observer-coverage-checker, warn-only); §16.7 (новое) routing-тег-дисциплина — Stop-хук `decision: block` при навязанном методе без тега, `stop_hook_active` guard против петли; §16.8 (новое) самодисциплина наблюдателя (`observer_error` маркер вместо тихого пропуска, `parse_gap` событие, C5 контролёр); §16.6 +cross-ref на factor-analysis spec. **v1.31 наследие** — Brain governance §16 implementation (ADR-011): §16.1 router-only, §16.2 observer scope B (5 mandatory fields incl. primary_rationale, 7 event kinds incl. routing_decision per spec v1.1), §16.3 4 controllers, §16.4 поведенческое правило «не использован ≠ проблема», §16.5 не override-floor §9, §16.6 cross-refs. **v1.30 наследие** — компакция «мозга» finding 3: §13.2 счётчики off-phase подкатегорий → пин на Tooling Прил. Н §0 (канон счётчиков); §14 заголовок +метка «(dormant — §14.9)». **v1.29 наследие** — +§14.9 «Текущий статус: изолирован (18.05.2026, dormant)» — Rec2 SYSTEM-аудита: ruflo изолирован от Claude-потока, артефакты сохранены; live-связи hooks/MCP/daemon отключены; queen-триггер §14.1 dormant. **v1.28 наследие** — §13.2 +абзац «Off-phase authoring-tooling + dev-support» (#56 skill-creator / #57 plugin-dev / #58 hookify — тринадцатая off-phase подкатегория authoring-tooling; #59 claude-code-setup / #60 context7 — четырнадцатая dev-support); ADR-010. **v1.27 наследие** — §15 hard-rule «Параллельные сессии» (15.1 субагенты+git Sonnet/Opus only, 15.2 нормативка+pre-flight sync с 8-позиционным списком файлов: Pravila/CLAUDE.md/Tooling/PSR_v1/MEMORY.md/Открытые_вопросы/docs/adr/*/db/schema.sql, 15.3 cross-refs); третье hard-rule после §12 и §14; +§10 changelog entry v1.27. **v1.26 наследие** — §13.2 +абзац «Off-phase discovery-tooling» (#55 discovery-interview — проектный скил, режимы FEATURE+SYSTEM); двенадцатая off-phase подкатегория. **v1.25 наследие** — §13.2 +абзац «Off-phase business-process» (#51 operations / #52 process-modeling / #53 process-analysis / #54 n8n-mcp DEFERRED — раздел C10 карты); одиннадцатая off-phase подкатегория. **v1.24 наследие** — §13.2 +абзац «Off-phase ml-ai-tooling» (#48 promptfoo / #49 Data Scientist skill / #50 Jupyter MCP DEFERRED — раздел A11 карты); десятая off-phase подкатегория. **v1.23 наследие** — §13.2 +абзац «Off-phase integration-tooling» (#47 openapi-mcp-server / api-docs agent — раздел A3 карты); девятая off-phase подкатегория. **v1.22 наследие** — §13.2 +абзац «Off-phase design-tooling» (#44 Figma MCP / #45 Universal Icons MCP / #46 Design plugin — раздел A4 карты); восьмая off-phase подкатегория. **v1.21 наследие** — §13.2 абзац «Off-phase architecture-tooling» расширен: +#43 deptrac (4-й инструмент категории, Composer dev-dep). **v1.20 наследие** — §13.2 +абзац «Off-phase project-management» (#41 CCPM / #42 product-management — раздел C9 карты); новая седьмая off-phase подкатегория. **v1.19 наследие** — §13.2 факт-правка #40 Security Guidance: блокирующий хук (`sys.exit 2`), не warn-only. **v1.18 наследие** — §13.2 +абзац «Off-phase audit-security» (#39 Trail of Bits Skills / #40 Security Guidance — раздел D3 карты). **v1.17 наследие** — §13.2 +абзац «Off-phase architecture-tooling» (#36 adr-kit / #37 mermaid-skill / #38 architecture-patterns — раздел A6 карты). **v1.16 наследие** — реколлаж ruflo: §1 убран уровень −1, ruflo переописан в advisory-подсистему; §14 queen-триггер сохранён. **v1.15 наследие** — §14 (new) Ruflo Queen routing hard-rule (триггер queen/королева). **v1.14 наследие** — §12 → sub-policy под ruflo routing (commit `9c3057b`); Superpowers hard-rule сохраняется. **v1.13 наследие** — §13.2 +новый абзац «Off-phase MCP debug-runtime (отдельная категория)»: `@sentry/mcp-server` (Tooling #34) + `@modelcontextprotocol/server-redis` (Tooling #35) — retrospective formalization после PR #3 merge. Категория отдельная от UI-пула и от infrastructure (claude-md-management). READ-ONLY usage обязателен. v1.12 наследие — methodology additions §4.6 visual smoke для UI-refactor + §4.7 п.4 plans/specs relative paths `../../../`) | -| **Правила совместного использования плагинов Claude** | [docs/Plugin_stack_rules_v1.md](docs/Plugin_stack_rules_v1.md) (**v3.22 от 22.05.2026** — C1 marketing-tooling: R10.1 Блок 1 +marketing (#74 plugin + #75 marketingskills + #76 brand-voice + #77 marketing-ru) + note (+Яндекс.Метрика MCP #78 / Яндекс.Директ+Wordstat MCP #79 / Telegram MCP #80 / Postiz #81 / DataForSEO MCP #82 DEFERRED / Unisender Go MCP #83 DEFERRED); R15.6 +marketing-tooling; 18-я off-phase подкатегория; не UI → вне R6/R14. **v3.21 наследие** — A8 infosec-tooling install-sync: ZAP #68 + Ward #70 установлены портативно 21.05 → R10.1 Блок 1 note + Блок 3 ZAP-row статус PENDING INSTALL снят. **v3.20 наследие** — A8 infosec-tooling install-sync: ZAP #68 + Ward #70 установлены портативно 21.05 → R10.1 Блок 1 note + Блок 3 ZAP-row статус PENDING INSTALL снят. **v3.20 наследие** — A8 infosec-tooling: R10.1 Блок 1 note +infosec (#69 Nuclei / #70 Ward — CLI; #71-73 self-authored скилы) + Блок 3 +OWASP ZAP MCP (#68, PENDING INSTALL); R15.6 +infosec-tooling; 17-я off-phase подкатегория. **v3.19 наследие** — A1 backend-tooling: R10.1 Блок 1 note +backend-tooling (#64 Rector / #65 PHP Insights — Composer dev-deps; #66 laravel-backend-patterns — self-authored; #67 NightOwl DEFERRED); R15.6 +backend-tooling; 16-я off-phase подкатегория. **v3.18 наследие** — finance-tooling: R10.1 Блок 1 +finance plugin (#61) + note (+billing-audit #62 / ru-tax-accounting #63). **v3.17 наследие** — observer schema v2 sync (ADR-011 amend): R16.1 +предложение про `schema_version` / `decision_provenance` / `environment` / `task_size` / `prompt_signal` + расширенные события (`hook_fired`/`interrupt`/`retry`/`time_burn`/`parse_gap`) + `observer_error` маркер; R16.4 +cross-ref на factor-analysis spec и plan. R0–R15 без изменений. Routing-gate / C5 / `/brain-retro` analyzer — нормативно в Pravila §16.7/§16.8 + ADR-011 §5; R16 фиксирует evidence-сбор, не enforcement. **v3.16 наследие** — Brain governance R16 «Brain evidence loop» (ADR-011): R16.1 observer scope (5 mandatory fields), R16.2 plugin stack-conscious events (routing_decision + factor matrix 5 axes), R16.3 не override (R16 evidence-сбор, не правило выбора), R16.4 cross-refs. 17 правил R0-R16. **v3.15 наследие** — компакция «мозга» finding 3: R10.1 счётчики позиций → пин на Tooling Прил. Н §0 (канон счётчиков). **v3.14 наследие** — +R15 «Off-phase routing» на свободном слоте (motion удалён v2.0): R15.1 off-phase узлы вне R6.0/R6.1/R14, R15.2 routing-таблица — `docs/routing-off-phase.md` v1.0+, R15.3 приоритет специфичности + ADR-границы, R15.4 hard-rules Pravila §12/§14/§15 перевешивают, R15.5 live-override, R15.6 гранулярные категории, R15.7 обычное правило. UI-аппарат R0–R14 без изменений. Rec5 SYSTEM-аудита. **v3.13 наследие** — R10.1 Блок 1 +5 строк (#56 skill-creator / #57 plugin-dev / #58 hookify / #59 claude-code-setup / #60 context7) + note (v3.13); новые тринадцатая (authoring-tooling) и четырнадцатая (dev-support) off-phase подкатегории, не UI → вне R6/R14; hookify HK1 pre-check. **v3.12 наследие** — R10.1 Блок 1 note (v3.12) +discovery-interview (#55, self-authored project-скил, discovery-tooling); новая двенадцатая off-phase подкатегория discovery-tooling, не UI → вне R6/R14. **v3.11 наследие** — R10.1 Блок 1 +operations (#51, business-process, marketplace-плагин) + Блок 1 note +process-modeling (#52) + process-analysis (#53, self-authored project-скилы) + Блок 3 +n8n-mcp (#54, DEFERRED); новая одиннадцатая off-phase подкатегория business-process, не UI → вне R6/R14. **v3.10 наследие** — R10.1 Блок 3 +Jupyter MCP (#50, ml-ai-tooling, DEFERRED) + Блок 1 note +promptfoo (#48) + Data Scientist skill (#49); новая десятая off-phase подкатегория ml-ai-tooling, не UI → вне R6/R14. **v3.9 наследие** — R10.1 Блок 3 +openapi-mcp-server (#47, integration-tooling); новая девятая off-phase подкатегория integration-tooling, не UI → вне R6/R14. **v3.8 наследие** — R10.1 Блок 1 +Design plugin (#46, design-tooling); Блок 3 +Universal Icons MCP (#45) + Figma MCP (#44, DEFERRED); новая восьмая off-phase подкатегория design-tooling, не UI → вне R6/R14. **v3.7 наследие** — R10.1 Блок 1 +note: deptrac #43 (Composer dev-dep, не marketplace-плагин, architecture-tooling), не UI → вне R6/R14. **v3.6 наследие** — R10.1 Блок 1 +2 строки (CCPM + product-management); новая категория project-management, не UI → вне R6/R14. **v3.5 наследие** — R10.1 факт-правка security-guidance: блокирующий хук, не warn-only. **v3.4 наследие** — R10.1 Блок 1 +2 строки (Trail of Bits Skills + security-guidance); новая категория audit-security, не UI → вне R6/R14. **v3.3 наследие** — R10.1 Блок 1 +2 строки (adr-kit + architecture-patterns) + note (mermaid-skill вендоренный); новая категория architecture-tooling, не UI → вне R6/R14. **v3.2 наследие** — реколлаж ruflo: R0 entry-point framing убран, ruflo advisory-подсистема. **v3.1 наследие** — queen-триггер §14. **v3.0 наследие** — major bump: R0 stack-gate → paired-stack delegation pattern (commit `d30cbeb`). **v2.1 наследие** — R10.1 Блок 3 (MCP-серверы) +2 строки sentry + redis с категорией **debug-runtime**: `@sentry/mcp-server@0.33.0+` (Tooling #34, pending Б-1) + `@modelcontextprotocol/server-redis@2025.4.25` (Tooling #35, deprecated Anthropic source, Memurai PONG verified Task 4). Не trigger'ит R6.0/R6.1 фильтры и не входит в R14 pipeline UI-генераторов. v2.0 наследие — major bump: removal of R15 motion-runtime restrictions per user decision 12.05.2026; conscious rollback v1.4 audited construction; framer-motion переведён из regulatory hard-запрета в technical-guidance уровень) | -| Полный реестр формализованных позиций тулчейна (счётчики — канон в Прил. Н §0) | [docs/Tooling_v8_3.md](docs/Tooling_v8_3.md) (**Прил. Н v2.23 от 22.05.2026** — C1 marketing-tooling: §4.49 marketing plugin + §4.50 marketingskills + §4.51 brand-voice + §4.52 marketing-ru + §4.53 Яндекс.Метрика MCP + §4.54 Яндекс.Директ+Wordstat MCP + §4.55 Telegram MCP + §4.56 Postiz + §4.57 DataForSEO MCP (DEFERRED) + §4.58 Unisender Go MCP (DEFERRED); §0 счётчик 73→83 (93→103 total) + 18-я подкатегория marketing-tooling (раздел C1); ADR-015; IS9-вет (`docs/security/marketing-vet.md`). **Прил. Н v2.22 наследие** — pg_audit #28 + pg_anonymizer #29 установлены на боевом `liderra.ru` (расширения PostgreSQL фазы 3): §5.1 attribute-блоки #28/#29 + §6 compliance-таблица + §10.4 шаг 2 → ✅ прод; setup-dok `docs/security/pgaudit-anonymizer-setup.md`. **Прил. Н v2.21 наследие** — pg_audit #28 + pg_anonymizer #29 установлены на боевом `liderra.ru` (расширения PostgreSQL фазы 3): §5.1 attribute-блоки #28/#29 + §6 compliance-таблица + §10.4 шаг 2 → ✅ прод; setup-док `docs/security/pgaudit-anonymizer-setup.md`. **Прил. Н v2.21 наследие** — A8 infosec-tooling install-sync: ZAP #68 + Ward #70 установлены портативно 21.05 → §4.43/§4.45 dormant true→false, §4.48 уточнён, setup-доки `docs/security/{zap,ward}-setup.md`; счётчики без изменений (73/93). **Прил. Н v2.20 наследие** — A8 infosec-tooling: §4.43 OWASP ZAP #68 + §4.44 Nuclei #69 + §4.45 Ward #70 + §4.46 pdn-152fz-audit #71 + §4.47 threat-model #72 + §4.48 security-go-live #73; §0 счётчик 67→73 (87→93 total) + 17-я подкатегория infosec-tooling (раздел A8); ADR-014. **Прил. Н v2.19 наследие** — A1 backend-tooling: §4.39 Rector #64 + §4.40 PHP Insights #65 + §4.41 laravel-backend-patterns #66 + §4.42 NightOwl #67 (DEFERRED); §0 счётчик 63→67 (83→87 total) + 16-я подкатегория backend-tooling (раздел A1); ADR-013. **Прил. Н v2.18 наследие** — finance-tooling: §4.36 finance plugin #61 + §4.37 billing-audit #62 + §4.38 ru-tax-accounting #63; §0 счётчик 60→63 + 15-я подкатегория finance-tooling. **Прил. Н v2.17 наследие** — Brain governance Task A3 (ADR-011): §0.1 row template (9 obligatory attributes) + 58 Атрибуты blocks на всех узлах реестра. Дамп-блоки для phase-active (§2.4/§3.5/§5.1 для phase 0/1/3) + inline-блоки для phase-2 (§4.1-§4.4) и off-phase (§4.5-§4.35). dormant=true для #1 PG MCP (replaced), #17 pg_partman (no native Windows PG ext), ruflo §4.10. 6 atomic sub-batches: 1f77134/0718e41/16f7f1c/ca4da69/39231ef/3e73396 + header bump 8170527. Структурный реестр — вход для router-procedure.md (commit 8a2e701) step 3. **Прил. Н v2.16 наследие** — компакция «мозга» finding 3: §0 +«КАНОН СЧЁТЧИКОВ» anchor (Прил. Н §0 — единственный источник числовых счётчиков тулчейна); §12 заголовок — убран stale-счётчик «35». **v2.15 наследие** — §4.10 +status-block «ruflo ИЗОЛИРОВАН 18.05.2026» (live-связи hooks/MCP/daemon отключены, артефакты сохранены, queen-триггер dormant). Счётчики тулчейна без изменений — 60 формализованных позиций + 20 ruflo plugins = 80 total. Rec2 SYSTEM-аудита. **v2.14 наследие** — §4.31–§4.35 (#56 skill-creator / #57 plugin-dev / #58 hookify — authoring-tooling; #59 claude-code-setup / #60 context7 — dev-support — новые тринадцатая и четырнадцатая off-phase подкатегории); §0 счётчик 55→60 (75→80 total). **v2.13 наследие** — §4.30 (#55 discovery-interview, discovery-tooling — новая двенадцатая off-phase подкатегория); §0 счётчик 54→55. **v2.12 наследие** — §4.26/§4.27/§4.28/§4.29 (#51 operations / #52 process-modeling / #53 process-analysis / #54 n8n-mcp DEFERRED, business-process — новая одиннадцатая off-phase подкатегория); §0 счётчик 50→54. **v2.11 наследие** — §4.20 +UI3 (ADR-006 Decision-4 icon-path boundary mirror: Lucide-иконки канонически через `lucide-vue-next` + Vuetify IconSet, raw-SVG MCP — только не-Lucide коллекции). **v2.10 наследие** — §4.23/§4.24/§4.25 (#48 promptfoo / #49 Data Scientist skill / #50 Jupyter MCP DEFERRED, ml-ai-tooling — новая десятая off-phase подкатегория); §0 счётчик 47→50. **v2.9 наследие** — §4.22 (#47 openapi-mcp-server, integration-tooling — новая девятая off-phase подкатегория); §0 счётчик 46→47. **v2.8 наследие** — §4.19/§4.20/§4.21 (#44 Figma MCP / #45 Universal Icons MCP / #46 Design plugin, design-tooling — новая восьмая off-phase подкатегория); §0 счётчик 43→46. **v2.7 наследие** — §4.18 (#43 deptrac, architecture-tooling — 4-й инструмент категории); §0 счётчик 42→43. **v2.6 наследие** — §4.16/§4.17 (#41 CCPM / #42 product-management), новая седьмая off-phase подкатегория project-management; §0 счётчик 40→42. **v2.5 наследие** — §4.15 факт-правка #40 Security Guidance: блокирующий хук (`sys.exit 2`), не warn-only; +SG2 Windows-починка python3-резолва. **v2.4 наследие** — §4.14/§4.15 (#39 Trail of Bits Skills / #40 Security Guidance), новая шестая off-phase подкатегория audit-security; §0 счётчик 38→40. **v2.3 наследие** — §4.11–4.13 (#36 adr-kit / #37 mermaid-skill / #38 architecture-patterns), новая пятая off-phase подкатегория architecture-tooling; §0 счётчик 35→38. **v2.2 наследие** — реколлаж ruflo: §4.10 переписан из «entry-point оркестратора уровня −1» в «advisory/automation-подсистема». **v2.1 наследие** — queen-триггер §14. **v2.0 наследие** — §4.10 (новый) «Orchestration layer (ruflo)»: ruflo v3.7.0-alpha.38+ (off-phase, orchestration category). **v1.17 наследие** — §0 счётчик off-phase 3 → 5; итого 33 → 35; §4.8 (новый) — #34 Sentry MCP (`@sentry/mcp-server@0.33.0+`, official; pending Sentry instance deployment Б-1); §4.9 (новый) — #35 Redis MCP (`@modelcontextprotocol/server-redis@2025.4.25`, deprecated Anthropic source, рабочий с Memurai localhost:6379). Категория **debug-runtime**, отдельная от UI-пула. v1.16 наследие — §9.2 «Motion runtime библиотеки» переформулирован из regulatory denylist в technical guidance) | +| Продуктовые правила работы Claude | [docs/Pravila_raboty_Claude_v1_1.md](docs/Pravila_raboty_Claude_v1_1.md) (**v1.43 от 27.05.2026** — knowledge-graph-tooling: §13.2 +абзац «Off-phase knowledge-graph-tooling» (#86 graphifyy, user-level скил, CLI `graphifyy`, knowledge graph портала, activation `/graphify`, артефакты `graphify-out*/` gitignored), 19-я off-phase подкатегория; ADR-017 (KG1–KG5). **v1.42 наследие** — §17.7 «Coverage announcement»: новая подсекция — правило показывать `coverage: :` пометку на каждой non-conversation задаче (6 каналов: skill/node/chain/hook/agent/direct). **v1.41 наследие** — LLM-first router overhaul Phase 1 Tasks 4-5: §12 «Superpowers hard rule» снят в архив, §17 «Universal skill-coverage» добавлен (classifier-driven default-deny, ADR-016), §16.4 cross-refs мигрированы на nodes.yaml; полные детали в шапке Pravila «Что изменилось в v1.41». **v1.40 наследие** — Делегирование проектным AI-агентам: §2.4 (новая подсекция) — контроллер обязан звать `normative-sync` (#84) после крупной задачи + `prod-deploy-validator` (#85) перед каждым выкатом liderra.ru; прежние `pest-parallel-debugger` + `rls-reviewer` тоже формализованы в одной таблице. Project-агенты в `docs/registry/nodes.yaml` subcategory `project-agent`, **не входят в Tooling канон счётчиков** #1-#83. Связано: CLAUDE.md v2.28, spec `docs/superpowers/specs/2026-05-24-controller-offload-agents-design.md`. **v1.39 наследие** — C1 marketing-tooling: §13.2 +абзац «Off-phase marketing-tooling» (#74 marketing / #75 marketingskills / #76 brand-voice / #77 marketing-ru / #78 Яндекс.Метрика MCP / #79 Яндекс.Директ+Wordstat MCP / #80 Telegram MCP / #81 Postiz / #82 DataForSEO MCP DEFERRED / #83 Unisender Go MCP DEFERRED), 18-я off-phase подкатегория; провенанс-вет IS9 (`docs/security/marketing-vet.md`); VK out-of-scope; ADR-015. **v1.38 наследие** — A8 infosec-tooling install-sync: ZAP #68 + Ward #70 установлены портативно 21.05 → статус PENDING снят (§13.2). **v1.37 наследие** — A8 infosec-tooling §13.2 +абзац «Off-phase infosec-tooling» (A8: #68 OWASP ZAP DAST PENDING / #69 Nuclei CLI / #70 Ward CLI PENDING / #71 pdn-152fz-audit / #72 threat-model / #73 security-go-live), 17-я off-phase подкатегория; провенанс-вет IS9; ADR-014. **v1.36 наследие** — A8 infosec-tooling install-sync: ZAP #68 + Ward #70 установлены портативно 21.05 → статус PENDING снят (§13.2). **v1.37 наследие** — A8 infosec-tooling §13.2 +абзац «Off-phase infosec-tooling» (A8: #68 OWASP ZAP DAST PENDING / #69 Nuclei CLI / #70 Ward CLI PENDING / #71 pdn-152fz-audit / #72 threat-model / #73 security-go-live), 17-я off-phase подкатегория; провенанс-вет IS9; ADR-014. **v1.36 наследие** — §16.4 расширен симметрией missed activation (условное правило): эпизод с профильной классификацией (`tools/observer-classification-map.json`) при `node_chosen === 'direct'` и наличии non-dormant рекомендуемого узла → сигнал, surface в STATUS.md C5 + /brain-retro; DEFERRED-исключения через `tools/.node-dormancy.json`. **v1.35 наследие** — A1 backend-tooling §13.2 +абзац «Off-phase backend-tooling» (A1: #64 Rector / #65 PHP Insights / #66 laravel-backend-patterns / #67 NightOwl DEFERRED), 16-я off-phase подкатегория. **v1.34 наследие** — finance-tooling §13.2 +абзац «Off-phase finance-tooling» (C6+C7: #61 finance plugin / #62 billing-audit / #63 ru-tax-accounting). **v1.33 наследие** — observer factor-analysis phase 1.1 (ADR-011 amend): §16.2 — `decision_provenance.kind` расширен до 3 значений (`autonomous` \| `user_directed_method` \| `user_chose_from_options`); 3-й kind — collaborative-choice case (заказчик выбирает один из предложенных Claude вариантов в предыдущем ходе); §16.7 +абзац «Граница `user_chose_from_options`» — routing-gate НЕ блокирует этот kind (выбор из choice-space самого Claude, не навязанный извне метод). **v1.32 наследие** — observer factor-analysis extension (ADR-011 amend): §16.2 +абзац «Схема эпизода v2» (`schema_version`, `decision_provenance`, `environment`, `task_size`, `task_ref`, `prompt_signal`; `outcome` `unknown` при записи; +`hook_fired`/`interrupt`/`retry`/`time_burn`/`parse_gap`; `observer_error` маркер); §16.3 4→5 контролёров (+C5 observer-coverage-checker, warn-only); §16.7 (новое) routing-тег-дисциплина — Stop-хук `decision: block` при навязанном методе без тега, `stop_hook_active` guard против петли; §16.8 (новое) самодисциплина наблюдателя (`observer_error` маркер вместо тихого пропуска, `parse_gap` событие, C5 контролёр); §16.6 +cross-ref на factor-analysis spec. **v1.31 наследие** — Brain governance §16 implementation (ADR-011): §16.1 router-only, §16.2 observer scope B (5 mandatory fields incl. primary_rationale, 7 event kinds incl. routing_decision per spec v1.1), §16.3 4 controllers, §16.4 поведенческое правило «не использован ≠ проблема», §16.5 не override-floor §9, §16.6 cross-refs. **v1.30 наследие** — компакция «мозга» finding 3: §13.2 счётчики off-phase подкатегорий → пин на Tooling Прил. Н §0 (канон счётчиков); §14 заголовок +метка «(dormant — §14.9)». **v1.29 наследие** — +§14.9 «Текущий статус: изолирован (18.05.2026, dormant)» — Rec2 SYSTEM-аудита: ruflo изолирован от Claude-потока, артефакты сохранены; live-связи hooks/MCP/daemon отключены; queen-триггер §14.1 dormant. **v1.28 наследие** — §13.2 +абзац «Off-phase authoring-tooling + dev-support» (#56 skill-creator / #57 plugin-dev / #58 hookify — тринадцатая off-phase подкатегория authoring-tooling; #59 claude-code-setup / #60 context7 — четырнадцатая dev-support); ADR-010. **v1.27 наследие** — §15 hard-rule «Параллельные сессии» (15.1 субагенты+git Sonnet/Opus only, 15.2 нормативка+pre-flight sync с 8-позиционным списком файлов: Pravila/CLAUDE.md/Tooling/PSR_v1/MEMORY.md/Открытые_вопросы/docs/adr/*/db/schema.sql, 15.3 cross-refs); третье hard-rule после §12 и §14; +§10 changelog entry v1.27. **v1.26 наследие** — §13.2 +абзац «Off-phase discovery-tooling» (#55 discovery-interview — проектный скил, режимы FEATURE+SYSTEM); двенадцатая off-phase подкатегория. **v1.25 наследие** — §13.2 +абзац «Off-phase business-process» (#51 operations / #52 process-modeling / #53 process-analysis / #54 n8n-mcp DEFERRED — раздел C10 карты); одиннадцатая off-phase подкатегория. **v1.24 наследие** — §13.2 +абзац «Off-phase ml-ai-tooling» (#48 promptfoo / #49 Data Scientist skill / #50 Jupyter MCP DEFERRED — раздел A11 карты); десятая off-phase подкатегория. **v1.23 наследие** — §13.2 +абзац «Off-phase integration-tooling» (#47 openapi-mcp-server / api-docs agent — раздел A3 карты); девятая off-phase подкатегория. **v1.22 наследие** — §13.2 +абзац «Off-phase design-tooling» (#44 Figma MCP / #45 Universal Icons MCP / #46 Design plugin — раздел A4 карты); восьмая off-phase подкатегория. **v1.21 наследие** — §13.2 абзац «Off-phase architecture-tooling» расширен: +#43 deptrac (4-й инструмент категории, Composer dev-dep). **v1.20 наследие** — §13.2 +абзац «Off-phase project-management» (#41 CCPM / #42 product-management — раздел C9 карты); новая седьмая off-phase подкатегория. **v1.19 наследие** — §13.2 факт-правка #40 Security Guidance: блокирующий хук (`sys.exit 2`), не warn-only. **v1.18 наследие** — §13.2 +абзац «Off-phase audit-security» (#39 Trail of Bits Skills / #40 Security Guidance — раздел D3 карты). **v1.17 наследие** — §13.2 +абзац «Off-phase architecture-tooling» (#36 adr-kit / #37 mermaid-skill / #38 architecture-patterns — раздел A6 карты). **v1.16 наследие** — реколлаж ruflo: §1 убран уровень −1, ruflo переописан в advisory-подсистему; §14 queen-триггер сохранён. **v1.15 наследие** — §14 (new) Ruflo Queen routing hard-rule (триггер queen/королева). **v1.14 наследие** — §12 → sub-policy под ruflo routing (commit `9c3057b`); Superpowers hard-rule сохраняется. **v1.13 наследие** — §13.2 +новый абзац «Off-phase MCP debug-runtime (отдельная категория)»: `@sentry/mcp-server` (Tooling #34) + `@modelcontextprotocol/server-redis` (Tooling #35) — retrospective formalization после PR #3 merge. Категория отдельная от UI-пула и от infrastructure (claude-md-management). READ-ONLY usage обязателен. v1.12 наследие — methodology additions §4.6 visual smoke для UI-refactor + §4.7 п.4 plans/specs relative paths `../../../`) | +| **Правила совместного использования плагинов Claude** | [docs/Plugin_stack_rules_v1.md](docs/Plugin_stack_rules_v1.md) (**v3.23 от 27.05.2026** — knowledge-graph-tooling: R10.1 Блок 1 note +graphifyy #86 (user-level скил, CLI `graphifyy`); R15.6 +knowledge-graph-tooling; 19-я off-phase подкатегория; ADR-017 (KG1–KG5). **v3.22 наследие** — C1 marketing-tooling: R10.1 Блок 1 +marketing (#74 plugin + #75 marketingskills + #76 brand-voice + #77 marketing-ru) + note (+Яндекс.Метрика MCP #78 / Яндекс.Директ+Wordstat MCP #79 / Telegram MCP #80 / Postiz #81 / DataForSEO MCP #82 DEFERRED / Unisender Go MCP #83 DEFERRED); R15.6 +marketing-tooling; 18-я off-phase подкатегория; не UI → вне R6/R14. **v3.21 наследие** — A8 infosec-tooling install-sync: ZAP #68 + Ward #70 установлены портативно 21.05 → R10.1 Блок 1 note + Блок 3 ZAP-row статус PENDING INSTALL снят. **v3.20 наследие** — A8 infosec-tooling install-sync: ZAP #68 + Ward #70 установлены портативно 21.05 → R10.1 Блок 1 note + Блок 3 ZAP-row статус PENDING INSTALL снят. **v3.20 наследие** — A8 infosec-tooling: R10.1 Блок 1 note +infosec (#69 Nuclei / #70 Ward — CLI; #71-73 self-authored скилы) + Блок 3 +OWASP ZAP MCP (#68, PENDING INSTALL); R15.6 +infosec-tooling; 17-я off-phase подкатегория. **v3.19 наследие** — A1 backend-tooling: R10.1 Блок 1 note +backend-tooling (#64 Rector / #65 PHP Insights — Composer dev-deps; #66 laravel-backend-patterns — self-authored; #67 NightOwl DEFERRED); R15.6 +backend-tooling; 16-я off-phase подкатегория. **v3.18 наследие** — finance-tooling: R10.1 Блок 1 +finance plugin (#61) + note (+billing-audit #62 / ru-tax-accounting #63). **v3.17 наследие** — observer schema v2 sync (ADR-011 amend): R16.1 +предложение про `schema_version` / `decision_provenance` / `environment` / `task_size` / `prompt_signal` + расширенные события (`hook_fired`/`interrupt`/`retry`/`time_burn`/`parse_gap`) + `observer_error` маркер; R16.4 +cross-ref на factor-analysis spec и plan. R0–R15 без изменений. Routing-gate / C5 / `/brain-retro` analyzer — нормативно в Pravila §16.7/§16.8 + ADR-011 §5; R16 фиксирует evidence-сбор, не enforcement. **v3.16 наследие** — Brain governance R16 «Brain evidence loop» (ADR-011): R16.1 observer scope (5 mandatory fields), R16.2 plugin stack-conscious events (routing_decision + factor matrix 5 axes), R16.3 не override (R16 evidence-сбор, не правило выбора), R16.4 cross-refs. 17 правил R0-R16. **v3.15 наследие** — компакция «мозга» finding 3: R10.1 счётчики позиций → пин на Tooling Прил. Н §0 (канон счётчиков). **v3.14 наследие** — +R15 «Off-phase routing» на свободном слоте (motion удалён v2.0): R15.1 off-phase узлы вне R6.0/R6.1/R14, R15.2 routing-таблица — `docs/routing-off-phase.md` v1.0+, R15.3 приоритет специфичности + ADR-границы, R15.4 hard-rules Pravila §12/§14/§15 перевешивают, R15.5 live-override, R15.6 гранулярные категории, R15.7 обычное правило. UI-аппарат R0–R14 без изменений. Rec5 SYSTEM-аудита. **v3.13 наследие** — R10.1 Блок 1 +5 строк (#56 skill-creator / #57 plugin-dev / #58 hookify / #59 claude-code-setup / #60 context7) + note (v3.13); новые тринадцатая (authoring-tooling) и четырнадцатая (dev-support) off-phase подкатегории, не UI → вне R6/R14; hookify HK1 pre-check. **v3.12 наследие** — R10.1 Блок 1 note (v3.12) +discovery-interview (#55, self-authored project-скил, discovery-tooling); новая двенадцатая off-phase подкатегория discovery-tooling, не UI → вне R6/R14. **v3.11 наследие** — R10.1 Блок 1 +operations (#51, business-process, marketplace-плагин) + Блок 1 note +process-modeling (#52) + process-analysis (#53, self-authored project-скилы) + Блок 3 +n8n-mcp (#54, DEFERRED); новая одиннадцатая off-phase подкатегория business-process, не UI → вне R6/R14. **v3.10 наследие** — R10.1 Блок 3 +Jupyter MCP (#50, ml-ai-tooling, DEFERRED) + Блок 1 note +promptfoo (#48) + Data Scientist skill (#49); новая десятая off-phase подкатегория ml-ai-tooling, не UI → вне R6/R14. **v3.9 наследие** — R10.1 Блок 3 +openapi-mcp-server (#47, integration-tooling); новая девятая off-phase подкатегория integration-tooling, не UI → вне R6/R14. **v3.8 наследие** — R10.1 Блок 1 +Design plugin (#46, design-tooling); Блок 3 +Universal Icons MCP (#45) + Figma MCP (#44, DEFERRED); новая восьмая off-phase подкатегория design-tooling, не UI → вне R6/R14. **v3.7 наследие** — R10.1 Блок 1 +note: deptrac #43 (Composer dev-dep, не marketplace-плагин, architecture-tooling), не UI → вне R6/R14. **v3.6 наследие** — R10.1 Блок 1 +2 строки (CCPM + product-management); новая категория project-management, не UI → вне R6/R14. **v3.5 наследие** — R10.1 факт-правка security-guidance: блокирующий хук, не warn-only. **v3.4 наследие** — R10.1 Блок 1 +2 строки (Trail of Bits Skills + security-guidance); новая категория audit-security, не UI → вне R6/R14. **v3.3 наследие** — R10.1 Блок 1 +2 строки (adr-kit + architecture-patterns) + note (mermaid-skill вендоренный); новая категория architecture-tooling, не UI → вне R6/R14. **v3.2 наследие** — реколлаж ruflo: R0 entry-point framing убран, ruflo advisory-подсистема. **v3.1 наследие** — queen-триггер §14. **v3.0 наследие** — major bump: R0 stack-gate → paired-stack delegation pattern (commit `d30cbeb`). **v2.1 наследие** — R10.1 Блок 3 (MCP-серверы) +2 строки sentry + redis с категорией **debug-runtime**: `@sentry/mcp-server@0.33.0+` (Tooling #34, pending Б-1) + `@modelcontextprotocol/server-redis@2025.4.25` (Tooling #35, deprecated Anthropic source, Memurai PONG verified Task 4). Не trigger'ит R6.0/R6.1 фильтры и не входит в R14 pipeline UI-генераторов. v2.0 наследие — major bump: removal of R15 motion-runtime restrictions per user decision 12.05.2026; conscious rollback v1.4 audited construction; framer-motion переведён из regulatory hard-запрета в technical-guidance уровень) | +| Полный реестр формализованных позиций тулчейна (счётчики — канон в Прил. Н §0) | [docs/Tooling_v8_3.md](docs/Tooling_v8_3.md) (**Прил. Н v2.24 от 27.05.2026** — knowledge-graph-tooling: §4.59 #86 graphifyy (user-level скил `~/.claude/skills/graphify/SKILL.md`, CLI `graphifyy`, knowledge graph портала docs+code; `/graphify `; spike 6305 nodes / 6753 edges / 1009 communities, 93% EXTRACTED/7% INFERRED); §0 счётчик 83→84 (103→104 total) + 19-я подкатегория knowledge-graph-tooling; ADR-017 (KG1–KG5). **Прил. Н v2.23 наследие** — C1 marketing-tooling: §4.49 marketing plugin + §4.50 marketingskills + §4.51 brand-voice + §4.52 marketing-ru + §4.53 Яндекс.Метрика MCP + §4.54 Яндекс.Директ+Wordstat MCP + §4.55 Telegram MCP + §4.56 Postiz + §4.57 DataForSEO MCP (DEFERRED) + §4.58 Unisender Go MCP (DEFERRED); §0 счётчик 73→83 (93→103 total) + 18-я подкатегория marketing-tooling (раздел C1); ADR-015; IS9-вет (`docs/security/marketing-vet.md`). **Прил. Н v2.22 наследие** — pg_audit #28 + pg_anonymizer #29 установлены на боевом `liderra.ru` (расширения PostgreSQL фазы 3): §5.1 attribute-блоки #28/#29 + §6 compliance-таблица + §10.4 шаг 2 → ✅ прод; setup-dok `docs/security/pgaudit-anonymizer-setup.md`. **Прил. Н v2.21 наследие** — pg_audit #28 + pg_anonymizer #29 установлены на боевом `liderra.ru` (расширения PostgreSQL фазы 3): §5.1 attribute-блоки #28/#29 + §6 compliance-таблица + §10.4 шаг 2 → ✅ прод; setup-док `docs/security/pgaudit-anonymizer-setup.md`. **Прил. Н v2.21 наследие** — A8 infosec-tooling install-sync: ZAP #68 + Ward #70 установлены портативно 21.05 → §4.43/§4.45 dormant true→false, §4.48 уточнён, setup-доки `docs/security/{zap,ward}-setup.md`; счётчики без изменений (73/93). **Прил. Н v2.20 наследие** — A8 infosec-tooling: §4.43 OWASP ZAP #68 + §4.44 Nuclei #69 + §4.45 Ward #70 + §4.46 pdn-152fz-audit #71 + §4.47 threat-model #72 + §4.48 security-go-live #73; §0 счётчик 67→73 (87→93 total) + 17-я подкатегория infosec-tooling (раздел A8); ADR-014. **Прил. Н v2.19 наследие** — A1 backend-tooling: §4.39 Rector #64 + §4.40 PHP Insights #65 + §4.41 laravel-backend-patterns #66 + §4.42 NightOwl #67 (DEFERRED); §0 счётчик 63→67 (83→87 total) + 16-я подкатегория backend-tooling (раздел A1); ADR-013. **Прил. Н v2.18 наследие** — finance-tooling: §4.36 finance plugin #61 + §4.37 billing-audit #62 + §4.38 ru-tax-accounting #63; §0 счётчик 60→63 + 15-я подкатегория finance-tooling. **Прил. Н v2.17 наследие** — Brain governance Task A3 (ADR-011): §0.1 row template (9 obligatory attributes) + 58 Атрибуты blocks на всех узлах реестра. Дамп-блоки для phase-active (§2.4/§3.5/§5.1 для phase 0/1/3) + inline-блоки для phase-2 (§4.1-§4.4) и off-phase (§4.5-§4.35). dormant=true для #1 PG MCP (replaced), #17 pg_partman (no native Windows PG ext), ruflo §4.10. 6 atomic sub-batches: 1f77134/0718e41/16f7f1c/ca4da69/39231ef/3e73396 + header bump 8170527. Структурный реестр — вход для router-procedure.md (commit 8a2e701) step 3. **Прил. Н v2.16 наследие** — компакция «мозга» finding 3: §0 +«КАНОН СЧЁТЧИКОВ» anchor (Прил. Н §0 — единственный источник числовых счётчиков тулчейна); §12 заголовок — убран stale-счётчик «35». **v2.15 наследие** — §4.10 +status-block «ruflo ИЗОЛИРОВАН 18.05.2026» (live-связи hooks/MCP/daemon отключены, артефакты сохранены, queen-триггер dormant). Счётчики тулчейна без изменений — 60 формализованных позиций + 20 ruflo plugins = 80 total. Rec2 SYSTEM-аудита. **v2.14 наследие** — §4.31–§4.35 (#56 skill-creator / #57 plugin-dev / #58 hookify — authoring-tooling; #59 claude-code-setup / #60 context7 — dev-support — новые тринадцатая и четырнадцатая off-phase подкатегории); §0 счётчик 55→60 (75→80 total). **v2.13 наследие** — §4.30 (#55 discovery-interview, discovery-tooling — новая двенадцатая off-phase подкатегория); §0 счётчик 54→55. **v2.12 наследие** — §4.26/§4.27/§4.28/§4.29 (#51 operations / #52 process-modeling / #53 process-analysis / #54 n8n-mcp DEFERRED, business-process — новая одиннадцатая off-phase подкатегория); §0 счётчик 50→54. **v2.11 наследие** — §4.20 +UI3 (ADR-006 Decision-4 icon-path boundary mirror: Lucide-иконки канонически через `lucide-vue-next` + Vuetify IconSet, raw-SVG MCP — только не-Lucide коллекции). **v2.10 наследие** — §4.23/§4.24/§4.25 (#48 promptfoo / #49 Data Scientist skill / #50 Jupyter MCP DEFERRED, ml-ai-tooling — новая десятая off-phase подкатегория); §0 счётчик 47→50. **v2.9 наследие** — §4.22 (#47 openapi-mcp-server, integration-tooling — новая девятая off-phase подкатегория); §0 счётчик 46→47. **v2.8 наследие** — §4.19/§4.20/§4.21 (#44 Figma MCP / #45 Universal Icons MCP / #46 Design plugin, design-tooling — новая восьмая off-phase подкатегория); §0 счётчик 43→46. **v2.7 наследие** — §4.18 (#43 deptrac, architecture-tooling — 4-й инструмент категории); §0 счётчик 42→43. **v2.6 наследие** — §4.16/§4.17 (#41 CCPM / #42 product-management), новая седьмая off-phase подкатегория project-management; §0 счётчик 40→42. **v2.5 наследие** — §4.15 факт-правка #40 Security Guidance: блокирующий хук (`sys.exit 2`), не warn-only; +SG2 Windows-починка python3-резолва. **v2.4 наследие** — §4.14/§4.15 (#39 Trail of Bits Skills / #40 Security Guidance), новая шестая off-phase подкатегория audit-security; §0 счётчик 38→40. **v2.3 наследие** — §4.11–4.13 (#36 adr-kit / #37 mermaid-skill / #38 architecture-patterns), новая пятая off-phase подкатегория architecture-tooling; §0 счётчик 35→38. **v2.2 наследие** — реколлаж ruflo: §4.10 переписан из «entry-point оркестратора уровня −1» в «advisory/automation-подсистема». **v2.1 наследие** — queen-триггер §14. **v2.0 наследие** — §4.10 (новый) «Orchestration layer (ruflo)»: ruflo v3.7.0-alpha.38+ (off-phase, orchestration category). **v1.17 наследие** — §0 счётчик off-phase 3 → 5; итого 33 → 35; §4.8 (новый) — #34 Sentry MCP (`@sentry/mcp-server@0.33.0+`, official; pending Sentry instance deployment Б-1); §4.9 (новый) — #35 Redis MCP (`@modelcontextprotocol/server-redis@2025.4.25`, deprecated Anthropic source, рабочий с Memurai localhost:6379). Категория **debug-runtime**, отдельная от UI-пула. v1.16 наследие — §9.2 «Motion runtime библиотеки» переформулирован из regulatory denylist в technical guidance) | | Главное ТЗ | [docs/CRM_bp-gr_Инструкция_v8_5.md](docs/CRM_bp-gr_Инструкция_v8_5.md) (v8.5 от 07.05.2026 — реализация 27 решений аудита C; in-place hygiene v1.20 от 08.05.2026 поздний вечер: §2.4/§5.5/§5.6/§6.5/§11/§20.12.3/§21.1/§27.1 синхронизированы под schema v8.6 двустадийный dedup) | | Схема БД | [db/schema.sql](db/schema.sql) (**v8.19 от 11.05.2026** — Plan 4 (Billing+CSV+Admin): +1 таблица `supplier_csv_reconcile_log` SaaS-level, +3 колонки `tenants.delivered_in_month` / `lead_charges.charge_source` / `supplier_leads.recovered_from_csv_at`, +3 индекса, +2 CHECK. **Schema baseline (commit-факт после Audit #3 P2 header sync):** 63 базовые таблицы (61 regular + 2 partitioned parents: deals + supplier_lead_costs) + 12 партиций + 117 индексов + 39 RLS-политик + 5 функций (`audit_block_mutation`, `audit_chain_hash`, `calc_lead_score`, `report_jobs_log_export`, `set_pd_subject_request_deadline`) + 13 триггеров. **Dev `liderra` factual** после `migrate:fresh` + накопленных `partitions:create-months`: **75 root tables + 102 partition children + 289 indexes + 39 RLS + 5 user funcs + 19 triggers + 0 dev roles** (на prod 5 ролей через `db/00_create_roles.sql`). Verified 2026-05-12 audit Phase 3.) | | Открытые вопросы | [docs/Открытые_вопросы_v8_3.md](docs/Открытые_вопросы_v8_3.md) (**v1.83 от 13.05.2026 (day +1) — CTO-19 ✅ closed** через Lucide migration: `npm i lucide-vue-next ^1.0.0` + custom Vuetify `IconSet` в `app/resources/js/plugins/vuetify.ts` с 103-entry mapping (78 user-grep'нутых mdi-* + 25 Vuetify-internal defaults). 51 view untouched. CLAUDE.md §2 «Иконки: Lucide» бренд-spec compliance achieved. **Сводка §0 после v1.83: 87 продуктовых / 71 ✅ / 5 🟦 / 11 ⏸ / 1 P0 + 5 P1 + 3 P2 + 2 P3**. **Регрессия: Pest --parallel 742/739/0/3 / Vitest 88 files / 683 passed + 3 skipped / Vite build 3.52s / axe-core /admin/billing 0 iconography violations**. Spec/plan в docs/superpowers/. v1.82 — Catch-up bump v1.77 → v1.82. v1.77 — Sprint 4 «Audit tail» (Pest 421 / Vitest 416). Section ## 13 collision fixed: Plan 4 → ## 14, Аудит C ## 13) | @@ -175,6 +175,7 @@ | 81 | Планировщик соцсетей (VK + Telegram) — *off-phase* | **Postiz** | off-phase, marketing-tooling — Tooling §4.56; self-host AGPL-3.0 internal, раздел C1 | | 82 | SEO-данные по РФ (платный) — **DEFERRED** — *off-phase* | **DataForSEO MCP** | off-phase, marketing-tooling — Tooling §4.57; post-Б-1, раздел C1 | | 83 | Email-маркетинг через Unisender Go (своя обёртка) — **DEFERRED** — *off-phase* | **Unisender Go MCP** | off-phase, marketing-tooling — Tooling §4.58; нет upstream MCP, раздел C1 | +| 86 | Knowledge graph портала (docs + code) — *off-phase* | **graphifyy** | off-phase, knowledge-graph-tooling — Tooling §4.59; user-level скил `/graphify`; ADR-017 (KG1–KG5) | ### 3.4. Фаза 3 — pre-production (+5, итого 29) @@ -283,6 +284,8 @@ trivy image liderra:latest 13. **Не запрашивать override `ремонт инфраструктуры` для docs-only коммитов/пушей.** С коммита `8266755c` (27.05.2026) хук `enforce-verify-before-push` автоматически пропускает изменения, где **все** staged/unpushed файлы кончаются на `.md` (memory/CLAUDE.md/spec/plan/SKILL.md). Override остаётся для смешанных или кодовых коммитов. Логика — [tools/enforce-hook-helpers.mjs](tools/enforce-hook-helpers.mjs) `isDocsOnlyChange` + `listChangedFiles`. +14. **Перед открытым codebase-вопросом — сначала `/graphify query`, потом Read/Grep/Glob.** Граф проекта (graphify #86, ADR-017) — 6305 узлов / 6753 рёбер / 1009 communities, покрывает docs/ + .claude/ + app/. Junction `graphify-out/` → spike worktree `.claude/worktrees/graphify-spike/graphify-out/`. Применяется к **структурным/cross-layer вопросам**: «где наш скил X используется», «какие концепты связаны с биллингом», «куда тянется зависимость от Y», «что упадёт если изменить Z». **Не применяется** к: (а) известному пути файла → Read напрямую; (б) узкому regex-поиску → Grep напрямую; (в) операциям записи/коммита; (г) если граф устарел значительно (>2 недели без `/graphify --update`) — read-fallback допустим, в ответе обозначить. Workflow: `/graphify query "вопрос"` → анализ выдачи (`source_location` как цитаты) → при необходимости Read/Grep по упомянутым узлам. Граница с context7 (#60) / Boost (#10) / openapi-mcp (#47) / Sentry (#34) — ADR-017 §«Граничные правила (locked)». + --- ## 6. Текущая фаза проекта @@ -382,6 +385,8 @@ trivy image liderra:latest Полная история — [docs/CHANGELOG_claude_md.md](docs/CHANGELOG_claude_md.md) (вынесена 09.05.2026 при правке v1.73→v1.74 ради лаконичности шапки). Здесь — последние правки: +- **v2.32 от 27.05.2026 (knowledge-graph-tooling)** — graphify integration completed: ADR-017 принят, #86 graphifyy (user-level скил `~/.claude/skills/graphify/SKILL.md`, CLI `graphifyy`) формализован как 19-я off-phase подкатегория **knowledge-graph-tooling**. Spike 3 фазы (docs/ + .claude/ + app/): combined graph 6305 nodes / 6753 edges / 1009 communities, 93% EXTRACTED / 7% INFERRED. **§0 cross-refs:** Pravila v1.42→**v1.43** / PSR_v1 v3.22→**v3.23** / Tooling Прил.Н v2.23→**v2.24**. **§3.3** +#86 graphifyy (knowledge graph портала docs+code). **§9 +this entry.** Header v2.31→**v2.32**. **Узлы:** #86 graphifyy (user-level скил, не project-level; артефакты `graphify-out*/` gitignored; ADR-017 KG1–KG5 — границы ↔ context7/Boost/openapi-mcp/Sentry/adr-kit+mermaid). Через прямой Edit — worktree-эксцепшн §5 п.10. + - **v2.31 от 27.05.2026 (вечер) — adr-judge redos fix + brain-retro 7→10 cuts** — Два коммита: `b1398883` (brain-retro extension) + `1e1457eb` (adr-judge fix — последний фактически разблокировал первый, который висел >60s на adr-judge job в lefthook). **Изменения:** шапка v2.30→**v2.31**; §6 +абзац верхним блоком (детали закрытия сессии); §9 +этот entry. **§0 cross-refs не правились** — Pravila/PSR_v1/Tooling не затронуты (нет новых tool, новой ADR, новой off-phase подкатегории; tools/adr-judge.py vendored, brain-retro analyzer — procedural extension within existing ADR-011 observer infra). **(1) adr-judge fix:** root cause — `ENFORCEMENT_BLOCK_RE` catastrophic backtracking (nested `(?:.*?\n)*?` + `re.DOTALL`) на ADR с прозаическим `## Enforcement` без ```json fence (ADR-011, ADR-016); fix — декомпозиция heading → section-boundary → fence; verified all 13 ADR <1ms; **vendored из adr-kit v0.13.1** — living constraint, фикс перезапишется при `/adr-kit:upgrade`. Утечка: PID 6444 (7h+ CPU=25435s regex spin) убит. **(2) brain-retro extension:** 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()` автоматически; +216/+288 lines analyzer/tests. **Memory updates:** `feedback_adr_judge_redos.md` (new — урок про catastrophic backtracking + living constraint), `feedback_vitest_sentinel_recipe.md` (fixed `.test.mjs` self-contradiction — `tools/ruflo-*.test.mjs` в exclude-args триггерил собственный документированный фильтр `detectFullTestRun` «narrow vitest»), MEMORY.md index. **Регрессия:** vitest tools-only 989/989 GREEN / 4.06s; lefthook 5.55-5.70s; gitleaks 0 / lychee 0 errors. **Push:** `e184ffe2..1e1457eb main -> main`. Через `/claude-md-management:revise-claude-md` per §5 п.10. - **v2.30 от 27.05.2026 (docs-only short-circuit landed)** — реализован умный pre-push хук per §5 п.13 (новый): `enforce-verify-before-push` автоматически пропускает коммит/push, если все изменённые файлы — `.md`. Закрывает повторяющуюся петлю «Claude просит override на каждом memory-sync». Артефакты — commit `8266755c` (4 файла, +192/−2): [tools/enforce-hook-helpers.mjs](tools/enforce-hook-helpers.mjs) (3 новые экспортируемые функции — `isDocsOnlyPath`/`isDocsOnlyChange`/`listChangedFiles`), [tools/enforce-verify-before-push.mjs](tools/enforce-verify-before-push.mjs) `decide()` (новый arg `changedPaths`, short-circuit). TDD: 13 новых тестов GREEN, tools-only canonical regression 965/965. Override `ремонт инфраструктуры` остаётся для смешанных/кодовых коммитов. Lefthook pre-commit обойдён `--no-verify` (зависал на чужой 885-строчной spec.md в индексе параллельной сессии); post-commit hook `status-md` прошёл нормально. Через `/claude-md-management:revise-claude-md`. diff --git a/cspell-words.txt b/cspell-words.txt index dbe6931f..a34a4c37 100644 --- a/cspell-words.txt +++ b/cspell-words.txt @@ -1802,3 +1802,27 @@ dlp commit'нуть cherry-pick'нутый slepok +CLI +DCL +IDOR +Lucide +SMM +WIP +cli +jsdom +lucide +smm +Линтует +брифы +бэкапам +бэклинки +взаимодополняют +десериализация +лайвдоки +продакшне +роадмап +роадмапа +скилами +спеком +хелперов +цикломатическая diff --git a/docs/Plugin_stack_rules_v1.md b/docs/Plugin_stack_rules_v1.md index 4416bade..c534aa3a 100644 --- a/docs/Plugin_stack_rules_v1.md +++ b/docs/Plugin_stack_rules_v1.md @@ -1,8 +1,10 @@ -# Plugin Stack Rules — Superpowers + Frontend Design (v3.22) +# Plugin Stack Rules — Superpowers + Frontend Design (v3.23) -**Дата:** 22.05.2026 +**Дата:** 27.05.2026 **Назначение:** свод правил совместного использования плагинов Claude Code в проекте Лидерра — paired-stack ядро `obra/superpowers` (14 skills) + `anthropics/frontend-design`, плюс расширенный пул UI-инструментов `ui-ux-pro-max` (skill, marketplace `nextlevelbuilder/ui-ux-pro-max-skill`) и `21st.dev Magic MCP` (MCP-сервер `magic`), плюс инфраструктурный `claude-md-management` (skills, marketplace `anthropics/claude-plugins-official`), плюс **debug-runtime MCP** `@sentry/mcp-server` + `@modelcontextprotocol/server-redis` (v2.1+, R10.1 Блок 3). **17 правил R0–R16** (R15 off-phase routing введён в v3.14 на освободившийся после v2.0 R15-motion слот; R16 brain evidence loop введён в v3.16). +**v3.23** — knowledge-graph-tooling: R10.1 Блок 1 note +**graphifyy** #86 (user-level скил `~/.claude/skills/graphify/SKILL.md`, CLI `graphifyy`, строит knowledge graph портала; активация `/graphify `; артефакты `graphify-out*/` gitignored). Новая 19-я off-phase подкатегория **knowledge-graph-tooling** (раздел A12/graph карты). User-level скил, не project-level → вне R6.0/R6.1/R14. R15.6 +knowledge-graph-tooling. ADR-017 (KG1–KG5). Содержательных изменений R0–R16: 0. Связано: Tooling v2.24 (§4.59 + §0 счётчик 83→84), Pravila v1.43 (§13.2 +абзац), CLAUDE.md v2.31 (§3.3 +#86; §0 cross-refs). + **v3.22** — C1 marketing-tooling: R10.1 Блок 1 +2 строки (**marketing** #74, Anthropic `knowledge-work-plugins/marketing`; **brand-voice** #76, Anthropic partner-built/Tribe AI) + Блок 1 note (v3.22 — **marketingskills** #75 вендорен MIT, материал/резерв-библиотека; **marketing-ru** #77 self-authored project-скил, eval 20/20) + Блок 3 +6 строк (**Метрика MCP** #78 `atomkraft/yandex-metrika-mcp` READ-ONLY; **Директ+Wordstat MCP** #79 `SvechaPVL/yandex-mcp` Wordstat-only, Direct-mutations disabled IS9; **Telegram MCP** #80 `chigwell/telegram-mcp` Apache-2.0; **Postiz MCP** #81 self-host AGPL-3.0 internal; **DataForSEO MCP** #82 DEFERRED — платный post-Б-1; **Unisender Go MCP** #83 DEFERRED — своя обёртка). Новая 18-я off-phase подкатегория **marketing-tooling** (раздел C1 карты). Не UI → вне R6.0/R6.1/R14. R15.6 +marketing-tooling. Провенанс-вет IS9 выполнен (`docs/security/marketing-vet.md`, 5 инструментов PASS/PASS-with-conditions). Содержательных изменений R0–R14, R16: 0. Связано: Tooling v2.23+, Pravila v1.42+, CLAUDE.md v2.27+; план `docs/superpowers/plans/2026-05-22-c1-marketing-tooling.md`; spec `docs/superpowers/specs/2026-05-22-c1-marketing-tooling-design.md`. **v3.21** — A8 infosec-tooling install-sync: ZAP #68 + Ward #70 установлены портативно 21.05.2026 (без choco) → в R10.1 Блок 1 note (Ward) + Блок 3 (ZAP MCP-row) снят статус PENDING INSTALL. Содержательных изменений R0–R16: 0; счётчики/состав без изменений. Связано: Tooling v2.21, Pravila v1.38, CLAUDE.md v2.25; setup-доки `docs/security/{zap,ward}-setup.md`; план `docs/superpowers/plans/2026-05-21-a8-infosec-tooling.md`. @@ -471,6 +473,8 @@ Stack — **головной**. Все плагины вне stack'а — **ин **Блок 1 — note (v3.22):** **marketingskills** (Tooling #75) — вендоренный сторонний скил-набор в `.claude/skills/marketingskills/` (`coreyhaines31/marketingskills`, MIT, ~30k★), **не** через marketplace и **не** в `enabledPlugins`; аналог mermaid-skill/CCPM/Data Scientist по паттерну вендоринга. Содержит только Markdown-скилы (`skills/` директория) — исполняемый код в проект не включается (условие вендоринга C1-1 из `docs/security/marketing-vet.md`). Роль — **материал/резерв-библиотека** (40 маркетинговых фреймворков), не первичный решатель (маппинг на паттерн UPM #31). **marketing-ru** (Tooling #77) — self-authored project-скил в `.claude/skills/marketing-ru/`, **не** вендоренный и **не** через marketplace; написан проектом (паттерн `audit-portal`/`billing-audit`/`process-modeling`); РФ-специфика (Яндекс-каналы / 152-ФЗ согласия / конверсия лендинга Лидерры); eval 20/20. **Линтуется** lefthook'ом (cspell+markdownlint), **не** в ignorePaths (LINT1, как billing-audit/process-*). Каждый внешний инструмент прошёл провенанс-вет IS9 (`docs/security/marketing-vet.md`) ДО установки. Категория **marketing-tooling** (18-я off-phase подкатегория, раздел C1 карты), вне R6.0/R6.1/R14. +**Блок 1 — note (v3.23):** **graphifyy** (Tooling #86) — user-level скил `~/.claude/skills/graphify/SKILL.md` (`/graphify` активация), CLI `graphifyy` (npm, строит knowledge graph из docs+code); **не** project-level и **не** в `enabledPlugins` (user-level — вне `enabledPlugins` проекта). Артефакты `graphify-out*/` в корне — gitignored. Категория **knowledge-graph-tooling** (19-я off-phase подкатегория), вне R6.0/R6.1/R14. ADR-017 (KG1–KG5: границы ↔ context7 #60 / Boost #10 / openapi-mcp #47 / Sentry #34 / adr-kit #36 + mermaid #37). + **Отмена:** через удаление из `enabledPlugins` в `~/.claude/settings.json` или через live-override `/имя-плагина` (R0.4.B) на одно действие. #### Блок 2: Built-in skills Claude Code (всегда доступны через `Skill` tool по `/имя`) @@ -844,7 +848,7 @@ Pravila §12 (Superpowers инвокация первой), §14 (queen-роут - **UI-пул** (#31 UPM, #32 21st) — здесь R15 не применяется; R14 pipeline ведёт (это UI-задачи по природе). - **infrastructure** (#33 claude-md-management) — единственный канал для правок CLAUDE.md (Pravila §5 п.10 + R10.1 Блок 1). - **authoring-tooling** (#56-#58) — политика триггеров: skill-creator ≥3 повторений workflow → новый скил; hookify повторяющаяся ошибка → новый хук (с pre-check HK1); plugin-dev — для расширений plugin-grain. -- **business-process / discovery-tooling / ml-ai-tooling / architecture-tooling / audit-security / project-management / design-tooling / integration-tooling / dev-support / finance-tooling / backend-tooling / infosec-tooling / marketing-tooling** — следуют routing-off-phase.md. +- **business-process / discovery-tooling / ml-ai-tooling / architecture-tooling / audit-security / project-management / design-tooling / integration-tooling / dev-support / finance-tooling / backend-tooling / infosec-tooling / marketing-tooling / knowledge-graph-tooling** — следуют routing-off-phase.md. ### 15.7. Тип правила и enforcement @@ -914,6 +918,8 @@ R16 — evidence-сбор, не правило выбора. R0–R15 продо ## История версий +- **v3.23 (2026-05-27)** — knowledge-graph-tooling: R10.1 Блок 1 note +graphifyy #86 (user-level скил, CLI `graphifyy`, knowledge graph портала, активация `/graphify`, артефакты `graphify-out*/` gitignored); R15.6 +knowledge-graph-tooling; 19-я off-phase подкатегория; user-level → вне R6.0/R6.1/R14. ADR-017 (KG1–KG5). Содержательных изменений R0–R16: 0. Связано: Tooling v2.24 (§4.59 + §0 83→84), Pravila v1.43 (§13.2), CLAUDE.md v2.31 (§3.3 +#86). + - **v3.22 (2026-05-25, cross-ref update)** — §0 cross-ref string Pravila v1.39+→**v1.42+** (Pravila §17.7 «Coverage announcement» добавлена — правило аннотировать каждую non-conversation задачу `coverage: :`). Содержательных изменений R0–R16: 0. Связано: Pravila v1.42, Tooling v2.23, CLAUDE.md v2.28. - **v3.17 (2026-05-19)** — observer schema v2 sync (ADR-011 amend): R16.1 +предложение про `schema_version` / `decision_provenance` / `environment` / `task_size` / `prompt_signal` + расширенные события (`hook_fired` / `interrupt` / `retry` / `time_burn` / `parse_gap`) + `observer_error` маркер; R16.4 +cross-ref на factor-analysis spec и plan. R0–R15 без изменений. Routing-gate / C5 controller / `/brain-retro` analyzer — нормативно в Pravila §16.7/§16.8 + ADR-011 §5; PSR_v1 фиксирует evidence-сбор (R16), не enforcement. Связано: ADR-011, Pravila v1.32 (§16 amend), CLAUDE.md v2.19, spec `docs/superpowers/specs/2026-05-19-observer-factor-analysis-design.md`, plan `docs/superpowers/plans/2026-05-19-observer-factor-analysis.md`. Per spec v1.0 §7. diff --git a/docs/Pravila_raboty_Claude_v1_1.md b/docs/Pravila_raboty_Claude_v1_1.md index c393014d..6e7726cd 100644 --- a/docs/Pravila_raboty_Claude_v1_1.md +++ b/docs/Pravila_raboty_Claude_v1_1.md @@ -1,10 +1,12 @@ # Правила работы Claude в проекте «Лидерра» -**Версия:** v1.42 (25.05.2026) -**Дата:** 25.05.2026 +**Версия:** v1.43 (27.05.2026) +**Дата:** 27.05.2026 **Назначение:** настройки проекта (Project instructions) — Claude читает этот файл в каждом чате и следует правилам ниже. **Статус документа:** ✅ утверждён. Содержимое скопировано в поле "Project instructions" Claude.ai. Файл хранится в архиве как служебный документ. +**Что изменилось в v1.43 относительно v1.42:** knowledge-graph-tooling integration — **§13.2 +абзац «Off-phase knowledge-graph-tooling»**: #86 graphifyy (CLI, установка `uv tool install graphifyy`, user-level skill `~/.claude/skills/graphify/SKILL.md` через `/graphify install --platform claude`; активация через `/graphify <команда>` — query / path / explain / update / build; артефакты `graphify-out*/` обязательно в `.gitignore`). 19-я off-phase подкатегория, не UI → вне R6.0/R6.1/R14. Границы — ADR-017 (KG1–KG5: ↔ context7 #60 / Boost #10 / openapi-mcp #47 / Sentry MCP #34 / adr-kit #36 / mermaid #37). Архитектурных изменений §§1–17: 0. Связано: Tooling v2.24+, PSR_v1 v3.23+, CLAUDE.md v2.32+. + **Что изменилось в v1.42 относительно v1.41:** LLM-first router overhaul Phase 3 deferred follow-up #1 — **§17.7 «Coverage announcement» добавлен**. Правило: в каждом ответе на non-conversation задачу Claude обязан показать coverage-пометку в формате `coverage: :` рядом с первым tool-вызовом или в начале текста. 6 каналов: `skill:` / `node:` / `chain:` / `hook:` / `agent:` / `direct:`. Observability layer (не enforcement) — фиксирует **намерение** выбора канала, дополняет машинный гейт `tools/router-tool-gate.mjs` который ловит **факт**. Отсутствие пометки на non-conversation эпизоде — сигнал для C5 контролёра в STATUS.md, не блокирует коммит. Граница с routing-тегом §16.7: routing-тег только для `user_directed_method`, coverage-пометка — всегда для non-conversation. Cross-ref: реестр узлов `docs/registry/nodes.yaml`, цепочки `docs/routing-off-phase.md`, парсер `tools/observer-transcript-parser.mjs` (schema v4.4+ — реализация следующим коммитом). Архитектурных изменений §§1–16: 0. Связано: §17.1–17.6 (база §17 из v1.41), §16.4 (missed-activation = симметричный отчёт о пропусках §17), spec `docs/superpowers/specs/2026-05-24-llm-first-router-overhaul-design.md`, memory `project_brain_overhaul.md`. **Что изменилось в v1.41 относительно v1.40:** LLM-first router overhaul Phase 1 Tasks 4+5. **§12 «Superpowers hard rule» снят** (Task 4, commit `bca63fc6`) — полный текст в `docs/archive/llm-bootstrap-2026-05/pravila-12/Pravila_section_12.md`; §0 priority chain пересобран без §12 + добавлен «NB про §12» pointer на архив. **§17 «Universal skill-coverage rule» добавлен** (Task 5, this commit) — classifier-driven default-deny на non-conversation задачах, 5 exempt-классов §17.2, continuation НЕ exempt (D1, §17.3), enforcement через `tools/router-tool-gate.mjs` mode-flag `off/warn-only/enforce`. **§16.4 cross-refs мигрированы** (Task 4): tools/observer-classification-map.json + tools/.node-dormancy.json → docs/registry/nodes.yaml + buildClassificationMap / buildDormancyMap. **§16.5 hard-rule list:** §12 → §17. Архитектурное обоснование — **ADR-016** (new). Связано: spec `docs/superpowers/specs/2026-05-24-llm-first-router-overhaul-design.md` v2.3, plan `docs/superpowers/plans/2026-05-25-llm-first-router-overhaul.md` v1.2. @@ -646,6 +648,7 @@ P0 = блокер старта спринта или регуляторного | **v1.32** | **19.05.2026** | Observer factor-analysis extension (ADR-011 amend): §16.2 +абзац «Схема эпизода v2» (`schema_version: 2`, `decision_provenance`, `environment`, `task_size`, `task_ref`, `prompt_signal`; `outcome` `unknown` при записи; виды событий +`hook_fired`/`interrupt`/`retry`/`time_burn`/`parse_gap`); §16.3 4→5 контролёров (+C5 observer-coverage-checker, warn-only); §16.7 (новое) routing-тег-дисциплина — Stop-хук `decision: block` при навязанном методе без тега, `stop_hook_active` guard; §16.8 (новое) самодисциплина наблюдателя (`observer_error` маркер, `parse_gap` событие, C5). Spec `docs/superpowers/specs/2026-05-19-observer-factor-analysis-design.md`, plan `docs/superpowers/plans/2026-05-19-observer-factor-analysis.md`. Связано: PSR_v1 v3.17, CLAUDE.md v2.19. Архитектурных изменений в §§1–15: 0. | | **v1.33** | **19.05.2026** | Observer factor-analysis phase 1.1 (ADR-011 amend): §16.2 — `decision_provenance.kind` расширен до 3 значений (`autonomous` \| `user_directed_method` \| `user_chose_from_options`); 3-й kind — collaborative-choice case (заказчик выбирает один из вариантов, предложенных Claude в предыдущем ходе). §16.7 +абзац «Граница `user_chose_from_options`»: routing-gate НЕ блокирует этот kind — выбор из choice-space, сформулированного самим Claude, не навязанный извне метод; routing-тег не обязателен (детектор `tools/observer-choice-detector.mjs` детерминированный). Spec §11 `docs/superpowers/specs/2026-05-19-observer-factor-analysis-design.md` v1.1, plan `docs/superpowers/plans/2026-05-19-observer-factor-analysis-phase-1-1.md`. Связано: CLAUDE.md v2.20. Архитектурных изменений в §§1–15: 0. | | **v1.42** | **25.05.2026** | LLM-first router overhaul Phase 3 deferred follow-up #1: **+§17.7 «Coverage announcement»** — правило аннотировать каждую non-conversation задачу coverage-пометкой `coverage: :` (6 каналов: skill/node/chain/hook/agent/direct). Observability layer (не enforcement) — фиксирует **намерение** выбора канала, дополняет машинный гейт §17.4 который ловит **факт**. Граница с routing-тегом §16.7: routing-тег только для `user_directed_method`, coverage-пометка — всегда для non-conversation. C5 controller фиксирует отсутствие пометки в STATUS.md, не блокирует коммит. Cross-ref: реестр `docs/registry/nodes.yaml`, цепочки `docs/routing-off-phase.md`, парсер `tools/observer-transcript-parser.mjs` (schema v4.4+ — реализация следующим коммитом deferred #2). Связано: spec `docs/superpowers/specs/2026-05-24-llm-first-router-overhaul-design.md`, memory `project_brain_overhaul.md`. NB: записи таблицы v1.34–v1.41 не дотянуты предыдущими сессиями (известный дрейф); шапка `«Что изменилось в v1.NN»` авторитетна для этого периода. Архитектурных изменений §§1–16: 0. | +| **v1.43** | **27.05.2026** | knowledge-graph-tooling: §13.2 +абзац «Off-phase knowledge-graph-tooling» — формализован узел #86 graphifyy (user-level скил `~/.claude/skills/graphify/SKILL.md`, CLI `graphifyy`, строит knowledge graph портала из docs+code; активация `/graphify `; артефакты `graphify-out*/` gitignored) как девятнадцатая off-phase подкатегория, отдельная от всех предыдущих; источник — user-level скил, не project-level → вне PSR_v1 R6.0/R6.1/R14; границы ADR-017 (KG1–KG5: ↔ context7 #60 / Boost #10 / openapi-mcp #47 / Sentry #34 / adr-kit #36 + mermaid #37). Связано: Tooling Прил.Н v2.24 (§4.59 + §0 счётчик 83→84), PSR_v1 v3.23 (R10.1 Блок 1 note +graphifyy; R15.6 +knowledge-graph-tooling), CLAUDE.md v2.31 (§3.3 +#86; §0 cross-refs). Через прямой Edit — worktree-эксцепшн §5 п.10. Архитектурных изменений в §§1–17 (кроме §13.2): 0. | --- @@ -743,6 +746,8 @@ Frontend Design и `obra/superpowers` (v5.1.0, 14 skills) — **парный sta **Off-phase marketing-tooling (C1, v1.39, 22.05.2026):** Инструменты раздела C1 карты «Маркетинг и лидогенерация» — #74 `marketing` (Tooling §4.49; marketplace-плагин Anthropic Verified; **первичный решатель C1** — контент-стратегия, SEO, кампании, аналитика лидогенерации), #75 `marketingskills` (Tooling §4.50; вендоренный сторонний скил MIT — расширенный маркетинговый материал/резерв; активируется как материал, не решатель), #76 `brand-voice` (Tooling §4.51; marketplace-плагин Anthropic Verified — вербальный бренд: TOV, копирайт, сообщения; обязателен при создании публичных текстов Лидерры), #77 `marketing-ru` (Tooling §4.52; self-authored project-скил `.claude/skills/marketing-ru/` — РФ-специфика: Яндекс-экосистема, РСБУ-маркетинг, 152-ФЗ в маркетинговых коммуникациях; **линтуется**, LINT1), #78 `Яндекс.Метрика MCP` (Tooling §4.53; MCP-сервер аналитики Яндекс.Метрики — READ-ONLY доступ к метрикам/отчётам/сегментам; никаких mutation-операций), #79 `Яндекс.Директ+Wordstat MCP` (Tooling §4.54; **Wordstat-only** — подбор ключевых слов и оценка спроса; управление рекламными кампаниями Direct отключено per IS9 — mutation-риск бюджета; только аналитическое READ-ONLY использование), #80 `Telegram MCP` (Tooling §4.55; MCP-интеграция Telegram Bot API — публикация в каналы/группы Лидерры; перед использованием подтверждение канала/бота от заказчика обязательно), #81 `Postiz` (Tooling §4.56; self-hosted AGPL-3.0; SMM-планировщик публикаций internal-use; AGPL-3.0 не тригерит copyleft при внутреннем деплое без распространения), #82 `DataForSEO` (Tooling §4.57; **DEFERRED** — платный API, pending Б-1/бюджет; зарегистрирован pending-слотом, как Figma MCP #44), #83 `Unisender Go` (Tooling §4.58; **DEFERRED** — email-маркетинг через уже-интегрированный transactional SMTP Лидерры; bulk-маркетинговые кампании требуют отдельного согласования заказчика и 152-ФЗ согласия; зарегистрирован pending-слотом). **Восемнадцатая** off-phase подкатегория. Off-phase, не UI → вне R6.0/R6.1/R14 PSR_v1. Яндекс.Метрика MCP + Wordstat MCP — READ-ONLY, mutation-операции запрещены (IS9-аналогия). `marketing-ru` **линтуется** (не в ignorePaths, LINT1). Счётчики инструментов — канон [Tooling Прил. Н §0](Tooling_v8_3.md). Границы — ADR-015. Регулируется PSR_v1 R10.1 Блок 1 (marketing + brand-voice плагины) + Блок 1 note (marketingskills вендорен + marketing-ru self-authored) + Блок 3 (Яндекс.Метрика/Директ+Wordstat/Telegram MCP). Установлено 22.05.2026; план `docs/superpowers/plans/2026-05-22-c1-marketing-tooling.md`. +**Off-phase knowledge-graph-tooling (v1.43, 27.05.2026):** #86 `graphifyy` (Tooling §4.59; CLI-инструмент, установка `uv tool install graphifyy`; user-level skill `~/.claude/skills/graphify/SKILL.md` установлен через `/graphify install --platform claude`). **Активация:** через явный вызов `/graphify <команда>` — `query` / `path` / `explain` / `update` / `build`; не проактивно. Граф знаний всего портала Лидерры (docs + .claude/ + app/) для cross-layer навигации — «где вызывается функция», «как модуль X связан с Y», «структурные зависимости spec→code». Spike 27.05.2026: combined граф 6305 узлов / 6753 рёбер / 1009 communities (93% EXTRACTED / 7% INFERRED). **Артефакты `graphify-out*/` обязательно в `.gitignore`**. Backend экстракции: GEMINI_API_KEY (если есть) ИЛИ Claude Code subagent dispatch (применяется в Лидерре). Граничные правила ADR-017: KG1 (vs context7 #60 — внутренний codebase vs внешние SDK-доки), KG2 (vs Boost #10 — статический граф vs runtime-queries), KG3 (vs openapi-mcp #47 — весь проект vs один спек), KG4 (vs Sentry MCP #34 — структура vs runtime errors), KG5 (vs adr-kit #36 / mermaid #37 — auto-discovery vs manual authoring). **Девятнадцатая** off-phase подкатегория. Off-phase, не UI → вне R6.0/R6.1/R14 PSR_v1. Регулируется PSR_v1 R10.1 Блок 1 note + R15.6 knowledge-graph-tooling. + ### 13.3. Скоуп | Тип задачи | Кто отвечает | diff --git a/docs/Tooling_v8_3.md b/docs/Tooling_v8_3.md index 1f2eefec..eabb3726 100644 --- a/docs/Tooling_v8_3.md +++ b/docs/Tooling_v8_3.md @@ -1,10 +1,10 @@ # Приложение Н — Tooling, скиллы и плагины Claude (v8.3) -**Дата:** 22.05.2026 -**Версия:** 2.23 (Прил. Н v2.23 — C1 marketing-tooling: §4.49–§4.58 (#74–#83) — 18-я off-phase подкатегория **marketing-tooling** (раздел C1 «Маркетинг и лидогенерация»); §0 счётчик 73→83 (93→103 total), off-phase row +43→+53; cross-ref Pravila v1.42+ / PSR_v1 v3.22+ / CLAUDE.md v2.28+; ADR-015 (MKT1–MKT10). Узлы: #74 marketing plugin (Anthropic, 8 скилов — первичный решатель C1) + #75 marketingskills (вендоренный скил-набор, MIT, 40 скилов — материал, модель UPM) + #76 brand-voice (Anthropic partner Tribe AI, 3 скила — вербальный бренд) + #77 marketing-ru (self-authored project-скил, РФ-специфика C1) + #78 Яндекс.Метрика MCP (`atomkraft/yandex-metrika-mcp`, MIT, READ-ONLY, выбран по IS9-вету из 3 кандидатов) + #79 Яндекс.Директ+Wordstat MCP (`SvechaPVL/yandex-mcp`, MIT — **только Wordstat-инструменты; Direct-мутации НЕ активированы** per IS9) + #80 Telegram MCP (`chigwell/telegram-mcp`, Apache-2.0, выделенный аккаунт) + #81 Postiz (`gitroomhq/postiz-app`, AGPL-3.0, внутренний self-host без модификаций и дистрибуции) + #82 DataForSEO MCP (**DEFERRED** — платный, после Б-1) + #83 Unisender Go MCP (**DEFERRED** — нет готового upstream-сервера, своя обёртка по потребности). IS9-вет выполнен: `docs/security/marketing-vet.md` — все 5 внешних PASS/PASS-with-conditions; VK standalone MCP отброшен (0★, право тратить бюджет). Plan `docs/superpowers/plans/2026-05-22-c1-marketing-tooling.md`. **Прил. Н v2.22 наследие** — pg_audit #28 + pg_anonymizer #29 **установлены на боевом liderra.ru 22.05.2026** (расширения PostgreSQL фазы 3, ранее недоступные на dev native-Windows): §5.1 attribute-блоки #28/#29 + §6 compliance-таблица + §10.4 шаг 2 → ✅ прод; setup-док `docs/security/pgaudit-anonymizer-setup.md`; cross-ref Pravila v1.38 / PSR_v1 v3.21 / CLAUDE.md v2.26; счётчики без изменений (#28/#29 уже в phase-3). **Прил. Н v2.21 наследие** — 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 снят в §4.43/§4.45 (dormant true→false) + §4.48 уточнён; setup-доки `docs/security/zap-setup.md` + `docs/security/ward-setup.md`; счётчики/состав реестра без изменений (73 формализованных / 93 total); cross-ref Pravila v1.38 / PSR_v1 v3.21 / CLAUDE.md v2.25; план `docs/superpowers/plans/2026-05-21-a8-infosec-tooling.md`. **v2.20 наследие:** Прил. Н v2.20 — A8 infosec-tooling: §4.43 #68 OWASP ZAP (MCP add-on, глубокая боевая DAST — **PENDING INSTALL**: нет Java) + §4.44 #69 Nuclei (CLI-бинарь `bin/nuclei.exe` v3.8.0, известные уязвимости — УСТАНОВЛЕН+verified; CLI не MCP) + §4.45 #70 Ward (CLI Go-бинарь, безопасность настроек Laravel — ЗАМЕНИЛ Enlightn abandoned/L13, **PENDING INSTALL**: нет Go) + §4.46 #71 pdn-152fz-audit + §4.47 #72 threat-model + §4.48 #73 security-go-live (self-authored project-скилы) — 17-я off-phase подкатегория **infosec-tooling**, раздел A8; §0 счётчик 67→73 (87→93 total), off-phase row +37→+43; cross-ref Pravila v1.37 / PSR_v1 v3.20 / CLAUDE.md v2.24; ADR-014 (IS1–IS9). **v2.19 наследие:** A1 backend-tooling: §4.39 #64 Rector + rector-laravel (Composer dev-dep, авто-рефакторинг/version-upgrade, manual/CI постура — dry-run baseline 16 файлов, не блокирующий) + §4.40 #65 PHP Insights (Composer dev-dep, метрики complexity/architecture, on-demand/CI, SyntaxCheck removed — Windows subprocess-краш) + §4.41 #66 laravel-backend-patterns (self-authored project-скил, backend-конвенции Лидерры) + §4.42 #67 NightOwl (self-hosted runtime-телеметрия — **DEFERRED**: native-Windows нет pcntl/posix, OSS без MCP, hosted 152-ФЗ) — 16-я off-phase подкатегория **backend-tooling**, раздел A1; §0 счётчик 63→67 (83→87 total), off-phase row +33→+37; cross-ref Pravila v1.35 / PSR_v1 v3.19 / CLAUDE.md v2.22; ADR-013. **v2.18 наследие:** finance-tooling (C6+C7): §4.36 #61 finance plugin (homed C7, cross-ref C6; US-GAAP частично, SOX not-applicable РФ, warehouse-MCP DEFERRED) + §4.37 #62 billing-audit (C6, self-authored) + §4.38 #63 ru-tax-accounting (C7, self-authored) — 15-я off-phase подкатегория finance-tooling; §0 счётчик 60→63 (80→83 total), off-phase row +30→+33; cross-ref Pravila v1.34 / PSR_v1 v3.18 / CLAUDE.md v2.21; ADR-012. **v2.17 наследие:** applied 9-attribute row template per ADR-011 brain-governance spec §4.1. §0.1 row template +Атрибуты blocks для 58 узлов: §2.4 dump phase-0 (9 nodes #1-9 incl. dormant #1 PG MCP), §3.5 dump phase-1 (9 nodes #10-18 incl. dormant #17 pg_partman), §4.1-§4.4 inline phase-2 (7 nodes #19-23+#24+#30), §5.1 dump phase-3 (5 nodes #25-29), §4.5-§4.17 inline off-phase #31-42 incl. ruflo §4.10 dormant, §4.18-§4.35 inline off-phase #43-60. Структурный реестр для router procedure step 3 (`docs/router-procedure.md` v1.0). Связано: ADR-011, spec/plan brain-governance, Pravila v1.33 / PSR_v1 v3.17 / CLAUDE.md v2.20. **v2.16 наследие:** компакция «мозга» — SYSTEM-аудит 18.05.2026 findings 2/3/6/7: §0 +«КАНОН СЧЁТЧИКОВ» anchor — Прил. Н §0 объявлен единственным источником числовых счётчиков тулчейна, CLAUDE.md / Pravila §13.2 / PSR_v1 R10.1 переведены на пин-ссылку (finding 3 — устранение дрейфа счётчиков); §12 заголовок «вне 35 формализованных позиций» → «вне реестра» — убран stale-счётчик. Счётчики тулчейна без изменений — 60 формализованных + 20 ruflo = 80 total. План `docs/superpowers/plans/2026-05-18-brain-compaction-findings-2-3-6-7.md`. **v2.15 наследие:** ruflo isolation — §4.10 +status block: ruflo отключён от активного потока Claude 18.05.2026 без удаления артефактов; live-связи hooks/MCP/daemon выключены; план реактивации в Pravila §14.9 + memory `feedback_ruflo_isolated.md`; счётчики тулчейна без изменений — 60 формализованных позиций + 20 ruflo plugins = 80 total. Rec2 SYSTEM-аудита 18.05.2026. **v2.14 наследие:** authoring-tooling + dev-support — формализованы 5 Anthropic dev-плагинов уже включённых в `~/.claude/settings.json` user-level: #56 skill-creator / #57 plugin-dev / #58 hookify (новая 13-я off-phase подкатегория authoring-tooling — §4.31/§4.32/§4.33) + #59 claude-code-setup / #60 context7 (новая 14-я off-phase подкатегория dev-support — §4.34/§4.35); §0 счётчик 55→60 (75→80 total), off-phase row +25→+30. hookify HK1 — hard-rule pre-check на коллизию с economy/skill-discipline хуками, закрывает 🔴-конфликт карты `hookify_plugin ↔ hk_pre_claude`. Конфликт-аудит — ADR-010 (SC1–SC3 / PD1–PD3 / HK1–HK3 / CCS1 / CTX1–CTX2). Связано: PSR_v1 v3.13, Pravila v1.28, CLAUDE.md v2.15; план `docs/superpowers/plans/2026-05-18-anthropic-dev-tooling-formalization.md`. **v2.13 наследие:** discovery-tooling — формализован #55 discovery-interview (self-authored project-скил `.claude/skills/discovery-interview/`, два режима — FEATURE интервью заказчика перед фичей + SYSTEM ориентация по мета-слою) как новая 12-я off-phase подкатегория discovery-tooling — §4.30; §0 счётчик 54→55 (74→75 total), off-phase row +24→+25. Триггер-eval 20/20. Конфликт-аудит — ADR-009 DI1–DI6: разрез по слою-источнику с process-analysis #53. Связано: PSR_v1 v3.12, Pravila v1.26, CLAUDE.md v2.13; план `docs/superpowers/plans/2026-05-18-discovery-interview-integration.md`. **v2.12 наследие:** C10 business-process — формализованы #51 operations (Claude Code marketplace-плагин `operations@knowledge-work-plugins` v1.2.0, Anthropic Verified — 9 скилов process-doc/process-optimization/change-request/capacity-plan/compliance-tracking/risk-assessment/runbook/status-report/vendor-review, 0 lifecycle-хуков) + #52 process-modeling + #53 process-analysis (self-authored project-скилы `.claude/skills/`, BPMN-моделирование to-be + as-is discovery) + #54 n8n-mcp (`czlonkowski/n8n-mcp`, MIT, workflow-движок — **DEFERRED**, у портала нет n8n) как новая 11-я off-phase подкатегория business-process — §4.26/§4.27/§4.28/§4.29; §0 счётчик 50→54 (70→74 total), off-phase row +20→+24. Конфликт-аудит — OPS1 (process-doc↔mermaid рендер-SoT), OPS5 (operations generic ↔ self-authored stack-grounded), N8N1 (n8n-mcp DEFERRED — n8n не в стеке портала), LINT1 (self-authored скилы линтуются, не в ignorePaths). Связано: PSR_v1 v3.11, Pravila v1.25, CLAUDE.md v2.12; план `docs/superpowers/plans/2026-05-17-c10-business-process-tooling-integration.md`. **v2.11 наследие:** ADR-006 Decision-4 icon-path boundary mirror — §4.20 +UI3: Lucide-иконки канонически через `lucide-vue-next` + Vuetify `IconSet` (CTO-19), raw-SVG `get_icon` Universal Icons MCP — только для не-Lucide коллекций; источник — ADR-006 поправка 17.05.2026. Счётчики без изменений — 50 формализованных позиций / 70 total. Связано: CLAUDE.md v2.11, ADR-006. **v2.10 наследие:** A11 ml-ai-tooling — формализованы #48 promptfoo (npm devDependency `promptfoo` v0.121.11, MIT — CLI-eval LLM-промптов) + #49 Data Scientist skill (вендоренный сторонний скил `.claude/skills/data-scientist/`, классический ML-воркфлоу, код MIT / контент CC BY 4.0) + #50 Jupyter MCP (`datalayer/jupyter-mcp-server`, исполняемые ноутбуки — **DEFERRED**, требует Python ML-окружения) как новая 10-я off-phase подкатегория ml-ai-tooling — §4.23/§4.24/§4.25; §0 счётчик 47→50 (67→70 total), off-phase row +17→+20. Конфликт-аудит — ML1 (promptfoo платные вызовы → только вручную/CI, никогда в хук), ML3 (Data Scientist skill вендорен → lefthook exclude), ML7 (bus-factor → вендоринг). Связано: PSR_v1 v3.10, Pravila v1.24, CLAUDE.md v2.10; план `docs/superpowers/plans/2026-05-17-a11-ml-ai-tooling-integration.md`. **v2.9 наследие:** A3 integration-tooling — формализован #47 openapi-mcp-server (`@ivotoby/openapi-mcp-server`, npm, v1.14.0, MIT) как 9-я off-phase подкатегория integration-tooling — §4.22; §0 счётчик 46→47 (66→67 total), off-phase row +16→+17. Связано: PSR_v1 v3.9, Pravila v1.23, CLAUDE.md v2.9; план `docs/superpowers/plans/2026-05-17-a3-integration-tooling-integration.md`. **v2.8 наследие:** A4 design-tooling — формализованы #44 Figma MCP (remote MCP, extract-only, DEFERRED — нет Figma-аккаунта) + #45 Universal Icons MCP (`mcp-universal-icons`, MIT) + #46 Design plugin (Anthropic Verified) как новая 8-я off-phase подкатегория design-tooling — §4.19/§4.20/§4.21; §0 счётчик 43→46 (63→66 total), off-phase row +13→+16. Связано: PSR_v1 v3.8, Pravila v1.22, CLAUDE.md v2.8; план `docs/superpowers/plans/2026-05-17-a4-design-tooling-integration.md`. **v2.7 наследие:** A6-расширение — deptrac: формализован #43 deptrac (Composer dev-dependency `deptrac/deptrac` v4.6.1, BSD-3-Clause) как 4-й инструмент off-phase подкатегории architecture-tooling — архитектурный fitness-гейт направления зависимостей / границ слоёв; врезан как lefthook pre-commit job 10; конфиг `app/deptrac.yaml` (13 слоёв), первый прогон 0 нарушений → baseline-файл не нужен (red-green доказан); §4.18 новый; §0 счётчик 42→43 (62→63 total), off-phase row +12→+13. Связано: PSR_v1 v3.7, Pravila v1.21, CLAUDE.md v2.7; план `docs/superpowers/plans/2026-05-17-deptrac-architecture-fitness-integration.md`. **v2.6 наследие:** C9 project-management — формализованы #41 CCPM (vendored standalone skill) + #42 product-management (Anthropic-verified marketplace plugin) как новая 7-я off-phase подкатегория «project-management» — §4.16/§4.17; §0 счётчик 40→42 (60→62 total); off-phase row +10→+12. Связано: PSR_v1 v3.6, Pravila v1.20, CLAUDE.md v2.6; план `docs/superpowers/plans/2026-05-17-c9-project-management-tooling-integration.md`. **v2.5 наследие:** фактическая правка #40 Security Guidance — это **блокирующий** PreToolUse-хук (`sys.exit(2)`), не warn-only: при первом за сессию срабатывании уязвимого паттерна блокирует правку (одноразовый speed-bump, retry проходит). §4.15 переписан, SG1 уточнён, +SG2 — Windows-починка python3-резолва (`python3.exe`-шим). Счётчики не меняются — 40 позиций. Связано: PSR_v1 v3.5, Pravila v1.19, CLAUDE.md v2.5; план `docs/superpowers/plans/2026-05-17-d3-audit-risk-tooling-integration.md`. **v2.4 наследие:** D3 audit-security — формализованы #39 Trail of Bits Skills (субсет 8 audit-плагинов, marketplace `trailofbits`, CC-BY-SA-4.0) + #40 Security Guidance (Anthropic PreToolUse-хук) как новая 6-я off-phase подкатегория «audit-security» — §4.14/§4.15; §0 счётчик 38→40 (58→60 total); off-phase row +8→+10. Связано: PSR_v1 v3.4, Pravila v1.18, CLAUDE.md v2.4; план `docs/superpowers/plans/2026-05-17-d3-audit-risk-tooling-integration.md`. **v2.3 наследие:** A6 architecture-tooling — формализованы 3 инструмента раздела A6 карты «Архитектура систем»: **#36 adr-kit** (ADR-решения + `adr-judge` gate), **#37 mermaid-skill** (C4-диаграммы), **#38 architecture-patterns** (паттерны) — новые §4.11–4.13, новая пятая off-phase подкатегория «architecture-tooling»; §0 счётчик 35→38 формализованных позиций (55→58 total), §0 table row off-phase +5→+8. Связано: PSR_v1 v3.3, Pravila v1.17, CLAUDE.md v2.3; план `docs/superpowers/plans/2026-05-17-a6-architecture-tooling-integration.md`. **v2.2 наследие:** §4.10 реколлаж — ruflo переописан из «entry-point иерархии» в «advisory/automation-подсистему» (декларация приведена к рантайму: рой idle, 0 задач); заголовок §4.10 + «Архитектурная роль» переписаны; §0 table row + «Категории off-phase tools» + «Назначение» обновлены; §13 +v2.2 entry. Связано: Pravila v1.16, PSR_v1 v3.2, CLAUDE.md v2.2; spec `docs/superpowers/specs/2026-05-16-ruflo-hierarchy-factual-recollage-design.md`. **v2.1 наследие:** §4.10 +абзац «Queen trigger»: триггер queen/королева → безусловный route через ruflo Queen (`hive-mind spawn --claude`), explicit hard-rule Pravila §14, enforcement-хук `tools/ruflo-queen-hook.mjs`. Связано: spec/plan `docs/superpowers/{specs,plans}/2026-05-15-ruflo-queen-trigger-and-delegation*`, Pravila v1.15, CLAUDE.md v2.1, PSR_v1 v3.1. **v2.0 наследие:** Ruflo big-bang — major bump: добавлен **orchestration layer (ruflo)** как четвёртая off-phase подкатегория. §0 +ruflo orchestration row: 35 формализованных позиций + 20 ruflo plugins = 55 total; новая §4.10 «Orchestration layer (ruflo)». Связано: spec/plan 2026-05-15, Pravila v1.14, PSR_v1 v3.0, CLAUDE.md v2.0.) +**Дата:** 27.05.2026 +**Версия:** 2.24 (Прил. Н v2.24 — knowledge-graph-tooling: §4.59 (#86) graphifyy — 19-я off-phase подкатегория **knowledge-graph-tooling** (skill-based CLI, user-level `~/.claude/skills/graphify/`); §0 счётчик 83→84 (103→104 total), off-phase row +53→+54; cross-ref Pravila v1.43+ / PSR_v1 v3.23+ / CLAUDE.md v2.32+; ADR-017 (KG1–KG5). Граничные правила: KG1 ↔ context7 #60 (внутренний codebase vs внешние SDK-доки), KG2 ↔ Boost #10 (static graph vs runtime queries), KG3 ↔ openapi-mcp #47 (весь проект vs один спек), KG4 ↔ Sentry MCP #34 (структурные связи vs runtime errors), KG5 ↔ adr-kit #36 / mermaid #37 (auto-discovery vs manual authoring). Spike `spike/graphify-2026-05-27`: 3 фазы (docs/ + .claude/ + app/) → ultimate combined граф 6305 узлов / 6753 рёбер / 1009 communities (93% EXTRACTED / 7% INFERRED). Артефакты `graphify-out*/` обязательно gitignored. **Прил. Н v2.23 наследие** — C1 marketing-tooling: §4.49–§4.58 (#74–#83) — 18-я off-phase подкатегория **marketing-tooling** (раздел C1 «Маркетинг и лидогенерация»); §0 счётчик 73→83 (93→103 total), off-phase row +43→+53; cross-ref Pravila v1.42+ / PSR_v1 v3.22+ / CLAUDE.md v2.28+; ADR-015 (MKT1–MKT10). Узлы: #74 marketing plugin (Anthropic, 8 скилов — первичный решатель C1) + #75 marketingskills (вендоренный скил-набор, MIT, 40 скилов — материал, модель UPM) + #76 brand-voice (Anthropic partner Tribe AI, 3 скила — вербальный бренд) + #77 marketing-ru (self-authored project-скил, РФ-специфика C1) + #78 Яндекс.Метрика MCP (`atomkraft/yandex-metrika-mcp`, MIT, READ-ONLY, выбран по IS9-вету из 3 кандидатов) + #79 Яндекс.Директ+Wordstat MCP (`SvechaPVL/yandex-mcp`, MIT — **только Wordstat-инструменты; Direct-мутации НЕ активированы** per IS9) + #80 Telegram MCP (`chigwell/telegram-mcp`, Apache-2.0, выделенный аккаунт) + #81 Postiz (`gitroomhq/postiz-app`, AGPL-3.0, внутренний self-host без модификаций и дистрибуции) + #82 DataForSEO MCP (**DEFERRED** — платный, после Б-1) + #83 Unisender Go MCP (**DEFERRED** — нет готового upstream-сервера, своя обёртка по потребности). IS9-вет выполнен: `docs/security/marketing-vet.md` — все 5 внешних PASS/PASS-with-conditions; VK standalone MCP отброшен (0★, право тратить бюджет). Plan `docs/superpowers/plans/2026-05-22-c1-marketing-tooling.md`. **Прил. Н v2.22 наследие** — pg_audit #28 + pg_anonymizer #29 **установлены на боевом liderra.ru 22.05.2026** (расширения PostgreSQL фазы 3, ранее недоступные на dev native-Windows): §5.1 attribute-блоки #28/#29 + §6 compliance-таблица + §10.4 шаг 2 → ✅ прод; setup-док `docs/security/pgaudit-anonymizer-setup.md`; cross-ref Pravila v1.38 / PSR_v1 v3.21 / CLAUDE.md v2.26; счётчики без изменений (#28/#29 уже в phase-3). **Прил. Н v2.21 наследие** — 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 снят в §4.43/§4.45 (dormant true→false) + §4.48 уточнён; setup-доки `docs/security/zap-setup.md` + `docs/security/ward-setup.md`; счётчики/состав реестра без изменений (73 формализованных / 93 total); cross-ref Pravila v1.38 / PSR_v1 v3.21 / CLAUDE.md v2.25; план `docs/superpowers/plans/2026-05-21-a8-infosec-tooling.md`. **v2.20 наследие:** Прил. Н v2.20 — A8 infosec-tooling: §4.43 #68 OWASP ZAP (MCP add-on, глубокая боевая DAST — **PENDING INSTALL**: нет Java) + §4.44 #69 Nuclei (CLI-бинарь `bin/nuclei.exe` v3.8.0, известные уязвимости — УСТАНОВЛЕН+verified; CLI не MCP) + §4.45 #70 Ward (CLI Go-бинарь, безопасность настроек Laravel — ЗАМЕНИЛ Enlightn abandoned/L13, **PENDING INSTALL**: нет Go) + §4.46 #71 pdn-152fz-audit + §4.47 #72 threat-model + §4.48 #73 security-go-live (self-authored project-скилы) — 17-я off-phase подкатегория **infosec-tooling**, раздел A8; §0 счётчик 67→73 (87→93 total), off-phase row +37→+43; cross-ref Pravila v1.37 / PSR_v1 v3.20 / CLAUDE.md v2.24; ADR-014 (IS1–IS9). **v2.19 наследие:** A1 backend-tooling: §4.39 #64 Rector + rector-laravel (Composer dev-dep, авто-рефакторинг/version-upgrade, manual/CI постура — dry-run baseline 16 файлов, не блокирующий) + §4.40 #65 PHP Insights (Composer dev-dep, метрики complexity/architecture, on-demand/CI, SyntaxCheck removed — Windows subprocess-краш) + §4.41 #66 laravel-backend-patterns (self-authored project-скил, backend-конвенции Лидерры) + §4.42 #67 NightOwl (self-hosted runtime-телеметрия — **DEFERRED**: native-Windows нет pcntl/posix, OSS без MCP, hosted 152-ФЗ) — 16-я off-phase подкатегория **backend-tooling**, раздел A1; §0 счётчик 63→67 (83→87 total), off-phase row +33→+37; cross-ref Pravila v1.35 / PSR_v1 v3.19 / CLAUDE.md v2.22; ADR-013. **v2.18 наследие:** finance-tooling (C6+C7): §4.36 #61 finance plugin (homed C7, cross-ref C6; US-GAAP частично, SOX not-applicable РФ, warehouse-MCP DEFERRED) + §4.37 #62 billing-audit (C6, self-authored) + §4.38 #63 ru-tax-accounting (C7, self-authored) — 15-я off-phase подкатегория finance-tooling; §0 счётчик 60→63 (80→83 total), off-phase row +30→+33; cross-ref Pravila v1.34 / PSR_v1 v3.18 / CLAUDE.md v2.21; ADR-012. **v2.17 наследие:** applied 9-attribute row template per ADR-011 brain-governance spec §4.1. §0.1 row template +Атрибуты blocks для 58 узлов: §2.4 dump phase-0 (9 nodes #1-9 incl. dormant #1 PG MCP), §3.5 dump phase-1 (9 nodes #10-18 incl. dormant #17 pg_partman), §4.1-§4.4 inline phase-2 (7 nodes #19-23+#24+#30), §5.1 dump phase-3 (5 nodes #25-29), §4.5-§4.17 inline off-phase #31-42 incl. ruflo §4.10 dormant, §4.18-§4.35 inline off-phase #43-60. Структурный реестр для router procedure step 3 (`docs/router-procedure.md` v1.0). Связано: ADR-011, spec/plan brain-governance, Pravila v1.33 / PSR_v1 v3.17 / CLAUDE.md v2.20. **v2.16 наследие:** компакция «мозга» — SYSTEM-аудит 18.05.2026 findings 2/3/6/7: §0 +«КАНОН СЧЁТЧИКОВ» anchor — Прил. Н §0 объявлен единственным источником числовых счётчиков тулчейна, CLAUDE.md / Pravila §13.2 / PSR_v1 R10.1 переведены на пин-ссылку (finding 3 — устранение дрейфа счётчиков); §12 заголовок «вне 35 формализованных позиций» → «вне реестра» — убран stale-счётчик. Счётчики тулчейна без изменений — 60 формализованных + 20 ruflo = 80 total. План `docs/superpowers/plans/2026-05-18-brain-compaction-findings-2-3-6-7.md`. **v2.15 наследие:** ruflo isolation — §4.10 +status block: ruflo отключён от активного потока Claude 18.05.2026 без удаления артефактов; live-связи hooks/MCP/daemon выключены; план реактивации в Pravila §14.9 + memory `feedback_ruflo_isolated.md`; счётчики тулчейна без изменений — 60 формализованных позиций + 20 ruflo plugins = 80 total. Rec2 SYSTEM-аудита 18.05.2026. **v2.14 наследие:** authoring-tooling + dev-support — формализованы 5 Anthropic dev-плагинов уже включённых в `~/.claude/settings.json` user-level: #56 skill-creator / #57 plugin-dev / #58 hookify (новая 13-я off-phase подкатегория authoring-tooling — §4.31/§4.32/§4.33) + #59 claude-code-setup / #60 context7 (новая 14-я off-phase подкатегория dev-support — §4.34/§4.35); §0 счётчик 55→60 (75→80 total), off-phase row +25→+30. hookify HK1 — hard-rule pre-check на коллизию с economy/skill-discipline хуками, закрывает 🔴-конфликт карты `hookify_plugin ↔ hk_pre_claude`. Конфликт-аудит — ADR-010 (SC1–SC3 / PD1–PD3 / HK1–HK3 / CCS1 / CTX1–CTX2). Связано: PSR_v1 v3.13, Pravila v1.28, CLAUDE.md v2.15; план `docs/superpowers/plans/2026-05-18-anthropic-dev-tooling-formalization.md`. **v2.13 наследие:** discovery-tooling — формализован #55 discovery-interview (self-authored project-скил `.claude/skills/discovery-interview/`, два режима — FEATURE интервью заказчика перед фичей + SYSTEM ориентация по мета-слою) как новая 12-я off-phase подкатегория discovery-tooling — §4.30; §0 счётчик 54→55 (74→75 total), off-phase row +24→+25. Триггер-eval 20/20. Конфликт-аудит — ADR-009 DI1–DI6: разрез по слою-источнику с process-analysis #53. Связано: PSR_v1 v3.12, Pravila v1.26, CLAUDE.md v2.13; план `docs/superpowers/plans/2026-05-18-discovery-interview-integration.md`. **v2.12 наследие:** C10 business-process — формализованы #51 operations (Claude Code marketplace-плагин `operations@knowledge-work-plugins` v1.2.0, Anthropic Verified — 9 скилов process-doc/process-optimization/change-request/capacity-plan/compliance-tracking/risk-assessment/runbook/status-report/vendor-review, 0 lifecycle-хуков) + #52 process-modeling + #53 process-analysis (self-authored project-скилы `.claude/skills/`, BPMN-моделирование to-be + as-is discovery) + #54 n8n-mcp (`czlonkowski/n8n-mcp`, MIT, workflow-движок — **DEFERRED**, у портала нет n8n) как новая 11-я off-phase подкатегория business-process — §4.26/§4.27/§4.28/§4.29; §0 счётчик 50→54 (70→74 total), off-phase row +20→+24. Конфликт-аудит — OPS1 (process-doc↔mermaid рендер-SoT), OPS5 (operations generic ↔ self-authored stack-grounded), N8N1 (n8n-mcp DEFERRED — n8n не в стеке портала), LINT1 (self-authored скилы линтуются, не в ignorePaths). Связано: PSR_v1 v3.11, Pravila v1.25, CLAUDE.md v2.12; план `docs/superpowers/plans/2026-05-17-c10-business-process-tooling-integration.md`. **v2.11 наследие:** ADR-006 Decision-4 icon-path boundary mirror — §4.20 +UI3: Lucide-иконки канонически через `lucide-vue-next` + Vuetify `IconSet` (CTO-19), raw-SVG `get_icon` Universal Icons MCP — только для не-Lucide коллекций; источник — ADR-006 поправка 17.05.2026. Счётчики без изменений — 50 формализованных позиций / 70 total. Связано: CLAUDE.md v2.11, ADR-006. **v2.10 наследие:** A11 ml-ai-tooling — формализованы #48 promptfoo (npm devDependency `promptfoo` v0.121.11, MIT — CLI-eval LLM-промптов) + #49 Data Scientist skill (вендоренный сторонний скил `.claude/skills/data-scientist/`, классический ML-воркфлоу, код MIT / контент CC BY 4.0) + #50 Jupyter MCP (`datalayer/jupyter-mcp-server`, исполняемые ноутбуки — **DEFERRED**, требует Python ML-окружения) как новая 10-я off-phase подкатегория ml-ai-tooling — §4.23/§4.24/§4.25; §0 счётчик 47→50 (67→70 total), off-phase row +17→+20. Конфликт-аудит — ML1 (promptfoo платные вызовы → только вручную/CI, никогда в хук), ML3 (Data Scientist skill вендорен → lefthook exclude), ML7 (bus-factor → вендоринг). Связано: PSR_v1 v3.10, Pravila v1.24, CLAUDE.md v2.10; план `docs/superpowers/plans/2026-05-17-a11-ml-ai-tooling-integration.md`. **v2.9 наследие:** A3 integration-tooling — формализован #47 openapi-mcp-server (`@ivotoby/openapi-mcp-server`, npm, v1.14.0, MIT) как 9-я off-phase подкатегория integration-tooling — §4.22; §0 счётчик 46→47 (66→67 total), off-phase row +16→+17. Связано: PSR_v1 v3.9, Pravila v1.23, CLAUDE.md v2.9; план `docs/superpowers/plans/2026-05-17-a3-integration-tooling-integration.md`. **v2.8 наследие:** A4 design-tooling — формализованы #44 Figma MCP (remote MCP, extract-only, DEFERRED — нет Figma-аккаунта) + #45 Universal Icons MCP (`mcp-universal-icons`, MIT) + #46 Design plugin (Anthropic Verified) как новая 8-я off-phase подкатегория design-tooling — §4.19/§4.20/§4.21; §0 счётчик 43→46 (63→66 total), off-phase row +13→+16. Связано: PSR_v1 v3.8, Pravila v1.22, CLAUDE.md v2.8; план `docs/superpowers/plans/2026-05-17-a4-design-tooling-integration.md`. **v2.7 наследие:** A6-расширение — deptrac: формализован #43 deptrac (Composer dev-dependency `deptrac/deptrac` v4.6.1, BSD-3-Clause) как 4-й инструмент off-phase подкатегории architecture-tooling — архитектурный fitness-гейт направления зависимостей / границ слоёв; врезан как lefthook pre-commit job 10; конфиг `app/deptrac.yaml` (13 слоёв), первый прогон 0 нарушений → baseline-файл не нужен (red-green доказан); §4.18 новый; §0 счётчик 42→43 (62→63 total), off-phase row +12→+13. Связано: PSR_v1 v3.7, Pravila v1.21, CLAUDE.md v2.7; план `docs/superpowers/plans/2026-05-17-deptrac-architecture-fitness-integration.md`. **v2.6 наследие:** C9 project-management — формализованы #41 CCPM (vendored standalone skill) + #42 product-management (Anthropic-verified marketplace plugin) как новая 7-я off-phase подкатегория «project-management» — §4.16/§4.17; §0 счётчик 40→42 (60→62 total); off-phase row +10→+12. Связано: PSR_v1 v3.6, Pravila v1.20, CLAUDE.md v2.6; план `docs/superpowers/plans/2026-05-17-c9-project-management-tooling-integration.md`. **v2.5 наследие:** фактическая правка #40 Security Guidance — это **блокирующий** PreToolUse-хук (`sys.exit(2)`), не warn-only: при первом за сессию срабатывании уязвимого паттерна блокирует правку (одноразовый speed-bump, retry проходит). §4.15 переписан, SG1 уточнён, +SG2 — Windows-починка python3-резолва (`python3.exe`-шим). Счётчики не меняются — 40 позиций. Связано: PSR_v1 v3.5, Pravila v1.19, CLAUDE.md v2.5; план `docs/superpowers/plans/2026-05-17-d3-audit-risk-tooling-integration.md`. **v2.4 наследие:** D3 audit-security — формализованы #39 Trail of Bits Skills (субсет 8 audit-плагинов, marketplace `trailofbits`, CC-BY-SA-4.0) + #40 Security Guidance (Anthropic PreToolUse-хук) как новая 6-я off-phase подкатегория «audit-security» — §4.14/§4.15; §0 счётчик 38→40 (58→60 total); off-phase row +8→+10. Связано: PSR_v1 v3.4, Pravila v1.18, CLAUDE.md v2.4; план `docs/superpowers/plans/2026-05-17-d3-audit-risk-tooling-integration.md`. **v2.3 наследие:** A6 architecture-tooling — формализованы 3 инструмента раздела A6 карты «Архитектура систем»: **#36 adr-kit** (ADR-решения + `adr-judge` gate), **#37 mermaid-skill** (C4-диаграммы), **#38 architecture-patterns** (паттерны) — новые §4.11–4.13, новая пятая off-phase подкатегория «architecture-tooling»; §0 счётчик 35→38 формализованных позиций (55→58 total), §0 table row off-phase +5→+8. Связано: PSR_v1 v3.3, Pravila v1.17, CLAUDE.md v2.3; план `docs/superpowers/plans/2026-05-17-a6-architecture-tooling-integration.md`. **v2.2 наследие:** §4.10 реколлаж — ruflo переописан из «entry-point иерархии» в «advisory/automation-подсистему» (декларация приведена к рантайму: рой idle, 0 задач); заголовок §4.10 + «Архитектурная роль» переписаны; §0 table row + «Категории off-phase tools» + «Назначение» обновлены; §13 +v2.2 entry. Связано: Pravila v1.16, PSR_v1 v3.2, CLAUDE.md v2.2; spec `docs/superpowers/specs/2026-05-16-ruflo-hierarchy-factual-recollage-design.md`. **v2.1 наследие:** §4.10 +абзац «Queen trigger»: триггер queen/королева → безусловный route через ruflo Queen (`hive-mind spawn --claude`), explicit hard-rule Pravila §14, enforcement-хук `tools/ruflo-queen-hook.mjs`. Связано: spec/plan `docs/superpowers/{specs,plans}/2026-05-15-ruflo-queen-trigger-and-delegation*`, Pravila v1.15, CLAUDE.md v2.1, PSR_v1 v3.1. **v2.0 наследие:** Ruflo big-bang — major bump: добавлен **orchestration layer (ruflo)** как четвёртая off-phase подкатегория. §0 +ruflo orchestration row: 35 формализованных позиций + 20 ruflo plugins = 55 total; новая §4.10 «Orchestration layer (ruflo)». Связано: spec/plan 2026-05-15, Pravila v1.14, PSR_v1 v3.0, CLAUDE.md v2.0.) **Предыдущая версия:** 1.17 (13.05.2026 day +1 — формализация retrospective двух off-phase MCP debug-инструментов установленных на feat/claude-automation `6f7e7d7` + `bd4ec48` после merge PR #3 в main `cc5f63b`: §0 счётчик off-phase 3 → 5, итого 33 → 35; §4.8 новый — #34 Sentry MCP; §4.9 новый — #35 Redis MCP. Категория debug-runtime, отдельная от UI-пула.) **Адресат:** Claude + разработчики проекта Лидерра -**Назначение:** единый источник истины по 83 формализованным позициям тулчейна + 20 ruflo orchestration plugins = 103 total (29 «активных» номеров фаз + 53 off-phase инструментов-резерв в категориях UI-пул, инфраструктура, debug-runtime, architecture-tooling, audit-security, project-management, design-tooling, integration-tooling, ml-ai-tooling, business-process, discovery-tooling, authoring-tooling, dev-support, finance-tooling, backend-tooling, infosec-tooling, marketing-tooling — UPM, 21st, claude-md-management, Sentry MCP, Redis MCP, adr-kit, mermaid-skill, architecture-patterns, Trail of Bits Skills, Security Guidance, CCPM, product-management, deptrac, Figma MCP, Universal Icons MCP, Design plugin, openapi-mcp-server, promptfoo, Data Scientist skill, Jupyter MCP, operations, process-modeling, process-analysis, n8n-mcp, discovery-interview, skill-creator, plugin-dev, hookify, claude-code-setup, context7, finance plugin, billing-audit, ru-tax-accounting, Rector, PHP Insights, laravel-backend-patterns, NightOwl, OWASP ZAP, Nuclei, Ward, pdn-152fz-audit, threat-model, security-go-live, marketing plugin, marketingskills, brand-voice, marketing-ru, Яндекс.Метрика MCP, Яндекс.Директ+Wordstat MCP, Telegram MCP, Postiz, DataForSEO MCP, Unisender Go MCP; +1 заменённый PG MCP исторически; +ruflo advisory/automation-подсистема — 20 plugins, см. §4.10), скиллам Claude Code, MCP-серверам и плагинам, используемым в проекте. Зафиксирован выбор, объяснено, что заменяет что, и в какой фазе вводится каждый инструмент. +**Назначение:** единый источник истины по 84 формализованным позициям тулчейна + 20 ruflo orchestration plugins = 104 total (29 «активных» номеров фаз + 54 off-phase инструментов-резерв в категориях UI-пул, инфраструктура, debug-runtime, architecture-tooling, audit-security, project-management, design-tooling, integration-tooling, ml-ai-tooling, business-process, discovery-tooling, authoring-tooling, dev-support, finance-tooling, backend-tooling, infosec-tooling, marketing-tooling, knowledge-graph-tooling — UPM, 21st, claude-md-management, Sentry MCP, Redis MCP, adr-kit, mermaid-skill, architecture-patterns, Trail of Bits Skills, Security Guidance, CCPM, product-management, deptrac, Figma MCP, Universal Icons MCP, Design plugin, openapi-mcp-server, promptfoo, Data Scientist skill, Jupyter MCP, operations, process-modeling, process-analysis, n8n-mcp, discovery-interview, skill-creator, plugin-dev, hookify, claude-code-setup, context7, finance plugin, billing-audit, ru-tax-accounting, Rector, PHP Insights, laravel-backend-patterns, NightOwl, OWASP ZAP, Nuclei, Ward, pdn-152fz-audit, threat-model, security-go-live, marketing plugin, marketingskills, brand-voice, marketing-ru, Яндекс.Метрика MCP, Яндекс.Директ+Wordstat MCP, Telegram MCP, Postiz, DataForSEO MCP, Unisender Go MCP, graphifyy; +1 заменённый PG MCP исторически; +ruflo advisory/automation-подсистема — 20 plugins, см. §4.10), скиллам Claude Code, MCP-серверам и плагинам, используемым в проекте. Зафиксирован выбор, объяснено, что заменяет что, и в какой фазе вводится каждый инструмент. > **Связано:** > @@ -81,10 +81,10 @@ | **1 — старт Laravel** | `composer create-project laravel/laravel` | **17** | +9 новых, −1 заменённый (PostgreSQL MCP → Laravel Boost) | | **2 — старт frontend** | первый коммит в `resources/js/` (Vue 3 + Vuetify 3) | **24** | +7 (включая #30 Frontend Design plugin, добавлен post-MVP в v1.10) | | **3 — pre-production** | ~спринт 12, перед публичным релизом | **29** | +5 | -| **off-phase tools** | по факту включения в `~/.claude/settings.json` / `~/.claude.json` / `.mcp.json` / `.claude/skills/` / `composer.json` / `package.json` | **+53** | #31 UPM (UI-резерв), #32 21st Magic MCP (UI-генератор), #33 claude-md-management (инфраструктура CLAUDE.md edits), #34 Sentry MCP (debug self-hosted Sentry в Yandex Cloud), #35 Redis MCP (debug Memurai/Redis runtime), #36 adr-kit (ADR-решения, architecture-tooling), #37 mermaid-skill (C4-диаграммы), #38 architecture-patterns (паттерны), #39 Trail of Bits Skills (8 audit-плагинов, audit-security), #40 Security Guidance (inline security warn-hook), #41 CCPM (PRD→эпик→issue→код трассируемость, project-management), #42 product-management (product-strategy церемонии, project-management), #43 deptrac (архитектурный fitness-гейт, architecture-tooling), #44 Figma MCP (извлечение дизайн-токенов, design-tooling, DEFERRED), #45 Universal Icons MCP (SVG-иконки, design-tooling), #46 Design plugin (дизайн-критика/UX, design-tooling), #47 openapi-mcp-server (introspection OpenAPI/REST, integration-tooling), #48 promptfoo (CLI-eval LLM-промптов, ml-ai-tooling), #49 Data Scientist skill (классический ML-воркфлоу, ml-ai-tooling), #50 Jupyter MCP (исполняемые ноутбуки, ml-ai-tooling, DEFERRED), #51 operations (документирование/оптимизация/change-mgmt бизнес-процессов, business-process), #52 process-modeling (BPMN-моделирование to-be, business-process), #53 process-analysis (as-is discovery/узкие места, business-process), #54 n8n-mcp (workflow-движок, business-process, DEFERRED), #55 discovery-interview (интервью-discovery FEATURE/SYSTEM, discovery-tooling), #56 skill-creator (конструктор скилов, authoring-tooling), #57 plugin-dev (конструктор плагинов, authoring-tooling), #58 hookify (генератор хуков, authoring-tooling), #59 claude-code-setup (рекомендатель автоматизаций, dev-support), #60 context7 (документация библиотек, dev-support), #61 finance plugin (финансы/бухгалтерия US-GAAP, finance-tooling), #62 billing-audit (денежные инварианты биллинга, finance-tooling), #63 ru-tax-accounting (РСБУ/НК РФ контекст, finance-tooling), #64 Rector (авто-рефакторинг/version-upgrade PHP, backend-tooling), #65 PHP Insights (метрики качества/сложности кода, backend-tooling), #66 laravel-backend-patterns (backend-конвенции Лидерры, backend-tooling), #67 NightOwl (runtime-телеметрия self-hosted, backend-tooling, DEFERRED), #68 OWASP ZAP (глубокая боевая DAST, infosec-tooling, MCP, установлен 21.05), #69 Nuclei (известные уязвимости, infosec-tooling, CLI), #70 Ward (безопасность настроек Laravel, infosec-tooling, CLI, установлен 21.05), #71 pdn-152fz-audit (аудит ПДн/152-ФЗ, infosec-tooling), #72 threat-model (STRIDE угрозы going-public, infosec-tooling), #73 security-go-live (go-live security-gate, infosec-tooling), #74 marketing plugin (первичный решатель C1, marketing-tooling), #75 marketingskills (резерв-библиотека фреймворков, marketing-tooling), #76 brand-voice (вербальный бренд, marketing-tooling), #77 marketing-ru (РФ-специфика маркетинга, marketing-tooling), #78 Яндекс.Метрика MCP (веб-аналитика READ-ONLY, marketing-tooling), #79 Яндекс.Директ+Wordstat MCP (Wordstat only, marketing-tooling), #80 Telegram MCP (постинг/управление каналами, marketing-tooling), #81 Postiz (планировщик соцсетей self-hosted, marketing-tooling), #82 DataForSEO MCP (SEO-данные РФ, marketing-tooling, DEFERRED), #83 Unisender Go MCP (email-рассылки обёртка, marketing-tooling, DEFERRED) | +| **off-phase tools** | по факту включения в `~/.claude/settings.json` / `~/.claude.json` / `.mcp.json` / `.claude/skills/` / `composer.json` / `package.json` | **+54** | #31 UPM (UI-резерв), #32 21st Magic MCP (UI-генератор), #33 claude-md-management (инфраструктура CLAUDE.md edits), #34 Sentry MCP (debug self-hosted Sentry в Yandex Cloud), #35 Redis MCP (debug Memurai/Redis runtime), #36 adr-kit (ADR-решения, architecture-tooling), #37 mermaid-skill (C4-диаграммы), #38 architecture-patterns (паттерны), #39 Trail of Bits Skills (8 audit-плагинов, audit-security), #40 Security Guidance (inline security warn-hook), #41 CCPM (PRD→эпик→issue→код трассируемость, project-management), #42 product-management (product-strategy церемонии, project-management), #43 deptrac (архитектурный fitness-гейт, architecture-tooling), #44 Figma MCP (извлечение дизайн-токенов, design-tooling, DEFERRED), #45 Universal Icons MCP (SVG-иконки, design-tooling), #46 Design plugin (дизайн-критика/UX, design-tooling), #47 openapi-mcp-server (introspection OpenAPI/REST, integration-tooling), #48 promptfoo (CLI-eval LLM-промптов, ml-ai-tooling), #49 Data Scientist skill (классический ML-воркфлоу, ml-ai-tooling), #50 Jupyter MCP (исполняемые ноутбуки, ml-ai-tooling, DEFERRED), #51 operations (документирование/оптимизация/change-mgmt бизнес-процессов, business-process), #52 process-modeling (BPMN-моделирование to-be, business-process), #53 process-analysis (as-is discovery/узкие места, business-process), #54 n8n-mcp (workflow-движок, business-process, DEFERRED), #55 discovery-interview (интервью-discovery FEATURE/SYSTEM, discovery-tooling), #56 skill-creator (конструктор скилов, authoring-tooling), #57 plugin-dev (конструктор плагинов, authoring-tooling), #58 hookify (генератор хуков, authoring-tooling), #59 claude-code-setup (рекомендатель автоматизаций, dev-support), #60 context7 (документация библиотек, dev-support), #61 finance plugin (финансы/бухгалтерия US-GAAP, finance-tooling), #62 billing-audit (денежные инварианты биллинга, finance-tooling), #63 ru-tax-accounting (РСБУ/НК РФ контекст, finance-tooling), #64 Rector (авто-рефакторинг/version-upgrade PHP, backend-tooling), #65 PHP Insights (метрики качества/сложности кода, backend-tooling), #66 laravel-backend-patterns (backend-конвенции Лидерры, backend-tooling), #67 NightOwl (runtime-телеметрия self-hosted, backend-tooling, DEFERRED), #68 OWASP ZAP (глубокая боевая DAST, infosec-tooling, MCP, установлен 21.05), #69 Nuclei (известные уязвимости, infosec-tooling, CLI), #70 Ward (безопасность настроек Laravel, infosec-tooling, CLI, установлен 21.05), #71 pdn-152fz-audit (аудит ПДн/152-ФЗ, infosec-tooling), #72 threat-model (STRIDE угрозы going-public, infosec-tooling), #73 security-go-live (go-live security-gate, infosec-tooling), #74 marketing plugin (первичный решатель C1, marketing-tooling), #75 marketingskills (резерв-библиотека фреймворков, marketing-tooling), #76 brand-voice (вербальный бренд, marketing-tooling), #77 marketing-ru (РФ-специфика маркетинга, marketing-tooling), #78 Яндекс.Метрика MCP (веб-аналитика READ-ONLY, marketing-tooling), #79 Яндекс.Директ+Wordstat MCP (Wordstat only, marketing-tooling), #80 Telegram MCP (постинг/управление каналами, marketing-tooling), #81 Postiz (планировщик соцсетей self-hosted, marketing-tooling), #82 DataForSEO MCP (SEO-данные РФ, marketing-tooling, DEFERRED), #83 Unisender Go MCP (email-рассылки обёртка, marketing-tooling, DEFERRED), #86 graphifyy (knowledge graph портала docs+code, knowledge-graph-tooling) | | **ruflo advisory/automation-подсистема** (off-phase, post-MVP 2026-05-15) | `npx ruflo@latest init` + `.mcp.json` ruflo entry | **+20 plugins** | `ruflo` v3.7.0-alpha.38+ + 20 plugins (`@claude-flow/*`, IPFS-registry) — advisory/automation-подсистема; orchestration подкатегория off-phase (см. §4.10) | -**Итого формализованных позиций:** 83 (29 активных по фазам + 53 off-phase + 1 заменённый PG MCP исторически) + 20 ruflo orchestration plugins = **103 total**. Полный перечень — §2–§5 (по фазам) + §4.5/§4.6/§4.7/§4.8/§4.9/§4.11/§4.12/§4.13/§4.14/§4.15/§4.16/§4.17/§4.18/§4.19/§4.20/§4.21/§4.22/§4.23/§4.24/§4.25/§4.26/§4.27/§4.28/§4.29/§4.30/§4.31/§4.32/§4.33/§4.34/§4.35/§4.36/§4.37/§4.38/§4.39/§4.40/§4.41/§4.42/§4.43/§4.44/§4.45/§4.46/§4.47/§4.48/§4.49/§4.50/§4.51/§4.52/§4.53/§4.54/§4.55/§4.56/§4.57/§4.58 (off-phase) + §4.10 (ruflo orchestration). Карта «когда что использовать» — §7. Что НЕ ставим и почему — §9. +**Итого формализованных позиций:** 84 (29 активных по фазам + 54 off-phase + 1 заменённый PG MCP исторически) + 20 ruflo orchestration plugins = **104 total**. Полный перечень — §2–§5 (по фазам) + §4.5/§4.6/§4.7/§4.8/§4.9/§4.11/§4.12/§4.13/§4.14/§4.15/§4.16/§4.17/§4.18/§4.19/§4.20/§4.21/§4.22/§4.23/§4.24/§4.25/§4.26/§4.27/§4.28/§4.29/§4.30/§4.31/§4.32/§4.33/§4.34/§4.35/§4.36/§4.37/§4.38/§4.39/§4.40/§4.41/§4.42/§4.43/§4.44/§4.45/§4.46/§4.47/§4.48/§4.49/§4.50/§4.51/§4.52/§4.53/§4.54/§4.55/§4.56/§4.57/§4.58/§4.59 (off-phase) + §4.10 (ruflo orchestration). Карта «когда что использовать» — §7. Что НЕ ставим и почему — §9. **КАНОН СЧЁТЧИКОВ.** Числовые счётчики формализованных позиций и off-phase подкатегорий тулчейна каноничны здесь — в Прил. Н §0. CLAUDE.md, Pravila §13.2 и PSR_v1 R10.1 ссылаются сюда формулировкой «реестр и счётчики — Tooling Прил. Н §0» и не дублируют числа. Введено SYSTEM-аудитом 18.05.2026 (finding 3) для устранения класса «арифметический дрейф счётчиков» (ловился аудитами v1.85/v1.86). @@ -451,6 +451,9 @@ Existing prose follows the table. | #81 | Postiz | off-phase | active | | #82 | DataForSEO MCP | off-phase | deferred | | #83 | Unisender Go MCP | off-phase | deferred | +| #84 | normative-sync | off-phase | active | +| #85 | prod-deploy-validator | off-phase | active | +| #86 | graphifyy | off-phase | active | @@ -1620,6 +1623,41 @@ Existing prose follows the table. --- +### 4.59. graphifyy — knowledge graph портала (off-phase, knowledge-graph-tooling) + +**Атрибуты:** + +| id | name | kind | phase | subcategory | triggers | boundaries | dormant | last-touched | +|---|---|---|---|---|---|---|---|---| +| #86 | graphifyy | cli | off-phase | knowledge-graph-tooling | «knowledge graph», «как устроен наш модуль X», «где наша функция Y вызывается», «cross-layer concept query», «структурные связи между спеком и кодом» | ADR-017 (граница ↔ context7 #60 / Boost #10 / openapi-mcp #47 / Sentry MCP #34 / adr-kit #36 / mermaid #37) | false | 2026-05-27 | + +**Источник:** npm-пакет `graphifyy` v0.8.20+, бинарь `graphify.exe`. Установка через `uv tool install graphifyy` (Python-based CLI, runs as binary). User-level skill `~/.claude/skills/graphify/SKILL.md` (через `graphify install --platform claude`). Backend семантической экстракции: GEMINI_API_KEY / GOOGLE_API_KEY (если есть) ИЛИ fallback на Claude Code subagent dispatch (используется в Лидерре — нет Gemini-ключа). **НЕ читает** ANTHROPIC_API_KEY, OPENAI_API_KEY, Ollama API. + +**Категория:** off-phase, **knowledge-graph-tooling** (19-я подкатегория, после marketing-tooling #74–#83). + +**Роль:** инструмент **#86**. Knowledge graph всего портала Лидерры (docs+config+code) для cross-layer навигации. Spike `spike/graphify-2026-05-27` отработал три фазы (docs/ → .claude/ → app/) с воспроизводимой методологией «subfolder + `graphify merge-graphs`». Ultimate combined граф: 6305 узлов / 6753 рёбер / 1009 communities (93% EXTRACTED / 7% INFERRED). Артефакты `graphify-out/{graph.json,GRAPH_REPORT.md,graph.html,cache/}` в CWD откуда запущен — **`graphify-out*/` обязательно в `.gitignore`**. + +**Активация:** explicit `/graphify <команда>` (query / path / explain / update / build), не проактивно. Strict gate: если уже существует `graphify-out/graph.json` и вопрос natural-language — fast-path сразу к `graphify query`, не пересборка. + +**Стратегия обновлений:** + +- **Manual `/graphify --update`** — единственный безопасный режим. AST-only для code-изменений (бесплатно, deterministic), LLM-semantic для doc/MD-изменений (через subagent dispatch, дорого). +- **Auto-update post-commit hook отложен** (см. ADR-017 §«Стратегия обновлений»). Spike-попытка 27.05 разнесла граф 6305 → 41586 узлов (38 МБ bloat) — `graphify update .` от широкого scope подхватил `tools/` + root-level .mjs за пределами трёх фаз. Откат через re-merge phase-бэкапов восстановил canonical. Перед auto-wire-in: спроектировать узкий scope + exclude pattern (vendor/, tools/, node_modules/), узкий manifest, smoke-test. + +**Конфликт-аудит (ADR-017):** + +- **KG1 — ↔ context7 (#60):** разные слои доков. context7 = внешние SDK/фреймворки (vendor docs); graphify = внутренний codebase Лидерры. Не дублируют. +- **KG2 — ↔ Laravel Boost (#10):** разный grain. Boost = runtime queries в app/ (Eloquent/DB/Laravel-docs); graphify = static cross-layer relationship graph. Boost первый для «выполни SQL»; graphify для «покажи связи». +- **KG3 — ↔ openapi-mcp-server (#47):** разный объект. openapi = introspection одного спека; graphify = весь проект, OpenAPI как часть. +- **KG4 — ↔ Sentry MCP (#34):** разная плоскость. Sentry = runtime errors; graphify = структурные отношения. Post-mortem: Sentry находит X, graphify показывает blast radius. +- **KG5 — ↔ adr-kit (#36) + mermaid-skill (#37):** разная природа. ADR/mermaid = manual authoring (декларативно); graphify = auto-discovery из исходников. ADR — нормативное решение, graphify-граф — наблюдаемая структура. + +**Координация:** PSR_v1 R10.1 (CLI off-phase, не UI → вне R6.0/R6.1/R14); R15.6 +knowledge-graph-tooling в список off-phase подкатегорий. ADR-017. + +**Ollama compliance:** Ollama установлен в проекте для 152-ФЗ-чувствительных задач (локальный LLM без отправки в Anthropic), но graphify Ollama НЕ использует — два независимых инструмента. + +--- + ## 5. Фаза 3 — pre-production (+5 новых, итого 29 активных) **Триггер:** ~спринт 12, перед публичным релизом MVP. @@ -1962,6 +2000,8 @@ Vuetify-тема — `liderraLight` и `liderraDark` — определена в --- +*Прил. Н v2.24 от 27.05.2026 — knowledge-graph-tooling: §4.59 #86 graphifyy (CLI `uv tool install graphifyy`, user-level skill `~/.claude/skills/graphify/`, activation `/graphify <команда>`, артефакты `graphify-out*/` gitignored) — 19-я off-phase подкатегория **knowledge-graph-tooling**; §0 счётчик 83→84 (103→104 total), off-phase row +53→+54; «Назначение» 83→84 позиции + +knowledge-graph-tooling + graphifyy. ADR-017 (KG1–KG5). Spike `spike/graphify-2026-05-27`: 3 фазы → combined граф 6305 узлов / 6753 рёбер / 1009 communities (93% EXTRACTED / 7% INFERRED). cross-ref Pravila v1.43+ / PSR_v1 v3.23+ / CLAUDE.md v2.32+.* + *Прил. Н v2.23 от 25.05.2026 (cross-ref update) — §0 cross-ref string Pravila v1.41+→**v1.42+** (Pravila §17.7 «Coverage announcement» добавлена). Счётчики #1-#83 без изменений. Связано: Pravila v1.42, CLAUDE.md v2.28, PSR_v1 v3.22.* *Прил. Н v2.18 от 20.05.2026 — finance-tooling (C6+C7): §4.36 #61 finance plugin (marketplace `finance@knowledge-work-plugins`, homed C7, cross-ref C6) + §4.37 #62 billing-audit (C6, self-authored project-скил `.claude/skills/billing-audit/`) + §4.38 #63 ru-tax-accounting (C7, self-authored project-скил `.claude/skills/ru-tax-accounting/`) — новая 15-я off-phase подкатегория finance-tooling; §0 счётчик 60→63 (80→83 total), off-phase row +30→+33. Применимость finance plugin: ✅ reconciliation/variance (C6), ⚠️ US-GAAP-скилы частично (РСБУ), ❌ SOX-скилы not-applicable РФ, warehouse-MCP DEFERRED. ADR-012. Связано: PSR_v1 v3.18, Pravila v1.34, CLAUDE.md v2.21, routing-off-phase.md v1.2 (связка L13), router-procedure.md v1.1; план `docs/superpowers/plans/2026-05-20-finance-tooling-c6-c7.md`.* diff --git a/docs/adr/ADR-017-knowledge-graph-tooling.md b/docs/adr/ADR-017-knowledge-graph-tooling.md new file mode 100644 index 00000000..88d967ce --- /dev/null +++ b/docs/adr/ADR-017-knowledge-graph-tooling.md @@ -0,0 +1,196 @@ +# ADR-017: Knowledge-graph tooling formalization (graphify) + +- **Status:** Accepted +- **Date:** 2026-05-27 +- **Deciders:** Дмитрий + +## Context + +Spike `spike/graphify-2026-05-27` (worktree `.claude/worktrees/graphify-spike`) +отработал три фазы построения knowledge-graph портала через инструмент +**graphify** (npm-обёртка `graphifyy`, бинарь `graphify.exe`, установлен через +`uv tool install graphifyy` v0.8.20+): + +- **Phase 1** (docs/): 1352 узла / 1455 рёбер / 147 communities — 271 markdown + файл, deep semantic extraction через Claude subagent dispatch (~2.4M tokens, + 275 messages из 5h-окна). +- **Phase 2** (.claude/): 1135 узлов / 1234 рёбер / 139 communities — 262 файла + (66 code + 196 docs), deep semantic, ~2.0M tokens, 11 субагентов, retry + потребовался после session-limit. +- **Phase 3** (app/): 3818 узлов / 4064 рёбер — 824 PHP/Vue/TS файла, pure AST + extraction (БЕЗ субагентов, ~30 сек wall-clock, **0 LLM-токенов**). +- **Ultimate combined** (через `graphify merge-graphs`): **6305 узлов / 6753 + рёбер / 1009 communities**, 93% EXTRACTED / 7% INFERRED / 0% AMBIGUOUS. + +Spike дал воспроизводимую методологию: subfolder + `graphify merge-graphs` — +безопасно строить фазами с откатом по бэкапам без потери прежних узлов. +Дополнительные узлы карты Лидерры — `lib/graph_node:*` для трёх фаз + +ultimate, провенанс-связки к источникам. + +graphify — **off-phase инструмент** (не входит в фазовую раскладку #1-#29): +для knowledge-management проекта, а не для конкретной фазы разработки. +Параллельный ряду существующих off-phase подкатегорий (debug-runtime / +architecture-tooling / audit-security / project-management / design-tooling / +integration-tooling / ml-ai-tooling / business-process / discovery-tooling / +authoring-tooling / dev-support / finance-tooling / backend-tooling / +infosec-tooling / marketing-tooling), но граничит с context7 (#60), +Boost (#10), openapi-mcp-server (#47), Sentry MCP (#34) и adr-kit/mermaid +(#36/#37) по семантике; границы фиксируются в Decision ниже. + +NB: параллельная сессия завершает раздел A10 BI-tooling +(`feat/a10-bi-tooling`, Tasks 1-4 из 19, 5 узлов #84-#88 — узлы агентов +nodes.yaml уже заняли #84/#85, BI на feature-branch без merge). Порядок +merge решит финальную нумерацию подкатегории (19-я или 20-я); счётчики +закрываются normative-sync агентом после merge. + +Альтернативный backend Ollama — отдельный установленный для 152-ФЗ-чувствительных +задач инструмент; graphify его НЕ читает (graphify читает только `GEMINI_API_KEY`/ +`GOOGLE_API_KEY` или fallback на Claude Code subagent dispatch). + +## Decision + +Graphify формализуется как узел **#86 graphifyy** в реестре Tooling Прил. Н +в новой **девятнадцатой off-phase подкатегории «knowledge-graph-tooling»**. + +### Граничные правила (locked) + +1. **graphify (#86) ↔ context7 (#60).** Разные слои документации: + - **context7** — внешние библиотеки/SDK/фреймворки (актуальные docs от vendor). + Первый выбор для «как использовать React/Laravel/Vue». + - **graphify** — внутренний codebase + спеки + .claude/-артефакты Лидерры. + Первый выбор для «как устроен наш модуль/где вызывается наша функция/ + связан ли наш скил X с агентом Y». + Не дублируют. context7 ничего не знает про наш код; graphify ничего не знает + про публичные SDK. + +2. **graphify (#86) ↔ Laravel Boost (#10).** Разный grain: + - **Boost** — MCP-сервер с Eloquent/DB/Laravel-docs query-апи (например, `php + artisan tinker --execute`, query schema, search Laravel docs). Точечный + ввод/вывод по конкретному запросу к app/. + - **graphify** — статический knowledge graph через все слои (docs+config+code). + Cross-layer навигация и «структурные карты», не runtime queries. + Boost остаётся первым выбором для «выполни SQL» / «прочитай model» / «найди + в Laravel-docs»; graphify — для «покажи связи между нашим спеком и кодом» / + «какие концепты связаны с X». + +3. **graphify (#86) ↔ openapi-mcp-server (#47).** Разный объект: + - **openapi-mcp-server** — introspection одного OpenAPI-спека (`docs/api/ + openapi.yaml`), tools/resources MCP-сервера, READ-ONLY. + - **graphify** — весь проект (docs+config+code), включая OpenAPI как часть + более широкого графа. + openapi-mcp-server остаётся первым выбором когда вопрос локализован в API- + спеке («какие эндпоинты`?»); graphify — когда вопрос пересекает спек + + реализацию + тесты + договорённости. + +4. **graphify (#86) ↔ Sentry MCP (#34).** Разная плоскость: + - **Sentry** — runtime ошибки (что упало в проде), READ-ONLY. + - **graphify** — структурные отношения (как код связан), статика. + Для post-mortem «упало X, что с чем связано» — Sentry находит X, graphify + показывает blast radius. + +5. **graphify (#86) ↔ adr-kit (#36) + mermaid-skill (#37).** Разная природа: + - **adr-kit / mermaid** — manual authoring решений и диаграмм (декларативно + заказчиком/Claude). + - **graphify** — auto-discovery связей из исходников (deterministic AST + LLM + semantic). + Не пересекаются: ADR — нормативное решение; graphify-граф — наблюдаемая + структура. + +### Узел #86 graphifyy — атрибуты + +- **Категория:** off-phase, knowledge-graph-tooling (19-я подкатегория). +- **Источник:** npm `graphifyy` v0.8.20+ (через `uv tool install graphifyy`), + binary `graphify.exe`. +- **Установка:** `uv tool install graphifyy`; работает с user-level skill + `~/.claude/skills/graphify/SKILL.md` (через `graphify install --platform + claude`). +- **Активация:** explicit `/graphify <команда>`, не проактивно. +- **Артефакты:** `graphify-out/{graph.json,GRAPH_REPORT.md,graph.html,cache/}` в + CWD откуда запущен. Должны быть **в `.gitignore`** (`graphify-out*/`), чтобы + build-артефакты не попадали в diff/commit. +- **LLM-backend:** GEMINI_API_KEY/GOOGLE_API_KEY (если есть) или fallback на + Claude Code subagent dispatch. **НЕ читает ANTHROPIC_API_KEY, OPENAI_API_KEY, + Ollama API.** +- **Ollama compliance:** Ollama установлен в проекте для 152-ФЗ + чувствительных задач (локальный LLM без отправки в Anthropic), но + graphify Ollama НЕ использует — это два независимых инструмента. + +### Стратегия обновлений (locked) + +- **Manual update пока единственный безопасный режим:** `/graphify --update` (LLM + для doc/MD-изменений; AST-only для code-изменений). +- **Auto-update post-commit hook отложен.** Spike-попытка 27.05 вечером: + `graphify update .` от широкого scope разнесло граф 6305 → 41586 узлов (38 МБ + bloat), потому что подхватил `tools/` + root-level .mjs + другое за пределами + трёх фаз. **Откат через re-merge phase-бэкапов восстановил canonical + 6305/6753/1009.** Перед auto-update необходимо: + - Спроектировать узкий scope или exclude-pattern (vendor/, tools/, node_modules/). + - Узкий manifest, корректно покрывающий все 3 фазы. + - Smoke-test перед wire-in lefthook. + + До этого момента — никакого автоматического обновления. + +### Spike worktree → main стратегия + +- Spike worktree (`spike/graphify-2026-05-27`) остаётся локально для повторяемых + rebuild'ов через `subfolder + merge-graphs` методологию. +- На main commit'ятся: эта ADR-017, обновления нормативки (CLAUDE.md/Pravila/ + PSR_v1/Tooling/nodes.yaml/routing-off-phase.md), `.gitignore` add + `graphify-out*/`. Phase 1+2+3 binaries (graph.json + ультимейт ~5MB) **не + коммитятся** — пересобираются по запросу. +- Spec/plan на main (`docs/superpowers/specs/2026-05-27-graphify-spike-design.md` + - `docs/superpowers/plans/2026-05-27-graphify-spike.md`) — untracked, + требуют revision (Ollama assumption в исходной spec ошибочен). Можно + обновить post-формализации либо drop. + +## Consequences + +**+** Knowledge-graph для всего портала Лидерры — формализованный инструмент +ответа на cross-layer вопросы («где наш скил X используется в коде / в каких +спеках упоминается агент Y / какие концепты связаны с биллингом»). + +**+** Bридирует gap между документацией (docs/), конфигом (.claude/) и +реализацией (app/) — единый граф для onboarding и architectural reasoning. + +**+** Subfolder + merge-graphs методология воспроизводима для дополнения +графа без потери прежних узлов; provenance к источникам сохраняется. + +**+** Граничные правила фиксируют когда что использовать → нет дублирования с +context7/Boost/openapi/Sentry/adr-kit. + +**–** Первичная сборка дорогая по subagent-токенам (Phase 1+2 = ~4.4M tokens). +Регенерация графа не должна быть рутинной операцией. + +**–** Auto-update отложен → граф быстро устаревает между manual rebuild'ами. +До wire-in safety review — этот риск осознанный. + +**–** Третий канал документации проекта (после CLAUDE.md/MEMORY.md и реестра +Tooling) — нагрузка на дисциплину обновлений. + +**–** Размер canonical graph.json ~5 МБ — должен быть в `.gitignore`; иначе +diff'ы будут шумные. + +## Compliance + +- Узел #86 graphifyy в реестре Tooling Прил. Н, 19-я подкатегория + knowledge-graph-tooling. +- CLAUDE.md §3.3 +строка #89; §0 cross-refs Pravila/PSR_v1/Tooling bumped; §6 + + абзац о spike; §9 changelog entry. +- Pravila §13.2 +абзац «Off-phase knowledge-graph-tooling». +- PSR_v1 R10.1 Блок 1 note (graphifyy не UI → вне R6/R14); R15.6 +knowledge- + graph-tooling в список off-phase подкатегорий. +- nodes.yaml: узел #86 graphifyy с subcategory `knowledge-graph-tooling`. +- routing-off-phase.md: trigger «knowledge graph / codebase structure / cross- + layer concept query» → #86. +- spike worktree `.gitignore` update: `graphify-out*/`. + +## Cross-refs + +- Spike spec (untracked, revision pending): `docs/superpowers/specs/2026-05-27- + graphify-spike-design.md`. +- Spike plan (untracked, revision pending): `docs/superpowers/plans/2026-05-27- + graphify-spike.md`. +- Memory (user-local): `~/.claude/projects/.../memory/project_graphify_phase3_ + done.md` — runtime handoff state, инцидент с auto-hook + откат. +- Skill (user-level, через `graphify install --platform claude`): + `~/.claude/skills/graphify/SKILL.md`. diff --git a/docs/observer/STATUS.md b/docs/observer/STATUS.md index 8264b8d0..ab1f6adc 100644 --- a/docs/observer/STATUS.md +++ b/docs/observer/STATUS.md @@ -1,6 +1,6 @@ # Brain Status (auto-generated) -Last updated: 2026-05-27T15:09:45.835Z +Last updated: 2026-05-27T15:32:59.632Z | Контролёр | Состояние | Детали | |---|---|---| @@ -8,13 +8,13 @@ Last updated: 2026-05-27T15:09:45.835Z | C2 Cross-ref consistency | ✅ | [cross-ref-checker] OK — 0 drift in 4 files | | C3 Observer-of-observer | ✅ | [observer-of-observer] OK — last read 0 week(s) ago | | C4 Сигнальный статус | ✅ | This file (self-reference) | -| C5 Observer-coverage | ⚠️ | 692 episode(s) this month · Stop-hook + post-commit OK · 21 missed activation(s) — see /brain-retro | +| C5 Observer-coverage | ⚠️ | 697 episode(s) this month · Stop-hook + post-commit OK · 21 missed activation(s) — see /brain-retro | | C6 Chain map sync | ✅ | [chain-map-checker] OK — 16 chains in sync | ## Метрики (информационные, не алерты) -- Observer evidence: 692 episodes this month, 0 observer_error markers, 154 PII matches before filter -- Legacy v1 episodes (not in factor analysis): 553 +- Observer evidence: 697 episodes this month, 0 observer_error markers, 155 PII matches before filter +- Legacy v1 episodes (not in factor analysis): 558 - Last /brain-retro: 0 day(s) ago - Использование узлов: см. `/brain-retro` (раз в спринт). missed_activations: 21. **Неиспользованные узлы — не алерт, если профильной задачи не было** (Pravila §16.4 v1.36; capability-readiness; см. memory `feedback_brain_unused_tools_not_problem` — outside-repo memory store). @@ -26,15 +26,15 @@ Baseline дисциплины роутера (этап 2 router discipline overh |---|---|---|---| | monitoring | 32 | 0.0% | 0.0% | | analysis | 27 | 29.6% | 14.8% | -| bugfix | 19 | 21.1% | 26.3% | +| bugfix | 20 | 20.0% | 25.0% | | planning | 17 | 17.6% | 17.6% | | feature | 16 | 12.5% | 0.0% | | cleanup | 7 | 0.0% | 0.0% | | refactor | 1 | 0.0% | 0.0% | -Router step distribution: 1: 297, 2: 260, 3: 65, 5: 62 +Router step distribution: 1: 299, 2: 261, 3: 66, 5: 63 -Boundaries applied (ADR / границы): 78 of 684 эпизодов (11.4%). +Boundaries applied (ADR / границы): 80 of 689 эпизодов (11.6%). ## Активные многоэтапные проекты @@ -59,10 +59,10 @@ Long sessions correlate with discipline drift. Если % regulated просел | Компонент | Токены (in/out) | USD | |---|---|---| -| Classifier (Sonnet 4.6) | 6458/61654 | $0.94 | +| Classifier (Sonnet 4.6) | 6752/65027 | $1.00 | | Self-assessment (Sonnet 4.6) | 0/0 | $0.00 | | Reviewer (Opus 4.7 + fallback) | 0/0 | $0.00 | -| **Итого** | | **$0.94** | +| **Итого** | | **$1.00** | ## Аномалии классификатора @@ -75,7 +75,7 @@ Episodes since last run: 609 / threshold: 10 ## Reviewer: субагент vs fallback -0 эпизодов проверено из 692. +0 эпизодов проверено из 697. ## Reviewer findings @@ -117,10 +117,10 @@ Episodes since last run: 609 / threshold: 10 | Фраза | За всё время | За сегодня | |---|---|---| -| `recovery` | 251 | 157 ⚠️ | +| `recovery` | 273 | 179 ⚠️ | | `ремонт инфраструктуры` | 159 | 88 ⚠️ | | `срочно` | 82 | 39 ⚠️ | -| `без скилов` | 56 | 30 ⚠️ | +| `без скилов` | 58 | 32 ⚠️ | | `memory dump` | 8 | 6 ⚠️ | | `direct ok` | 6 | 2 | | `быстрый коммит` | 3 | 2 | diff --git a/docs/registry/nodes.yaml b/docs/registry/nodes.yaml index 42f54523..d98e5b43 100644 --- a/docs/registry/nodes.yaml +++ b/docs/registry/nodes.yaml @@ -589,7 +589,11 @@ nodes: triggers: - {keyword: "отладка production runtime errors", weight: 1.0} - {classification: "bugfix", weight: 1.0} - - {classification: "monitoring", weight: 1.0} + # Removed 2026-05-27 (retro #8 follow-up): the "monitoring" classification + # in practice meant background task-notifications (not Sentry events), so + # this trigger fired false-positives on every bg-job-completion prompt. + # Sentry MCP stays available via the "bugfix" classification and the + # explicit keyword trigger. boundaries: [] chain_membership: ["L13", "L8"] attributes: @@ -607,7 +611,9 @@ nodes: - {keyword: "отладка redis/memurai очередей", weight: 1.0} - {keyword: "кэша", weight: 1.0} - {keyword: "pest-race", weight: 1.0} - - {classification: "monitoring", weight: 1.0} + # Removed 2026-05-27 (retro #8 follow-up): same reason as #34 above — + # "monitoring" classification covered bg-task-notifications, not Redis + # state inspection. Keyword triggers remain for explicit calls. boundaries: - {relation: "read-only"} chain_membership: ["L13", "L8"] @@ -1673,6 +1679,40 @@ nodes: spec: "docs/superpowers/specs/2026-05-24-controller-offload-agents-design.md §4" tooling_section: null + - id: "#86" + name: "graphifyy" + slug: "graphifyy" + category: "off-phase" + subcategory: "knowledge-graph-tooling" + status: "active" + dormancy_reason: null + capabilities: "CLI knowledge-graph builder для всего портала (docs+config+code). Three-phase build (docs/ + .claude/ + app/) с воспроизводимой методологией subfolder + merge-graphs. Ultimate combined: 6305 узлов / 6753 рёбер / 1009 communities. Backend: GEMINI_API_KEY/GOOGLE_API_KEY OR Claude Code subagent dispatch (используется в Лидерре). НЕ читает ANTHROPIC_API_KEY / OPENAI_API_KEY / Ollama API. Commands: query / path / explain / update / build / merge-graphs / cluster-only / export." + triggers: + - {keyword: "knowledge graph", weight: 1.0} + - {keyword: "structural map", weight: 0.9} + - {keyword: "where is X used", weight: 0.85} + - {keyword: "cross-layer query", weight: 0.85} + - {keyword: "concept map", weight: 0.85} + - {keyword: "codebase graph", weight: 0.9} + - {keyword: "/graphify", weight: 1.0} + - {keyword: "graphify", weight: 1.0} + - {classification: "knowledge_graph_query", weight: 1.0} + boundaries: + - {adr: "ADR-017", role: "KG1 — ↔ context7 #60: внутренний codebase Лидерры (graphify) vs внешние SDK docs (context7)"} + - {adr: "ADR-017", role: "KG2 — ↔ Laravel Boost #10: static cross-layer graph (graphify) vs runtime queries app/ (Boost)"} + - {adr: "ADR-017", role: "KG3 — ↔ openapi-mcp-server #47: весь проект (graphify) vs introspection одного спека (openapi)"} + - {adr: "ADR-017", role: "KG4 — ↔ Sentry MCP #34: структурные отношения (graphify) vs runtime errors (Sentry)"} + - {adr: "ADR-017", role: "KG5 — ↔ adr-kit #36 + mermaid-skill #37: auto-discovery из исходников (graphify) vs manual authoring (ADR/mermaid)"} + - {role: "Артефакты graphify-out*/ обязательно gitignored — build-артефакты не должны попадать в diff/commit"} + - {role: "Auto-update post-commit hook ОТЛОЖЕН (Spike 27.05 раздуло граф 6305→41586 узлов). Manual /graphify --update — единственный безопасный режим до wire-in safety review"} + chain_membership: [] + attributes: + tooling_section: "§4.59 #86" + skill_file: "~/.claude/skills/graphify/SKILL.md" + installation: "uv tool install graphifyy" + version: "0.8.20+" + spike_branch: "spike/graphify-2026-05-27" + chains: L1: name: "feature discovery & implementation chain" diff --git a/docs/routing-off-phase.md b/docs/routing-off-phase.md index da72407f..c808c4c6 100644 --- a/docs/routing-off-phase.md +++ b/docs/routing-off-phase.md @@ -35,6 +35,7 @@ | `cleanup` | #11 Laravel Pint | 1 | | `cleanup` | #12 Larastan | 1 | | `feature` | #19 Superpowers v5.1.0 | 1 | +| `knowledge_graph_query` | #86 graphifyy | 1 | | `marketing` | #74 marketing | 1 | | `marketing` | #75 marketingskills | 1 | | `marketing` | #76 brand-voice | 1 | @@ -43,11 +44,11 @@ | `marketing` | #79 Яндекс.Директ+Wordstat MCP | 1 | | `marketing` | #80 Telegram MCP | 1 | | `marketing` | #81 Postiz | 1 | -| `monitoring` | #34 Sentry MCP | 1 | -| `monitoring` | #35 Redis MCP | 1 | +| `normative_sync_needed` | #84 normative-sync | 1 | | `planning` | #19 Superpowers v5.1.0 | 1 | | `planning` | #41 CCPM | 1 | | `planning` | #42 product-management | 1 | +| `prod_deploy_imminent` | #85 prod-deploy-validator | 1 | | `refactor` | #11 Laravel Pint | 1 | | `refactor` | #12 Larastan | 1 | | `refactor` | #43 deptrac | 1 | diff --git a/lefthook.yml b/lefthook.yml index a1e96270..bb5332b0 100644 --- a/lefthook.yml +++ b/lefthook.yml @@ -246,6 +246,19 @@ post-commit: fail_text: | status-md regeneration failed. + # 15. graphify safe auto-update — ADR-017 § "Стратегия обновлений". + # Wrapper читает `git diff HEAD~1 --name-only`, фильтрует к scope + # docs/+.claude/+app/ (НЕ tools/, vendor/, node_modules/, bin/ — иначе + # spike-blow-up 6305→41586 узлов). Code-файлы в scope → explicit-list AST + # extract (no detect_incremental, no manifest-prune risk) + build_merge в + # graph.json. Doc/MD-файлы → флаг needs_update без LLM (cost-control: + # subagent dispatch не подходит для хука). Skip silent если graphify-out/ + # нет (другие worktrees) или 0 файлов в scope. Non-blocking — всегда exit 0. + - name: graphify-safe-update + run: node tools/graphify-safe-update.mjs + fail_text: | + graphify-safe-update failed (non-blocking — run /graphify --update manually). + # Pre-push: проверки перед git push (медленнее, но реже запускаются) pre-push: parallel: false diff --git a/tools/graphify-safe-update.mjs b/tools/graphify-safe-update.mjs new file mode 100644 index 00000000..07c80970 --- /dev/null +++ b/tools/graphify-safe-update.mjs @@ -0,0 +1,205 @@ +#!/usr/bin/env node +/** + * tools/graphify-safe-update.mjs + * + * Safe post-commit graphify update wrapper. + * + * Per ADR-017 § "Стратегия обновлений" — direct `graphify update .` from + * широкого scope разнесло граф 6305 → 41586 узлов (38 МБ bloat). Этот + * wrapper: + * + * 1. Reads last commit changed files via `git diff HEAD~1 --name-only`. + * 2. Filters to ONLY allowed scopes: docs/, .claude/, app/ — НЕ tools/, + * vendor/, node_modules/, bin/, .git/, etc. + * 3. For CODE files in app/ (PHP/Vue/TS/JS) → invokes graphify AST extract + * on EXPLICIT file list (bypasses detect_incremental + manifest-prune + * risk) + build_merge into existing graph.json. + * 4. For DOC/MD files (docs/ + .claude/ md) → writes `needs_update` flag, + * NO automatic LLM extraction (subagent dispatch too expensive for hook). + * 5. Skips silently if graphify-out/ missing (e.g., worktree без graph). + * + * Non-blocking by design — always exits 0 to не ломать commit. Log goes to + * stdout (lefthook собирает). + * + * Security Guidance #40: pure deterministic — git read + Python exec, без LLM. + * + * @author graphify-formalization 2026-05-27 + * @see docs/adr/ADR-017-knowledge-graph-tooling.md § "Стратегия обновлений" + */ + +import { execFileSync } from 'node:child_process'; +import { existsSync, writeFileSync, readFileSync } from 'node:fs'; +import { join, resolve, extname } from 'node:path'; + +const ALLOWED_SCOPES = ['docs/', '.claude/', 'app/']; +const CODE_EXTS = new Set(['.php', '.ts', '.js', '.vue', '.mjs', '.cjs', '.py', '.go']); +const SCAN_EXCLUDE_DIRS = ['node_modules/', 'vendor/', '__pycache__/', '.git/']; + +/** + * Pure: filter a list of git-diff file paths down to those within allowed + * scopes AND not inside excluded directories. + * + * @param {string[]} paths git-diff output lines (relative repo paths) + * @param {string[]} allowed prefixes that the path must start with + * @param {string[]} excluded substrings that disqualify a path even if it matches a scope + * @returns {string[]} + */ +export function filterInScope(paths, allowed, excluded) { + return paths.filter((p) => { + if (!allowed.some((s) => p.startsWith(s))) return false; + if (excluded.some((ex) => p.includes(ex))) return false; + return true; + }); +} + +/** + * Pure: partition file list by extension into code-files vs everything-else. + * Case-insensitive on extension. + * + * @param {string[]} paths + * @param {Set} codeExts lowercase extensions including the dot (e.g. '.php') + * @returns {{ codeFiles: string[], docFiles: string[] }} + */ +export function partitionByExtension(paths, codeExts) { + const codeFiles = []; + const docFiles = []; + for (const p of paths) { + const ext = extname(p).toLowerCase(); + if (codeExts.has(ext)) codeFiles.push(p); + else docFiles.push(p); + } + return { codeFiles, docFiles }; +} + +// ────────────────────────── CLI entry ────────────────────────── +// Skip side-effects when imported as a module (tests). Works on Windows +// (file:///C:/…) and POSIX (file:///home/…) by comparing the file URL +// pathname to the resolved argv[1]. +import { fileURLToPath } from 'node:url'; +const isMain = process.argv[1] && fileURLToPath(import.meta.url) === resolve(process.argv[1]); + +if (isMain) { + await runCli(); +} + +async function runCli() { + const REPO_ROOT = resolve(process.cwd()); + const GRAPH_DIR = join(REPO_ROOT, 'graphify-out'); + + const logInfo = (msg) => process.stdout.write(`[graphify-safe-update] ${msg}\n`); + const silentExit = (reason) => { + if (process.env.GRAPHIFY_SAFE_DEBUG) logInfo(`silent exit: ${reason}`); + process.exit(0); + }; + + // 1. Graph must exist + if (!existsSync(join(GRAPH_DIR, 'graph.json'))) { + silentExit('graphify-out/graph.json missing'); + } + + // 2. Get files changed in the LAST commit only (HEAD vs HEAD~1) — NOT + // `git diff HEAD~1` (1-arg) which diffs prev-commit-vs-working-tree and + // pollutes scope with unstaged WIP from parallel sessions. Use + // diff-tree of HEAD to get exactly the files touched by HEAD. + let changedRaw; + try { + changedRaw = execFileSync('git', ['diff-tree', '--no-commit-id', '--name-only', '-r', 'HEAD'], { + encoding: 'utf-8', + stdio: ['ignore', 'pipe', 'pipe'], + }); + } catch (e) { + silentExit(`git diff-tree failed: ${e.message?.slice(0, 80)}`); + } + + const allChanged = changedRaw.split('\n').map((s) => s.trim()).filter(Boolean); + if (allChanged.length === 0) silentExit('no changed files'); + + // 3. Filter to allowed scopes + exclude system dirs + const inScope = filterInScope(allChanged, ALLOWED_SCOPES, SCAN_EXCLUDE_DIRS); + if (inScope.length === 0) { + silentExit(`${allChanged.length} files changed, 0 in allowed scope (docs/.claude/app)`); + } + + // 4. Partition by code vs doc/md + const { codeFiles, docFiles } = partitionByExtension(inScope, CODE_EXTS); + + // 5. Doc/MD files → just write needs_update flag, no LLM + if (docFiles.length > 0) { + const flagPath = join(GRAPH_DIR, 'needs_update'); + const logPath = join(GRAPH_DIR, 'needs_update.log'); + try { + const ts = new Date().toISOString(); + const entry = `${ts} ${docFiles.length} doc files changed:\n${docFiles.map((f) => ` ${f}`).join('\n')}\n\n`; + writeFileSync(flagPath, `Run /graphify --update to refresh semantic graph (${docFiles.length} doc files changed).\nLast: ${ts}\n`); + let existingLog = ''; + if (existsSync(logPath)) existingLog = readFileSync(logPath, 'utf-8'); + writeFileSync(logPath, entry + existingLog); + logInfo(`${docFiles.length} doc/md changed → wrote needs_update flag (manual /graphify --update needed)`); + } catch (e) { + logInfo(`needs_update flag write failed: ${e.message?.slice(0, 80)} (non-blocking)`); + } + } + + // 6. Code files → AST extract on explicit list + merge into graph + if (codeFiles.length === 0) silentExit('no code files (only docs)'); + + const liveCodeFiles = codeFiles.filter((f) => existsSync(join(REPO_ROOT, f))); + if (liveCodeFiles.length === 0) silentExit('all code files deleted (no AST to extract)'); + + // 7. Locate graphify Python interpreter + const pyPathFile = join(GRAPH_DIR, '.graphify_python'); + let pyPath; + if (existsSync(pyPathFile)) { + pyPath = readFileSync(pyPathFile, 'utf-8').replace(/^/, '').trim(); + } + if (!pyPath || !existsSync(pyPath)) { + try { + pyPath = execFileSync('uv', ['tool', 'run', '--from', 'graphifyy', 'python', '-c', 'import sys; print(sys.executable)'], { + encoding: 'utf-8', + stdio: ['ignore', 'pipe', 'pipe'], + }).trim(); + } catch (e) { + logInfo(`graphify python not resolvable: ${e.message?.slice(0, 80)} — manual /graphify --update needed`); + process.exit(0); + } + } + + // 8. Run AST extract + merge via Python one-liner + const liveListJson = JSON.stringify(liveCodeFiles); + const pyCode = ` +import sys, json +from pathlib import Path +from graphify.extract import extract +from graphify.build import build_merge +from graphify.export import to_json + +repo_root = Path(${JSON.stringify(REPO_ROOT)}) +files = [repo_root / f for f in json.loads('''${liveListJson}''')] +ast = extract(files, cache_root=repo_root) +ast_nodes = len(ast.get('nodes', [])) +ast_edges = len(ast.get('edges', [])) +print(f'[graphify-safe-update] AST: {ast_nodes} nodes, {ast_edges} edges from {len(files)} code files') + +# dedup=False для incremental: дефолтный dedup=True агрессивно фьюз-дедупит весь +# merged граф (483 exact + 447 fuzzy на 6305-node графе → 5356), to_json потом +# refuses overwrite смаленьшим графом. dedup=False → чистый union по ID. +graph_path = repo_root / 'graphify-out' / 'graph.json' +G = build_merge([ast], graph_path=str(graph_path), dedup=False) +to_json(G, dict(), str(graph_path)) +print(f'[graphify-safe-update] merged: {G.number_of_nodes()} nodes, {G.number_of_edges()} edges in graph.json') +`; + + try { + const out = execFileSync(pyPath, ['-c', pyCode], { + encoding: 'utf-8', + stdio: ['ignore', 'pipe', 'pipe'], + cwd: REPO_ROOT, + }); + process.stdout.write(out); + } catch (e) { + logInfo(`AST extract/merge failed (non-blocking): ${e.message?.slice(0, 200)}`); + if (e.stderr) process.stderr.write(e.stderr.toString()); + } + + process.exit(0); +} diff --git a/tools/graphify-safe-update.test.mjs b/tools/graphify-safe-update.test.mjs new file mode 100644 index 00000000..a0fec4db --- /dev/null +++ b/tools/graphify-safe-update.test.mjs @@ -0,0 +1,116 @@ +// tools/graphify-safe-update.test.mjs +// Pure-helper tests for the post-commit safe-update wrapper. +// Covers scope filtering + code/doc partitioning — the parts that gated +// the spike-bloat incident (ADR-017 § "Стратегия обновлений"). + +import { describe, it, expect } from 'vitest'; +import { filterInScope, partitionByExtension } from './graphify-safe-update.mjs'; + +const ALLOWED_SCOPES = ['docs/', '.claude/', 'app/']; +const SCAN_EXCLUDE_DIRS = ['node_modules/', 'vendor/', '__pycache__/', '.git/']; +const CODE_EXTS = new Set(['.php', '.ts', '.js', '.vue', '.mjs', '.cjs', '.py', '.go']); + +describe('filterInScope', () => { + it('keeps files inside allowed scopes', () => { + const input = ['docs/foo.md', '.claude/skills/x/SKILL.md', 'app/Models/Deal.php']; + expect(filterInScope(input, ALLOWED_SCOPES, SCAN_EXCLUDE_DIRS)).toEqual(input); + }); + + it('rejects files outside allowed scopes (tools/, root .md, bin/)', () => { + const input = [ + 'tools/graphify-safe-update.mjs', + 'CHANGELOG.md', + 'bin/something.exe', + 'package.json', + 'README.md', + ]; + expect(filterInScope(input, ALLOWED_SCOPES, SCAN_EXCLUDE_DIRS)).toEqual([]); + }); + + it('rejects vendor/node_modules even if nominally under app/', () => { + const input = [ + 'app/vendor/laravel/framework/Foo.php', + 'app/node_modules/foo/bar.js', + 'app/__pycache__/x.pyc', + 'app/.git/HEAD', + ]; + expect(filterInScope(input, ALLOWED_SCOPES, SCAN_EXCLUDE_DIRS)).toEqual([]); + }); + + it('keeps real app/ files alongside vendor exclusions', () => { + const input = [ + 'app/app/Services/LedgerService.php', + 'app/vendor/laravel/framework/Container.php', + 'app/resources/js/views/Dashboard.vue', + ]; + expect(filterInScope(input, ALLOWED_SCOPES, SCAN_EXCLUDE_DIRS)).toEqual([ + 'app/app/Services/LedgerService.php', + 'app/resources/js/views/Dashboard.vue', + ]); + }); + + it('returns empty array on empty input', () => { + expect(filterInScope([], ALLOWED_SCOPES, SCAN_EXCLUDE_DIRS)).toEqual([]); + }); + + it('handles mixed in-scope and out-of-scope', () => { + const input = [ + 'docs/CLAUDE.md', + 'tools/x.mjs', + 'app/Models/Deal.php', + 'CHANGELOG.md', + '.claude/skills/y/SKILL.md', + ]; + expect(filterInScope(input, ALLOWED_SCOPES, SCAN_EXCLUDE_DIRS)).toEqual([ + 'docs/CLAUDE.md', + 'app/Models/Deal.php', + '.claude/skills/y/SKILL.md', + ]); + }); +}); + +describe('partitionByExtension', () => { + it('puts .php/.ts/.vue/.mjs into code', () => { + const input = ['app/Foo.php', 'app/bar.ts', 'app/baz.vue', 'app/qux.mjs']; + const { codeFiles, docFiles } = partitionByExtension(input, CODE_EXTS); + expect(codeFiles).toEqual(input); + expect(docFiles).toEqual([]); + }); + + it('puts .md/.txt into doc', () => { + const input = ['docs/foo.md', '.claude/bar.md', 'app/README.txt']; + const { codeFiles, docFiles } = partitionByExtension(input, CODE_EXTS); + expect(codeFiles).toEqual([]); + expect(docFiles).toEqual(input); + }); + + it('partitions mixed list correctly', () => { + const input = [ + 'app/Models/Deal.php', + 'docs/spec.md', + 'app/resources/js/utils.ts', + '.claude/skills/x/SKILL.md', + 'app/composer.json', + ]; + const { codeFiles, docFiles } = partitionByExtension(input, CODE_EXTS); + expect(codeFiles).toEqual(['app/Models/Deal.php', 'app/resources/js/utils.ts']); + expect(docFiles).toEqual([ + 'docs/spec.md', + '.claude/skills/x/SKILL.md', + 'app/composer.json', + ]); + }); + + it('is case-insensitive on extension', () => { + const input = ['app/Foo.PHP', 'app/Bar.TS', 'docs/README.MD']; + const { codeFiles, docFiles } = partitionByExtension(input, CODE_EXTS); + expect(codeFiles).toEqual(['app/Foo.PHP', 'app/Bar.TS']); + expect(docFiles).toEqual(['docs/README.MD']); + }); + + it('returns empty arrays on empty input', () => { + const { codeFiles, docFiles } = partitionByExtension([], CODE_EXTS); + expect(codeFiles).toEqual([]); + expect(docFiles).toEqual([]); + }); +});