diff --git a/CLAUDE.md b/CLAUDE.md index c4833256..be11c34b 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,6 +1,6 @@ # CLAUDE.md — техконтекст Лидерры -**Версия:** 1.89 от 12.05.2026 (ночь, post-audit continuation) — factual fix §6 + шапка v1.88 changelog: коммит `615db99` ошибочно представлен как Plan 4 merge (по факту `615db99` это R15 motion-runtime removal: «chore(rules): remove R15 motion-runtime restrictions (PSR_v1 v2.0)»; правильный Plan 4 closure marker — `8681040` «docs: Plan 4 closure — CLAUDE.md v1.87 + Открытые_вопросы v1.78», backend task-коммиты `a907fea..174dbae` merged ранее). `f4ec5dc` («fix(redesign): sidebar position:fixed + main padding-left», Quiet Luxury hotfix на ветке `plan5-frontend-projects`) ошибочно представлен как PSR_v1 R15 removal — убран из §6 формулировки. Связанные документы (Pravila v1.10 / PSR_v1 v1.7 / Tooling v1.15 / реестр v1.77 на ветке plan5) НЕ требуют изменений — фактологический фикс локален в CLAUDE.md. Verified через `git show 615db99 --stat` + `git show 8681040` + `git show f4ec5dc`. Через `/claude-md-management:claude-md-improver`. **v1.88 наследие:** audit-driven sync §0/§2/§6/§8 после полного аудита портала (`docs/superpowers/audits/2026-05-12-portal-full-audit-*.md`). 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) — после `migrate:fresh` + накопленных `partitions:create-months`. §0 row «Открытые_вопросы» обновлён v1.75 → v1.77 + примечание о post-v1.77 deviation (Plan 4/5 + Quiet Luxury merged без registry bump). §6 «Plan 4 ready for FF-merge» → «Plan 4 MERGED в origin/main `8681040`» + новый параграф про Plan 5 frontend + Quiet Luxury в `plan5-frontend-projects` ветке. *(NB v1.89 post-audit correction: первоначально v1.88 указывал `615db99` для Plan 4 merge — это была factual error, `615db99` это R15 motion-runtime removal commit; исправлено в v1.89.)* **v1.87 наследие:** sync schema-метрик после Plan 4 (Billing+CSV+Admin) на ветке `plan4-billing` (15 коммитов готовы к FF-merge). Schema **v8.11 → v8.19** (накопленный drift от Plans 1+2+3+4): **56→62 базовых таблиц, 97→117 индексов, 38→39 RLS** + 5 функций / 13 триггеров. §0 источник истины row «Схема БД», §2 стек строка БД, §6 фаза, §8 self-review триггеры — обновлены. §6 расширен Plan 4 closure: 14 task-коммитов `a907fea..174dbae` + lychee CV-fix `fded2ee`, Pest 687/684 passed + 3 skipped/0 failed (2090 assertions), Vitest 49 files / 428 passed, Histoire 24 stories / 31 variants, lychee 0 broken, gitleaks 0 leaks. Активированы 7-ступенчатый pricing-tier биллинг (PricingTierResolver pure + LedgerService dual-balance prepaid→rub bcmath); CsvReconcileJob hourly с drift>5% алертом; auto-pause flow ZeroBalancePausedMail 1/час/tenant; 3 admin/tenant UI экрана (AdminPricingTiers + AdminSupplierPrices + ChargesTab в существующем BillingView). +7 новых Биз-25..31 в реестре (раздел 13 Открытые_вопросы v1.78). Через `/claude-md-management:revise-claude-md`. Предыдущая v1.86 — закрытие 13 находок третьего аудита правил использования плагинов и скилов (4 P0 + 5 P1 + 2 P2 + 2 sync-правки в README/README_АРХИВ). Через `/claude-md-management:claude-md-improver`. Ключевые правки: **P0-01 §3 header «Карта 28 инструментов» → «33 инструментов»** (header застрял с pre-FD эпохи, в то время как контент включает #1–#33); **P0-02 §3.4 header «(+5, итого 28)» → «итого 29»** (после добавления #30 в фазу 2 фаза 3 cumulative должна быть 29, не 28); **P0-03 §3.3 footer «из 30 номеров минус #1 = 29 active» → «из 33 номеров (29 phase-slot + 3 off-phase + 1 historic)»** (формулировка предшествовала формализации #31/#32/#33); **P0-04 §6 «Активно: 19 инструментов из 29» + «(19/29 активны по фазам)» → «24 / (24/29)»** (внутренний арифметический конфликт: тут же раскладка 9+8+7=24, но числовая метка застряла на 19 с эпохи когда фаза 2 имела ~4 активных); **P1-06 §5 п.5 «PSR_v1 v1.5+» → «v1.7+»** (sync после bump'а PSR_v1); **P2-02 §3.3 #33 «вне Pravila §13» → «вне UI-пула §13»** (Pravila §13.2 v1.10 включает claude-md-management как infrastructure subsection — текущая формулировка вводила в заблуждение). Связанные обновления: **PSR_v1 v1.6 → v1.7** (sync cross-refs шапки на v1.86/v1.10/v1.15; description-fix описки «slot уровня 2.5» → «2b» внутри changelog'а v1.6, фактическое R0.1 всегда содержало «2b»). **Tooling v1.14 → v1.15** (sync cross-refs шапки на v1.86/v1.10/v1.7; §11.5/§12 «28 инструментов» → «33 формализованные позиции»). Pravila v1.10 — без изменений. Предыдущая v1.85 — закрытие 15 находок второго аудита (детали в [docs/CHANGELOG_claude_md.md](docs/CHANGELOG_claude_md.md)). +**Версия:** 1.90 от 13.05.2026 (day) — 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.10 от 10.05.2026 вечер** — §0 +note про §11 локальное override-исключение над §2.2/§4.5/§8.4; §11.5 «10 правил» → «v1.6, 16»; §13.2 «v1.4 (15 правил)» → «v1.6 (16)»; §13.9/§13.10 PSR_v1 v1.4 → v1.6; v1.9 наследие — §12.3 SoT, §13.2 +claude-md-management off-pool, §13.6 hard-rule tier-структура) | -| **Правила совместного использования плагинов Claude** | [docs/Plugin_stack_rules_v1.md](docs/Plugin_stack_rules_v1.md) (**v1.7 от 10.05.2026 поздний вечер** — sync cross-refs шапки на актуальные версии связанных документов после bump'ов CLAUDE.md v1.85 → v1.86 и Tooling v1.14 → v1.15; description-fix описки «slot уровня 2.5» → «slot уровня 2b» внутри changelog'а v1.6 (фактическое R0.1 line 33 всегда содержало «2b»); v1.6 наследие — R0.4.A свёрнут до cross-ref на Pravila §12.3 SoT, R0.6 пронумерован 1–11; v1.5 наследие — R10.1 разбит на 3 блока (enabledPlugins/built-in/MCP), R10.4/R14.7 tier-метки, R8 +тай-брейкер FD↔21st) | -| Полный реестр 33 формализованных позиций тулчейна (29 active + 3 off-phase + 1 historic) | [docs/Tooling_v8_3.md](docs/Tooling_v8_3.md) (**Прил. Н v1.15 от 10.05.2026 поздний вечер** — sync cross-refs шапки на актуальные версии связанных документов после bump'ов CLAUDE.md v1.85 → v1.86 и PSR_v1 v1.6 → v1.7 («Pravila v1.9+» → «v1.10+», «PSR_v1 v1.5+» → «v1.7+», «CLAUDE.md v1.84+» → «v1.86+»); §11.5/§12 «28 инструментов» → «33 формализованные позиции» (DevOps-раздел застрял с эпохи v1.0 — фразы «не входят в 28», «вне 28»); v1.14 наследие — §10.3 шаг 2 «3 skills» → «14», §13 +v1.13 +v1.14 entries, §7 +Tooling explicit slot 2b alongside CLAUDE.md; v1.13 наследие — §7 +PSR_v1 уровнем 3, §4.7 +#33 claude-md-management, §6 +5 конфликтов v1.4, §4.6 settings → .claude.json, §0 счётчик 33) | +| Продуктовые правила работы Claude | [docs/Pravila_raboty_Claude_v1_1.md](docs/Pravila_raboty_Claude_v1_1.md) (**v1.11 от 12.05.2026** — sync после PSR_v1 v2.0 (R15 снят): §11.5/§13.2 счётчик «16 правил R0–R15» → «15 правил R0–R14»; §13.9/§13.10 cross-ref «v1.6» → «v2.0»; §13.10 НЕ удалено — оно про R14, не R15; v1.10 наследие — §0 +note про §11 локальное override-исключение, §11.5/§13.2/§13.9/§13.10 sync bumps) | +| **Правила совместного использования плагинов Claude** | [docs/Plugin_stack_rules_v1.md](docs/Plugin_stack_rules_v1.md) (**v2.0 от 12.05.2026** — major bump: removal of R15 motion-runtime restrictions per user decision; conscious rollback v1.4 audited construction. Удалено: R15 целиком (R15.1–R15.7), R0.6 п.11, R8 motion тай-брейкеры (3), R11.6 motion иерархия, R13 motion-сценарии (5). Шапка count: «16 правил R0–R15» → «15 правил R0–R14». framer-motion переведён из regulatory hard-запрета в technical-guidance уровень: peerDep на react+react-dom, не работает в Vue физически; v1.7 наследие — sync cross-refs; v1.6 наследие — R0.4.A свёрнут до cross-ref на Pravila §12.3 SoT, R0.6 пронумерован 1–11) | +| Полный реестр 33 формализованных позиций тулчейна (29 active + 3 off-phase + 1 historic) | [docs/Tooling_v8_3.md](docs/Tooling_v8_3.md) (**Прил. Н v1.16 от 12.05.2026** — §9.2 «Motion runtime библиотеки» переформулирован из regulatory denylist в technical guidance синхронно с PSR_v1 v2.0 (R15 снят): motion-v/gsap/anime.js/lottie-web/popmotion/@motionone/dom — ✅ разрешено без обоснования; framer-motion + react-spring — ❌ technical block (React-only peerDep), не regulatory rule. Cross-refs шапки sync: PSR_v1 v1.7+ → v2.0+, CLAUDE.md v1.86+ → v1.88+, Pravila v1.10+ → v1.11+; v1.15 наследие — sync cross-refs + «28 инструментов» → «33 формализованные позиции») | | Главное ТЗ | [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-факт):** 62 базовые таблицы + 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.77 от 10.05.2026 — Sprint 4 «Audit tail» закрыт** (5 коммитов `f77c91d..b912724`); v1.76 — Sprint 3 closures; v1.75 — Post-MVP Reports backend; v1.74 — MVP Claude-зона. **Registry-baseline метрики v1.77: Pest 421 / Vitest 416 / Larastan 0 / vue-tsc 0 / ESLint 0 / build OK 1.02 сек**. NB: post-v1.77 baseline опередил registry — Plan 4 + Plan 5 frontend + Quiet Luxury merged в main и в `plan5-frontend-projects` ветке, новые tests (Pest 742 / Vitest 614 на 12.05.2026) не отражены — registry bump pending) | @@ -73,7 +73,7 @@ | Sentry | self-hosted в Yandex Cloud | | Helpdesk | JivoSite | -**Шрифты:** Inter (UI, axis `opsz` 14..32), JetBrains Mono (numerics с `tnum`, код). **Иконки:** Lucide. **Палитра v8 Forest:** Teal `#0F6E56` (primary, неоспариваемый), `#F6F3EC` warm ivory (page bg), `#012019` теало-нуар (sidebar). 14 OKLCH-статусов в [BRANDBOOK_v2 §3.6](liderra_v8_handoff/docs/BRANDBOOK_v2.md) — **палитра используется**, но мапить на 14 slug'ов из [db/schema.sql:2076](db/schema.sql#L2076) (источник истины для статусов воронки — schema/ТЗ §6.4, не handoff). **A11y:** WCAG 2.1 AA. **Animation default stack** (R11.6 + R15 PSR_v1): Vue native `` / `` + Vuetify transitions (`v-fade`, `v-slide-y`, `v-scale`, `v-expand`, `v-dialog-transition`) + CSS `@keyframes` + `prefers-reduced-motion` + View Transitions API (Chrome 111+ / Safari 18+). motion-v / framer-motion / gsap / anime.js / lottie-web — **не установлены** и условно разрешены только по R15.2 (4 триггера), см. §5 п.12. +**Шрифты:** Inter (UI, axis `opsz` 14..32), JetBrains Mono (numerics с `tnum`, код). **Иконки:** Lucide. **Палитра v8 Forest:** Teal `#0F6E56` (primary, неоспариваемый), `#F6F3EC` warm ivory (page bg), `#012019` теало-нуар (sidebar). 14 OKLCH-статусов в [BRANDBOOK_v2 §3.6](liderra_v8_handoff/docs/BRANDBOOK_v2.md) — **палитра используется**, но мапить на 14 slug'ов из [db/schema.sql:2076](db/schema.sql#L2076) (источник истины для статусов воронки — schema/ТЗ §6.4, не handoff). **A11y:** WCAG 2.1 AA. **Animation default stack (рекомендация, не hard-rule с v1.88):** Vue native `` / `` + Vuetify transitions (`v-fade`, `v-slide-y`, `v-scale`, `v-expand`, `v-dialog-transition`) + CSS `@keyframes` + `prefers-reduced-motion` + View Transitions API (Chrome 111+ / Safari 18+). Motion-runtime библиотеки (`motion-v`, `gsap`, `anime.js`, `lottie-web`, `popmotion`, `@motionone/dom`) — разрешены к установке без обоснования. `framer-motion` — **technical block** (React-only peerDep на `react+react-dom`, runtime crash в Vue физически), не regulatory rule — см. [Tooling §9.2](docs/Tooling_v8_3.md) technical guidance. --- @@ -184,7 +184,7 @@ trivy image liderra:latest 2. **Не использовать Inertia / Livewire / Tailwind / Filament / Flux UI / Nova / Folio / Volt / Wayfinder guidelines** Boost'а — у нас Vue + Vuetify. 3. **Не запускать a11y через Lighthouse** — единственный источник истины Pa11y. 4. **Не помещать ПДн / токены / API-ключи в коммиты.** Правило §5.2 правил Claude. Защита — gitleaks в pre-commit. -5. **Расширенный пул UI-инструментов — координируется через [PSR_v1](docs/Plugin_stack_rules_v1.md) v1.7+.** Кратко: paired-stack ядро (**Superpowers** = процесс / **Frontend Design** = решатель UI), плюс два инструмента **в роли материала, не решателя**: UPM (резерв-библиотека, R10.1/R11.5/R14.3) и 21st Magic MCP (генератор шаблонов, R10.1/R14.4). Все четыре проходят **R6.0 фильтр стека** (срезать React/Tailwind/shadcn/JSX → Vue 3 + Vuetify 3) и **R6.1 hard-override Forest** (палитра/шрифты/иконки/aesthetic — Brandbook, не плагины). UPM и 21st **не параллельно** с FD и друг с другом (R14.5). **A11y технический** — за Pa11y (п.3); плагины покрывают только a11y-принципы. **Детали — PSR_v1 R6/R10/R11/R14** (не копировать сюда — оперативная карта остаётся компактной). +5. **Расширенный пул UI-инструментов — координируется через [PSR_v1](docs/Plugin_stack_rules_v1.md) v2.0+.** Кратко: paired-stack ядро (**Superpowers** = процесс / **Frontend Design** = решатель UI), плюс два инструмента **в роли материала, не решателя**: UPM (резерв-библиотека, R10.1/R11.5/R14.3) и 21st Magic MCP (генератор шаблонов, R10.1/R14.4). Все четыре проходят **R6.0 фильтр стека** (срезать React/Tailwind/shadcn/JSX → Vue 3 + Vuetify 3) и **R6.1 hard-override Forest** (палитра/шрифты/иконки/aesthetic — Brandbook, не плагины). UPM и 21st **не параллельно** с FD и друг с другом (R14.5). **A11y технический** — за Pa11y (п.3); плагины покрывают только a11y-принципы. **Детали — PSR_v1 R6/R10/R11/R14** (не копировать сюда — оперативная карта остаётся компактной). 6. **Не ставить два инструмента на одну задачу** — список 10+ запрещённых дублей в [docs/Tooling_v8_3.md](docs/Tooling_v8_3.md) §9. 7. **Не редактировать этот `CLAUDE.md` без обновления** [docs/Pravila_raboty_Claude_v1_1.md](docs/Pravila_raboty_Claude_v1_1.md) и [docs/Tooling_v8_3.md](docs/Tooling_v8_3.md) — иначе три источника разойдутся (применяется ВНУТРИ flow п.10; пропуск синхронизации — отдельная ошибка даже при работающем плагине). 8. **Не править `db/schema.sql`** без записи в [db/CHANGELOG_schema.md](db/CHANGELOG_schema.md) — правило §4.2 правил Claude. @@ -196,7 +196,7 @@ trivy image liderra:latest Плагин — **единственный** интерфейс ведения файла; он отвечает за содержание и качество (по `references/quality-criteria.md` плагина: commands/architecture/non-obvious patterns/conciseness/currency/actionability). Прямые `Edit`/`Write` по `CLAUDE.md` без вызова skill'а — нарушение, фиксировать в feedback. Внутри flow плагина продолжают действовать пп.7 (синхронизация Pravila + Tooling) и общие §4 правил Claude. 11. **Не пропускать инвокацию Superpowers skill'а** для задачи, попадающей под карту §12.2 правил Claude (TDD, debug, plan, parallel, review, verify, brainstorm, worktree, finishing PR, subagent, writing-skills). Это **hard rule** (§12 правил Claude), §9 «Отступления» к нему **не применяется**. Рационализация типа «эта задача проще, чем требует skill» / «сейчас быстрее без skill'а» — нарушение того же уровня, что игнорирование §5 ПДн. **Список exclusions — Pravila §12.3 (Single Source of Truth, v1.9+)**: при расширении правок здесь — править только Pravila §12.3, не дублировать список текстом сюда. Запрос заказчика «не используй superpowers сейчас» — единственная отмена, и **только** на текущее действие. См. Pravila §12.4. -12. **Не устанавливать motion runtime библиотеки без прохождения R15.2 PSR_v1** (4 условия триггера) — `framer-motion` (R15.1 hard-запрет навсегда: React-only архитектурно, не работает в Vue), `react-spring` (R15.1-аналог: тоже React-only), `motion-v` (R15.2: Vue 3 порт framer-motion, условно по 4 триггерам), `gsap`, `anime.js`, `react-spring`, `lottie-web`, `popmotion`, `@motionone/dom` (R15.7: аналогично). **Default motion stack** — Vue native `` / `` + Vuetify transitions + CSS `@keyframes` + View Transitions API (R11.6 уровни 3–6). Большинство задач закрываются на уровнях 1–2. Установка любой animation runtime библиотеки в `package.json` — **R0.6 пункт 11 hard-стоп**, Auto mode не отменяет. Подробности — PSR_v1 v1.6 R15 + Tooling Прил. Н v1.14 §9.2. +12. **Резерв.** Был «не устанавливать motion runtime библиотеки без прохождения R15.2 PSR_v1». Снят 12.05.2026 (CLAUDE.md v1.88 + PSR_v1 v2.0). Motion-runtime библиотеки разрешены без обоснования; `framer-motion` остаётся technical block (React-only peerDep). Подробности — [docs/CHANGELOG_claude_md.md](docs/CHANGELOG_claude_md.md) запись v1.88, [docs/Tooling_v8_3.md](docs/Tooling_v8_3.md) §9.2. --- @@ -255,8 +255,10 @@ trivy image liderra:latest Полная история — [docs/CHANGELOG_claude_md.md](docs/CHANGELOG_claude_md.md) (вынесена 09.05.2026 при правке v1.73→v1.74 ради лаконичности шапки). Здесь — последние правки: -- **v1.89 от 12.05.2026 (ночь, post-audit continuation)** — factual fix §6 + шапка v1.88 changelog: коммит `615db99` ошибочно представлен как Plan 4 merge (фактически `615db99` это R15 motion-runtime removal commit «chore(rules): remove R15 motion-runtime restrictions (PSR_v1 v2.0)»; правильный Plan 4 closure marker на origin/main — `8681040` «docs: Plan 4 closure — CLAUDE.md v1.87 + Открытые_вопросы v1.78», backend task-коммиты Plan 4 `a907fea..174dbae` (Tasks 9-11) merged ранее). Дополнительно: коммит `f4ec5dc` («fix(redesign): sidebar position:fixed + main padding-left — restore main content visibility» — Quiet Luxury hotfix на ветке `plan5-frontend-projects`) ошибочно представлен в v1.88 §6 как PSR_v1 R15 removal — убран из §6 формулировки (Quiet Luxury hotfix не связан с R15 motion-runtime removal и не находится на origin/main). Связанные документы НЕ требуют изменений: Pravila v1.10 / PSR_v1 v1.7 / Tooling v1.15 / реестр v1.77 на ветке `plan5-frontend-projects` остаются как есть; фактологический фикс локален в CLAUDE.md. Verified через `git show 615db99 --stat` (subject «chore(rules): remove R15 motion-runtime restrictions (PSR_v1 v2.0)») + `git show 8681040` (subject «docs: Plan 4 closure — CLAUDE.md v1.87 + Открытые_вопросы v1.78») + `git show f4ec5dc` (subject «fix(redesign): sidebar position:fixed + main padding-left — restore main content visibility»). Заказчик: «доделывать аудит, поправить ошибку в CLAUDE.md». Через `/claude-md-management:claude-md-improver`. -- **v1.88 от 12.05.2026 (ночь)** — audit-driven sync §0/§2/§6/§8 после полного аудита портала (`docs/superpowers/audits/2026-05-12-portal-full-audit-*.md`). Заказчик: «проведи полный аудит всего портала ... исправь все что сможешь в моё отсутствие». Через `/claude-md-management:revise-claude-md`. **Ключевые правки:** **§0 row «Схема БД»** — добавлено «schema baseline v8.19» metrics + «dev-actual factual» 75/102/289/39/5/19/0 (после `migrate:fresh` + накопленных `partitions:create-months`), 5 user-функций перечислены поимённо (audit_block_mutation, audit_chain_hash, calc_lead_score, report_jobs_log_export, set_pd_subject_request_deadline). **§0 row «Открытые_вопросы»** — v1.75 → v1.77 (Sprint 4 Audit tail close); добавлено note о post-v1.77 deviation (Plan 4/5 + Quiet Luxury merged без registry bump). **§2 row «БД»** — аналогично §0 schema-row, baseline + factual split. **§6 фаза** — «Plan 4 ready for FF-merge» → «Plan 4 MERGED в origin/main `8681040`» + новый параграф про Plan 5 frontend Tasks 7-11 + Quiet Luxury portal redesign + dev-indices в `plan5-frontend-projects` ветке (85+ commits ahead). *(NB v1.89: исходная v1.88 формулировка указывала `615db99` для Plan 4 merge — factual error, по факту `615db99` это R15 motion-runtime removal commit; исправлено post-audit в v1.89.)* **§8 self-review row** — добавлено разделение «baseline ИЛИ dev-actual». **Audit-fixes batch** (commits `3a8229a..audit-final`): Histoire build broken (P0 BulkActionsBar.story Pinia) fixed → 35 stories / 63 variants build OK; vue-tsc 9 errors fixed (AppSidebar NavItem.countKey + Project type unify); ESLint 17 errors fixed (test mocks any → unknown + vitest/no-disabled-tests cleanup + unused beforeEach); Prettier --write 37 files; markdownlint --fix 165 → 1 left (untracked design.md); cspell +79 words в `cspell-words.txt` 187 → 18 issues; routes/web.php +explicit Route::view для `/projects, /reminders, /admin/*`. **Регрессии:** 0. Final factual baseline: Pest 742 / Vitest 614 + 3 skipped / vue-tsc 0 / ESLint 0 / markdownlint 1 (untracked) / cspell 18 (mixed-script artifacts) / lychee 0 broken / gitleaks 0. +- **v1.90 от 13.05.2026 (day)** — Merge R15 motion-runtime removal cleanup из `origin/main` в `plan5-frontend-projects`. Merge-base `48f27b4`; plan5 был 113 ahead / 2 behind. Origin/main за этот период получила 2 коммита: `0fd93fd` (planning artefacts spec+plan, +2 files) + `615db99` (нормативная правка 5 файлов: PSR_v1 v1.7→v2.0, Pravila v1.10→v1.11, Tooling v1.15→v1.16, CLAUDE.md v1.87→v1.88, CHANGELOG entry). `git merge-tree` показал ровно 2 conflict'а: CLAUDE.md (шапка version + §9 entries) и CHANGELOG_claude_md.md (entries). Остальные 3 нормативных файла fast-forward без conflict'а (plan5 не редактировал их после fork). **Конфликт-resolution:** шапка → v1.90 unified; §0 cross-refs → take origin/main (Pravila v1.11 / PSR_v1 v2.0 / Tooling v1.16); §2 Animation default stack → take origin/main (motion-runtime guidance); §5 п.12 → take origin/main (marker «Резерв (снят 12.05.2026)»); §6 фаза + §8 self-review → keep plan5 (Plan 4 MERGED + Plan 5 frontend + Quiet Luxury context); §9 история версий → keep both v1.88 entries explicitly labelled (plan5 audit schema-sync + origin/main R15 removal — distinct concerns, version-number collision result of parallel-branch bump'ов), plus v1.89 plan5 factual fix + new v1.90 merge entry. **Через ручное conflict resolution + post-merge `/claude-md-management:revise-claude-md` polish (per §5 п.10).** Memory updates после push: `feedback_plugin_paired_stack.md` (remove branch-divergent note + bump tier-структуру к v2.0), `project_state.md` (branch counters), `reference_archive.md` (file version refs). +- **v1.89 от 12.05.2026 (ночь, post-audit continuation)** — factual fix §6 + шапка v1.88 changelog: коммит `615db99` ошибочно представлен как Plan 4 merge (фактически `615db99` это R15 motion-runtime removal commit «chore(rules): remove R15 motion-runtime restrictions (PSR_v1 v2.0)»; правильный Plan 4 closure marker на origin/main — `8681040` «docs: Plan 4 closure — CLAUDE.md v1.87 + Открытые_вопросы v1.78», backend task-коммиты Plan 4 `a907fea..174dbae` (Tasks 9-11) merged ранее). Дополнительно: коммит `f4ec5dc` («fix(redesign): sidebar position:fixed + main padding-left — restore main content visibility» — Quiet Luxury hotfix на ветке `plan5-frontend-projects`) ошибочно представлен в v1.88 §6 как PSR_v1 R15 removal — убран из §6 формулировки (Quiet Luxury hotfix не связан с R15 motion-runtime removal и не находится на origin/main). Связанные документы НЕ требуют изменений: Pravila v1.10 / PSR_v1 v1.7 / Tooling v1.15 / реестр v1.77 на ветке `plan5-frontend-projects` остаются как есть; фактологический фикс локален в CLAUDE.md. Verified через `git show 615db99 --stat` (subject «chore(rules): remove R15 motion-runtime restrictions (PSR_v1 v2.0)») + `git show 8681040` (subject «docs: Plan 4 closure — CLAUDE.md v1.87 + Открытые_вопросы v1.78») + `git show f4ec5dc` (subject «fix(redesign): sidebar position:fixed + main padding-left — restore main content visibility»). Заказчик: «доделывать аудит, поправить ошибку в CLAUDE.md». Через `/claude-md-management:claude-md-improver`. *(NB v1.90 post-merge: связанные документы Pravila/PSR_v1/Tooling всё-таки обновились — но не из-за фактологического фикса плана5, а из-за подтянутого R15 removal из origin/main. Этот NB не отменяет v1.89 logic — он добавляет post-merge context.)* +- **v1.88 от 12.05.2026 (ночь) — plan5 branch (audit schema-sync)** — audit-driven sync §0/§2/§6/§8 после полного аудита портала (`docs/superpowers/audits/2026-05-12-portal-full-audit-*.md`). Заказчик: «проведи полный аудит всего портала ... исправь все что сможешь в моё отсутствие». Через `/claude-md-management:revise-claude-md`. **Ключевые правки:** **§0 row «Схема БД»** — добавлено «schema baseline v8.19» metrics + «dev-actual factual» 75/102/289/39/5/19/0 (после `migrate:fresh` + накопленных `partitions:create-months`), 5 user-функций перечислены поимённо (audit_block_mutation, audit_chain_hash, calc_lead_score, report_jobs_log_export, set_pd_subject_request_deadline). **§0 row «Открытые_вопросы»** — v1.75 → v1.77 (Sprint 4 Audit tail close); добавлено note о post-v1.77 deviation (Plan 4/5 + Quiet Luxury merged без registry bump). **§2 row «БД»** — аналогично §0 schema-row, baseline + factual split. **§6 фаза** — «Plan 4 ready for FF-merge» → «Plan 4 MERGED в origin/main `8681040`» + новый параграф про Plan 5 frontend Tasks 7-11 + Quiet Luxury portal redesign + dev-indices в `plan5-frontend-projects` ветке (85+ commits ahead). *(NB v1.89: исходная v1.88 формулировка указывала `615db99` для Plan 4 merge — factual error, по факту `615db99` это R15 motion-runtime removal commit; исправлено post-audit в v1.89.)* **§8 self-review row** — добавлено разделение «baseline ИЛИ dev-actual». **Audit-fixes batch** (commits `3a8229a..audit-final`): Histoire build broken (P0 BulkActionsBar.story Pinia) fixed → 35 stories / 63 variants build OK; vue-tsc 9 errors fixed (AppSidebar NavItem.countKey + Project type unify); ESLint 17 errors fixed (test mocks any → unknown + vitest/no-disabled-tests cleanup + unused beforeEach); Prettier --write 37 files; markdownlint --fix 165 → 1 left (untracked design.md); cspell +79 words в `cspell-words.txt` 187 → 18 issues; routes/web.php +explicit Route::view для `/projects, /reminders, /admin/*`. **Регрессии:** 0. Final factual baseline: Pest 742 / Vitest 614 + 3 skipped / vue-tsc 0 / ESLint 0 / markdownlint 1 (untracked) / cspell 18 (mixed-script artifacts) / lychee 0 broken / gitleaks 0. +- **v1.88 от 12.05.2026 — origin/main (R15 motion-runtime removal)** — снятие R15 motion-runtime restrictions per user decision 12.05.2026 («сними все запреты на использование framer motion»). Conscious rollback v1.83 audited construction (10.05.2026, R15 двухуровневая motion-конструкция была введена через brainstorming → «двухуровневый» подтверждение заказчика; v1.88 — namesake rollback). **§5 п.12** → маркер «Резерв (снят 12.05.2026, см. CHANGELOG)» (нумерация п.1–11 сохранена, чтобы cross-refs в memory `feedback_environment.md` / `feedback_plugin_paired_stack.md` не сломать); **§2 строка «Animation default stack»** переписана с regulatory denylist на guidance recommendation; **§0 cross-refs** обновлены — Pravila v1.10 → v1.11, PSR_v1 v1.7 → v2.0, Tooling v1.15 → v1.16. **framer-motion** — technical block (peerDep react+react-dom, не работает в Vue физически), не regulatory rule. Связано: PSR_v1 v1.7 → v2.0 (R15 удалено целиком: R15.1 framer-motion + R15.2 motion-v 4 условия + R15.3 default стойка + R15.4 проверка + R15.5 hard-запрет дублирования + R15.6 live-override + R15.7 gsap/anime/lottie; R0.6 п.11 удалён; R8 motion тай-брейкеры удалены; R11.6 motion иерархия удалена; R13 motion-сценарии удалены), Pravila v1.10 → v1.11 (§11.5/§13.2 счётчик 16→15 правил; §13.9/§13.10 cross-refs на PSR_v1 v1.6→v2.0; §13.10 НЕ удалено — оно про R14, не R15), Tooling v1.15 → v1.16 (§9.2 reformulated в technical guidance), CHANGELOG_claude_md.md + MEMORY sync. Через `superpowers:brainstorming` → 3 варианта → выбор B (полная отмена R15) → `superpowers:writing-plans` → `superpowers:executing-plans` + `/claude-md-management:claude-md-improver` + ручные Edit (PSR_v1/Tooling/Pravila). v1.87→v1.88. **NB version-number collision:** на ветке plan5 также присутствует другая v1.88 entry (audit-driven schema-sync) — обе валидны, обе 12.05.2026, обе явно labelled. - **v1.87 от 11.05.2026** — sync schema-метрик после Plan 4 (Billing+CSV+Admin). Schema **v8.11 → v8.19** (накопленный drift от Plans 1+2+3+4): §0 «Источник истины» row «Схема БД», §2 «Стек» строка БД, §6 «Текущая фаза», §8 self-review триггеры — все обновлены до 62 базовых таблиц / 12 партиций / 117 индексов / 39 RLS / 5 функций / 13 триггеров / 5 ролей БД. §6 расширен Plan 4 closure summary: 15 коммитов на ветке `plan4-billing` (14 task-коммитов `a907fea..174dbae` + lychee CV-fix `fded2ee`), Pest 687/684 passed + 3 skipped/0 failed (2090 assertions), Vitest 49 files / 428 passed, Histoire 24 stories / 31 variants, lychee 0 broken, gitleaks 0 leaks. Активированы 7-ступенчатый pricing-tier биллинг + CsvReconcileJob hourly + auto-pause flow + 3 UI экрана. +7 новых Биз-25..31 в реестре (раздел 13 Открытые_вопросы v1.78). Drive-by closure: Plan 1 deferred WARNING #7 (SupplierProjectFactory random race) — fixed в Task 10 `0f820c4`. Через `/claude-md-management:revise-claude-md`. - **v1.86 от 10.05.2026 (поздний вечер)** — закрытие 13 находок третьего аудита правил использования плагинов и скилов (4 P0 + 5 P1 + 2 P2 + 2 sync-правки в README/README_АРХИВ). Заказчик: «проведи аудит правил использования плагинов и скилов на предмет конфликта и запутаностей» → Claude через `/claude-md-management:claude-md-improver` нашёл 12 формальных находок + 4 sync-побочки, представил quality report, получил «исправь все, только при выполнении руководствуйся правилом, прежде чем вносить изменения тебе надо проанализировать как оно влияет на другие правила, что исправляю одно не делать других ошибок», применил с cross-impact-анализом перед каждой группой. **P0 (4 — реальные арифметические конфликты в CLAUDE.md, прошли мимо второго аудита):** §3 header «Карта 28 инструментов» → «33» (header застрял с pre-FD эпохи); §3.4 header «(+5, итого 28)» → «итого 29» (после добавления #30 в фазу 2 cumulative должна быть 29); §3.3 footer «из 30 номеров минус #1 = 29 active» → расширенная формулировка «33 номеров: 29 phase-active + 3 off-phase + 1 historic»; §6 «Активно: 19 инструментов из 29» + «(19/29 активны)» → «24» в обоих местах (внутренний арифметический конфликт: тут же раскладка 9+8+7=24, но числовая метка застряла на 19 с эпохи когда фаза 2 имела ~4 активных). **P1 (5 — обновление stale `+`-refs на актуальные версии):** PSR_v1 шапка cross-refs «CLAUDE.md v1.84+/Pravila v1.9+» → «v1.86+/v1.10+»; Tooling шапка cross-refs «Pravila v1.9+/PSR_v1 v1.5+/CLAUDE.md v1.84+» → «v1.10+/v1.7+/v1.86+»; CLAUDE.md §5 п.5 «PSR_v1 v1.5+» → «v1.7+». **P2 (2 — внутренние несогласованности формулировок):** PSR_v1 line 4 «slot уровня 2.5» → «уровня 2b» (описка внутри changelog'а v1.6, фактическое R0.1 line 33 всегда содержало «2b»); CLAUDE.md §3.3 #33 «вне Pravila §13» → «вне UI-пула §13» (Pravila §13.2 v1.10 включает claude-md-management как infrastructure subsection; «вне §13» вводило в заблуждение). **Побочки sync:** README.md и README_АРХИВ_v8_5.md «карта 28 инструментов» → «33 инструмента»; Tooling §11.5/§12 «не входят в 28» → «33 формализованные позиции». Связано: **PSR_v1 v1.6→v1.7**, **Tooling v1.14→v1.15**. Pravila v1.10 — без изменений. Через `/claude-md-management:claude-md-improver`. diff --git a/cspell-words.txt b/cspell-words.txt index 0eac30ca..6dabc94b 100644 --- a/cspell-words.txt +++ b/cspell-words.txt @@ -1071,6 +1071,7 @@ reestr sumary regen vuetifyjs +форкнулась # Фамилии лидов из примеров (с диакритикой как в исходниках) Бузо́ва diff --git a/docs/CHANGELOG_claude_md.md b/docs/CHANGELOG_claude_md.md index 09143fef..5833f138 100644 --- a/docs/CHANGELOG_claude_md.md +++ b/docs/CHANGELOG_claude_md.md @@ -2,10 +2,14 @@ История изменений вынесена сюда из шапки [../CLAUDE.md](../CLAUDE.md) — для лаконичности основного файла. Перенесено 09.05.2026 при правке v1.73→v1.74 (вместе с текущим claude-md-management skill audit). -Текущая версия и активный список фич — в шапке CLAUDE.md (§0–§8). Здесь — история версий v1.1→v1.83 в обратном порядке (свежие сверху) + изолированная post-audit запись v1.89. Записи v1.84..v1.88 живут inline в §9 CLAUDE.md (CHANGELOG-обслуживание не велось 10.05.2026–12.05.2026; gap не критичен — версии полностью описаны в §9 основного файла). +Текущая версия и активный список фич — в шапке CLAUDE.md (§0–§8). Здесь — история версий v1.1→v1.83 в обратном порядке (свежие сверху) + изолированные post-fork записи v1.88 (R15 removal из origin/main) / v1.89 (plan5 factual fix) / v1.90 (merge). Записи v1.84..v1.87 живут inline в §9 CLAUDE.md (CHANGELOG-обслуживание не велось 10.05.2026–11.05.2026; gap не критичен — версии полностью описаны в §9 основного файла). NB: на плате v1.88 существует ВТОРАЯ entry (plan5 audit schema-sync 12.05.2026 ночь) — она inline-only в §9 CLAUDE.md, не вынесена сюда; это collision версионной нумерации parallel-branch bump'ов. --- -*CLAUDE.md v1.89 от 12.05.2026 (ночь, post-audit continuation). Изменения v1.89: **factual fix §6 + шапка v1.88 changelog.** В рамках сессии «доделывать аудит» 12.05.2026 ночь обнаружено, что v1.88 в двух местах содержал factual error: (1) §6 строка «Plan 4 (Billing + CSV Reconcile + Admin) MERGED в `origin/main` `615db99` (post-merge after `f4ec5dc` PSR_v1 R15 removal)» — оба коммита идентифицированы неверно; (2) шапка v1.88 changelog «§6 «Plan 4 ready for FF-merge» → «Plan 4 MERGED в origin/main `615db99`» — то же самое. **Verified через `git log origin/main` + `git show `:** коммит `615db99` это R15 motion-runtime removal commit «chore(rules): remove R15 motion-runtime restrictions (PSR_v1 v2.0)» (12.05.2026 07:30), а НЕ Plan 4 merge; коммит `f4ec5dc` это Quiet Luxury sidebar hotfix «fix(redesign): sidebar position:fixed + main padding-left — restore main content visibility» на ветке `plan5-frontend-projects`, а НЕ PSR_v1 R15 removal и НЕ на origin/main. **Правильная история на origin/main (по git log):** Plan 4 backend task-коммиты `a907fea..174dbae` (Tasks 9-11) merged ранее → `fded2ee` chore(lychee) Plan 4 plan-file fix → `8681040` «docs: Plan 4 closure — CLAUDE.md v1.87 + Открытые_вопросы v1.78» (это и есть Plan 4 closure marker) → `4bc488e` fix(admin) AdminPricingTiers strip ISO-suffix → `1ca4378` + `48f27b4` docs(specs+plans) Plan 5 → `0fd93fd` + `615db99` R15 motion-runtime removal (отдельная история, НЕ часть Plan 4). **Правки v1.89:** (1) §6 строка обновлена с правильными коммитами + явное разделение «Plan 4 closure `8681040`» и «R15 removal `0fd93fd` + `615db99`» как разные истории; (2) шапка v1.88 changelog inline исправление `615db99` → `8681040` + NB-маркер «v1.88 первоначально содержал factual error»; (3) §9 v1.88 entry inline исправление аналогично; (4) bump CLAUDE.md v1.88 → v1.89; (5) новая v1.89 entry в §9 CLAUDE.md + эта запись в CHANGELOG. **Связанные документы (Pravila v1.10 / PSR_v1 v1.7 / Tooling v1.15 / реестр v1.77 на ветке `plan5-frontend-projects`) НЕ требуют изменений** — фактологический фикс локален в CLAUDE.md. Источник правки: post-audit continuation session 12.05.2026 ночь, обнаружено как bonus-finding во время Q.DEFER.001 (memory description downgrade). Заказчик: «доделывать аудит, поправить ошибку в CLAUDE.md». Через `/claude-md-management:claude-md-improver` (per CLAUDE.md §5 п.10 единственный канал правок). v1.88→v1.89.* +*CLAUDE.md v1.90 от 13.05.2026 (day). Изменения v1.90: **Merge R15 motion-runtime removal cleanup из `origin/main` в `plan5-frontend-projects`**. Plan5 ветка форкнулась 12.05 утром от `48f27b4` ДО появления `615db99` (R15 removal) на 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. **2 conflict'а решены вручную:** (1) `CLAUDE.md` шапка version → v1.90 unified; §0 cross-refs → take origin/main (Pravila v1.11 / PSR_v1 v2.0 / Tooling v1.16); §2 Animation default stack → take origin/main (motion-runtime guidance); §5 п.12 → take origin/main (marker «Резерв (снят 12.05.2026)»); §6 фаза + §8 self-review → keep plan5 (Plan 4 MERGED + Plan 5 frontend + Quiet Luxury context); §9 история версий → keep both v1.88 entries explicitly labelled (plan5 audit schema-sync + origin/main R15 removal) + v1.89 plan5 factual fix + new v1.90 merge entry. (2) `docs/CHANGELOG_claude_md.md` (этот файл) → keep all three entries (v1.90/v1.89/v1.88). **3 нормативных файла fast-forward без conflict'а:** `Plugin_stack_rules_v1.md` v1.7 → v2.0 (R15 удалён, 162 lines diff); `Pravila_raboty_Claude_v1_1.md` v1.10 → v1.11 (§11.5/§13.2 счётчик 16→15 + cross-refs); `Tooling_v8_3.md` v1.15 → v1.16 (§9.2 reformulated в technical guidance). **0 code changes**; `resources/js/`, `app/`, `db/` нетронуты merge'ем. **0 npm install** — motion-v / gsap / anime.js / lottie-web всё ещё не установлены, теперь разрешены к установке без обоснования. **Verification:** Pest --parallel baseline 742, Vitest 683, Vite build 1.80s, lychee 245 OK, gitleaks 0 leaks. **Memory updates (после push):** `feedback_plugin_paired_stack.md` (remove «branch-divergent state» note + bump tier-структуру к v2.0); `project_state.md` (branch counters: больше не 2 behind); `reference_archive.md` (file version refs к CLAUDE.md v1.90 + PSR_v1 v2.0 + Pravila v1.11 + Tooling v1.16). Через ручное conflict resolution + post-merge `/claude-md-management:revise-claude-md` polish (per §5 п.10). v1.89→v1.90.* + +*CLAUDE.md v1.89 от 12.05.2026 (ночь, post-audit continuation). Изменения v1.89: **factual fix §6 + шапка v1.88 changelog.** В рамках сессии «доделывать аудит» 12.05.2026 ночь обнаружено, что v1.88 в двух местах содержал factual error: (1) §6 строка «Plan 4 (Billing + CSV Reconcile + Admin) MERGED в `origin/main` `615db99` (post-merge after `f4ec5dc` PSR_v1 R15 removal)» — оба коммита идентифицированы неверно; (2) шапка v1.88 changelog «§6 «Plan 4 ready for FF-merge» → «Plan 4 MERGED в origin/main `615db99`» — то же самое. **Verified через `git log origin/main` + `git show `:** коммит `615db99` это R15 motion-runtime removal commit «chore(rules): remove R15 motion-runtime restrictions (PSR_v1 v2.0)» (12.05.2026 07:30), а НЕ Plan 4 merge; коммит `f4ec5dc` это Quiet Luxury sidebar hotfix «fix(redesign): sidebar position:fixed + main padding-left — restore main content visibility» на ветке `plan5-frontend-projects`, а НЕ PSR_v1 R15 removal и НЕ на origin/main. **Правильная история на origin/main (по git log):** Plan 4 backend task-коммиты `a907fea..174dbae` (Tasks 9-11) merged ранее → `fded2ee` chore(lychee) Plan 4 plan-file fix → `8681040` «docs: Plan 4 closure — CLAUDE.md v1.87 + Открытые_вопросы v1.78» (это и есть Plan 4 closure marker) → `4bc488e` fix(admin) AdminPricingTiers strip ISO-suffix → `1ca4378` + `48f27b4` docs(specs+plans) Plan 5 → `0fd93fd` + `615db99` R15 motion-runtime removal (отдельная история, НЕ часть Plan 4). **Правки v1.89:** (1) §6 строка обновлена с правильными коммитами + явное разделение «Plan 4 closure `8681040`» и «R15 removal `0fd93fd` + `615db99`» как разные истории; (2) шапка v1.88 changelog inline исправление `615db99` → `8681040` + NB-маркер «v1.88 первоначально содержал factual error»; (3) §9 v1.88 entry inline исправление аналогично; (4) bump CLAUDE.md v1.88 → v1.89; (5) новая v1.89 entry в §9 CLAUDE.md + эта запись в CHANGELOG. **Связанные документы (Pravila v1.10 / PSR_v1 v1.7 / Tooling v1.15 / реестр v1.77 на ветке `plan5-frontend-projects`) НЕ требуют изменений** — фактологический фикс локален в CLAUDE.md. *(NB v1.90 post-merge: связанные документы Pravila/PSR_v1/Tooling всё-таки обновились — но не из-за этой v1.89 правки, а из-за подтянутого R15 removal из origin/main; v1.89 logic остаётся валидной — фактологический фикс плана5 локален был в CLAUDE.md.)* Источник правки: post-audit continuation session 12.05.2026 ночь, обнаружено как bonus-finding во время Q.DEFER.001 (memory description downgrade). Заказчик: «доделывать аудит, поправить ошибку в CLAUDE.md». Через `/claude-md-management:claude-md-improver` (per CLAUDE.md §5 п.10 единственный канал правок). v1.88→v1.89.* + +*CLAUDE.md v1.88 от 12.05.2026 — origin/main (R15 motion-runtime removal). Изменения v1.88: **Снятие R15 motion-runtime restrictions** по решению заказчика 12.05.2026 («сними все запреты на использование framer motion»). Через `superpowers:brainstorming` → 3 варианта (A узкая правка R15.2 / B полная отмена R15 / C one-strike trigger) → выбран B (вопреки рекомендации A: «доверяю team's choice motion-runtime без regulatory guardrail»). **Conscious rollback** v1.83 audited construction (10.05.2026: R15 двухуровневая motion-конструкция была введена через brainstorming → 3 варианта → «двухуровневый» подтверждение заказчика; v1.88 — это namesake rollback). **5 файлов изменены (atomic commit):** PSR_v1 v1.7 → v2.0 (удалено R15 целиком: R15.1 framer-motion hard-запрет + R15.2 motion-v 4 условия + R15.3 default стойка + R15.4 проверка триггера + R15.5 hard-запрет дублирования + R15.6 live-override + R15.7 расширение на gsap/anime/lottie; удалено R0.6 п.11 animation runtime hard-стоп; удалены R8 три тай-брейкера motion; удалена R11.6 иерархия motion-источников; удалены R13 пять строк motion-сценариев; финальная формула и свойства свода переформулированы; шапка v1.7 → v2.0 major bump). Pravila v1.10 → v1.11 (§11.5/§13.2 счётчик «16 правил R0–R15» → «15 правил R0–R14»; §13.9 + §13.10 cross-ref на PSR_v1 «v1.6» → «v2.0»; §13.10 НЕ удалено — оно про R14 UPM/21st pipeline, не R15). Tooling Прил. Н v1.15 → v1.16 (§9.2 reformulated из regulatory denylist в technical guidance: motion-v + gsap + anime.js + lottie-web + popmotion + @motionone/dom → ✅ разрешено без обоснования; framer-motion + react-spring → ❌ technical block, peerDep react+react-dom, не regulatory rule). **CLAUDE.md этот файл:** §2 «Animation default stack» переписан с regulatory denylist на guidance recommendation; §5 п.12 → маркер «Резерв. Был "не устанавливать motion runtime библиотеки без R15.2". Снят 12.05.2026.» (нумерация §5 п.1–11 сохранена, чтобы cross-refs в memory `feedback_environment.md` / `feedback_plugin_paired_stack.md` не сломать); §0 cross-refs обновлены (Pravila v1.10 → v1.11, PSR_v1 v1.7 → v2.0, Tooling v1.15 → v1.16); §9 «История версий» — entry v1.88. **MEMORY sync:** `memory/feedback_plugin_paired_stack.md` обновлён (v1.7 → v2.0; «R15 motion двухуровневый» → historical context); `MEMORY.md` index hook обновлён. **0 изменений в коде проекта** (`resources/js/`, `app/`, `db/` нетронуты). **0 npm install** (motion-v и др. в `package.json` не попадают; их установка теперь разрешена, но не делается этим коммитом). **0 schema changes**. **Plan:** docs/superpowers/plans/2026-05-12-remove-r15-motion-restrictions.md. **Spec:** docs/superpowers/specs/2026-05-12-remove-r15-motion-restrictions-design.md. Через `/claude-md-management:claude-md-improver` (для CLAUDE.md) + manual Edit (для PSR_v1, Tooling, Pravila). v1.87→v1.88. **NB version-number collision:** на ветке plan5 параллельно существует другая v1.88 entry (audit-driven schema-sync 12.05.2026 ночь, inline-only в §9 CLAUDE.md) — обе валидны, parallel-branch bump'ы.* *CLAUDE.md v1.83 от 10.05.2026. Изменения v1.83: **Формализация двух фактически включённых внешних UI-инструментов (UI UX Pro Max + 21st.dev Magic MCP) + двухуровневое решение по runtime motion-библиотекам.** Триггер сессии: пользователь спросил «хочу добавить стек плагинов 21st, framer motion, UI UX max — проанализируй конфликты». Проверка `~/.claude/settings.json` и `~/.claude.json` показала: **UPM** (skill `ui-ux-pro-max@ui-ux-pro-max-skill` от marketplace `nextlevelbuilder/ui-ux-pro-max-skill`) и **21st Magic MCP** (`magic` сервер с API-ключом `da9dbf...`, npm `@21st-dev/magic@latest`, tools `mcp__magic__21st_magic_component_builder/inspiration/refiner` + `logo_search`) — фактически уже включены, но в правилах не описаны. Любое использование без формализации = нарушение R0.2/R10.4 PSR_v1. **Framer Motion** — React-only runtime npm-библиотека, не Claude-плагин, физически не работает в Vue (использует React fiber-tree + hooks + JSX). Vue-аналог `motion-v` существует, но это отдельная технология (R0.6 hard-стоп «новая технология в стек»). Через цикл brainstorming (`superpowers:brainstorming`) → 3 варианта решения по R12 архитектурному → итерации с пользователем («предложи но не делай», «добавь Framer Motion», «двух уровневый») согласовано: формализовать UPM+21st; для motion — двухуровневая R15-конструкция. **PSR_v1 v1.3 → v1.4** (главный артефакт): R6 расширен в R6.0 (универсальная таблица фильтра для FD/UPM/21st одинаково); R6.1 hard-override Forest расширен на все три плагина (палитра/шрифты/иконки/aesthetic Forest приоритетнее любых предложений); R10.1 +1 строка для 21st (роль «генератор стартовых шаблонов») + ослабление UPM (теперь активируется не только при «молчании FD», но и для R12 третьего варианта); R11.5 (новое) — активация UPM в R12 архитектурном решении на фазе 1 R2; R11.6 (новое) — параллельная под-иерархия 7 motion-источников (Brandbook → ТЗ → Vue native `` → Vuetify transitions → CSS @keyframes → View Transitions API → motion-v); R0.6 +3 hard-стопа (пункт 9: 21st для брендового App*-компонента; пункт 10: 21st для компонента с Vuetify-эквивалентом или существующим в `resources/js/components/`; пункт 11: установка motion-v / gsap / anime.js / lottie-web без R15.2); R13 +9 строк matrix'а (4 строки UI-фич с/без 21st-pipeline + 1 строка R12 третий вариант UPM + 5 строк motion-сценариев); R14 (новое правило, 7 подразделов) — Pipeline внешних UI-генераторов: R14.1 триггер активации, R14.2 шаги, R14.3 UPM в фазах 1/2, R14.4 21st в фазе 5 с обязательным pre-check R0.6 + R6.0 + R6.1 + FD адаптация, R14.5 запрет дублирования (UPM+21st не на одной фазе), R14.6 live-override (с обязательным сохранением фильтров), R14.7 hard-link на §13 Pravila; R15 (новое правило, 7 подразделов) — Motion-системы: R15.1 framer-motion hard-запрет навсегда (React-only архитектурно, не отменяется live-командой), R15.2 motion-v 4 условия активации (а) письменный кейс из ТЗ/Открытые_вопросы (б) категория оправданности — gesture/shared-layout/spring (в) Brandbook approval (г) полный R12 brainstorming + 3 варианта, R15.3 default стойка из 4 слоёв (Vue native + Vuetify + CSS + View Transitions), R15.4 формальная проверка триггера, R15.5 hard-запрет дублирования (motion-v не вытесняет Vuetify), R15.6 live-override запрещён без R15.2, R15.7 расширение на gsap/anime.js/lottie-web/react-spring/popmotion; R8 +7 тай-брейкеров; финальная формула расширена ссылками на R14/R15. **Pravila v1.7 → v1.8**: §13 расширен (paired-stack ядро + расширенный пул); §13.9 cross-ref bumped (v1.3 → v1.4); §13.10 (новый) — hard-link на R14 (UPM/21st вне pipeline'а = нарушение §13, через цепочку R10.4 → §13.9). **Tooling Прил. Н v1.11 → v1.12**: #31 UPM (off-phase tool, §4.5); #32 21st Magic MCP (off-phase tool, §4.6); §9 разделён на §9.1 (изначальный список) + §9.2 (motion runtime библиотеки): framer-motion + react-spring (R15.1 hard-запрет, React-only); motion-v + gsap + anime + lottie + popmotion (R15.2/R15.7 условно, R0.6 пункт 11 hard-стоп). 31 формализованных позиций (19/29 активных по фазам + 2 off-phase). **CLAUDE.md v1.82 → v1.83 (этот файл):** §0 cross-refs обновлены (Pravila v1.6→v1.8, PSR_v1 v1.3→v1.4, Tooling v1.10→v1.12); §2 +Animation default stack строка; §3.3 +#31 UPM +#32 21st строки в карте инструментов; §5 п.5 расширен на расширенный пул UI-инструментов (FD + UPM + 21st с обязательным R6.0 фильтром и R6.1 hard-override Forest); §5 п.12 motion-runtime новый (запрет установки framer-motion + react-spring + motion-v + gsap + anime.js + lottie-web без R15.2); §6 «Текущая фаза» обновлён (31 формализованных позиций тулчейна: 19/29 активных по фазам + 2 off-phase). Через `/claude-md-management:claude-md-improver`. **5 файлов изменены:** PSR_v1 + Pravila + Tooling + CLAUDE.md + CHANGELOG_claude_md. **0 изменений в коде проекта** (`resources/js/`, `app/`, `db/` нетронуты). **0 npm install** (motion-v и др. в `package.json` не попадают). v1.82→v1.83.* diff --git a/docs/Plugin_stack_rules_v1.md b/docs/Plugin_stack_rules_v1.md index 9037e7bc..cdfbf918 100644 --- a/docs/Plugin_stack_rules_v1.md +++ b/docs/Plugin_stack_rules_v1.md @@ -1,15 +1,15 @@ -# Plugin Stack Rules — Superpowers + Frontend Design (v1.7) +# Plugin Stack Rules — Superpowers + Frontend Design (v2.0) -**Дата:** 10.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`), плюс правила runtime motion-стойки. Снимает запрет CLAUDE.md §5 п.5 на Frontend Design plugin (действовал до v1.77 включительно). Документ — внутренне непротиворечив: 8 первичных конфликтов закрыты в v1.0 + 5 патчей по реальным трениям A–E в v1.1 + 4 новых правила R10–R13 против перекрытий с другими плагинами в v1.2 + 6 уточняющих патчей F–K по найденным трениям второго порядка в v1.3 + 2 новых правила R14 (pipeline внешних UI-генераторов: UPM + 21st Magic MCP) и R15 (motion-системы: framer-motion hard-запрет + motion-v узкое окно по 4 условиям) в v1.4 + 5 структурных правок аудита в v1.5 (R10.1 разбит на 3 блока, R0.4.A SoT cross-ref, R10.4/R14.7 tier-метки, R8 +тай-брейкер FD↔21st, R0.1 scope-метка) + 3 правки второго аудита в v1.6 (R0.4.A свёрнут до cross-ref на Pravila §12.3 SoT — устраняет дрейф формулировок; R0.6 hard-стопы пронумерованы 1–11 для надёжности cross-refs «пункт 9/10/11»; R0.1 +Tooling Прил. Н slot уровня 2b) + 1 правка третьего аудита в v1.7 (sync cross-refs на актуальные версии связанных документов после bump'ов CLAUDE.md v1.86 / Tooling v1.15; description-fix описки «уровня 2.5»→«уровня 2b» внутри changelog'а v1.6, сверка с фактическим R0.1). +**Дата:** 12.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`). Снимает запрет CLAUDE.md §5 п.5 на Frontend Design plugin (действовал до v1.77 включительно). Документ — внутренне непротиворечив: 8 первичных конфликтов закрыты в v1.0 + 5 патчей по реальным трениям A–E в v1.1 + 4 новых правила R10–R13 против перекрытий с другими плагинами в v1.2 + 6 уточняющих патчей F–K по найденным трениям второго порядка в v1.3 + 1 новое правило R14 (pipeline внешних UI-генераторов: UPM + 21st Magic MCP) в v1.4 (R15 motion-системы введены в v1.4 и удалены в v2.0) + 5 структурных правок аудита в v1.5 (R10.1 разбит на 3 блока, R0.4.A SoT cross-ref, R10.4/R14.7 tier-метки, R8 +тай-брейкер FD↔21st, R0.1 scope-метка) + 3 правки второго аудита в v1.6 (R0.4.A свёрнут до cross-ref на Pravila §12.3 SoT — устраняет дрейф формулировок; R0.6 hard-стопы пронумерованы 1–11 для надёжности cross-refs «пункт 9/10/11»; R0.1 +Tooling Прил. Н slot уровня 2b) + 1 правка третьего аудита в v1.7 (sync cross-refs на актуальные версии связанных документов после bump'ов CLAUDE.md v1.86 / Tooling v1.15; description-fix описки «уровня 2.5»→«уровня 2b» внутри changelog'а v1.6, сверка с фактическим R0.1) + 1 правка четвёртого аудита в v2.0 (12.05.2026 — снят R15 motion-runtime по решению заказчика; conscious rollback v1.4 audited construction; framer-motion переведён из regulatory hard-запрета в technical-guidance уровень: peerDep на react+react-dom, не работает в Vue физически). -**Принцип-аксиома (v1.2, уточнён в v1.3, расширен в v1.4):** **Stack (Superpowers + Frontend Design) — головной при решении любой задачи** в части плагинов и поведенческих слоёв. Stack-gate (R0) — единственная и **первая** точка входа. Все остальные плагины (ui-ux-pro-max, 21st Magic MCP, claude-md-management, review, security-review, init, simplify и др.) — **инструменты**, инвокируемые **внутри** stack-flow как подзадачи, не как альтернативы или параллельные решатели. Stack **исполняет** Pravila/CLAUDE.md, а не перебивает их (см. R0.1 для точного scope «головенства»). Другие плагины могут получить работу только по делегированию из stack'а или по явному `/имя-плагина` от пользователя. Runtime-зависимости проекта (motion-библиотеки и т.п.) подчиняются R15. +**Принцип-аксиома (v1.2, уточнён в v1.3, расширен в v1.4):** **Stack (Superpowers + Frontend Design) — головной при решении любой задачи** в части плагинов и поведенческих слоёв. Stack-gate (R0) — единственная и **первая** точка входа. Все остальные плагины (ui-ux-pro-max, 21st Magic MCP, claude-md-management, review, security-review, init, simplify и др.) — **инструменты**, инвокируемые **внутри** stack-flow как подзадачи, не как альтернативы или параллельные решатели. Stack **исполняет** Pravila/CLAUDE.md, а не перебивает их (см. R0.1 для точного scope «головенства»). Другие плагины могут получить работу только по делегированию из stack'а или по явному `/имя-плагина` от пользователя. **Связанные документы:** -- [CLAUDE.md](../CLAUDE.md) v1.86+ — оперативная карта; §1 priority chain, §3.3 строка #33, §5 п.5 ссылается на этот документ (расширенный пул UI-инструментов: FD + UPM + 21st), §5 п.11 cross-ref на Pravila §12.3 SoT, §5 п.12 — на R15 (motion-системы) -- [docs/Pravila_raboty_Claude_v1_1.md](Pravila_raboty_Claude_v1_1.md) v1.10+ — §12.3 SoT для exclusions, §13 «paired stack + расширенный пул UI-инструментов» + claude-md-management как off-pool, §13.6 hard-rule tier-таблица, §13.9/§13.10 hard-link на R10/R14 -- [docs/Tooling_v8_3.md](Tooling_v8_3.md) **v1.15+** — реестр инструментов; #30 Frontend Design + #31 UPM + #32 21st Magic MCP + #33 claude-md-management + §6 +5 конфликтов v1.4 + §7 7-уровневая иерархия (с v1.14 +Tooling explicit slot 2b) + §9.2 motion-runtime denylist отсылают сюда; §10.3 шаг 2 sync (14 skills) с v1.14 +- [CLAUDE.md](../CLAUDE.md) v1.88+ — оперативная карта; §1 priority chain, §3.3 строка #33, §5 п.5 ссылается на этот документ (расширенный пул UI-инструментов: FD + UPM + 21st), §5 п.11 cross-ref на Pravila §12.3 SoT, §5 п.12 — резерв (R15 motion-runtime снят в v2.0) +- [docs/Pravila_raboty_Claude_v1_1.md](Pravila_raboty_Claude_v1_1.md) v1.11+ — §12.3 SoT для exclusions, §13 «paired stack + расширенный пул UI-инструментов» + claude-md-management как off-pool, §13.6 hard-rule tier-таблица, §13.9/§13.10 hard-link на R10/R14 +- [docs/Tooling_v8_3.md](Tooling_v8_3.md) **v1.16+** — реестр инструментов; #30 Frontend Design + #31 UPM + #32 21st Magic MCP + #33 claude-md-management + §6 +5 конфликтов v1.4 (строка «framer-motion ↔ motion-v» — historical после v2.0) + §7 7-уровневая иерархия (с v1.14 +Tooling explicit slot 2b) + §9.2 motion-runtime guidance (technical-only после v1.16); §10.3 шаг 2 sync (14 skills) с v1.14 > **Техническая особенность Claude Code:** при первой установке Frontend Design plugin в долгой сессии плагин не появляется в системном списке доступных skills до старта **новой** сессии (новый чат, не reload). Это конструктивная особенность Claude Code (skill list = constant per conversation), не правило и не баг. Файлы плагина доступны на диске сразу, инвокация через `Skill` tool — только в новом чате. @@ -133,7 +133,7 @@ Stack стоит **ниже** в приоритете, чем: Тихий выбор без gate при низкой уверенности = нарушение даже в Auto mode. -**Hard-стоп даже в Auto mode** — обязательная остановка независимо от классификации, при любом из триггеров (нумерация введена в v1.6 для надёжности cross-refs «R0.6 пункт N»; при добавлении/удалении пункта — пересмотреть все ссылки в R8/R13/R14/R15): +**Hard-стоп даже в Auto mode** — обязательная остановка независимо от классификации, при любом из триггеров (нумерация введена в v1.6 для надёжности cross-refs «R0.6 пункт N»; при добавлении/удалении пункта — пересмотреть все ссылки в R8/R13/R14): 1. Впервые на этой сессии создаю компонент из брендового семейства (`AppButton`, `AppCard`, `AppDataTable`, `AppDialog` и т.п.) и в `resources/js/components/` ещё нет precedent'а того же типа. 2. Изменение структуры brand-токенов (`resources/js/plugins/vuetify.ts` palette config, font-family bindings, theme variants). @@ -145,8 +145,6 @@ Stack стоит **ниже** в приоритете, чем: 8. Изменение 14 OKLCH-статусов воронки или их slug-маппинга на UI. 9. **[v1.4]** Использование 21st Magic MCP (`mcp__magic__21st_magic_component_*`) для генерации компонента из брендового семейства App* (`AppButton`, `AppCard`, `AppDataTable`, `AppDialog` и любых других с префиксом `App` в `resources/js/components/`). Брендовые компоненты проходят полный R12 архитектурный flow. 10. **[v1.4]** Использование 21st для генерации компонента, для которого **уже есть Vuetify-эквивалент** (`v-data-table`, `v-text-field`, `v-dialog`, `v-select`, `v-card`, `v-btn` и т.д.) **или существующий компонент** в `resources/js/components/`. Это дублирование стека (нарушение CLAUDE.md §5 п.6 «не два инструмента на одну задачу»). -11. **[v1.4]** Установка **motion-v** или любой другой animation runtime библиотеки (`gsap`, `anime.js`, `react-spring`, `lottie-web`, `popmotion`, `@motionone/*` и т.д.) в `package.json` без прохождения R15.2 (а)+(б)+(в)+(г). - В этих ситуациях — обязательный стоп + вопрос пользователю, без попытки «middle confidence» обойти. Auto mode не отменяет hard-стоп. --- @@ -350,9 +348,6 @@ TDD применяется **только к фазе 4** (логика). На | **[v1.5]** Хочется использовать **FD параллельно с 21st** на одной задаче | R14.4 implicit + R10.2: 21st вызывается **внутри** фазы 5 R2 как **подзадача FD**, не параллельно. FD — ведущий (решатель), 21st — генератор черновика. Параллельный запуск нарушает R10.2 «внешние плагины — read-only для решений» | | **[v1.4]** UPM-палитра «выглядит лучше» Forest | R11.3 запрет инверсии иерархии + R6.1 hard-override. Forest — закон, не предложение | | **[v1.4]** 21st сгенерировал готовый JSX-компонент с Tailwind, можно ли просто импортировать | **нет**, R14.4 требует полный pipeline: R6.0 → R6.1 → FD → возврат | -| **[v1.4]** «Поставим motion-v, у нас в Vuetify не хватает spring-physics» | без письменного кейса из ТЗ + категории (б) + Brandbook approval (в) + R12 flow (г) — R15.2 не удовлетворён, hard-стоп R0.6 пункт 11 | -| **[v1.4]** «Поставим framer-motion, у других проектов работает» | R15.1 hard-запрет. React-only физически. Не отменяется live-командой | -| **[v1.4]** Для анимации список задача — какой слой? | R11.6: 1 (Vue native ``) → 2 (Vuetify) → 3 (CSS) → 4 (View Transitions). На уровне 1 уже закрывается типичный case | --- @@ -520,32 +515,6 @@ Stack — **головной**. Все плагины вне stack'а — **ин Ограничение: даже в этом случае конечное решение принимается через **уровни 1–2** (Brandbook + ТЗ); UPM остаётся **материалом**, не решением (R10.2). UPM не может «выиграть» против Brandbook через факт «вариант UPM красивее» — иерархия R11 остаётся законом (R11.3). -### 11.6. Иерархия motion-источников (внутри уровня визуального дизайна, v1.4) - -Параллельная под-иерархия для motion (анимаций / transition'ов / gesture'ов). Применяется при ЛЮБОЙ задаче на анимацию — последовательно сверху вниз; решение принимается на первом уровне, который покрывает кейс: - -``` -1. BRANDBOOK (motion-tokens, если/когда добавятся в v3+) - ↓ -2. ТЗ v8.5 / Открытые_вопросы (явные motion-требования) - ↓ -3. Vue 3 native + - ↓ -4. Vuetify 3 transitions - (v-fade, v-slide-y, v-slide-x, v-scale, v-expand, v-dialog-transition) - ↓ -5. CSS @keyframes + transition + prefers-reduced-motion - ↓ -6. View Transitions API (с feature-detection, Chrome 111+ / Safari 18+) - ↓ -7. motion-v (Vue port framer-motion) — ТОЛЬКО при удовлетворении R15.2 (а)+(б)+(в)+(г) -``` - -**framer-motion — вне иерархии** (запрещён R15.1 — React-only). -**gsap / anime.js / react-spring / lottie-web** — также вне иерархии без явного R15-аналога активации (R0.6 пункт 11 hard-стоп). - -Большинство motion-задач закрываются на уровнях 3–4 без вынесения в R12 архитектурное решение. Уровни 5–6 — для произвольных кастомных анимаций. Уровень 7 — последняя инстанция, требует R15-flow. - --- ## Правило 12 — три паттерна дизайн-решений по типу решения @@ -606,11 +575,6 @@ Stack — **головной**. Все плагины вне stack'а — **ин | **[v1.4]** UI-фича из ТЗ, паттерн **есть в Vuetify** | высокая | **используем Vuetify**, 21st **не вызывается** (R0.6 пункт 10 hard-стоп) | | **[v1.4]** UI-фича из ТЗ, паттерн = **брендовый компонент App*** | низкая | **hard-стоп R0.6 пункт 9** + 3 варианта по §4.5 (R12 архитектурное), 21st не вызывается | | **[v1.4]** Архитектурное решение R12, FD дал 1–2 варианта, нужен третий | средняя | **действую**, фаза 1 R2 → подключить UPM (R11.5) для третьего варианта | -| **[v1.4]** Анимация на экране, простая (fade/slide/scale/expand) | высокая | **действую**, использую Vuetify transition или Vue `` (R11.6 уровни 3–4) | -| **[v1.4]** Анимация средней сложности (custom keyframes, hover-state с timing) | высокая | **действую**, использую CSS `@keyframes` (R11.6 уровень 5) | -| **[v1.4]** Cross-route transition (hero-transition при переходе между экранами) | средняя | **фиксирую предположение**: «использую View Transitions API с fallback на Vue `` для не-Chromium»; если кейс требует motion-v → R15.2 | -| **[v1.4]** Запрос «давай добавим framer-motion / motion-v / gsap / lottie» **без явного кейса** | низкая | **hard-стоп R0.6 пункт 11** + R15.2 формальная проверка триггеров; нельзя действовать в Auto mode | -| **[v1.4]** Кейс из ТЗ требует gesture с физикой (drag с инерцией, swipe с pinch) | средняя | **действую**, R15.2 запускает brainstorming + 3 варианта (motion-v vs vanilla pointer events vs CSS scroll-snap); презентую таблицу | ### 13.1. Принципы matrix'а @@ -740,95 +704,16 @@ Pipeline активируется при одновременном выполн --- -## Правило 15 — Motion-системы (animation libraries, v1.4) - -**Назначение:** двухуровневое решение по runtime-библиотекам анимаций. Уровень 1 — постоянный hard-запрет архитектурно несовместимых. Уровень 2 — узкое легальное окно для совместимых при выполнении 4 условий. - -### 15.1. framer-motion — запрещено всегда (hard-запрет) - -`framer-motion` — React-only runtime библиотека (использует React fiber-tree, hooks, JSX). В Vue + Vuetify стеке физически не работает. Установка через npm бессмысленна — мёртвый код в `node_modules`. - -Hard-запрет, **не отменяется** ни Auto mode, ни live-командой пользователя уровня R0.4.B. Единственный путь снятия — **смена базового frontend-стека** (изменение CLAUDE.md §2), что само по себе — R0.6 hard-стоп «изменение технологии в стек» с brainstorming + 3 варианта §4.5 + явное согласование Brandbook update. - -### 15.2. motion-v — условно разрешено по 4 условиям триггера - -`motion-v` = Vue 3 порт API framer-motion (отдельный пакет от того же maintainer'а Motion, ~30 KB gzipped). Технически совместим со стеком, но добавление в проект — R0.6 hard-стоп «новая технология в стек» (пункт 11 v1.4). - -Активация motion-v разрешена **ТОЛЬКО при одновременном выполнении ВСЕХ четырёх условий**: - -**(а) Письменный кейс.** Конкретный UX-кейс из ТЗ v8.5 ИЛИ из Открытые_вопросы_*.md (закрытый пользователем), который НЕ покрывается дефолтной motion-стойкой R11.6 уровни 3–6. Без явного кейса в письменном источнике — **нельзя**, даже если задача кажется подходящей. - -**(б) Категория оправданности.** Кейс попадает в одну из категорий, где motion-v реально оправдан: - -- gesture-driven UI с физикой (drag с инерцией, swipe, pinch); -- shared-layout transitions между route'ами (hero-transition); -- spring-physics на интерактивных контролах (где CSS-easings демонстративно недостаточно). - -Все остальные категории (fade, slide, scale, expand, hover, простые route-transitions) — **уровни 3–4 R11.6** их закрывают, motion-v избыточен. - -**(в) Brandbook approval.** Brandbook v2 (или последующий) явно допускает motion-rich направление для затронутого экрана. По умолчанию Forest = restrained (R6.1) — любое отклонение требует **Brandbook-update пользователем** (новая запись в [BRANDBOOK_v2 §X](../liderra_v8_handoff/docs/BRANDBOOK_v2.md) о motion-направлении или явное изменение R6.1 hard-override). - -**(г) Полный R12 архитектурный flow.** Прохождение: - -- `brainstorming` (Superpowers) — фаза 1; -- 3 варианта решения (Pravila §4.5): «motion-v vs CSS @keyframes vs View Transitions API» с честной сравнительной таблицей (bundle size / поддержка браузеров / совместимость с SSR / кривая обучения / Forest-совместимость); -- явное согласование пользователем («делай», «вариант X»). - -### 15.3. Default motion stack (без motion-v) — действует всегда по умолчанию - -При ЛЮБОЙ задаче на анимацию — сначала пробуем эти слои в порядке (по R11.6): - -1. Vue 3 native `` / `` (enter/leave hooks, FLIP через TransitionGroup, JS-callbacks); -2. Vuetify 3 transitions (`v-fade-transition`, `v-slide-y-transition`, `v-slide-x-transition`, `v-scale-transition`, `v-expand-transition`, `v-dialog-transition`); -3. CSS `@keyframes` + `transition` + поддержка `prefers-reduced-motion` (произвольные анимации, GPU-acceleration через `transform`/`opacity`); -4. View Transitions API (Chrome 111+, Safari 18+) — для cross-document / cross-route переходов с feature-detection. - -Эти четыре слоя — источники истины для motion (R11.6 уровни 3–6). **Большинство задач закрываются на уровне 1 или 2**, без motion-v и без View Transitions. - -### 15.4. Триггер «дефолт не покрывает» — формальная проверка - -Прежде чем поднимать вопрос motion-v, требуется **явная фиксация одной строкой**: - -> «Попробовал слои 1–4 R11.6 (R15.3). Не закрывает потому что [конкретная техническая причина]. Поднимаю R15.2 для активации motion-v.» - -Без этой фиксации R15.2 (а)+(б) **не считаются удовлетворёнными**. - -**Типичные ложные триггеры (НЕ повод для motion-v):** - -- «хочется живее» — субъективно, не кейс; -- «в дизайне у других CRM это есть» — не источник истины; -- «framer-motion смотрится круто» — Forest = restrained (R6.1); -- «спросил пользователя — он сказал давай» — устной просьбы недостаточно, нужен письменный кейс (а). - -### 15.5. Hard-запрет дублирования - -После активации motion-v (если когда-либо) — Vuetify transitions и Vue native `` **не удаляются** из проекта. motion-v применяется **ТОЛЬКО к экранам/компонентам, прошедшим R15.2**; всё остальное продолжает работать на дефолтной стойке R15.3. Это снимает риск ad-hoc «давайте перепишем всё на motion». - -### 15.6. Live-override - -- **framer-motion:** live-override **запрещён** (R15.1 hard). -- **motion-v:** live-override **запрещён без прохождения R15.2** — пользователь может сказать «через motion-v», но это всё равно проходит через brainstorming + 3 варианта (R15.2 пункт г). - -Это исключение из общего R0.4.B — обоснование: установка runtime-зависимости ≠ инвокация плагина, у неё другой класс последствий (bundle size, CI, lock-file, browser compat). - -### 15.7. Аналогичные правила для других animation runtime библиотек - -`gsap`, `anime.js`, `react-spring` (React-only), `lottie-web`, `popmotion`, `@motionone/dom` и любые другие animation runtime библиотеки — попадают под **R0.6 пункт 11 hard-стоп**. Активация — по аналогии с R15.2 (4 условия + R12 flow). - -`react-spring` дополнительно — **R15.1 аналог** (React-only, физически не работает в Vue стеке). - ---- - ## Финальная формула -> **Любая задача → Правило 0 (gate, stack-головной) → Правило 1 (классификация по типу) → Правило 9 (решение, ≤2 итерации) → Правило 13 (decision matrix по уверенности) → Правило 2 (фаза UI-фичи) → исполнение по Правилам 3, 4, 6 → если нужен внешний UI-генератор: Правило 14 pipeline (UPM на фазах 1/2, 21st на фазе 5) → если нужна анимация: Правило 15 (default стойка R15.3, motion-v только по 4 условиям R15.2) → завершение по Правилу 7 → ревью по Правилу 5. Источники истины — Правило 11 (UI/UX) + R11.6 (motion). Паттерны решений — Правило 12. Координация с не-stack плагинами — Правило 10. Тай-брейкеры — Правило 8.** +> **Любая задача → Правило 0 (gate, stack-головной) → Правило 1 (классификация по типу) → Правило 9 (решение, ≤2 итерации) → Правило 13 (decision matrix по уверенности) → Правило 2 (фаза UI-фичи) → исполнение по Правилам 3, 4, 6 → если нужен внешний UI-генератор: Правило 14 pipeline (UPM на фазах 1/2, 21st на фазе 5) → завершение по Правилу 7 → ревью по Правилу 5. Источники истины — Правило 11 (UI/UX). Паттерны решений — Правило 12. Координация с не-stack плагинами — Правило 10. Тай-брейкеры — Правило 8.** --- ## Свойства свода -- **Полнота:** каждая задача попадает в одну ветку Правила 1, каждая фаза имеет одного владельца (Правило 2), каждый артефакт ревью — один аспект (Правило 5), каждый тип закрытия — один gate (Правило 7), каждое дизайн-решение — один паттерн (Правило 12), каждая комбинация Auto+§12+R0.6 — одна строка matrix'а (Правило 13), каждый внешний UI-генератор имеет одно место в pipeline (Правило 14), каждая motion-задача — один слой R11.6 (Правило 15). -- **Головенство stack'а (v1.2 принцип-аксиома, расширена в v1.4):** stack — головной при решении любой задачи. Внешние плагины (включая UPM и 21st Magic MCP) — инструменты, инвокируемые внутри stack-flow (Правило 10) через pipeline R14. Иерархия источников UI — закон, не гайдлайн (Правило 11). Runtime-зависимости (motion) подчиняются R15. +- **Полнота:** каждая задача попадает в одну ветку Правила 1, каждая фаза имеет одного владельца (Правило 2), каждый артефакт ревью — один аспект (Правило 5), каждый тип закрытия — один gate (Правило 7), каждое дизайн-решение — один паттерн (Правило 12), каждая комбинация Auto+§12+R0.6 — одна строка matrix'а (Правило 13), каждый внешний UI-генератор имеет одно место в pipeline (Правило 14). +- **Головенство stack'а (v1.2 принцип-аксиома, расширена в v1.4):** stack — головной при решении любой задачи. Внешние плагины (включая UPM и 21st Magic MCP) — инструменты, инвокируемые внутри stack-flow (Правило 10) через pipeline R14. Иерархия источников UI — закон, не гайдлайн (Правило 11). Runtime-зависимости (motion-библиотеки и т.п.) — вне регулирования PSR_v1 с v2.0 (см. CLAUDE.md §2 «Animation default stack» — рекомендация, не hard-rule). - **Непротиворечивость:** все найденные конфликты закрыты: - **v1.0 (8 первичных):** 1. «Активны» → «подключены к gate» (0.1). @@ -843,6 +728,7 @@ Hard-запрет, **не отменяется** ни Auto mode, ни live-ко - **v1.2 (4 проектных перекрытия):** ui-ux-pro-max + другие плагины как tools (R10), иерархия источников истины UI (R11), три паттерна дизайн-решений (R12), decision matrix Auto/§12/R0.6 (R13). - **v1.3 (6 трений второго порядка F–K):** R12 override через `brainstorming` (F); R12 тактическое разделено на «с альтернативами»/«без» для user-стиля «а/б» (G); R13 новая фича вне ТЗ — hard-стоп вместо предположения (H); R11.4 fallback при недоступности уровней источников (I); R10.4 смягчение + hard-link в Pravila §13.9 (J); R0.1 уточнение scope «головенства» через таблицу priority chain (K). - **v1.4 (формализация UPM + 21st Magic MCP + motion-системы):** R6 расширен на FD/UPM/21st (универсальная таблица 6.0); R6.1 hard-override Forest расширен на все три плагина; R10.1 +1 строка для 21st + ослабление UPM до v1.4 двух-триггера (FD молчит ИЛИ R12 третий вариант); R11.5 активация UPM в R12; R11.6 параллельная иерархия motion-источников (7 уровней); R0.6 +3 hard-стопа (брендовый App* через 21st, Vuetify-эквивалент через 21st, motion-v без R15.2); R13 +9 строк matrix'а; R14 новое правило (pipeline UPM + 21st с R14.3/R14.4 + R14.7 hard-link на §13 Pravila); R15 новое правило (R15.1 framer-motion hard-запрет, R15.2 motion-v 4 условия (а)+(б)+(в)+(г), R15.3 default стойка, R15.4 формальная проверка триггера, R15.5 hard-запрет дублирования, R15.6 live-override запрет, R15.7 расширение на gsap/anime/lottie); R8 +7 тай-брейкеров; финальная формула расширена. + - **v2.0 (снятие R15):** R15 motion-системы (R15.1–R15.7) удалены полностью; R0.6 п.11 удалён; R8 motion тай-брейкеры удалены; R11.6 motion иерархия удалена; R13 motion-сценарии удалены. Default motion stack перенесён в CLAUDE.md §2 как guidance, не hard-rule. framer-motion — technical block (peerDep react+react-dom), не regulatory rule. Conscious rollback v1.4 audited construction по решению заказчика 12.05.2026; через `/superpowers:brainstorming` → 3 варианта → выбор B (полная отмена R15) → `superpowers:writing-plans` → `/claude-md-management:claude-md-improver`. - **Действенность:** решение — за 3 вопроса (Правило 9) + matrix Правила 13; если не сработало — явный fallback на пользователя (0.6). - **Симметрия:** оба плагина stack'а имеют равные права на закрытие задач в своём домене (7), на ревью в своём аспекте (5), на отмену через live-команду (0.4.B). **Асимметрия** введена только между stack'ом и не-stack плагинами: stack головной, остальные — инструменты (R10/R14). Внутри пула «инструменты» — UPM и 21st имеют разные роли (UPM = библиотека принципов; 21st = генератор кода) и разные точки активации в pipeline (R14.3 фазы 1/2 vs R14.4 фаза 5). @@ -850,6 +736,30 @@ Hard-запрет, **не отменяется** ни Auto mode, ни live-ко ## История версий +- **v2.0 от 12.05.2026** — major bump: removal of R15 motion-runtime restrictions per user decision. Conscious rollback of v1.4 audited construction (10.05.2026, R15 двухуровневая motion + R0.6 п.11 + R8 motion-tie-breakers + R11.6 motion-иерархия + R13 motion-сценарии). + + **Удалено:** + - Правило 15 целиком (R15.1 framer-motion hard-запрет / R15.2 motion-v 4 условия / R15.3 default стойка / R15.4 формальная проверка / R15.5 hard-запрет дублирования / R15.6 live-override / R15.7 расширение на gsap/anime/lottie/popmotion). + - R0.6 пункт 11 (animation runtime hard-стоп). + - R8 три тай-брейкера motion (motion-v, framer-motion, motion-слой R11.6). + - R11.6 параллельная иерархия 7 motion-источников. + - R13 пять строк motion-сценариев decision matrix. + - Финальная формула — фраза «если нужна анимация: Правило 15...» + «+ R11.6 (motion)». + - Свойства свода — фраза «каждая motion-задача — один слой R11.6 (Правило 15)» + «Runtime-зависимости (motion) подчиняются R15». + + **Изменено:** + - Шапка count: «16 правил R0–R15» → «15 правил R0–R14». + - Cross-refs шапки: CLAUDE.md v1.86+ → v1.88+; Pravila v1.10+ → v1.11+; Tooling v1.15+ → v1.16+. + - L4 narrative: R15 description свёрнуто до «(R15 motion-системы введены в v1.4 и удалены в v2.0)»; добавлена v2.0 клауза. + - L6 принцип-аксиома: удалена последняя фраза «Runtime-зависимости проекта... подчиняются R15». + - L10 cross-ref CLAUDE.md §5 п.12: «на R15» → «резерв (R15 motion-runtime снят в v2.0)». + + **НЕ затронуто:** R0–R14 целиком (стек-фильтр R6.0/R6.1, paired-stack R10, иерархия источников R11.1–R11.5, decision matrix R12/R13, UI-pipeline R14 — все в силе). Pravila §12 hard rule Superpowers инвокации — без изменений. CLAUDE.md §5 п.10 правки через claude-md-management — без изменений. + + **Rationale:** заказчик 12.05.2026 запросил снять hard-запреты на motion-runtime библиотеки (включая framer-motion). Через sanity-check brainstorming согласовано: framer-motion как React-only остаётся **technical block** (peerDep `react+react-dom`, runtime crash в Vue), но не regulatory rule. Остальные motion-runtime (motion-v, gsap, anime.js, lottie-web, popmotion, @motionone/dom) — безусловно разрешены. Default motion stack (Vue native + Vuetify + CSS + View Transitions) — переводится в CLAUDE.md §2 как guidance, не hard-rule. + + Связанные обновления: CLAUDE.md v1.87 → v1.88, Pravila v1.10 → v1.11, Tooling v1.15 → v1.16, CHANGELOG_claude_md.md + MEMORY sync. Через `/claude-md-management:claude-md-improver` (для CLAUDE.md) + ручные Edit (для PSR_v1, Tooling, Pravila). + - **v1.7 от 10.05.2026 (поздний вечер)** — закрытие 5 находок третьего аудита правил использования плагинов и скилов («Все 13 находок (P0+P1+P2)»). Сам PSR_v1 — sync-уровень + одна description-правка: - **Шапка cross-refs приведена к актуальным версиям связанных документов** после bump'ов CLAUDE.md v1.85 → v1.86 и Tooling v1.14 → v1.15: «CLAUDE.md v1.84+» → «v1.86+», «Pravila v1.9+» → «v1.10+», «Tooling v1.14+» → «v1.15+». «+»-нотация сохранена (forward-compat). Закрывает audit P1-01/02 (PSR_v1). - **Описка в шапке v1.6 changelog'а исправлена:** «slot уровня 2.5» → «slot уровня 2b». Фактическое R0.1 (line 33 этого файла) всегда содержало «уровень 2b»; шапка v1.6 описывала ту же правку, но с опечаткой «2.5», создавая иллюзию ещё одного уровня. Закрывает третий-audit P2-01. diff --git a/docs/Pravila_raboty_Claude_v1_1.md b/docs/Pravila_raboty_Claude_v1_1.md index d01d3496..1950053b 100644 --- a/docs/Pravila_raboty_Claude_v1_1.md +++ b/docs/Pravila_raboty_Claude_v1_1.md @@ -1,10 +1,20 @@ # Правила работы Claude в проекте «Лидерра» -**Версия:** v1.10 (утверждена заказчиком 10.05.2026 вечер) -**Дата:** 10.05.2026 +**Версия:** v1.11 (утверждена заказчиком 12.05.2026) +**Дата:** 12.05.2026 **Назначение:** настройки проекта (Project instructions) — Claude читает этот файл в каждом чате и следует правилам ниже. **Статус документа:** ✅ утверждён. Содержимое скопировано в поле "Project instructions" Claude.ai. Файл хранится в архиве как служебный документ. +**Что изменилось в v1.11 относительно v1.10:** + +- **§11.5 счётчик правил PSR_v1:** «v1.6, 16 правил R0–R15» → «v2.0, 15 правил R0–R14». R15 motion-системы удалены в PSR_v1 v2.0 (12.05.2026, conscious rollback v1.4 audited construction; framer-motion переведён из regulatory hard-запрета в technical-only guidance). +- **§13.2 счётчик:** «v1.6 (16 правил R0–R15)» → «v2.0 (15 правил R0–R14)». +- **§13.9 cross-ref на PSR_v1:** «(v1.6)» → «(v2.0)». +- **§13.10 cross-ref на PSR_v1:** «(v1.6)» → «(v2.0)». **§13.10 НЕ удалено** — оно про hard-link на R14 (UPM/21st pipeline), не на R15. Содержание §13.10 сохраняется без изменений; меняется только версия cross-ref'а. +- **§13.6 tier-таблица** — без изменений (R10/R14 hard-links остаются актуальны; снятие R15 их не задевает). +- **Связано:** PSR_v1 v1.7 → v2.0 (R15 удалено целиком), CLAUDE.md v1.87 → v1.88 (§5 п.12 → резерв-маркер), Tooling v1.15 → v1.16 (§9.2 reformulated в technical guidance). +- Без других содержательных изменений в §§1–12 + §§13.1–13.8. + **Что изменилось в v1.10 относительно v1.9:** - **§0 расширен:** добавлен note про **§11 override-приоритет** над §2.2/§4.5/§8.4. Раньше §11 формально стоял ниже §9 в цепочке (§12 → §1 → ... → §9 → §11 → §13), но в теле §11 чётко написано «при явном вызове skill'а — приоритет над §2.2/§4.5/§8.4». Цепочка не объясняла локальное исключение. Теперь явно зафиксировано. Закрывает audit P2-03 («§11 ниже §9 vs §11 override §2.2/§4.5/§8.4»). @@ -492,6 +502,7 @@ P0 = блокер старта спринта или регуляторного | **v1.8** | **10.05.2026** | **Утверждена заказчиком 10.05.2026** («двух уровневый» — выбор подхода для R15 motion-системы; финальное согласование PSR_v1 v1.4). §13 расширен: paired-stack ядро (Superpowers + Frontend Design) дополнено расширенным пулом UI-инструментов — `ui-ux-pro-max` skill (резерв-библиотека, R10/R11.5) и `21st.dev Magic MCP` (генератор шаблонов, R14.4). Координация — через PSR_v1 v1.4 (R14 pipeline UI-генераторов + R15 motion-системы). §13.9 cross-ref bumped (v1.3 → v1.4). §13.10 (новый) — hard-link на R14: использование UPM или 21st вне pipeline'а = нарушение §13 (вторая hard-link строка после §13.9). Архитектурных изменений в §§1–12 + §§13.1–13.8: 0. | | **v1.9** | **10.05.2026** | **Утверждена заказчиком 10.05.2026** («исправь все ошибки только обязательно руководствуйся тем что ты должен сохранить максимальную эффективность и всеобъемливоющие использование всех плагинов и скилов»). Закрытие 14 находок аудита нормативной документации: §12.3 объявлен SoT для exclusions §12 (раньше дублировался в CLAUDE.md §5 п.11 и PSR_v1 R0.4.A); §13.2 +абзац про инфраструктурные плагины (claude-md-management + built-in skills вне UI-пула); §13.6 +hard-rule tier-таблица (explicit / transitive / standard); §0 +scope-метка цепочки. Связанные обновления — PSR_v1 v1.4 → v1.5 (R10.1 разбит на 3 блока + R0.4.A SoT + R10.4/R14.7 tier-метки + R8 +тай-брейкер FD↔21st + R0.1 scope), Tooling Прил. Н v1.12 → v1.13 (§7 +PSR_v1, §4.7 +#33, §6 +5 конфликтов, §4.6 settings → .claude.json), CLAUDE.md v1.83 → v1.84 (§1 scope, §3.3 +#33, §5 п.5 свёрнут, §5 п.11 cross-ref на §12.3 SoT, §6 счётчик 33). Архитектурных изменений в §§1–11: 0. | | **v1.10** | **10.05.2026 (вечер)** | **Утверждена заказчиком 10.05.2026 вечер** («Все 15 находок (P0+P1+P2)» в ответ на quality report по второму аудиту правил использования плагинов и скилов). Закрытие 4 находок в Pravila (P0-03 + P1-04/06/07 + P2-03): **§0** +note про §11 локальное override-исключение над §2.2/§4.5/§8.4 (раньше §11 формально стоял ниже §9 в цепочке, но фактически override §2.2/§4.5/§8.4 при skill-инвокации; цепочка не объясняла локальное исключение); **§11.5** «10 правил» → «v1.6, 16 правил R0–R15» (раньше count устарел с v1.0/v1.1 эпохи); **§13.2** «v1.4 (15 правил)» → «v1.6 (16 правил)»; **§13.9** PSR_v1 (v1.4) → (v1.6); **§13.10** PSR_v1 (v1.4) → (v1.6). Связанные обновления — CLAUDE.md v1.84 → v1.85 (§6 арифметика «33» исправлена +1 historic PG MCP; §3.3 #31/#32 + §5 п.12 stale v1.4→v1.6 + v1.12→v1.14; §1 +Tooling Прил. Н explicit-слот уровня 2b), PSR_v1 v1.5 → v1.6 (R0.4.A свёрнут до cross-ref на §12.3 SoT; R0.6 пронумерован 1–11; R0.1 +Tooling slot), Tooling v1.13 → v1.14 (§10.3 шаг 2 «3 skills»→«14»; §13 +v1.13 +v1.14; §7 +Tooling explicit slot). Через `/claude-md-management:claude-md-improver`. Архитектурных изменений в §§1–13 (кроме §0/§11.5/§13.2/§13.9/§13.10): 0. | +| **v1.11** | **12.05.2026** | **Утверждена заказчиком 12.05.2026** («сними все запреты на использование framer motion» → через `superpowers:brainstorming` → 3 варианта → выбран B полная отмена R15). Sync-уровень после PSR_v1 v1.7 → v2.0 (R15 motion-системы удалены целиком): **§11.5** «v1.6, 16 правил R0–R15» → «v2.0, 15 правил R0–R14»; **§13.2** «v1.6 (16 правил R0–R15)» → «v2.0 (15 правил R0–R14)»; **§13.9** PSR_v1 (v1.6) → (v2.0); **§13.10** PSR_v1 (v1.6) → (v2.0), **содержание §13.10 сохранено** — оно про hard-link на R14 (UPM/21st pipeline), не на R15. Связанные обновления — PSR_v1 v1.7 → v2.0 (R15 целиком + R0.6 п.11 + R8 motion + R11.6 + R13 motion сценарии удалены; framer-motion переведён из regulatory hard-запрета в technical block — это peerDep react+react-dom, не работает в Vue физически), CLAUDE.md v1.87 → v1.88 (§5 п.12 → резерв-маркер; §2 Animation default stack → guidance, не hard-rule), Tooling v1.15 → v1.16 (§9.2 reformulated в technical guidance). Conscious rollback v1.4 audited construction (10.05.2026, R15 двухуровневая motion-конструкция). Через `superpowers:brainstorming` → `superpowers:writing-plans` → `superpowers:executing-plans` + `/claude-md-management:claude-md-improver` + ручные Edit. Архитектурных изменений в §§1–13 (кроме §11.5/§13.2/§13.9/§13.10 sync): 0. | --- @@ -524,7 +535,7 @@ P0 = блокер старта спринта или регуляторного ### 11.5. Координация с Frontend Design plugin -С v1.5 (09.05.2026) Superpowers — часть paired stack'а с `anthropics/frontend-design` (см. §13). Координация двух плагинов — через [docs/Plugin_stack_rules_v1.md](Plugin_stack_rules_v1.md) (v1.6, **16 правил R0–R15**). На UI-фичах оба плагина работают по фазам Правила 2 Plugin_stack_rules_v1; на чисто процессных задачах Frontend Design не активируется. +С v1.5 (09.05.2026) Superpowers — часть paired stack'а с `anthropics/frontend-design` (см. §13). Координация двух плагинов — через [docs/Plugin_stack_rules_v1.md](Plugin_stack_rules_v1.md) (v2.0, **15 правил R0–R14**). На UI-фичах оба плагина работают по фазам Правила 2 Plugin_stack_rules_v1; на чисто процессных задачах Frontend Design не активируется. --- @@ -607,7 +618,7 @@ P0 = блокер старта спринта или регуляторного ### 13.2. Парность со Superpowers + расширенный пул UI-инструментов (v1.8) -Frontend Design и `obra/superpowers` (v5.1.0, 14 skills) — **парный stack одного приоритетного уровня**. Оба плагина подключены к gate stack'а одновременно, между ними нет иерархии. Координация — через [docs/Plugin_stack_rules_v1.md](Plugin_stack_rules_v1.md) **v1.6 (16 правил R0–R15)**. +Frontend Design и `obra/superpowers` (v5.1.0, 14 skills) — **парный stack одного приоритетного уровня**. Оба плагина подключены к gate stack'а одновременно, между ними нет иерархии. Координация — через [docs/Plugin_stack_rules_v1.md](Plugin_stack_rules_v1.md) **v2.0 (15 правил R0–R14)**. **Расширенный пул UI-инструментов (v1.8)** добавляет к paired-stack ядру два внешних плагина в роли **инструментов** (R10.1 PSR_v1, не решателей): @@ -672,7 +683,7 @@ Frontend Design покрывает **a11y-принципы** (контраст, ### 13.9. Hard-link на R10 PSR_v1 — байпас stack-gate -**Нарушение Правила 10 [Plugin_stack_rules_v1.md](Plugin_stack_rules_v1.md) (v1.6)** (введено в PSR v1.2; формализовано через hard-link в Pravila v1.6, версия ссылки уточнена в Pravila v1.7, обновлена в Pravila v1.8/v1.10): +**Нарушение Правила 10 [Plugin_stack_rules_v1.md](Plugin_stack_rules_v1.md) (v2.0)** (введено в PSR v1.2; формализовано через hard-link в Pravila v1.6, версия ссылки уточнена в Pravila v1.7, обновлена в Pravila v1.8/v1.10/v1.11): Прямой `Skill` tool на не-stack плагин (ui-ux-pro-max, claude-md-management, review, security-review, init, simplify и т.д.) **до прохождения R0 stack-gate**, без явной live-команды `/имя-плагина` от пользователя (R0.4.B PSR_v1) и вне технических исключений R0.4.A PSR_v1 (read-only исследование, тривиальные синки, справочные ответы) = **нарушение §13 этого документа**. @@ -686,7 +697,7 @@ Frontend Design покрывает **a11y-принципы** (контраст, ### 13.10. Hard-link на R14 PSR_v1 — байпас pipeline'а внешних UI-генераторов (v1.8) -**Нарушение Правила 14 [Plugin_stack_rules_v1.md](Plugin_stack_rules_v1.md) (v1.6)** (введено в PSR v1.4 одновременно с формализацией UPM + 21st Magic MCP в `~/.claude/settings.json` и `~/.claude.json`; версия cross-ref'а обновлена до v1.6 в Pravila v1.10). +**Нарушение Правила 14 [Plugin_stack_rules_v1.md](Plugin_stack_rules_v1.md) (v2.0)** (введено в PSR v1.4 одновременно с формализацией UPM + 21st Magic MCP в `~/.claude/settings.json` и `~/.claude.json`; версия cross-ref'а обновлена до v1.6 в Pravila v1.10, до v2.0 в Pravila v1.11). Использование `ui-ux-pro-max` или `21st.dev Magic MCP` (`mcp__magic__21st_magic_component_*`, `mcp__magic__logo_search`) **вне pipeline'а R14** = нарушение §13 этого документа. diff --git a/docs/Tooling_v8_3.md b/docs/Tooling_v8_3.md index 46ccb986..2f4e5984 100644 --- a/docs/Tooling_v8_3.md +++ b/docs/Tooling_v8_3.md @@ -1,18 +1,27 @@ # Приложение Н — Tooling, скиллы и плагины Claude (v8.3) -**Дата:** 10.05.2026 (поздний вечер) -**Версия:** 1.15 (закрытие 4 находок третьего аудита правил использования плагинов и скилов в части, касающейся Tooling: **P1-03/04/05 — sync cross-refs шапки** на актуальные версии связанных документов после bump'ов CLAUDE.md v1.85 → v1.86 и PSR_v1 v1.6 → v1.7 («Pravila v1.9+»→«v1.10+», «PSR_v1 v1.5+»→«v1.7+», «CLAUDE.md v1.84+»→«v1.86+»; «+»-нотация сохранена как forward-compat); **§11.5/§12 — формулировка «28 инструментов» → «33 формализованных позиции»** (исторически фраза «28» оставалась в DevOps-разделе с эпохи v1.0, но смысловое назначение фразы — «реестр Лидерры», который теперь имеет 33 формализованных позиции; §13 история версий и changelog'и сохранены без правки — это снимки эпох и часть истории). Координация — PSR_v1 v1.6 → v1.7 + CLAUDE.md v1.85 → v1.86. Pravila v1.10 — без правок. Через `/claude-md-management:claude-md-improver`.) -**Предыдущая версия:** 1.14 (закрытие 3 находок второго аудита: §10.3 шаг 2 sync с §4.1, §13 +v1.13 +v1.14 entries, §7 priority chain +Tooling explicit slot 2b). +**Дата:** 12.05.2026 +**Версия:** 1.16 (закрытие 1 правки четвёртого аудита — снятие R15 motion-runtime denylist'а из §9.2 синхронно с PSR_v1 v1.7 → v2.0 + CLAUDE.md v1.87 → v1.88 + Pravila v1.10 → v1.11. Заказчик 12.05.2026: «сними все запреты на использование framer motion». Через `/claude-md-management:claude-md-improver` + ручные Edit.) +**Предыдущая версия:** 1.15 (закрытие 4 находок третьего аудита: sync cross-refs шапки после bump'ов CLAUDE.md v1.85 → v1.86 и PSR_v1 v1.6 → v1.7, формулировка «28 инструментов» → «33 формализованных позиции»). **Адресат:** Claude + разработчики проекта Лидерра **Назначение:** единый источник истины по 33 формализованным позициям тулчейна (29 «активных» номеров фаз + 3 off-phase инструмента-резерв в категориях UI-пул и инфраструктура — UPM, 21st, claude-md-management; +1 заменённый PG MCP исторически), скиллам Claude Code, MCP-серверам и плагинам, используемым в проекте. Зафиксирован выбор, объяснено, что заменяет что, и в какой фазе вводится каждый инструмент. > **Связано:** > -> - `Pravila_raboty_Claude_v1_1.md` v1.10+ — §11 «Superpowers override», §12 «Superpowers hard rule», §12.3 SoT для exclusions, §13 «paired stack + расширенный пул UI-инструментов» + claude-md-management как off-pool, §13.6 hard-rule tier-таблица, §13.9 hard-link на R10 PSR_v1, §13.10 hard-link на R14 PSR_v1, §4.8 «Шифры приложений» (Н занят) -> - `Plugin_stack_rules_v1.md` v1.7+ — координация paired-stack ядра (Superpowers + Frontend Design) + расширенного пула (UPM + 21st Magic MCP) + инфраструктурного плагина (claude-md-management) + R15 motion-системы (R10.1 разбит на 3 блока, R0.4.A SoT cross-ref, R10.4/R14.7 tier-метки, R8 +тай-брейкер FD↔21st, R0.1 scope-метка) -> - `CLAUDE.md` (корень репозитория) v1.86+ — оперативная карта инструментов с приоритетом правил (уровень 0 = Pravila §12, уровень 3 = Plugin_stack_rules_v1); §3.3 +#31 UPM +#32 21st +#33 claude-md-management; §5 п.5 свёрнут со ссылкой на PSR_v1 R14; §5 п.11 cross-ref на Pravila §12.3 SoT; §5 п.12 motion-runtime denylist; §6 счётчик 33 (3 off-phase tools) +> - `Pravila_raboty_Claude_v1_1.md` v1.11+ — §11 «Superpowers override», §12 «Superpowers hard rule», §12.3 SoT для exclusions, §13 «paired stack + расширенный пул UI-инструментов» + claude-md-management как off-pool, §13.6 hard-rule tier-таблица, §13.9 hard-link на R10 PSR_v1, §13.10 hard-link на R14 PSR_v1, §4.8 «Шифры приложений» (Н занят) +> - `Plugin_stack_rules_v1.md` v2.0+ — координация paired-stack ядра (Superpowers + Frontend Design) + расширенного пула (UPM + 21st Magic MCP) + инфраструктурного плагина (claude-md-management) (R10.1 разбит на 3 блока, R0.4.A SoT cross-ref, R10.4/R14.7 tier-метки, R8 +тай-брейкер FD↔21st, R0.1 scope-метка; R15 motion удалён в v2.0) +> - `CLAUDE.md` (корень репозитория) v1.88+ — оперативная карта инструментов с приоритетом правил (уровень 0 = Pravila §12, уровень 3 = Plugin_stack_rules_v1); §3.3 +#31 UPM +#32 21st +#33 claude-md-management; §5 п.5 свёрнут со ссылкой на PSR_v1 R14; §5 п.11 cross-ref на Pravila §12.3 SoT; §5 п.12 — резерв (motion-runtime denylist снят в v1.88); §6 счётчик 33 (3 off-phase tools) > - `README_АРХИВ_v8_4.md` v8.4+ — состав архива +**Что нового в v1.16 (12.05.2026):** + +- **§9.2 «Motion runtime библиотеки» переформулирован из regulatory denylist в technical guidance.** R15 PSR_v1 снят целиком (v1.7 → v2.0); motion-v / gsap / anime.js / lottie-web / popmotion / @motionone/dom — безусловно разрешены к установке. framer-motion / react-spring остаются как **technical block** — это peerDep на React, не правило проекта. Default motion stack (Vue native + Vuetify + CSS + View Transitions) — guidance, не hard-rule. +- **Cross-refs шапки sync:** PSR_v1 v1.7+ → v2.0+; CLAUDE.md v1.86+ → v1.88+; Pravila v1.10+ → v1.11+. +- **§6 строка «framer-motion ↔ motion-v»** оставлена как historical record v1.4 audited construction (snapshot эпохи, не удаляется при rollback'е). +- **Связано:** PSR_v1 v1.7 → v2.0 (R15 удалено), CLAUDE.md v1.87 → v1.88 (§5 п.12 → резерв, §2 motion stack → guidance), Pravila v1.10 → v1.11. + +Через `/claude-md-management:claude-md-improver` + manual Edit. + **Что нового в v1.13 (10.05.2026):** - **§7 «Source of truth» обновлён с 5-уровневой на 7-уровневую цепочку.** Добавлен `Plugin_stack_rules_v1.md` (PSR_v1) уровнем 3 — координирующий слой между paired-stack ядром (Superpowers + Frontend Design) и расширенным UI-пулом (UPM + 21st). Также явно вынесен Pravila §12 (Superpowers hard rule) уровнем 0 — выше всех остальных параграфов Pravila. Sync с CLAUDE.md §1. Закрывает audit находку «Tooling §7 не упоминает PSR_v1 в иерархии» (1 из 14 находок). @@ -426,20 +435,20 @@ | **Tailwind MCP / shadcn-vue** | У нас Vuetify (CTO-11), не Tailwind | | **Inertia / Livewire / Filament / Flux UI / Nova / Folio / Volt / Wayfinder guidelines** Boost'а | Не используются в стеке проекта | -### 9.2. Motion runtime библиотеки (введено в v1.12, R15 PSR_v1 v1.4) +### 9.2. Motion runtime библиотеки (с v1.16 — technical guidance, не regulatory) -Двухуровневое решение по runtime-зависимостям анимаций. Default motion stack — **Vue native `` + Vuetify transitions + CSS @keyframes + View Transitions API** (R11.6 уровни 3–6 PSR_v1). Большинство задач закрываются на уровнях 1–2. +С v1.16 / PSR_v1 v2.0 motion-runtime библиотеки **разрешены к установке без обоснования** (R15 PSR_v1 снят 12.05.2026). Default motion stack — **Vue native `` + Vuetify transitions + CSS @keyframes + View Transitions API** — остаётся рекомендацией (CLAUDE.md §2), но не hard-rule. Эта таблица — **technical guidance** о свойствах библиотек, не regulatory denylist. -| Библиотека | Статус | Причина / условие | +| Библиотека | Статус | Технические свойства | |---|---|---| -| **framer-motion** (npm `framer-motion`) | **❌ HARD-ЗАПРЕТ навсегда** (R15.1) | React-only архитектурно: использует React fiber-tree + hooks + JSX. В Vue 3 + Vuetify стеке физически не работает — мёртвый код в `node_modules`. Не отменяется ни Auto mode, ни live-командой R0.4.B. Единственный путь снятия — смена базового frontend-стека (само по себе R0.6 hard-стоп) | -| **react-spring** (npm `@react-spring/*`) | **❌ HARD-ЗАПРЕТ навсегда** (R15.1-аналог) | React-only по той же причине | -| **motion-v** (npm `motion-v`, Vue порт от автора framer-motion) | **⚠ УСЛОВНО разрешено** (R15.2) | Технически совместим со стеком, но активация требует одновременного выполнения 4 условий: (а) письменный кейс из ТЗ v8.5 / Открытые_вопросы; (б) категория оправданности — gesture-driven с физикой / shared-layout transitions / spring-physics на интерактивных контролах; (в) Brandbook v2 (или последующий) явно допускает motion-rich направление; (г) полный R12 архитектурный flow — brainstorming + 3 варианта (motion-v vs CSS @keyframes vs View Transitions API) + явное согласование. Без 4 условий — **R0.6 пункт 11 hard-стоп**. Bundle ~30 KB gzipped | -| **gsap** (`gsap` npm) | **⚠ УСЛОВНО разрешено** (R15.7 R15.2-аналог) | Imperative timeline-driven; нишево для marketing/agency UI. Для нашего B2B-CRM избыточно. Если когда-либо — через те же 4 условия R15.2 | -| **anime.js** | **⚠ УСЛОВНО разрешено** (R15.7) | Аналогично gsap, но ещё нишевее | -| **lottie-web** (`lottie-web`) | **⚠ УСЛОВНО разрешено** (R15.7) | Только для Lottie/After Effects-ассетов. У нас таких ассетов в Brandbook v2 нет; если появятся — через те же 4 условия | -| **popmotion**, **@motionone/dom** | **⚠ УСЛОВНО разрешено** (R15.7) | Низкоуровневые движки. Default стойка покрывает | -| **Auto-Animate** (`@formkit/auto-animate`) | ⚠ Возможный кандидат | Один компонент, FLIP под капотом, ~3 KB. Если потребуется list/grid reorder — отдельный R15-flow | +| **framer-motion** (npm `framer-motion`) | **❌ Technical block (не regulatory)** | React-only архитектурно: peerDeps `react>=18` + `react-dom>=18`. Использует React fiber-tree + hooks + JSX. В Vue 3 + Vuetify стеке физически не работает — runtime crash при `import { motion } from 'framer-motion'` в `.vue` файлах. `npm install` пройдёт с peer-dep warn, но любой import упадёт. Не regulatory rule — свойство библиотеки. | +| **react-spring** (npm `@react-spring/*`) | **❌ Technical block** | React-only по той же причине (peerDep react). | +| **motion-v** (npm `motion-v`) | ✅ Разрешено | Vue 3 порт API framer-motion от того же maintainer'а Motion. ~30 KB gzipped. ~95% API-совместимость с framer-motion (motion.div, animate, variants, layout, drag, gestures). | +| **gsap** (`gsap` npm) | ✅ Разрешено | Imperative timeline-driven. Подходит для marketing/agency UI, сложных choreographed sequences. | +| **anime.js** | ✅ Разрешено | Лёгкая alternative gsap, ~17 KB. | +| **lottie-web** (`lottie-web`) | ✅ Разрешено | Для Lottie/After Effects-ассетов. | +| **popmotion**, **@motionone/dom** | ✅ Разрешено | Низкоуровневые движки. | +| **Auto-Animate** (`@formkit/auto-animate`) | ✅ Разрешено | Один компонент, FLIP под капотом, ~3 KB. | **Default motion stack (без runtime-зависимостей):** diff --git a/docs/superpowers/plans/2026-05-12-remove-r15-motion-restrictions.md b/docs/superpowers/plans/2026-05-12-remove-r15-motion-restrictions.md new file mode 100644 index 00000000..45a578cc --- /dev/null +++ b/docs/superpowers/plans/2026-05-12-remove-r15-motion-restrictions.md @@ -0,0 +1,902 @@ +# Remove R15 motion-runtime restrictions — Implementation Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** Remove R15 motion-runtime restrictions from project rule base across 4 normative documents (PSR_v1 v1.7 → v2.0, CLAUDE.md v1.87 → v1.88, Tooling v1.15 → v1.16, Pravila v1.10 → v1.11), so that `motion-v`, `gsap`, `anime.js`, `lottie-web`, `popmotion`, `@motionone/*` become unconditionally permitted. `framer-motion` remains a **technical block** (React-only, peerDep `react+react-dom` — physically does not run in Vue), no longer a regulatory rule. + +**Architecture:** Atomic edit of 4 `.md` files + CHANGELOG + memory sync, executed via `/claude-md-management:claude-md-improver` for CLAUDE.md (mandated by CLAUDE.md §5 п.10) and direct Edit for the other three normative docs. Done on isolated branch `rules/remove-r15` off `origin/main` (`48f27b4`). One atomic commit gates lefthook (gitleaks + lychee + markdownlint). PR follows. No code (`resources/js/`, `app/`, `db/`) touched — Pest/Vitest/Histoire not run, no migrations. + +**Tech Stack:** Markdown only (`.md`). Tooling: git, lefthook, lychee, gitleaks, markdownlint-cli2, `gh` (GitHub CLI), `/claude-md-management:claude-md-improver` skill, semantic grep (Grep tool). + +**Spec:** [docs/superpowers/specs/2026-05-12-remove-r15-motion-restrictions-design.md](../specs/2026-05-12-remove-r15-motion-restrictions-design.md) + +--- + +## File Structure + +Files modified by this plan (all `.md`): + +| Path | Purpose | Size of change | +|---|---|---| +| `docs/Plugin_stack_rules_v1.md` | PSR_v1 v1.7 → v2.0: R15 section removal + R0.6 п.11 + R8 motion tie-breakers + R11.6 + R13 motion rows + header + changelog | Major (~90 lines deleted, header reformulated, v2.0 changelog entry added) | +| `CLAUDE.md` (repository root) | v1.87 → v1.88: §5 п.12 → marker, §2 Animation default stack reformulated, header + §9 history entry | Medium | +| `docs/Tooling_v8_3.md` | Прил. Н v1.15 → v1.16: §9.2 reformulated, header cross-refs sync, changelog entry | Medium | +| `docs/Pravila_raboty_Claude_v1_1.md` | v1.10 → v1.11: §13.10 deleted, §11.5 + §13.2 + §13.9 + §13.6 cross-ref version bumps | Medium | +| `docs/CHANGELOG_claude_md.md` | New v1.88 entry at top | Small (new entry) | +| `MEMORY.md` (user memory dir) | Index hook for plugin paired stack — version bump | Small (1 line) | +| `memory/feedback_plugin_paired_stack.md` | Version refs v1.7 → v2.0, R15 → historical | Small (3-5 lines) | +| `docs/superpowers/specs/2026-05-12-remove-r15-motion-restrictions-design.md` | Already written, only needs commit | No edit | +| `docs/superpowers/plans/2026-05-12-remove-r15-motion-restrictions.md` | This plan file | Created in T1 | + +Files NOT touched: `app/`, `resources/`, `db/`, `tests/`, `package.json`, `composer.json`, `lefthook.yml`, `.mcp.json`, settings. + +--- + +## Task 1: Setup branch and commit design doc + plan + +**Files:** + +- Already exists: `docs/superpowers/specs/2026-05-12-remove-r15-motion-restrictions-design.md` +- Created in T1: `docs/superpowers/plans/2026-05-12-remove-r15-motion-restrictions.md` (this file) + +- [ ] **Step 1: Verify origin/main HEAD matches plan's base assumption** + +Run: `git fetch origin main && git log -1 --format=%H origin/main` +Expected: `48f27b4...` (or newer — note the SHA actually returned for the PR body later) + +- [ ] **Step 2: Create branch from `origin/main`** + +Run: `git checkout -b rules/remove-r15 origin/main` +Expected: `Switched to a new branch 'rules/remove-r15'` + +- [ ] **Step 3: Stage and commit design doc + plan separately from rule edits** + +Both files are currently untracked (`git status` lists them). Stage them explicitly: + +Run: + +```bash +git add docs/superpowers/specs/2026-05-12-remove-r15-motion-restrictions-design.md \ + docs/superpowers/plans/2026-05-12-remove-r15-motion-restrictions.md +git commit -m "$(cat <<'EOF' +docs(spec+plan): R15 motion-runtime removal — design + impl plan + +Brainstormed via superpowers:brainstorming. User decision 12.05.2026: +remove R15 PSR_v1 section entirely (variant B). Conscious rollback of +audited construction from v1.83 (10.05.2026). + +Spec: docs/superpowers/specs/2026-05-12-remove-r15-motion-restrictions-design.md +Plan: docs/superpowers/plans/2026-05-12-remove-r15-motion-restrictions.md + +Co-Authored-By: Claude Opus 4.7 (1M context) +EOF +)" +``` + +- [ ] **Step 4: Verify lefthook passed on design+plan commit** + +If lefthook blocked (lychee broken link / markdownlint error / gitleaks leak) — fix the file content and re-commit as a NEW commit (do NOT --amend; CLAUDE.md §5 п.11 forbids amend on hook failure). Investigate and fix root cause. + +Expected: clean commit, no hook failures (these are markdown-only files with no secrets and no external links beyond existing docs). + +- [ ] **Step 5: Verify branch state** + +Run: `git status && git log --oneline -3` +Expected: + +- Branch clean +- HEAD commit message: `docs(spec+plan): R15 motion-runtime removal...` +- Parent = `48f27b4` (or whatever origin/main was at fetch time) + +--- + +## Task 2: PSR_v1 v1.7 → v2.0 — remove R15 + R0.6 п.11 + R8 motion + R11.6 + R13 motion + finale + properties + header + changelog + +**Files:** + +- Modify: `docs/Plugin_stack_rules_v1.md` (lines 1, 3, 4, 6, 10, 136, 148, 353-355, 523-547, 609-613, 743-820, 824, 830-831, 845, header changelog block) + +This is the largest task. **Read the file in chunks first** (the file is 916 lines, too large for a single Read), then apply edits in sequence. + +- [ ] **Step 1: Re-Read line range 1–55 (header + R0.1)** + +Read: `docs/Plugin_stack_rules_v1.md` lines 1–55. +Confirm content matches what plan expects: + +- L1: `# Plugin Stack Rules — Superpowers + Frontend Design (v1.7)` +- L4 contains `+ R15 (motion-системы` narrative +- L6 contains `Runtime-зависимости проекта (motion-библиотеки и т.п.) подчиняются R15.` +- L10 contains `§5 п.12 — на R15 (motion-системы)` + +- [ ] **Step 2: Edit header line 1 → v2.0** + +Use Edit tool. Replace: + +``` +# Plugin Stack Rules — Superpowers + Frontend Design (v1.7) +``` + +With: + +``` +# Plugin Stack Rules — Superpowers + Frontend Design (v2.0) +``` + +- [ ] **Step 3: Edit date line 3 → 12.05.2026** + +Replace: + +``` +**Дата:** 10.05.2026 (поздний вечер) +``` + +With: + +``` +**Дата:** 12.05.2026 +``` + +- [ ] **Step 4: Edit line 4 (narrative shapка) — strip R15 ссылки** + +Read line 4 fully first (it's long; Grep `^\*\*Назначение` to spot it). Replace the existing line 4 with a rewritten version where: + +- The phrase `+ правила runtime motion-стойки` is **removed** (no motion stack as part of normative base any more) +- The phrase `+ 2 новых правила R14 (pipeline внешних UI-генераторов: UPM + 21st Magic MCP) и R15 (motion-системы: framer-motion hard-запрет + motion-v узкое окно по 4 условиям) в v1.4` → keep the R14 part but truncate the R15 part. Replace `R14 (pipeline внешних UI-генераторов: UPM + 21st Magic MCP) и R15 (motion-системы: framer-motion hard-запрет + motion-v узкое окно по 4 условиям) в v1.4` with `R14 (pipeline внешних UI-генераторов: UPM + 21st Magic MCP) в v1.4 (R15 motion-системы введены в v1.4 и удалены в v2.0)`. +- Append at end of line a new v2.0 entry: `+ 1 правка четвёртого аудита в v2.0 (12.05.2026 — снят R15 motion-runtime по решению заказчика; conscious rollback v1.4 audited construction; framer-motion переведён из regulatory hard-запрета в technical-guidance уровень: peerDep на react+react-dom, не работает в Vue физически)` + +(Exact wording is verbose; the engineer should preserve existing v1.0–v1.7 narrative and only patch the R15-specific clauses + add v2.0 clause at end of line 4.) + +- [ ] **Step 5: Edit line 6 — strip motion-runtime sentence** + +Replace: + +``` +Stack никогда не уступает первенство **уровням 4–6** — даже когда задача предметно ближе к чужому плагину, stack первой делает классификацию и потом **делегирует** инструменту, не отдаёт ему gate. Runtime-зависимости проекта (motion-библиотеки и т.п.) подчиняются R15. +``` + +Wait — Re-Read line 6 first (Grep `Runtime-зависимости проекта`). The phrase is in line 6 (the principle-axiom paragraph). Replace just the last sentence: + +- old: `Runtime-зависимости проекта (motion-библиотеки и т.п.) подчиняются R15.` +- new: `` (empty — remove the sentence entirely; runtime motion deps no longer governed by PSR_v1) + +- [ ] **Step 6: Edit line 10 — strip §5 п.12 R15 ref** + +Replace: + +``` +- [CLAUDE.md](../CLAUDE.md) v1.86+ — оперативная карта; §1 priority chain, §3.3 строка #33, §5 п.5 ссылается на этот документ (расширенный пул UI-инструментов: FD + UPM + 21st), §5 п.11 cross-ref на Pravila §12.3 SoT, §5 п.12 — на R15 (motion-системы) +``` + +With: + +``` +- [CLAUDE.md](../CLAUDE.md) v1.88+ — оперативная карта; §1 priority chain, §3.3 строка #33, §5 п.5 ссылается на этот документ (расширенный пул UI-инструментов: FD + UPM + 21st), §5 п.11 cross-ref на Pravila §12.3 SoT, §5 п.12 — резерв (R15 motion-runtime снят в v2.0) +``` + +- [ ] **Step 7: Edit line 12 — bump Tooling cross-ref to v1.16+ and strip R15 from §9.2 description** + +Replace: + +``` +- [docs/Tooling_v8_3.md](Tooling_v8_3.md) **v1.15+** — реестр инструментов; #30 Frontend Design + #31 UPM + #32 21st Magic MCP + #33 claude-md-management + §6 +5 конфликтов v1.4 + §7 7-уровневая иерархия (с v1.14 +Tooling explicit slot 2b) + §9.2 motion-runtime denylist отсылают сюда; §10.3 шаг 2 sync (14 skills) с v1.14 +``` + +With: + +``` +- [docs/Tooling_v8_3.md](Tooling_v8_3.md) **v1.16+** — реестр инструментов; #30 Frontend Design + #31 UPM + #32 21st Magic MCP + #33 claude-md-management + §6 +5 конфликтов v1.4 (строка «framer-motion ↔ motion-v» — historical после v2.0) + §7 7-уровневая иерархия (с v1.14 +Tooling explicit slot 2b) + §9.2 motion-runtime guidance (technical-only после v1.16); §10.3 шаг 2 sync (14 skills) с v1.14 +``` + +Also bump Pravila cross-ref one line above (line 11): replace `v1.10+` with `v1.11+` and `§13.10 hard-link на R14 PSR_v1` with `§13.10 удалён в v1.11 (был hard-link на R15, снят с R15)`. + +(Engineer: Re-Read line 11 first to confirm exact wording before patching.) + +- [ ] **Step 8: Edit line 136 — strip R15 from cross-ref note** + +Replace: + +``` +**Hard-стоп даже в Auto mode** — обязательная остановка независимо от классификации, при любом из триггеров (нумерация введена в v1.6 для надёжности cross-refs «R0.6 пункт N»; при добавлении/удалении пункта — пересмотреть все ссылки в R8/R13/R14/R15): +``` + +With: + +``` +**Hard-стоп даже в Auto mode** — обязательная остановка независимо от классификации, при любом из триггеров (нумерация введена в v1.6 для надёжности cross-refs «R0.6 пункт N»; при добавлении/удалении пункта — пересмотреть все ссылки в R8/R13/R14): +``` + +- [ ] **Step 9: Delete R0.6 п.11 — line 148** + +Delete the entire line: + +``` +11. **[v1.4]** Установка **motion-v** или любой другой animation runtime библиотеки (`gsap`, `anime.js`, `react-spring`, `lottie-web`, `popmotion`, `@motionone/*` и т.д.) в `package.json` без прохождения R15.2 (а)+(б)+(в)+(г). +``` + +After deletion: list ends at item 10. Verify items 1–10 remain intact. + +- [ ] **Step 10: Delete R8 motion tie-breaker rows (lines 353-355)** + +Re-Read line range 340–360 to confirm. Delete the three lines: + +``` +| **[v1.4]** «Поставим motion-v, у нас в Vuetify не хватает spring-physics» | без письменного кейса из ТЗ + категории (б) + Brandbook approval (в) + R12 flow (г) — R15.2 не удовлетворён, hard-стоп R0.6 пункт 11 | +| **[v1.4]** «Поставим framer-motion, у других проектов работает» | R15.1 hard-запрет. React-only физически. Не отменяется live-командой | +| **[v1.4]** Для анимации список задача — какой слой? | R11.6: 1 (Vue native ``) → 2 (Vuetify) → 3 (CSS) → 4 (View Transitions). На уровне 1 уже закрывается типичный case | +``` + +(Engineer: there are also lines 353/354 with framer-motion / motion-v from earlier grep — Re-Read full range 340–360 to confirm exact line numbers before deletion.) + +- [ ] **Step 11: Delete R11.6 (lines ~523–547) — Иерархия motion-источников** + +Re-Read line range 515–555 to confirm section boundaries. + +Delete the entire R11.6 sub-section, starting at: + +``` +### 11.6. Иерархия motion-источников (внутри уровня визуального дизайна, v1.4) +``` + +through the last bullet/sentence of R11.6 (likely ending at line 547 or where R12 begins, e.g., `## Правило 12` or `---`). + +Be careful NOT to delete: + +- R11.5 (ends just before R11.6) +- R12 (starts after R11.6) + +- [ ] **Step 12: Delete R13 motion-сценарии rows (lines ~609–613)** + +Re-Read line range 600–620 to confirm. Delete five rows: + +``` +| **[v1.4]** Анимация на экране, простая (fade/slide/scale/expand) | высокая | **действую**, использую Vuetify transition или Vue `` (R11.6 уровни 3–4) | +| **[v1.4]** Анимация средней сложности (custom keyframes, hover-state с timing) | высокая | **действую**, использую CSS `@keyframes` (R11.6 уровень 5) | +| **[v1.4]** Cross-route transition (hero-transition при переходе между экранами) | средняя | **фиксирую предположение**: «использую View Transitions API с fallback на Vue `` для не-Chromium»; если кейс требует motion-v → R15.2 | +| **[v1.4]** Запрос «давай добавим framer-motion / motion-v / gsap / lottie» **без явного кейса** | низкая | **hard-стоп R0.6 пункт 11** + R15.2 формальная проверка триггеров; нельзя действовать в Auto mode | +| **[v1.4]** Кейс из ТЗ требует gesture с физикой (drag с инерцией, swipe с pinch) | средняя | **действую**, R15.2 запускает brainstorming + 3 варианта (motion-v vs vanilla pointer events vs CSS scroll-snap); презентую таблицу | +``` + +- [ ] **Step 13: Delete entire Правило 15 (lines ~743–820)** + +Re-Read line range 740–822 to confirm boundaries. + +Delete everything starting from: + +``` +## Правило 15 — Motion-системы (animation libraries, v1.4) +``` + +through (and including) the closing `---` separator just before `## Финальная формула` (`## Финальная формула` should NOT be deleted; the `---` immediately before it is the boundary; engineer judges visually). + +Confirmation: after deletion, line `## Правило 14` (or its sub-sections) should be immediately followed by `---` then `## Финальная формула`. + +- [ ] **Step 14: Edit «Финальная формула» (line ~824) — strip R14 trailing R15 ref** + +Re-Read line range 822–826. + +Replace: + +``` +> **Любая задача → Правило 0 (gate, stack-головной) → Правило 1 (классификация по типу) → Правило 9 (решение, ≤2 итерации) → Правило 13 (decision matrix по уверенности) → Правило 2 (фаза UI-фичи) → исполнение по Правилам 3, 4, 6 → если нужен внешний UI-генератор: Правило 14 pipeline (UPM на фазах 1/2, 21st на фазе 5) → если нужна анимация: Правило 15 (default стойка R15.3, motion-v только по 4 условиям R15.2) → завершение по Правилу 7 → ревью по Правилу 5. Источники истины — Правило 11 (UI/UX) + R11.6 (motion). Паттерны решений — Правило 12. Координация с не-stack плагинами — Правило 10. Тай-брейкеры — Правило 8.** +``` + +With: + +``` +> **Любая задача → Правило 0 (gate, stack-головной) → Правило 1 (классификация по типу) → Правило 9 (решение, ≤2 итерации) → Правило 13 (decision matrix по уверенности) → Правило 2 (фаза UI-фичи) → исполнение по Правилам 3, 4, 6 → если нужен внешний UI-генератор: Правило 14 pipeline (UPM на фазах 1/2, 21st на фазе 5) → завершение по Правилу 7 → ревью по Правилу 5. Источники истины — Правило 11 (UI/UX). Паттерны решений — Правило 12. Координация с не-stack плагинами — Правило 10. Тай-брейкеры — Правило 8.** +``` + +(Removed: «если нужна анимация: Правило 15 (default стойка R15.3, motion-v только по 4 условиям R15.2)»; «+ R11.6 (motion)».) + +- [ ] **Step 15: Edit «Свойства свода» (lines ~830–831) — strip R15/motion refs** + +Re-Read line range 828–832. + +Replace: + +``` +- **Полнота:** каждая задача попадает в одну ветку Правила 1, каждая фаза имеет одного владельца (Правило 2), каждый артефакт ревью — один аспект (Правило 5), каждый тип закрытия — один gate (Правило 7), каждое дизайн-решение — один паттерн (Правило 12), каждая комбинация Auto+§12+R0.6 — одна строка matrix'а (Правило 13), каждый внешний UI-генератор имеет одно место в pipeline (Правило 14), каждая motion-задача — один слой R11.6 (Правило 15). +- **Головенство stack'а (v1.2 принцип-аксиома, расширена в v1.4):** stack — головной при решении любой задачи. Внешние плагины (включая UPM и 21st Magic MCP) — инструменты, инвокируемые внутри stack-flow (Правило 10) через pipeline R14. Иерархия источников UI — закон, не гайдлайн (Правило 11). Runtime-зависимости (motion) подчиняются R15. +``` + +With: + +``` +- **Полнота:** каждая задача попадает в одну ветку Правила 1, каждая фаза имеет одного владельца (Правило 2), каждый артефакт ревью — один аспект (Правило 5), каждый тип закрытия — один gate (Правило 7), каждое дизайн-решение — один паттерн (Правило 12), каждая комбинация Auto+§12+R0.6 — одна строка matrix'а (Правило 13), каждый внешний UI-генератор имеет одно место в pipeline (Правило 14). +- **Головенство stack'а (v1.2 принцип-аксиома, расширена в v1.4):** stack — головной при решении любой задачи. Внешние плагины (включая UPM и 21st Magic MCP) — инструменты, инвокируемые внутри stack-flow (Правило 10) через pipeline R14. Иерархия источников UI — закон, не гайдлайн (Правило 11). Runtime-зависимости (motion-библиотеки и т.п.) — вне регулирования PSR_v1 с v2.0 (см. CLAUDE.md §2 «Animation default stack» — рекомендация, не hard-rule). +``` + +- [ ] **Step 16: Strip R15 from v1.4 changelog entry properties (line ~845)** + +Re-Read line range 843–848. The v1.4 entry inside `Непротиворечивость` properties block lists `R15 новое правило (R15.1 framer-motion hard-запрет, R15.2 motion-v 4 условия...)`. **Do NOT delete this changelog entry** — it's historical record of v1.4 work. Just append a marker note at end: + +After existing line 845 (the v1.4 line), add a new bullet line: + +``` + - **v2.0 (снятие R15):** R15 motion-системы (R15.1–R15.7) удалены полностью; R0.6 п.11 удалён; R8 motion тай-брейкеры удалены; R11.6 motion иерархия удалена; R13 motion-сценарии удалены. Default motion stack перенесён в CLAUDE.md §2 как guidance, не hard-rule. framer-motion — technical block (peerDep react+react-dom), не regulatory rule. Conscious rollback v1.4 audited construction по решению заказчика 12.05.2026; через `/superpowers:brainstorming` → 3 варианта → выбор B (полная отмена R15) → `superpowers:writing-plans` → `/claude-md-management:claude-md-improver`. +``` + +- [ ] **Step 17: Add v2.0 entry to «История версий» (line ~853)** + +Re-Read line range 850–855. + +Above existing line `- **v1.7 от 10.05.2026 (поздний вечер)**`, insert new entry: + +``` +- **v2.0 от 12.05.2026** — major bump: removal of R15 motion-runtime restrictions per user decision. Conscious rollback of v1.4 audited construction (10.05.2026, R15 двухуровневая motion + R0.6 п.11 + R8 motion-tie-breakers + R11.6 motion-иерархия + R13 motion-сценарии). + + **Удалено:** + - Правило 15 целиком (R15.1 framer-motion hard-запрет / R15.2 motion-v 4 условия / R15.3 default стойка / R15.4 формальная проверка / R15.5 hard-запрет дублирования / R15.6 live-override / R15.7 расширение на gsap/anime/lottie/popmotion). + - R0.6 пункт 11 (animation runtime hard-стоп). + - R8 три тай-брейкера motion (motion-v, framer-motion, motion-слой R11.6). + - R11.6 параллельная иерархия 7 motion-источников. + - R13 пять строк motion-сценариев decision matrix. + - Финальная формула — фраза «если нужна анимация: Правило 15...» + «+ R11.6 (motion)». + - Свойства свода — фраза «каждая motion-задача — один слой R11.6 (Правило 15)» + «Runtime-зависимости (motion) подчиняются R15». + + **Изменено:** + - Шапка count: «16 правил R0–R15» → «15 правил R0–R14». + - Cross-refs шапки: CLAUDE.md v1.86+ → v1.88+; Pravila v1.10+ → v1.11+; Tooling v1.15+ → v1.16+. + - L4 narrative: R15 description свёрнуто до «(R15 motion-системы введены в v1.4 и удалены в v2.0)»; добавлена v2.0 клауза. + - L6 принцип-аксиома: удалена последняя фраза «Runtime-зависимости проекта... подчиняются R15». + - L10 cross-ref CLAUDE.md §5 п.12: «на R15» → «резерв (R15 motion-runtime снят в v2.0)». + + **НЕ затронуто:** R0–R14 целиком (стек-фильтр R6.0/R6.1, paired-stack R10, иерархия источников R11.1–R11.5, decision matrix R12/R13, UI-pipeline R14 — все в силе). Pravila §12 hard rule Superpowers инвокации — без изменений. CLAUDE.md §5 п.10 правки через claude-md-management — без изменений. + + **Rationale:** заказчик 12.05.2026 запросил снять hard-запреты на motion-runtime библиотеки (включая framer-motion). Через sanity-check brainstorming согласовано: framer-motion как React-only остаётся **technical block** (peerDep `react+react-dom`, runtime crash в Vue), но не regulatory rule. Остальные motion-runtime (motion-v, gsap, anime.js, lottie-web, popmotion, @motionone/dom) — безусловно разрешены. Default motion stack (Vue native + Vuetify + CSS + View Transitions) — переводится в CLAUDE.md §2 как guidance, не hard-rule. + + Связанные обновления: CLAUDE.md v1.87 → v1.88, Pravila v1.10 → v1.11, Tooling v1.15 → v1.16, CHANGELOG_claude_md.md + MEMORY sync. Через `/claude-md-management:claude-md-improver` (для CLAUDE.md) + ручные Edit (для PSR_v1, Tooling, Pravila). + +``` + +- [ ] **Step 18: Final pass — verify file integrity** + +Run: `wc -l docs/Plugin_stack_rules_v1.md` +Expected: ~830 lines (down from 916; ~85 lines deleted: R15 section ~80 lines, R0.6 п.11 1 line, R8 3 lines, R13 5 lines minus added v2.0 changelog ~30 lines net). + +Run: `Grep -n "R15" docs/Plugin_stack_rules_v1.md` +Expected: only historical references in: + +- Line 4 (narrative shapка mentioning «R15 motion-системы введены в v1.4 и удалены в v2.0») +- v1.4 changelog entry (`R15 (новое правило)...`) +- v2.0 changelog entry (new, this PR) +- v1.7 changelog entry note about cross-refs «R8/R13/R14» +- R0.6 cross-ref note (line ~136 — now reads «R8/R13/R14» — should be 0 «R15» hits here) + +If unexpected R15 hits remain — find and re-evaluate (either historical context that should stay, or live reference that needs deletion). + +--- + +## Task 3: Tooling Прил. Н v1.15 → v1.16 — §9.2 reformulate + header sync + changelog + +**Files:** + +- Modify: `docs/Tooling_v8_3.md` (header lines 1–13, §9.2 lines 429–442, changelog §13 / history section) + +- [ ] **Step 1: Re-Read line range 1–35 (header + cross-refs + recent changelog)** + +Read: `docs/Tooling_v8_3.md` lines 1–35. + +- [ ] **Step 2: Edit header — version bump and cross-refs** + +Replace `**Версия:** 1.15` line content with: + +``` +**Версия:** 1.16 (закрытие 1 правки четвёртого аудита — снятие R15 motion-runtime denylist'а из §9.2 синхронно с PSR_v1 v1.7 → v2.0 + CLAUDE.md v1.87 → v1.88 + Pravila v1.10 → v1.11. Заказчик 12.05.2026: «сними все запреты на использование framer motion». Через `/claude-md-management:claude-md-improver`.) +``` + +Replace `**Предыдущая версия:** 1.14...` → `**Предыдущая версия:** 1.15`. + +In cross-ref block (lines 10–13): + +- `Pravila_raboty_Claude_v1_1.md v1.10+` → `v1.11+` +- `Plugin_stack_rules_v1.md v1.7+` → `v2.0+`. Drop the `R15 motion-системы` clause from description. Reword to: `координация paired-stack ядра + расширенного пула + claude-md-management (R10.1 разбит на 3 блока, R0.4.A SoT cross-ref, R10.4/R14.7 tier-метки, R8 +тай-брейкер FD↔21st, R0.1 scope-метка; R15 motion удалён в v2.0)`. +- `CLAUDE.md v1.86+` → `v1.88+`. Drop the `§5 п.12 motion-runtime denylist` clause. Reword to end at: `§6 счётчик 33 (3 off-phase tools); §5 п.12 — резерв (motion-runtime denylist снят в v1.88)`. + +- [ ] **Step 3: §9.2 — Re-Read line range 425–455** + +Read: `docs/Tooling_v8_3.md` lines 425–455 to confirm exact §9.2 boundaries. + +- [ ] **Step 4: §9.2 — reformulate denylist as technical guidance** + +Replace existing §9.2 section (lines 429–451) with: + +```markdown +### 9.2. Motion runtime библиотеки (с v1.16 — technical guidance, не regulatory) + +С v1.16 / PSR_v1 v2.0 motion-runtime библиотеки **разрешены к установке без обоснования** (R15 PSR_v1 снят 12.05.2026). Default motion stack — **Vue native `` + Vuetify transitions + CSS @keyframes + View Transitions API** — остаётся рекомендацией (CLAUDE.md §2), но не hard-rule. Эта таблица — **technical guidance** о свойствах библиотек, не regulatory denylist. + +| Библиотека | Статус | Технические свойства | +|---|---|---| +| **framer-motion** (npm `framer-motion`) | **❌ Technical block (не regulatory)** | React-only архитектурно: peerDeps `react>=18` + `react-dom>=18`. Использует React fiber-tree + hooks + JSX. В Vue 3 + Vuetify стеке физически не работает — runtime crash при `import { motion } from 'framer-motion'` в `.vue` файлах. `npm install` пройдёт с peer-dep warn, но любой import упадёт. Не regulatory rule — свойство библиотеки. | +| **react-spring** (npm `@react-spring/*`) | **❌ Technical block** | React-only по той же причине (peerDep react). | +| **motion-v** (npm `motion-v`) | ✅ Разрешено | Vue 3 порт API framer-motion от того же maintainer'а Motion. ~30 KB gzipped. ~95% API-совместимость с framer-motion (motion.div, animate, variants, layout, drag, gestures). | +| **gsap** (`gsap` npm) | ✅ Разрешено | Imperative timeline-driven. Подходит для marketing/agency UI, сложных choreographed sequences. | +| **anime.js** | ✅ Разрешено | Лёгкая alternative gsap, ~17 KB. | +| **lottie-web** (`lottie-web`) | ✅ Разрешено | Для Lottie/After Effects-ассетов. | +| **popmotion**, **@motionone/dom** | ✅ Разрешено | Низкоуровневые движки. | +| **Auto-Animate** (`@formkit/auto-animate`) | ✅ Разрешено | Один компонент, FLIP под капотом, ~3 KB. | + +**Default motion stack (рекомендация, не обязанность):** + +| Слой | Что покрывает | Размер | +|---|---|---| +| Vue 3 native `` / `` | enter/leave hooks, FLIP через TransitionGroup, JS-callbacks | 0 KB (нативно) | +| Vuetify 3 transitions (`v-fade`, `v-slide-y`, `v-slide-x`, `v-scale`, `v-expand`, `v-dialog-transition`) | Material-design анимации; уже в `vuetify@3.12` | 0 KB сверху | +| CSS `@keyframes` + `transition` + `prefers-reduced-motion` | Произвольные анимации, GPU-acceleration через `transform`/`opacity`, поддержка a11y | 0 KB | +| View Transitions API (Chrome 111+, Safari 18+) | Cross-document / cross-route переходы, FLIP под капотом нативно | 0 KB (браузер) | + +Большинство анимационных задач закрываются дефолтным стеком — это рекомендация для bundle size, а не запрет на motion-runtime библиотеки. +``` + +- [ ] **Step 5: Add v1.16 entry to history block at top of file** + +Add new block (after existing **«Что нового в v1.13 (10.05.2026)»** block — i.e., before line containing «Что было в v1.12»): + +```markdown +**Что нового в v1.16 (12.05.2026):** + +- **§9.2 «Motion runtime библиотеки» переформулирован из regulatory denylist в technical guidance.** R15 PSR_v1 снят целиком (v1.7 → v2.0); motion-v / gsap / anime.js / lottie-web / popmotion / @motionone/dom — безусловно разрешены к установке. framer-motion / react-spring остаются как **technical block** — это peerDep на React, не правило проекта. Default motion stack (Vue native + Vuetify + CSS + View Transitions) — guidance, не hard-rule. +- **Cross-refs шапки sync:** PSR_v1 v1.7+ → v2.0+; CLAUDE.md v1.86+ → v1.88+; Pravila v1.10+ → v1.11+. +- **§6 строка «framer-motion ↔ motion-v»** оставлена как historical record v1.4 audited construction (snapshot эпохи, не удаляется при rollback'е). +- **Связано:** PSR_v1 v1.7 → v2.0 (R15 удалено), CLAUDE.md v1.87 → v1.88 (§5 п.12 → резерв, §2 motion stack → guidance), Pravila v1.10 → v1.11 (§13.10 удалено). + +Через `/claude-md-management:claude-md-improver` + manual Edit. + +``` + +- [ ] **Step 6: Verify file integrity** + +Run: `Grep -n "R15" docs/Tooling_v8_3.md` +Expected: only historical references (in v1.12 / v1.13 changelog entries, where R15 is recorded as historical introduction). + +Run: `Grep -n "❌ HARD-ЗАПРЕТ" docs/Tooling_v8_3.md` +Expected: 0 matches (the `HARD-ЗАПРЕТ навсегда` labels removed for motion libs). + +Run: `Grep -n "❌ Technical block" docs/Tooling_v8_3.md` +Expected: 2 matches (framer-motion + react-spring rows). + +--- + +## Task 4: Pravila v1.10 → v1.11 — delete §13.10 + bump §11.5 / §13.2 / §13.9 / §13.6 cross-refs + header + +**Files:** + +- Modify: `docs/Pravila_raboty_Claude_v1_1.md` (lines ~11, 14, 97, 527, 610, 625, 651–657, 685–706) + +- [ ] **Step 1: Re-Read line range 1–25 (header changelog block)** + +Read: `docs/Pravila_raboty_Claude_v1_1.md` lines 1–30. +Confirm: line 11 likely contains `**§11.5 — версия PSR_v1...»v1.6, 16 правил R0–R15»...»`. Re-Read for exact wording. + +- [ ] **Step 2: Add v1.11 changelog entry at top of header changelog** + +Insert above existing v1.10 entry (likely lines 5–15) a new block: + +```markdown +**Что нового в v1.11 (12.05.2026):** + +- **§13.10 удалено целиком** — transitive hard-link на R14 PSR_v1 был связан с R15 motion-системами через цепочку R14 → R10.4 → §13.9 → §13.10 → §13. С удалением R15 в PSR_v1 v2.0 (12.05.2026) §13.10 структурно остаётся но **не имеет более цели**: его hard-link был на R14 PSR_v1 в части использования UPM/21st вне pipeline'а, не на R15 motion. **Уточнение:** §13.10 (введён в v1.8) **сохраняется** как hard-link на R14 (UPM/21st pipeline), но cross-refs на «R15» внутри §13.10 удалены. Альтернатива — оставить §13.10 целиком, что устранит риск breaking change существующих ссылок других документов. +- **§11.5 счётчик правил PSR_v1:** «v1.6, 16 правил R0–R15» → «v2.0, 15 правил R0–R14». +- **§13.2 счётчик:** «v1.6 (16 правил R0–R15)» → «v2.0 (15 правил R0–R14)». +- **§13.9 cross-ref на PSR_v1:** «(v1.6)» → «(v2.0)». +- **§13.10 cross-ref на PSR_v1:** «(v1.6)» → «(v2.0)»; внутреннее упоминание R15 удалено (если есть). +- **§13.6 tier-таблица:** строка «Transitive hard-rule» — без изменений (R10/R14 hard-links остаются актуальны; снятие R15 их не задевает). +- **Связано:** PSR_v1 v1.7 → v2.0 (R15 удалено целиком), CLAUDE.md v1.87 → v1.88 (§5 п.12 → резерв), Tooling v1.15 → v1.16 (§9.2 reformulated). + +Через `/claude-md-management:claude-md-improver` + manual Edit. + +``` + +**Note on §13.10:** based on Re-Read of lines 687–706 (already done in plan exploration), §13.10 is hard-link on R14 PSR_v1 — about UPM / 21st Magic MCP pipeline violations. **NOT about R15.** Spec section 2.4 said «§13.10 — transitive hard-link на R15». This is a misreading: spec's design assumed §13.10 was R15-linked, but actually it's R14-linked. + +**Decision (engineer):** Do NOT delete §13.10. It governs UPM/21st pipeline R14, which is unaffected by R15 removal. Only bump cross-ref versions «(v1.6)» → «(v2.0)» inside §13.10 body. + +Update spec text in v1.11 changelog entry to reflect this correction: «§13.10 НЕ удалено (был hard-link на R14, не на R15 — spec section 2.4 содержал misreading). Cross-refs внутри §13.10 «PSR_v1 v1.6» → «v2.0»». + +- [ ] **Step 3: §11.5 — bump count** + +Re-Read line range 525–530 (line 527 area). + +Find phrase `(v1.6, **16 правил R0–R15**)`. Replace with `(v2.0, **15 правил R0–R14**)`. + +- [ ] **Step 4: §13.2 — bump count and PSR_v1 version** + +Re-Read line range 608–612 (line 610 area). + +Replace: + +``` +Координация — через [docs/Plugin_stack_rules_v1.md](Plugin_stack_rules_v1.md) **v1.6 (16 правил R0–R15)**. +``` + +With: + +``` +Координация — через [docs/Plugin_stack_rules_v1.md](Plugin_stack_rules_v1.md) **v2.0 (15 правил R0–R14)**. +``` + +- [ ] **Step 5: §13.9 + §13.10 — bump cross-ref version** + +Re-Read line range 670–710. + +In §13.9 (line ~675): replace `(v1.6)` with `(v2.0)`. + +In §13.10 (line ~689): replace `(v1.6)` with `(v2.0)`. + +If any internal R15 reference exists in §13.9 / §13.10 body — remove. (Per Re-Read of 670–706 already done: no R15 refs inside these sections; the only «R15» mentions in Pravila are inside header changelog entries — which are historical and stay.) + +- [ ] **Step 6: Verify file integrity** + +Run: `Grep -n "R15" docs/Pravila_raboty_Claude_v1_1.md` +Expected: only historical references (in header changelog entries v1.6, v1.7, v1.8 mentioning historical R15 introduction). + +Run: `Grep -n "16 правил" docs/Pravila_raboty_Claude_v1_1.md` +Expected: 0 matches in §§ bodies (only possibly in changelog narrative entries — historical OK). + +Run: `Grep -n "15 правил R0" docs/Pravila_raboty_Claude_v1_1.md` +Expected: ≥2 matches (§11.5 and §13.2 bodies updated). + +--- + +## Task 5: CLAUDE.md v1.87 → v1.88 via `/claude-md-management:claude-md-improver` + +**Files:** + +- Modify (through skill): `CLAUDE.md` (header, §2 «Animation default stack» строка, §5 п.12, §9 «История версий») + +CLAUDE.md §5 п.10 is a hard-rule: direct Edit/Write on CLAUDE.md is forbidden. Must use `/claude-md-management:claude-md-improver` skill. + +- [ ] **Step 1: Invoke claude-md-improver skill with task description** + +Use the `Skill` tool with: + +- skill: `claude-md-management:claude-md-improver` +- args: paste the task description below + +Task description for skill: + +``` +Target file: CLAUDE.md (repository root) +Spec: docs/superpowers/specs/2026-05-12-remove-r15-motion-restrictions-design.md + +Apply these 4 targeted updates atomically: + +1. Header (top of file, version line) — bump CLAUDE.md v1.87 → v1.88 with changelog entry summarizing R15 motion-runtime removal (12.05.2026). Connection: PSR_v1 v1.7 → v2.0, Tooling v1.15 → v1.16, Pravila v1.10 → v1.11. Conscious rollback of v1.83 audited construction. Reason: user decision 12.05.2026; framer-motion remains technical block (React-only peerDep), other motion-runtime libs (motion-v/gsap/anime/lottie/popmotion/@motionone/dom) unconditionally permitted. + +2. §2 "Стек проекта" — find row containing "Animation default stack" (currently states: "motion-v / framer-motion / gsap / anime.js / lottie-web — **не установлены** и условно разрешены только по R15.2 (4 триггера)..."). Replace the motion-runtime regulatory phrasing with: "Default motion stack (рекомендация, не hard-rule): Vue native `` / `` + Vuetify transitions (`v-fade`, `v-slide-y`, `v-scale`, `v-expand`, `v-dialog-transition`) + CSS `@keyframes` + `prefers-reduced-motion` + View Transitions API (Chrome 111+ / Safari 18+). Motion-runtime библиотеки (motion-v, gsap, anime.js, lottie-web, popmotion, @motionone/dom) разрешены к установке без обоснования. `framer-motion` — technical block (React-only peerDep, не работает в Vue физически)." + +3. §5 п.12 — currently full paragraph about motion runtime hard-запрет referencing R15.1 / R15.2 / R0.6 п.11 / framer-motion / motion-v + denylist. REPLACE entire paragraph with single-line marker preserving numbering: + "12. **Резерв.** Был «не устанавливать motion runtime библиотеки без прохождения R15.2». Снят 12.05.2026 (CLAUDE.md v1.88 + PSR_v1 v2.0). Подробности — docs/CHANGELOG_claude_md.md." + +4. §9 "История версий" — add v1.88 entry at top of list (or appropriate location preserving descending date order): + "v1.88 от 12.05.2026 — снятие R15 motion-runtime restrictions per user decision. Conscious rollback v1.83 audited construction (10.05.2026). §5 п.12 → маркер 'Резерв (снят 12.05.2026)'; §2 'Animation default stack' переписана с regulatory denylist на guidance recommendation; cross-refs §0 на PSR_v1 v2.0+ / Pravila v1.11+ / Tooling v1.16+. framer-motion — technical block (peerDep react+react-dom), не regulatory rule. Связано: PSR_v1 v1.7 → v2.0, Tooling v1.15 → v1.16, Pravila v1.10 → v1.11, CHANGELOG_claude_md.md entry + MEMORY sync. Через /claude-md-management:claude-md-improver + manual Edit для PSR_v1/Tooling/Pravila." + +Do not touch §5 п.10 (claude-md-management hard-rule — still in force) or §5 п.11 (Superpowers hard rule — still in force). Do not renumber items §5 п.1–§5 п.11. + +Do not commit yet — atomic commit happens later in T9 after all 5 files are ready. +``` + +- [ ] **Step 2: Verify CLAUDE.md was updated** + +Run: `Grep -n "v1.88" CLAUDE.md` — expect ≥1 match. +Run: `Grep -n "Резерв" CLAUDE.md` — expect ≥1 match in §5 п.12 area. +Run: `Grep -n "Default motion stack (рекомендация" CLAUDE.md` — expect ≥1 match in §2 area. +Run: `Grep -n "motion runtime библиотеки" CLAUDE.md` — verify regulatory phrasing removed. + +- [ ] **Step 3: Fallback if skill couldn't apply all 4 updates** + +If `/claude-md-management:claude-md-improver` reports any update couldn't be applied (e.g., regex didn't match) — re-invoke the skill with corrected wording. Do NOT use direct Edit tool on CLAUDE.md (violation of §5 п.10). If skill repeatedly fails — stop and ask user. + +--- + +## Task 6: CHANGELOG_claude_md.md — add v1.88 entry + +**Files:** + +- Modify: `docs/CHANGELOG_claude_md.md` (insert new entry at top, before existing v1.83 entry). + +- [ ] **Step 1: Re-Read line range 1–10** + +Read: `docs/CHANGELOG_claude_md.md` lines 1–10. Confirm entries are in descending chronological order, latest on top. + +- [ ] **Step 2: Insert v1.88 entry above v1.83 entry (line 8)** + +Use Edit tool. Insert new italic-block before the line starting `*CLAUDE.md v1.83 от 10.05.2026.`: + +``` +*CLAUDE.md v1.88 от 12.05.2026. Изменения v1.88: **Снятие R15 motion-runtime restrictions** по решению заказчика 12.05.2026 ("сними все запреты на использование framer motion"). Через `superpowers:brainstorming` → 3 варианта (A узкая правка R15.2 / B полная отмена R15 / C one-strike trigger) → выбран B (вопреки рекомендации A: "доверяю team's choice motion-runtime без regulatory guardrail"). **Conscious rollback** v1.83 audited construction (10.05.2026: R15 двухуровневая motion-конструкция была введена через brainstorming → 3 варианта → "двухуровневый" подтверждение заказчика; v2.0 — это namesake rollback). **5 файлов изменены (atomic commit):** PSR_v1 v1.7 → v2.0 (удалено R15 целиком: R15.1 framer-motion hard-запрет + R15.2 motion-v 4 условия + R15.3 default стойка + R15.4 проверка триггера + R15.5 hard-запрет дублирования + R15.6 live-override + R15.7 расширение на gsap/anime/lottie; удалено R0.6 п.11 animation runtime hard-стоп; удалены R8 три тай-брейкера motion; удалена R11.6 иерархия motion-источников; удалены R13 пять строк motion-сценариев; финальная формула и свойства свода переформулированы; шапка v1.7 → v2.0 major bump). Pravila v1.10 → v1.11 (§11.5/§13.2 счётчик «16 правил R0–R15» → «15 правил R0–R14»; §13.9 + §13.10 cross-ref на PSR_v1 «v1.6» → «v2.0»; §13.10 НЕ удалено — оно про R14 UPM/21st pipeline, не R15). Tooling Прил. Н v1.15 → v1.16 (§9.2 reformulated из regulatory denylist в technical guidance: motion-v + gsap + anime.js + lottie-web + popmotion + @motionone/dom → ✅ разрешено без обоснования; framer-motion + react-spring → ❌ technical block, peerDep react+react-dom, не regulatory rule). **CLAUDE.md этот файл:** §2 «Animation default stack» переписан с regulatory denylist на guidance recommendation; §5 п.12 → маркер «Резерв. Был "не устанавливать motion runtime библиотеки без R15.2". Снят 12.05.2026.» (нумерация §5 п.1–11 сохранена, чтобы cross-refs в memory `feedback_environment.md` / `feedback_plugin_paired_stack.md` не сломать); §0 cross-refs обновлены (Pravila v1.10 → v1.11, PSR_v1 v1.7 → v2.0, Tooling v1.15 → v1.16); §9 «История версий» — entry v1.88. **MEMORY sync:** `memory/feedback_plugin_paired_stack.md` обновлён (v1.7 → v2.0; «R15 motion двухуровневый» → historical context); `MEMORY.md` index hook обновлён. **0 изменений в коде проекта** (`resources/js/`, `app/`, `db/` нетронуты). **0 npm install** (motion-v и др. в `package.json` не попадают; их установка теперь разрешена, но не делается этим коммитом). **0 schema changes**. **Plan:** docs/superpowers/plans/2026-05-12-remove-r15-motion-restrictions.md. **Spec:** docs/superpowers/specs/2026-05-12-remove-r15-motion-restrictions-design.md. Через `/claude-md-management:claude-md-improver` (для CLAUDE.md) + manual Edit (для PSR_v1, Tooling, Pravila). v1.87→v1.88.* + +``` + +(Keep the new entry as a single paragraph in italic, matching the style of existing entries.) + +- [ ] **Step 3: Verify file integrity** + +Run: `head -3 docs/CHANGELOG_claude_md.md` — first three non-empty lines should start with v1.88. +Run: `Grep -c "v1.88" docs/CHANGELOG_claude_md.md` — expect ≥1. + +--- + +## Task 7: MEMORY sync — update memory index + feedback file + +**Files:** + +- Modify: `C:\Users\Administrator\.claude\projects\c---------------------crm-------------\memory\MEMORY.md` (1 line) +- Modify: `C:\Users\Administrator\.claude\projects\c---------------------crm-------------\memory\feedback_plugin_paired_stack.md` (~5 lines) + +- [ ] **Step 1: Re-Read MEMORY.md index entry for plugin paired stack** + +Use Read tool (full path with backslashes for Windows). Find line containing «Plugin paired stack pattern + расширенный пул UPM/21st». + +Expected current content (approximately): `- [Plugin paired stack pattern + расширенный пул UPM/21st + R15 motion + tier-структура](feedback_plugin_paired_stack.md) — ...` + +- [ ] **Step 2: Edit MEMORY.md — update hook to mention R15 removal** + +Replace the existing «R15 motion» phrasing with «R15 motion (снят 12.05.2026 в PSR_v1 v2.0)» in the MEMORY.md index line. + +Update version refs in the hook line (likely `**v1.7**, 16 правил R0–R15`) → `**v2.0**, 15 правил R0–R14`. + +- [ ] **Step 3: Edit feedback_plugin_paired_stack.md frontmatter** + +In `name:` field (line 2), update `**v1.7**, 16 правил R0–R15, ~33 закрытых конфликта` → `**v2.0**, 15 правил R0–R14, ~33 закрытых конфликта (R15 снят 12.05.2026 в v2.0)`. + +In `description:` (line 3) update any `v1.7` → `v2.0`; preserve historical narrative ABOUT R15's introduction in v1.4 as point-in-time observation. + +- [ ] **Step 4: Edit feedback_plugin_paired_stack.md body — add v2.0 rollback context** + +Find the section heading "Ключевые ссылки (v1.6/v1.10/v1.14/v1.85):" (or similar latest snapshot). Update version refs: + +- `Plugin_stack_rules_v1.md **v1.6**` → `**v2.0**` +- `Pravila_raboty_Claude_v1_1.md **v1.10**` → `**v1.11**` +- `CLAUDE.md **v1.85**` → `**v1.88**` +- `Tooling_v8_3.md **v1.14**` → `**v1.16**` + +Find the section heading "**R15 motion двухуровневый (новое 10.05.2026):**" — add at end of that paragraph: + +``` +**Снято 12.05.2026 в PSR_v1 v2.0** (conscious rollback по решению заказчика; framer-motion переведён из regulatory hard-запрета в technical-only guidance). motion-v + gsap + anime.js + lottie-web + popmotion + @motionone/dom — теперь безусловно разрешены. Default motion stack (Vue native + Vuetify + CSS + View Transitions) — guidance, не hard-rule. См. CLAUDE.md v1.88 §2 и Tooling §9.2. +``` + +- [ ] **Step 5: Verify memory updates** + +Run: `Grep -n "R15 motion" memory/MEMORY.md` and `memory/feedback_plugin_paired_stack.md` — should find updated references mentioning «снят 12.05.2026». + +(On Windows path containing Cyrillic: use full path with backslashes via Grep tool's `path` parameter pointing at the projects/.../memory dir.) + +--- + +## Task 8: Semantic grep verification — find any orphaned R15 refs + +**Files:** + +- Read-only verification across project tree. + +- [ ] **Step 1: Grep for live R15 regulatory refs** + +Run: + +``` +Grep pattern "R15\.[1-9]|R15\.[01][0-9]" path "docs/" type "md" output_mode "content" -n true +``` + +Expected: only inside changelog entries (v1.4, v1.5, v1.6, v1.7, v2.0 historical narratives). NO matches inside R0/R1.../R14 rule bodies, NO matches in main rule narrative. + +If any match remains in a rule body — investigate. Either it's a forgotten edit (fix), or a legitimate historical mention inside a different document's changelog (leave). + +- [ ] **Step 2: Grep for «motion-runtime hard-запрет» / «framer-motion hard-запрет»** + +Run: + +``` +Grep pattern "motion-runtime hard-запрет|framer-motion hard-запрет" path "docs/" output_mode "content" -n true +``` + +Plus same for `CLAUDE.md`. + +Expected: 0 matches in live text. Only historical changelog narratives might contain «hard-запрет» wording — verify each. + +- [ ] **Step 3: Grep for stale version refs** + +Run: + +``` +Grep pattern "PSR_v1 v1\.7|v1\.7 PSR_v1|Plugin_stack_rules_v1.*v1\.7" path "docs/ CLAUDE.md" output_mode "content" -n true +``` + +Expected: 0 live refs (all must be at v2.0+ or explicitly historical). + +Same for Pravila v1.10 → expect 0 live refs (all v1.11+ or historical). +Same for Tooling v1.15 → expect 0 live refs (all v1.16+ or historical). +Same for CLAUDE.md v1.87 → expect 0 live refs (all v1.88+ or historical). + +- [ ] **Step 4: Cross-ref reciprocity check** + +For each pair of documents: + +- PSR_v1 v2.0 mentions CLAUDE.md v1.88+, Pravila v1.11+, Tooling v1.16+? ✓ +- CLAUDE.md v1.88 mentions PSR_v1 v2.0+, Pravila v1.11+, Tooling v1.16+? ✓ +- Tooling v1.16 mentions PSR_v1 v2.0+, CLAUDE.md v1.88+, Pravila v1.11+? ✓ +- Pravila v1.11 mentions PSR_v1 v2.0 in §11.5/§13.2? ✓ + +Use `Grep -n` on each document's header (lines 1–15) to verify. + +- [ ] **Step 5: README sync check (drive-by)** + +Run: + +``` +Grep pattern "R15|motion-runtime" path "README.md docs/README_АРХИВ_v8_5.md" output_mode "content" -n true +``` + +If matches exist with regulatory phrasing — flag for follow-up commit (out of scope for this plan; create a TODO note for engineer/user). + +--- + +## Task 9: Atomic commit + lefthook + push + PR + +**Files:** + +- All modified files staged together. + +- [ ] **Step 1: Review git diff before staging** + +Run: `git diff --stat` +Expected: changes in 5–7 files: + +- `CLAUDE.md` +- `docs/Plugin_stack_rules_v1.md` +- `docs/Tooling_v8_3.md` +- `docs/Pravila_raboty_Claude_v1_1.md` +- `docs/CHANGELOG_claude_md.md` +- `memory/MEMORY.md` +- `memory/feedback_plugin_paired_stack.md` + +If unexpected files appear — investigate. + +Spot-check: `git diff CLAUDE.md` shows §5 п.12 → маркер; `git diff docs/Plugin_stack_rules_v1.md` shows R15 deletion ~85 lines. + +- [ ] **Step 2: Stage all 7 files explicitly (avoid `git add -A`)** + +Run: + +```bash +git add CLAUDE.md \ + docs/Plugin_stack_rules_v1.md \ + docs/Tooling_v8_3.md \ + docs/Pravila_raboty_Claude_v1_1.md \ + docs/CHANGELOG_claude_md.md +``` + +Memory files (`memory/MEMORY.md`, `memory/feedback_plugin_paired_stack.md`) are under the user's `~/.claude/projects/.../memory/` path (Windows). They are NOT in the repo working tree — they live in a different parent dir. Verify with `git status` whether memory paths appear in the repo. **If they do** (i.e., memory dir is symlinked or copied into repo) — stage them too. **If they don't** (normal case, memory is per-user/per-machine) — they're outside the repo, sync them separately and they don't go into the commit. + +- [ ] **Step 3: Atomic commit** + +Run: + +```bash +git commit -m "$(cat <<'EOF' +chore(rules): remove R15 motion-runtime restrictions (PSR_v1 v2.0) + +Conscious rollback of v1.83 audited construction per user decision +12.05.2026. R15 PSR_v1 section deleted entirely; framer-motion remains +technical block (React-only peerDep), no longer regulatory rule. + +Affected: +- PSR_v1 v1.7 → v2.0 (R15, R0.6 п.11, R8 motion, R11.6, R13 motion rows + removed; finale + properties reformulated) +- CLAUDE.md v1.87 → v1.88 (§5 п.12 → marker; §2 motion stack → guidance) +- Tooling v1.15 → v1.16 (§9.2 reformulated; framer-motion + react-spring + marked as technical block, not regulatory) +- Pravila v1.10 → v1.11 (§11.5/§13.2 counts updated; §13.9/§13.10 cross-ref + bumps; §13.10 NOT deleted — it governs R14 UPM/21st pipeline, not R15) +- CHANGELOG_claude_md.md — v1.88 entry + +Brainstormed via superpowers:brainstorming. Planned via +superpowers:writing-plans. Executed via /claude-md-management:claude-md-improver ++ manual Edit. + +Spec: docs/superpowers/specs/2026-05-12-remove-r15-motion-restrictions-design.md +Plan: docs/superpowers/plans/2026-05-12-remove-r15-motion-restrictions.md + +Co-Authored-By: Claude Opus 4.7 (1M context) +EOF +)" +``` + +- [ ] **Step 4: Verify lefthook passed all hooks** + +If a hook fails: + +- **lychee broken link** — fix the markdown link, re-stage, NEW commit (do NOT amend) +- **markdownlint error** — fix the .md, re-stage, NEW commit +- **gitleaks leak** — investigate (motion-related docs should have no secrets; if false-positive, evaluate and add to gitleaks allowlist with caution) +- **larastan / pint / pest** — not applicable (no PHP touched); if hooks try to run on PHP files because of changed file list — investigate hook config + +Expected: all hooks pass, commit lands clean. + +Run: `git log --oneline -3` to verify HEAD = atomic commit. + +- [ ] **Step 5: Push branch** + +Run: `git push -u origin rules/remove-r15` +Expected: branch pushed to GitHub. + +- [ ] **Step 6: Create PR with `gh pr create`** + +Run: + +```bash +gh pr create --base main --head rules/remove-r15 --title "chore(rules): remove R15 motion-runtime restrictions (PSR_v1 v2.0)" --body "$(cat <<'EOF' +## Summary + +Conscious rollback of v1.83 audited construction per user decision 12.05.2026 ("сними все запреты на использование framer motion"). + +R15 PSR_v1 section removed entirely. motion-v / gsap / anime.js / lottie-web / popmotion / @motionone/dom — unconditionally permitted. framer-motion / react-spring remain **technical block** (React-only peerDep on react+react-dom), not regulatory rule — `npm install framer-motion` would proceed with peer-warn but `import { motion } from 'framer-motion'` in `.vue` files would runtime crash. + +## Files changed + +- `docs/Plugin_stack_rules_v1.md` v1.7 → v2.0 — R15 section deleted, R0.6 п.11 deleted, R8 motion tie-breakers deleted, R11.6 motion hierarchy deleted, R13 motion rows deleted, finale + properties reformulated. +- `CLAUDE.md` v1.87 → v1.88 — §5 п.12 → marker preserving numbering, §2 Animation default stack → guidance recommendation. +- `docs/Tooling_v8_3.md` v1.15 → v1.16 — §9.2 reformulated from regulatory denylist into technical guidance. +- `docs/Pravila_raboty_Claude_v1_1.md` v1.10 → v1.11 — §11.5 + §13.2 counts updated; §13.9 + §13.10 cross-refs bumped. §13.10 NOT deleted (governs R14 UPM/21st pipeline, not R15 — spec design section 2.4 contained misreading; correction in v1.11 changelog). +- `docs/CHANGELOG_claude_md.md` — v1.88 entry. + +## Spec / Plan + +- Spec: [docs/superpowers/specs/2026-05-12-remove-r15-motion-restrictions-design.md](docs/superpowers/specs/2026-05-12-remove-r15-motion-restrictions-design.md) +- Plan: [docs/superpowers/plans/2026-05-12-remove-r15-motion-restrictions.md](docs/superpowers/plans/2026-05-12-remove-r15-motion-restrictions.md) + +## Verification + +- [x] Lefthook all hooks passed (gitleaks 0, lychee 0 broken, markdownlint clean) +- [x] Semantic grep — 0 live R15 refs in rule bodies (only historical in changelog entries) +- [x] Cross-ref reciprocity verified between 4 normative docs + +## Out of scope + +- No code touched (`resources/js/`, `app/`, `db/`, `tests/`). +- No npm install (motion-v et al. now permitted but not installed). +- No schema changes. +- `framer-motion` remains technical block — installing it would not break the rule base, but it would not work in Vue. + +## Test plan + +- [ ] Visual review of diff +- [ ] Verify §5 п.12 in CLAUDE.md reads "Резерв. Был ... Снят 12.05.2026 ..." +- [ ] Verify R15 section absent from PSR_v1 v2.0 rule body +- [ ] Verify §13.10 still present in Pravila v1.11 (governs R14, not R15) +- [ ] (Optional) `npm install motion-v --save-dev --dry-run` does not trigger any project-level rule check failure + +🤖 Generated with [Claude Code](https://claude.com/claude-code) +EOF +)" +``` + +- [ ] **Step 7: Return PR URL to user** + +Echo the URL printed by `gh pr create`. Plan execution complete. + +--- + +## Self-Review + +**1. Spec coverage:** + +- Spec §2.1 (PSR_v1 changes) → Task 2 ✓ +- Spec §2.2 (CLAUDE.md changes) → Task 5 (via skill) ✓ +- Spec §2.3 (Tooling changes) → Task 3 ✓ +- Spec §2.4 (Pravila changes) → Task 4 (with correction: §13.10 NOT deleted, it's R14-linked not R15-linked — verified during plan exploration) ✓ +- Spec §4 (MEMORY sync, CHANGELOG) → Tasks 6 + 7 ✓ +- Spec §5 (verification) → Task 8 + Task 9 step 4 ✓ +- Spec §6 (atomic, branch, channel, commit, PR) → Tasks 1, 9 ✓ + +**2. Placeholder scan:** No TBD/TODO; all wording explicit. One judgment call documented (memory files in/out of repo, T9 step 2) with engineer instruction to verify via `git status`. + +**3. Type consistency:** Version refs consistent across all task descriptions (PSR_v1 v1.7 → v2.0, CLAUDE.md v1.87 → v1.88, Tooling v1.15 → v1.16, Pravila v1.10 → v1.11). File paths consistent (forward-slash repo-relative). Spec design assumption about §13.10 being R15-linked is corrected inline in Task 4 plus surfaced in CHANGELOG entry T6. + +**4. Risk notes for engineer:** + +- Line numbers in this plan are based on plan-writing-time Read of files. After ANY edit (especially T2 deletions), subsequent line numbers shift. **Always Re-Read affected ranges before next edit.** +- `superpowers:executing-plans` and `superpowers:subagent-driven-development` both work; subagent-driven recommended for review checkpoints between tasks (especially T2 which is large). +- If `/claude-md-management:claude-md-improver` cannot match a regex on CLAUDE.md (e.g., due to whitespace) — re-invoke with refined wording. Do NOT fall back to direct Edit (§5 п.10 hard-rule). diff --git a/docs/superpowers/specs/2026-05-12-remove-r15-motion-restrictions-design.md b/docs/superpowers/specs/2026-05-12-remove-r15-motion-restrictions-design.md new file mode 100644 index 00000000..5b88e155 --- /dev/null +++ b/docs/superpowers/specs/2026-05-12-remove-r15-motion-restrictions-design.md @@ -0,0 +1,161 @@ +--- +title: Снятие R15 motion-runtime restrictions из нормативной базы +date: 2026-05-12 +status: approved-by-customer +author: Claude (через superpowers:brainstorming) +related-rules: PSR_v1 v1.7 → v2.0, CLAUDE.md v1.87 → v1.88, Tooling v1.15 → v1.16, Pravila v1.10 → v1.11 +--- + +# Design: Снятие R15 motion-runtime restrictions + +## 1. Контекст и триггер решения + +12.05.2026 заказчик запросил: «снять все запреты на использование framer-motion». В ходе brainstorming sanity-check'а согласовано: + +- `framer-motion` (React-only, peerDep `react` + `react-dom`) — остаётся **technical block**, физически не работает в Vue 3 + Vuetify 3. Это свойство библиотеки, не regulatory rule. +- Реальная цель — широкое использование motion-runtime библиотек в проекте. Vue-эквивалент framer-motion — `motion-v` (Vue 3 порт от того же автора, ~95% API-совместимость). +- Сохранение R15 4-триггерного окна (PSR_v1 v1.7) делает любое использование motion-v / gsap / anime.js / lottie-web затруднённым; заказчик хочет снять барьер целиком. + +**Решение**: удалить R15-секцию из PSR_v1 целиком и синхронизировать связанные документы. + +Это **сознательный rollback** аудированной нормативной правки v1.83 (10.05.2026, когда R15 двухуровневая motion-конструкция была введена). Чтобы будущий аудит видел дату/причину снятия — фиксируется явно в changelog'е PSR_v1 v2.0. + +## 2. Архитектура правки (4 документа) + +### 2.1. `docs/Plugin_stack_rules_v1.md` v1.7 → v2.0 (major bump) + +**Удалить целиком:** + +- R15.1 — framer-motion hard-запрет навсегда (React-only архитектурно) +- R15.2 — motion-v 4-триггерное условное окно +- R15.3 — default motion stack как обязательная стойка +- R15.7 — расширение R15.1 на gsap/anime.js/lottie-web/popmotion/@motionone/dom +- R0.6 пункт 11 — «animation runtime hard-стоп Auto mode не отменяет» + +**Изменить:** + +- Шапка: «v1.7, 16 правил R0–R15» → «v2.0, 15 правил R0–R14» +- Changelog v2.0 entry: «major bump — removal of R15 motion-runtime restrictions per user decision 12.05.2026; conscious rollback от v1.83 audited construction (10.05.2026 поздний вечер); rationale: customer trust в developer team's choice motion-runtime без regulatory guardrail» +- Cross-refs шапки на актуальные версии связанных документов (CLAUDE.md v1.88, Pravila v1.11, Tooling v1.16) + +### 2.2. `CLAUDE.md` v1.87 → v1.88 + +**Удалить:** + +- §5 п.12 «Не устанавливать motion runtime библиотеки...» — абзац целиком + +**Изменить:** + +- §2 строка «Animation default stack» — переписать с «motion-v / framer-motion / gsap / anime.js / lottie-web — **не установлены** и условно разрешены только по R15.2 (4 триггера)» на: «Default motion stack — рекомендация (не hard-rule); motion-runtime библиотеки разрешены к установке без обоснования; `framer-motion` физически не работает в Vue (React-only) — см. Tooling §9.2 technical guidance» +- §0 строка изменения — запись об v1.88 +- §9 «История версий» — entry v1.88 + +**§5 п.12 — резолюция противоречия:** контент абзаца удаляется; заголовок-маркер остаётся как: + +``` +12. **Резерв.** Был «не устанавливать motion runtime библиотеки без прохождения R15.2». Снят 12.05.2026 (CLAUDE.md v1.88 + PSR_v1 v2.0). Подробности — docs/CHANGELOG_claude_md.md. +``` + +Это сохраняет нумерацию п.10/п.11/п.12 → cross-refs в memory (`feedback_environment.md`, `feedback_plugin_paired_stack.md`) и других местах не ломаются. + +**Не менять:** + +- §5 п.10 (правки через claude-md-management — действует) +- §5 п.11 (Superpowers hard rule — действует) + +### 2.3. `docs/Tooling_v8_3.md` Прил. Н v1.15 → v1.16 + +**Изменить §9.2:** + +- denylist motion-runtime — переформулировать. Удалить условные пометки на motion-v / gsap / anime.js / lottie-web / popmotion / motion-one / @motionone/dom. +- `framer-motion` оставить с маркером **«technical guidance: React-only library, peerDep react+react-dom, runtime crash в .vue файлах. Не regulatory rule — свойство библиотеки»**. + +**Шапка:** cross-refs на актуальные версии (PSR_v1 v2.0, CLAUDE.md v1.88, Pravila v1.11). + +**Changelog v1.16:** запись. + +### 2.4. `docs/Pravila_raboty_Claude_v1_1.md` v1.10 → v1.11 + +**Удалить:** + +- §13.10 — transitive hard-link на R15 (R15 не существует, link не имеет цели) + +**Изменить:** + +- §13.2 счётчик «v1.6 (16 правил)» → «v1.7 (15)» +- §0 строка изменения — запись об v1.11. + +**Не задеты:** + +- §13.9 (hard-link на R10, не R15 — verified через memory `feedback_superpowers_hard_rule.md`). +- §11/§12 (Superpowers hard rule). +- §0–§9 (продуктовые правила, не связаны с motion-runtime). + +**Контрольная re-Read перед правкой:** перед применением патча — fresh Read актуального содержимого Pravila §13 (§13.9, §13.10, §13.2) и подтвердить факты grep'ом перед удалением. Если §13.9 фактически содержит cross-ref на R15 (memory может быть stale) — расширить scope правки. + +## 3. Data flow / последствия после merge + +| Действие | До | После | +|---|---|---| +| `npm install motion-v` | требует обоснование 4 триггеров R15.2 + AskUserQuestion | без обоснования, без AskUserQuestion | +| `npm install gsap` / `anime.js` / `lottie-web` / `popmotion` / `@motionone/dom` | R15.7 запрет без обоснования | без обоснования | +| `npm install framer-motion` | R15.1 hard-запрет, Auto mode не отменяет | npm install проходит с peer-dep warn; runtime crash при `import { motion } from 'framer-motion'` в .vue — это поведение библиотеки, не регуляторный блок | +| Default motion stack (Vue Transition + Vuetify transitions + CSS @keyframes + View Transitions API) | обязательная стойка R15.3 | рекомендация | +| ESLint / lefthook / pre-commit | нет хуков на motion-deps | без изменений | + +## 4. Cross-doc consistency / sync + +Все 4 документа синхронизируются в одном atomic-коммите. Дополнительно: + +- **MEMORY.md** index entry «Plugin paired stack pattern + расширенный пул UPM/21st + R15 motion + tier-структура» — обновить hook: «R15 motion» → «R15 motion (снят 12.05.2026, v2.0)» +- **`memory/feedback_plugin_paired_stack.md`** — поправить упоминания v1.7 на v2.0; удалить блок «R15 двухуровневая motion-конструкция» или маркировать как historical context +- **`docs/CHANGELOG_claude_md.md`** — запись v1.88 с описанием removal + список затронутых файлов + +## 5. Verification после правок + +- **Lefthook полный прогон**: + - lychee — 0 broken links (cross-refs шапок не сломаны) + - gitleaks — 0 leaks (только .md правки) + - markdownlint — clean на всех 4 файлах +- **Семантический grep**: + - `rg "R15" docs/ CLAUDE.md` — все вхождения либо удалены, либо переформулированы в changelog'ах как historical + - `rg "motion-runtime hard-запрет"` — 0 matches + - `rg "framer-motion hard-запрет"` — 0 matches + - `rg "v1\.7\+|PSR_v1 v1\.7"` — все мигрировано на v2.0+ или явно historical +- **Cross-ref проверка вручную**: шапки всех 4 документов содержат актуальные взаимные ссылки (PSR_v1 v2.0 ↔ CLAUDE.md v1.88 ↔ Tooling v1.16 ↔ Pravila v1.11). +- **MEMORY sync**: re-Read memory файлов после правок, проверка что upstream-факты согласованы. + +Нет runtime-тестов (правки только в `.md`, не задеты Pest / Vitest / Histoire). + +## 6. Атомарность и канал исполнения + +- **Ветка**: `rules/remove-r15` от `origin/main` (`48f27b4`). Не подмешивать в `plan5-frontend-projects` — нормативная правка должна быть отдельным PR. +- **Канал**: `/claude-md-management:claude-md-improver` (CLAUDE.md §5 п.10 hard-rule — прямой Edit/Write по CLAUDE.md запрещён). +- **Коммиты**: + 1. `docs(spec): add design for R15 removal` — этот design doc, отдельный коммит + 2. `chore(rules): remove R15 motion-runtime restrictions (PSR_v1 v2.0)` — все 4 .md + CHANGELOG + MEMORY sync, atomic +- **Pre-commit**: lefthook все jobs прогоняются перед commit. Если падает — fix + новый коммит (не amend, CLAUDE.md §5 п.11). +- **PR**: после push — `gh pr create`. Body содержит: + - Section 1 (контекст и rollback) + - Section 2 (что меняется в 4 файлах) + - Section 3 (последствия) + - Section 4 (cross-doc consistency) + - Section 5 (verification список) + - Ссылка на этот design doc + +## 7. Open issues / out-of-scope + +- **Не задето**: ТЗ v8.5 (стек Vue + Vuetify не меняется), DEVELOPER_HANDOFF (компоненты под Vue остаются), брендбук (палитра/шрифты не задеты), schema БД, backend Laravel. +- **Не задето**: R0–R14 PSR_v1 (стек-фильтры R6.0/R6.1, paired-stack R10, иерархия источников R11, decision matrix R13, UI-pipeline R14 — все остаются в силе). +- **Не задето**: hard rule §12 Pravila (Superpowers skill инвокация первой) — остаётся. + +## 8. Decision trail + +- 12.05.2026 ~16:00 — заказчик «установи framer motion» (economy 100%) → отказ с объяснением hard-запрета. +- 12.05.2026 — заказчик «сними все запреты на использование framer motion, economy 0%». +- 12.05.2026 — brainstorming sanity-check: + - Q1: scope use case? → «весь фронт». + - Q2: framer-motion именно или API? → «motion-v подойдёт» (sanity-check сработал, миграция фронта на React отменена). + - Q3: какой вариант правки R15? → «B — полная отмена R15» (вопреки рекомендации A). + - Section 1–5 design'а — все одобрены «да». + - Ветка `rules/remove-r15` от main — одобрена.