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) <noreply@anthropic.com>
This commit is contained in:
@@ -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) <noreply@anthropic.com>
|
||||
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 `<Transition>`) → 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 `<Transition>` (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 `<Transition>` для не-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 `<Transition>` + 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 `<Transition>` / `<TransitionGroup>` | 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 `<Transition>` / `<TransitionGroup>` + 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) <noreply@anthropic.com>
|
||||
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).
|
||||
@@ -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 — одобрена.
|
||||
Reference in New Issue
Block a user