# 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).
