Compare commits

...

6 Commits

Author SHA1 Message Date
Дмитрий f381c1a8e3 docs(sync): version bumps + §0 cross-refs untie L-chains
Финальный нормативный синк после Tasks 1-4 (через normative-sync agent #84):
  CLAUDE.md  v2.28 -> v2.29 (§0 row updates Pravila/PSR_v1 + §9 +entry)
  Tooling   Прил.Н v2.23 — без bump'а; обновлены только inline cross-ref pins
            (v1.42+/v3.22+/v2.28+ -> v1.43+/v3.23+/v2.29+) для green C2 checker.

Связки L1-L16 переписаны как справочный материал во всех 4 живых нормативных
документах (routing-off-phase / router-procedure / PSR_v1 R15.2 / Pravila §17.7).
Инфраструктура tools/observer-chain-* не тронута.

Pravila v1.42 -> v1.43 и PSR_v1 v3.22 -> v3.23 уже закоммичены в Tasks 3-4.
2026-05-26 07:25:38 +03:00
Дмитрий 9cc8aa60c8 docs(pravila): §17.7 канал chain:<L#> = осознанный выбор
§17.7 канал chain:<L#> получил note: связки — справочный материал per
routing-off-phase v1.7, применение канала = осознанный выбор, не обязательство
'я использовал узел из связки -> обязан написать chain:<L#>'. Если задача
покрыта одиночным узлом -> выбирай node:<NN>.

Состав 6 каналов coverage не меняется.

v1.42 -> v1.43.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 07:16:25 +03:00
Дмитрий 3b070c23d2 docs(psr): R15.2 связки 12->16 + статус справочный
R15.2 sync со связками-как-справочник: счётчик L1-L12 -> L1-L16 (актуальный
после A1/A8/C1), статус связок переписан с прескриптивного на справочный per
routing-off-phase v1.7. R15.1 / R15.3-R15.7 без изменений.

v3.22 -> v3.23.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 07:14:18 +03:00
Дмитрий 1e0c67304c docs(router): Step 4 связки как hint, не invoke
router-procedure.md Step 4 'Canonical chain check' переписан с 'invoke the chain'
на 'available as a hint, not a requirement'. L1-L12 правлено на L1-L16
(актуальный счётчик после A1/A8/C1 marketing).

v1.4 -> v1.5. Часть плана 2026-05-26-untie-l-chains-from-normative.
2026-05-26 07:12:16 +03:00
Дмитрий acb81b69ed docs(routing): связки L1-L16 переописаны как справочный материал
Снимается прескриптивный статус связок: интро § «Канонические связки» теперь
явно говорит «справочник, не ожидание»; в «Дисциплине выбора» добавлен п.7
«узел можно вызвать одиночно, даже если входит в связку». В п.2 добавлены
#82 DataForSEO / #83 Unisender Go в актуальный DEFERRED-список.

Инфраструктура tools/observer-chain-* не тронута (карта/детектор/retrofill/C6/
matrix/step-4) — она безвредна и не давит за пропуск связки.

Pravila §17.7 канал chain:<L#> остаётся в Task 4 этого плана с явной пометкой
'осознанный выбор'.

routing-off-phase v1.6 -> v1.7.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 07:10:18 +03:00
Дмитрий 1bf7f9305a plan: 2026-05-26 untie L-chains from normative
Plan to rewrite L1-L16 canonical chain references in 4 live normative
docs (routing-off-phase, router-procedure, PSR_v1 R15.2, Pravila §17.7)
from prescriptive ('invoke the chain', 'should be used') to advisory
('reference material, not expectation', 'available as hint').

Infrastructure tools/observer-chain-* (map + detector + retrofill + C6
controller + matrix.chain_ref + discipline step 4) NOT touched — it is
harmless and does not penalize chain skips.

Channel chain:<L#> in Pravila §17.7 retained as one of 6 coverage channels
with explicit 'conscious choice, not obligation' note.

Per AskUserQuestion 2026-05-26: user chose option C ("remove chains from
normative as expectation").
2026-05-26 07:07:42 +03:00
7 changed files with 465 additions and 23 deletions
+5 -3
View File
File diff suppressed because one or more lines are too long
+5 -3
View File
@@ -1,8 +1,10 @@
# Plugin Stack Rules — Superpowers + Frontend Design (v3.22)
# Plugin Stack Rules — Superpowers + Frontend Design (v3.23)
**Дата:** 22.05.2026
**Дата:** 26.05.2026
**Назначение:** свод правил совместного использования плагинов Claude Code в проекте Лидерра — paired-stack ядро `obra/superpowers` (14 skills) + `anthropics/frontend-design`, плюс расширенный пул UI-инструментов `ui-ux-pro-max` (skill, marketplace `nextlevelbuilder/ui-ux-pro-max-skill`) и `21st.dev Magic MCP` (MCP-сервер `magic`), плюс инфраструктурный `claude-md-management` (skills, marketplace `anthropics/claude-plugins-official`), плюс **debug-runtime MCP** `@sentry/mcp-server` + `@modelcontextprotocol/server-redis` (v2.1+, R10.1 Блок 3). **17 правил R0R16** (R15 off-phase routing введён в v3.14 на освободившийся после v2.0 R15-motion слот; R16 brain evidence loop введён в v3.16).
**v3.23** — R15.2 sync со связками-как-справочник: счётчик 12→16 (актуальный после A1/A8/C1), статус связок переписан с прескриптивного на справочный per routing-off-phase v1.7. Никаких новых правил R15 не вводится; R15.1/R15.3-R15.7 без изменений. Связано: routing-off-phase.md v1.7, CLAUDE.md v2.28+, Pravila v1.42+.
**v3.22** — C1 marketing-tooling: R10.1 Блок 1 +2 строки (**marketing** #74, Anthropic `knowledge-work-plugins/marketing`; **brand-voice** #76, Anthropic partner-built/Tribe AI) + Блок 1 note (v3.22 — **marketingskills** #75 вендорен MIT, материал/резерв-библиотека; **marketing-ru** #77 self-authored project-скил, eval 20/20) + Блок 3 +6 строк (**Метрика MCP** #78 `atomkraft/yandex-metrika-mcp` READ-ONLY; **Директ+Wordstat MCP** #79 `SvechaPVL/yandex-mcp` Wordstat-only, Direct-mutations disabled IS9; **Telegram MCP** #80 `chigwell/telegram-mcp` Apache-2.0; **Postiz MCP** #81 self-host AGPL-3.0 internal; **DataForSEO MCP** #82 DEFERRED — платный post-Б-1; **Unisender Go MCP** #83 DEFERRED — своя обёртка). Новая 18-я off-phase подкатегория **marketing-tooling** (раздел C1 карты). Не UI → вне R6.0/R6.1/R14. R15.6 +marketing-tooling. Провенанс-вет IS9 выполнен (`docs/security/marketing-vet.md`, 5 инструментов PASS/PASS-with-conditions). Содержательных изменений R0–R14, R16: 0. Связано: Tooling v2.23+, Pravila v1.42+, CLAUDE.md v2.27+; план `docs/superpowers/plans/2026-05-22-c1-marketing-tooling.md`; spec `docs/superpowers/specs/2026-05-22-c1-marketing-tooling-design.md`.
**v3.21** — A8 infosec-tooling install-sync: ZAP #68 + Ward #70 установлены портативно 21.05.2026 (без choco) → в R10.1 Блок 1 note (Ward) + Блок 3 (ZAP MCP-row) снят статус PENDING INSTALL. Содержательных изменений R0–R16: 0; счётчики/состав без изменений. Связано: Tooling v2.21, Pravila v1.38, CLAUDE.md v2.25; setup-доки `docs/security/{zap,ward}-setup.md`; план `docs/superpowers/plans/2026-05-21-a8-infosec-tooling.md`.
@@ -817,7 +819,7 @@ R6.0 / R6.1 / R14 pipeline **не применяются** к off-phase узла
### 15.2. Routing-таблица — внешний документ
Полная таблица «задача → off-phase узел» вынесена в [`docs/routing-off-phase.md`](routing-off-phase.md) v1.0+. Там же — 12 канонических связок 2+ узлов (L1–L12, закрывает Rec4 SYSTEM-аудита: brainstorming-chain, security-слой, project-management-связка, runtime-debug, ML-trio и т.д.) + список anti-pattern связок.
Полная таблица «задача → off-phase узел» вынесена в [`docs/routing-off-phase.md`](routing-off-phase.md) v1.7+. Там же — 16 канонических связок 2+ узлов (L1–L16; счётчик вырос v1.0 → v1.4 при A1/A8/C1 интеграциях) **в статусе справочного материала, не ожидания** (per routing-off-phase v1.7 от 26.05.2026): связки описывают известные синергии узлов, но их применение факультативно — ad-hoc-комбинация валидна. См. там же anti-pattern блок.
PSR_v1 не дублирует 30-строчную таблицу — single home в routing-off-phase.md. При коллизии содержимого побеждает routing-off-phase.md (он SoT по off-phase routing); R15.1/R15.3R15.5 этого правила — мета-слой.
+4 -3
View File
@@ -1,7 +1,7 @@
# Правила работы Claude в проекте «Лидерра»
**Версия:** v1.42 (25.05.2026)
**Дата:** 25.05.2026
**Версия:** v1.43 (26.05.2026)
**Дата:** 26.05.2026
**Назначение:** настройки проекта (Project instructions) — Claude читает этот файл в каждом чате и следует правилам ниже.
**Статус документа:** ✅ утверждён. Содержимое скопировано в поле "Project instructions" Claude.ai. Файл хранится в архиве как служебный документ.
@@ -645,6 +645,7 @@ P0 = блокер старта спринта или регуляторного
| **v1.31** | **19.05.2026** | Brain governance: +§16 «Регламент «мозга»» (router-only архитектура §16.1 + observer Stop-event §16.2 + 4 контролёра C1-C4 §16.3 + поведенческое правило «не использован ≠ проблема» §16.4 + не override-floor §9 §16.5 + cross-refs §16.6). Уровень рекомендации §13 — НЕ explicit hard-rule вне §9. Тремя hard-rules вне §9 остаются §12 / §14 (dormant) / §15. ADR-011 enforcement через `adr-judge` lefthook job (секция `## Enforcement` обязательна). Связано: ADR-011 `docs/adr/ADR-011-brain-governance.md`, spec `docs/superpowers/specs/2026-05-19-brain-governance-design.md`, plan `docs/superpowers/plans/2026-05-19-brain-governance.md`, procedure `docs/router-procedure.md`, memory `feedback_brain_unused_tools_not_problem.md` + `project_brain_governance_design.md`. Архитектурных изменений в §§1–15: 0. |
| **v1.32** | **19.05.2026** | Observer factor-analysis extension (ADR-011 amend): §16.2 +абзац «Схема эпизода v2» (`schema_version: 2`, `decision_provenance`, `environment`, `task_size`, `task_ref`, `prompt_signal`; `outcome` `unknown` при записи; виды событий +`hook_fired`/`interrupt`/`retry`/`time_burn`/`parse_gap`); §16.3 4→5 контролёров (+C5 observer-coverage-checker, warn-only); §16.7 (новое) routing-тег-дисциплина — Stop-хук `decision: block` при навязанном методе без тега, `stop_hook_active` guard; §16.8 (новое) самодисциплина наблюдателя (`observer_error` маркер, `parse_gap` событие, C5). Spec `docs/superpowers/specs/2026-05-19-observer-factor-analysis-design.md`, plan `docs/superpowers/plans/2026-05-19-observer-factor-analysis.md`. Связано: PSR_v1 v3.17, CLAUDE.md v2.19. Архитектурных изменений в §§1–15: 0. |
| **v1.33** | **19.05.2026** | Observer factor-analysis phase 1.1 (ADR-011 amend): §16.2 — `decision_provenance.kind` расширен до 3 значений (`autonomous` \| `user_directed_method` \| `user_chose_from_options`); 3-й kind — collaborative-choice case (заказчик выбирает один из вариантов, предложенных Claude в предыдущем ходе). §16.7 +абзац «Граница `user_chose_from_options`»: routing-gate НЕ блокирует этот kind — выбор из choice-space, сформулированного самим Claude, не навязанный извне метод; routing-тег не обязателен (детектор `tools/observer-choice-detector.mjs` детерминированный). Spec §11 `docs/superpowers/specs/2026-05-19-observer-factor-analysis-design.md` v1.1, plan `docs/superpowers/plans/2026-05-19-observer-factor-analysis-phase-1-1.md`. Связано: CLAUDE.md v2.20. Архитектурных изменений в §§1–15: 0. |
| **v1.43** | **26.05.2026** | §17.7 канал `chain:<L#>`: +note «связки — справочный материал (routing-off-phase v1.7+), применение канала = осознанный выбор использовать связку, не обязательство потому что один из узлов задачи входит в неё; если задача покрыта одиночным узлом — выбирай `node:<NN>`, не `chain:<L#>`». Поведенческое уточнение, состав 6 каналов coverage не меняется. Архитектурных изменений §§1–17.6: 0. |
| **v1.42** | **25.05.2026** | LLM-first router overhaul Phase 3 deferred follow-up #1: **+§17.7 «Coverage announcement»** — правило аннотировать каждую non-conversation задачу coverage-пометкой `coverage: <channel>:<id>` (6 каналов: skill/node/chain/hook/agent/direct). Observability layer (не enforcement) — фиксирует **намерение** выбора канала, дополняет машинный гейт §17.4 который ловит **факт**. Граница с routing-тегом §16.7: routing-тег только для `user_directed_method`, coverage-пометка — всегда для non-conversation. C5 controller фиксирует отсутствие пометки в STATUS.md, не блокирует коммит. Cross-ref: реестр `docs/registry/nodes.yaml`, цепочки `docs/routing-off-phase.md`, парсер `tools/observer-transcript-parser.mjs` (schema v4.4+ — реализация следующим коммитом deferred #2). Связано: spec `docs/superpowers/specs/2026-05-24-llm-first-router-overhaul-design.md`, memory `project_brain_overhaul.md`. NB: записи таблицы v1.34–v1.41 не дотянуты предыдущими сессиями (известный дрейф); шапка `«Что изменилось в v1.NN»` авторитетна для этого периода. Архитектурных изменений §§1–16: 0. |
---
@@ -1058,7 +1059,7 @@ coverage: <channel>:<id> [reason="..." если direct]
- `skill:<имя>` — задача покрывается скилом (`skill:superpowers:test-driven-development`).
- `node:<NN>` — задача покрывается одиночным узлом реестра `docs/registry/nodes.yaml` (`node:62 billing-audit`).
- `chain:<L#>` — задача покрывается канонической цепочкой `docs/routing-off-phase.md` (`chain:L15 security-go-live`).
- `chain:<L#>` — задача покрывается канонической цепочкой `docs/routing-off-phase.md` (`chain:L15 security-go-live`). **Note:** связки — справочный материал (routing-off-phase v1.7+); применение этого канала = осознанный выбор использовать связку, **не** обязательство применять её только потому что один из узлов задачи в неё входит. Если задача покрыта одиночным узлом — выбирай `node:<NN>`, не `chain:<L#>`.
- `hook:<имя>` — задача автоматизирована хуком и не требует ручной работы Claude (`hook:lefthook job 10 deptrac`).
- `agent:<имя>` — задача делегирована project-агенту из `.claude/agents/` (`agent:normative-sync`).
- `direct:<exempt-класс>` — exempt-исполнение из §17.2 (`direct:micro`, `direct:manual_override`, `direct:escape_hatch reason="..."`).
+1 -1
View File
File diff suppressed because one or more lines are too long
+7 -5
View File
@@ -1,4 +1,4 @@
# Router procedure v1.4
# Router procedure v1.5
**Status:** active (introduced 2026-05-19, spec dd5bded, ADR-011; backend-tooling 2026-05-20, ADR-013)
@@ -39,10 +39,11 @@ If any hard-floor rule applies and is skipped — this is a violation, regardles
- If ≥2 nodes match — apply ADR boundaries (the `boundaries` attribute points to the relevant ADR-NNN).
- If conflict remains — apply PSR_v1 R15.3 (specificity priority).
### Step 4 — Canonical chain check (if applicable)
### Step 4 — Canonical chain check (advisory)
- If the matched node-set corresponds to one of L1L12 chains in `routing-off-phase.md` §4 — invoke the chain.
- If no chain matches — execute as ad-hoc combination. Observer will record `path_type: improvised`.
- If the matched node-set corresponds to one of L1L16 chains in `routing-off-phase.md` § «Канонические связки» — the chain is **available as a hint**, not as a requirement. Invoke it if the synergy fits the task; skip it if a single node is enough.
- Ad-hoc combination is equally valid (observer записывает `path_type: improvised` без штрафа). Связка ≠ обязательство.
- Бывшая формулировка «invoke the chain» снята в v1.5 (2026-05-26); связки получили статус справочного материала per spec/plan `docs/superpowers/plans/2026-05-26-untie-l-chains-from-normative.md`.
### Step 5 — Execution
@@ -65,7 +66,7 @@ Every turn — implicitly by Claude at session start, explicitly when routing is
- PSR_v1 R0R14 — UI-stack apparatus; consulted in step 3 when task touches UI.
- PSR_v1 R15 — off-phase routing extension; consulted in step 3 for off-phase nodes.
- Tooling §3 / §4.X — node registry; the input to step 3.
- routing-off-phase.md — chains L1L12; consulted in step 4.
- routing-off-phase.md — chains L1L16; consulted in step 4 as advisory hint (не обязательство).
## Changelog
@@ -73,4 +74,5 @@ Every turn — implicitly by Claude at session start, explicitly when routing is
- **v1.1 (2026-05-20)** — finance-tooling узлы #61-#63 добавлены в реестр Tooling §4.36-§4.38 (читаются step 3) и routing-off-phase.md (+3 строки routing + связка L13). Структурных правок процедуры нет. ADR-012.
- **v1.2 (2026-05-20)** — A1 backend-tooling узлы #64-#67 добавлены в реестр Tooling §4.39-§4.42 (читаются step 3) и routing-off-phase.md (+4 строки routing + связка L14). NightOwl #67 — DEFERRED (native-Windows без pcntl/posix). Структурных правок процедуры нет. ADR-013.
- **v1.3 (2026-05-21)** — A8 infosec-tooling узлы #68-#73 добавлены в реестр Tooling §4.43-§4.48 (читаются step 3) и routing-off-phase.md (+6 строк routing + связка L15 security go-live). #69 Nuclei/#70 Ward — CLI (не MCP); #68 ZAP/#70 Ward — pending install. Структурных правок процедуры нет. ADR-014.
- **v1.5 (2026-05-26)** — Step 4 переписан с прескриптивного «invoke the chain» на advisory hint: связки L1–L16 — справочник, не ожидание; ad-hoc-комбинация валидна. Также `L1L12` в текстах правлено на `L1L16` (актуальный счётчик после A1/A8/C1 интеграций). Сcоп процедуры не изменился. Spec/plan `docs/superpowers/plans/2026-05-26-untie-l-chains-from-normative.md`.
- **v1.4 (2026-05-22)** — C1 marketing-tooling узлы #74-#83 добавлены в реестр Tooling §4.49-§4.58 (читаются step 3) и routing-off-phase.md (+10 строк routing + связка L16 marketing chain). #82 DataForSEO/#83 Unisender Go — DEFERRED. Структурных правок процедуры нет. ADR-015.
+16 -8
View File
@@ -12,7 +12,7 @@
> **Источник истины.** Tooling §4.X (детальное описание каждого узла), Pravila §13.2
> (категоризация off-phase), PSR_v1 R10.1 (3-блочный реестр ролей).
>
> **Версия.** 1.6 (22.05.2026 — C1 marketing-tooling: +10 строк routing #74-#83 + связка L16 (marketing chain), ADR-015). 1.5 (21.05.2026 — A8 install-sync: #68 ZAP + #70 Ward установлены портативно → строки routing #68/#70 обновлены, статус pending install снят, setup-доки `docs/security/{zap,ward}-setup.md`). 1.4 (21.05.2026 — A8 infosec-tooling: +6 строк routing #68-#73 + связка L15 (security go-live chain), ADR-014; #69 Nuclei/#70 Ward — CLI (не MCP), #68 ZAP/#70 Ward pending install. 1.3 (20.05.2026) — A1 backend-tooling: +4 строки routing #64-#67 + связка L14 + scope §4.11→§4.42, ADR-013. v1.2 — finance-tooling: +3 строки routing #61-#63 + связка L13 + scope, ADR-012. v1.1 18.05.2026 вечер — аудит дисциплины R15: +строка «диагностика
> **Версия.** 1.7 (2026-05-26 — связки L1–L16 явно переописаны как справочный материал, не ожидание: +статус-абзац в § «Канонические связки» (intro) + пункт 7 в «Дисциплине выбора». Инфраструктура `tools/observer-chain-*` не тронута. Не отменяет ни одну связку — только снимает с них прескриптивный статус. План `docs/superpowers/plans/2026-05-26-untie-l-chains-from-normative.md`). 1.6 (22.05.2026 — C1 marketing-tooling: +10 строк routing #74-#83 + связка L16 (marketing chain), ADR-015). 1.5 (21.05.2026 — A8 install-sync: #68 ZAP + #70 Ward установлены портативно → строки routing #68/#70 обновлены, статус pending install снят, setup-доки `docs/security/{zap,ward}-setup.md`). 1.4 (21.05.2026 — A8 infosec-tooling: +6 строк routing #68-#73 + связка L15 (security go-live chain), ADR-014; #69 Nuclei/#70 Ward — CLI (не MCP), #68 ZAP/#70 Ward pending install. 1.3 (20.05.2026) — A1 backend-tooling: +4 строки routing #64-#67 + связка L14 + scope §4.11→§4.42, ADR-013. v1.2 — finance-tooling: +3 строки routing #61-#63 + связка L13 + scope, ADR-012. v1.1 18.05.2026 вечер — аудит дисциплины R15: +строка «диагностика
> конверсии» → process-analysis #53 (M3); +note про UI-пул #31/#32 как делегирующие
> строки, не R15-routed (M1). v1.0 — Rec3 SYSTEM-аудита). Триггеры — формулировки
> заказчика или явные ключевые слова в промпте.
@@ -70,12 +70,17 @@
---
## Канонические связки 2+ узлов
## Канонические связки 2+ узлов (справочный материал)
> **Статус.** Справочник, не ожидание. Связки L1–L16 — это известные комбинации
> узлов, дающие синергию (эффект сильнее суммы). Использование связки **не
> обязательно**, даже если узел задачи входит в её состав; ad-hoc-комбинация
> равноценно валидна (наблюдатель пишет `path_type: improvised` без штрафа).
>
> Закрывает Rec4 SYSTEM-аудита 18.05.2026 («сводного списка рекомендованных комбо
> нет — синергия размазана по 125 полям `together` в NODE_DETAILS карты»).
> Здесь — 12 цепочек, где совместная работа узлов даёт эффект сильнее суммы. UI-рендер
> панели «🔗 Связки» на карте — отдельный future iter; данные ниже — основа для него.
> нет — синергия размазана по 125 полям `together` в NODE_DETAILS карты»). Ниже —
> 16 цепочек (L1–L16); таблица растёт по мере интеграций (v1.0 — 12 связок,
> v1.4 — +L16 marketing). UI-рендер панели «🔗 Связки» на карте — отдельный future iter.
| # | Цепочка | Зачем |
|---|---|---|
@@ -109,9 +114,9 @@
1. **Не подменяй фазовые инструменты off-phase.** Если задача попадает под фазу
0/1/2/3 (Tooling §2–§5) — берём фазовый узел. Off-phase — резерв и специализация.
2. **DEFERRED-узлы (#44 Figma / #50 Jupyter / #54 n8n / #67 NightOwl)** не использовать без явного
возобновления (нет аккаунта / нет Python ML / нет n8n в стеке / нет Linux с pcntl+posix).
Запрос «через Figma» или «через NightOwl» при текущем состоянии = эскалация заказчику.
2. **DEFERRED-узлы (#44 Figma / #50 Jupyter / #54 n8n / #67 NightOwl / #82 DataForSEO / #83 Unisender Go)**
не использовать без явного возобновления. Запрос «через Figma» или «через NightOwl»
при текущем состоянии = эскалация заказчику.
3. **Изолированные узлы (ruflo на 18.05.2026)** — не маршрутизировать. Запрос
с `queen`/`королева` сейчас выполняется напрямую (§14 dormant). При запросе
реактивации — план в memory `feedback_ruflo_isolated.md`.
@@ -121,6 +126,9 @@
6. **Граничные случаи между похожими узлами** — кросс-ссылки в Tooling §4.X (например
#53 process-analysis ↔ #55 discovery-interview через слой-источник ADR-009;
#39 ToB ↔ #25 Semgrep MCP через scope TB1).
7. **Связки L1–L16 — справочник, не предписание.** Узел можно вызвать одиночно,
даже если он входит в связку; парный узел подключается по запросу задачи, а не
потому что «так положено в L-цепочке». См. шапку § «Канонические связки».
---
@@ -0,0 +1,427 @@
# Untie L-chains from normative expectations 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:** Переписать упоминания канонических связок L1–L16 в живой нормативке Лидерры из «ожидание» в «справочный материал». Связки как таблица остаются (полезный справочник), но прескриптивные формулировки («invoke the chain», «при таком триггере связка должна сработать») заменяются на «справочно / consider as hint».
**Architecture:** Точечные правки 4 живых нормативных документов (`routing-off-phase.md`, `router-procedure.md`, `Plugin_stack_rules_v1.md` R15.2, `Pravila_raboty_Claude_v1_1.md` §17.7) + финальный нормативный синк через project-агента `normative-sync` (#84). Инфраструктура `tools/observer-chain-*` (карта, детектор, retrofill, контролёр C6, matrix.chain_ref, discipline step 4) **не трогается** — она безвредна и не давит за пропуск связки. Канал `chain:<L#>` в §17.7 сохраняется как один из 6 покрытий, но получает явную пометку «осознанный выбор, не обязательство». Декларативно: связка — это **разрешённый способ упаковать coverage**, не **ожидание**, что её надо применять.
**Tech Stack:** Markdown + grep. Нет code-changes, нет TDD (нечего тестировать в docs). Verification — diff-review + lefthook regression GREEN + chain-map-checker C6 проходит (карта `observer-chain-map.json` не тронута — заведомо синк сохраняется).
---
## File Structure
**Изменяемые:**
- `docs/routing-off-phase.md` — intro второй секции (§ «Канонические связки») + блок «Дисциплина выбора».
- `docs/router-procedure.md` — Step 4 «Canonical chain check».
- `docs/Plugin_stack_rules_v1.md` — R15.2 (счётчик «12 канонических связок» устарел — теперь 16; добавить note про справочный статус).
- `docs/Pravila_raboty_Claude_v1_1.md` — §17.7 строка про канал `chain:<L#>`.
**Не трогаем:**
- `tools/observer-chain-*` (карта + детектор + retrofill + контролёр C6) — инфраструктура безвредна.
- `tools/missed-activations.mjs` — не проверяет связки в принципе (проверяет одиночные узлы из classification-map).
- `tools/discipline-metrics.mjs` строка 64–66 — поощряет за `chain_ref`, не штрафует.
- `tools/brain-retro-analyzer.mjs` строка 344353 (matrix.chain_ref) — отчётная метрика, не алерт.
- `tools/status-md-generator.mjs` строка 208 (C6 Chain map sync) — структурный контролёр документов, не поведенческий.
- ADR-008/009/011/014/015 — исторические записи, не правятся (если потребуется явный amendment — отдельная задача).
- `docs/registry/nodes.yaml` / `schema.json` — реестр узлов, не связок.
**Финальный синк (Task 5):** `CLAUDE.md`, `Tooling_v8_3.md`, `Pravila_raboty_Claude_v1_1.md`, `Plugin_stack_rules_v1.md` — version bumps + §0 cross-refs + §9 changelog entries через делегацию агенту `normative-sync` (#84, Pravila §2.4).
---
### Task 1: routing-off-phase.md — связки как справочник
**Files:**
- Modify: `docs/routing-off-phase.md` (строки 73–78 — intro «Канонические связки»; строки 108–123 — «Дисциплина выбора»; шапка строка 15 — version bump)
- [ ] **Step 1: Прочитать текущий файл целиком**
Run: `Read docs/routing-off-phase.md`
Expected: видим intro связок «Закрывает Rec4 SYSTEM-аудита... 12 цепочек, где совместная работа узлов даёт эффект сильнее суммы» + 16 строк таблицы (L1–L16, цифра «12» в intro устарела) + блок «Дисциплина выбора» с 6 пунктами.
- [ ] **Step 2: Заменить intro второй секции (строки 73–78)**
Старый текст:
```markdown
## Канонические связки 2+ узлов
> Закрывает Rec4 SYSTEM-аудита 18.05.2026 («сводного списка рекомендованных комбо
> нет — синергия размазана по 125 полям `together` в NODE_DETAILS карты»).
> Здесь — 12 цепочек, где совместная работа узлов даёт эффект сильнее суммы. UI-рендер
> панели «🔗 Связки» на карте — отдельный future iter; данные ниже — основа для него.
```
Новый текст:
```markdown
## Канонические связки 2+ узлов (справочный материал)
> **Статус.** Справочник, не ожидание. Связки L1–L16 — это известные комбинации
> узлов, дающие синергию (эффект сильнее суммы). Использование связки **не
> обязательно**, даже если узел задачи входит в её состав; ad-hoc-комбинация
> равноценно валидна (наблюдатель пишет `path_type: improvised` без штрафа).
>
> Закрывает Rec4 SYSTEM-аудита 18.05.2026 («сводного списка рекомендованных комбо
> нет — синергия размазана по 125 полям `together` в NODE_DETAILS карты»). Ниже —
> 16 цепочек (L1–L16); таблица растёт по мере интеграций (v1.0 — 12 связок,
> v1.4 — +L16 marketing). UI-рендер панели «🔗 Связки» на карте — отдельный future iter.
```
- [ ] **Step 3: Заменить блок «Дисциплина выбора» (строки 108–123)**
Старый текст (полный блок) → новый текст:
```markdown
## Дисциплина выбора
1. **Не подменяй фазовые инструменты off-phase.** Если задача попадает под фазу
0/1/2/3 (Tooling §2–§5) — берём фазовый узел. Off-phase — резерв и специализация.
2. **DEFERRED-узлы (#44 Figma / #50 Jupyter / #54 n8n / #67 NightOwl / #82 DataForSEO / #83 Unisender Go)**
не использовать без явного возобновления. Запрос «через Figma» или «через NightOwl»
при текущем состоянии = эскалация заказчику.
3. **Изолированные узлы (ruflo на 18.05.2026)** — не маршрутизировать. Запрос
с `queen`/`королева` сейчас выполняется напрямую (§14 dormant). При запросе
реактивации — план в memory `feedback_ruflo_isolated.md`.
4. **UI-пул (#31 UPM / #32 21st)** — только через R14 pipeline. Никогда не решатель,
всегда материал; обязательны R6.0 фильтр + R6.1 hard-override Forest + FD адаптация.
5. **Hard-rules (Pravila §12 / §14 / §15)** перевешивают этот routing-аид при коллизии.
6. **Граничные случаи между похожими узлами** — кросс-ссылки в Tooling §4.X (например
#53 process-analysis ↔ #55 discovery-interview через слой-источник ADR-009;
#39 ToB ↔ #25 Semgrep MCP через scope TB1).
7. **Связки L1–L16 — справочник, не предписание.** Узел можно вызвать одиночно,
даже если он входит в связку; парный узел подключается по запросу задачи, а не
потому что «так положено в L-цепочке». См. шапку § «Канонические связки».
```
(Пункт 7 — добавленный; пункты 1–6 — без изменений по сути, только #44/#50/#54/#67/#82/#83 в п.2 актуализированы под текущий DEFERRED-список.)
- [ ] **Step 4: Bump шапки строка 15 — версия v1.6 → v1.7**
Старая строка начала: `> **Версия.** 1.6 (22.05.2026 — C1 marketing-tooling: ...)`
Добавить в начало списка версий:
`1.7 (2026-05-26 — связки L1–L16 явно переописаны как справочный материал, не ожидание: + статус-абзац в § «Канонические связки» + пункт 7 в «Дисциплине выбора». Инфраструктура `tools/observer-chain-*` не тронута. Не отменяет ни одну связку — только снимает с них прескриптивный статус). 1.6 (22.05.2026 — ...)` (далее без изменений).
- [ ] **Step 5: Verify diff**
Run: `git diff docs/routing-off-phase.md`
Expected: 3 hunks — intro второй секции, блок дисциплины (добавлен п.7), шапка (новый version entry). Таблица L1–L16 не тронута. anti-pattern блок не тронут.
- [ ] **Step 6: Commit**
```powershell
git add docs/routing-off-phase.md
git commit -m "docs(routing): связки L1-L16 переописаны как справочный материал
Снимается прескриптивный статус связок: интро § «Канонические связки» теперь
явно говорит «справочник, не ожидание»; в «Дисциплине выбора» добавлен п.7
«узел можно вызвать одиночно, даже если входит в связку».
Инфраструктура tools/observer-chain-* не тронута (карта/детектор/retrofill/C6/
matrix/step-4) — она безвредна и не давит за пропуск связки.
Pravila §17.7 канал chain:<L#> остаётся в Task 4 этого плана с явной пометкой
'осознанный выбор'.
routing-off-phase v1.6 → v1.7."
```
---
### Task 2: router-procedure.md — Step 4 как hint
**Files:**
- Modify: `docs/router-procedure.md` (строки 42–45 — Step 4; шапка — version bump)
- [ ] **Step 1: Прочитать current text Step 4**
Run: `Read docs/router-procedure.md offset 35 limit 30`
Expected: видим:
```
### Step 4 — Canonical chain check (if applicable)
- If the matched node-set corresponds to one of L1L12 chains in `routing-off-phase.md` §4 — invoke the chain.
- If no chain matches — execute as ad-hoc combination. Observer will record `path_type: improvised`.
```
- [ ] **Step 2: Переписать Step 4**
Новый текст:
```markdown
### Step 4 — Canonical chain check (advisory)
- If the matched node-set corresponds to one of L1L16 chains in `routing-off-phase.md` § «Канонические связки» — the chain is **available as a hint**, not as a requirement. Invoke it if the synergy fits the task; skip it if a single node is enough.
- Ad-hoc combination is equally valid (observer записывает `path_type: improvised` без штрафа). Связка ≠ обязательство.
- Бывшая формулировка «invoke the chain» снята в v1.5 (2026-05-26); связки получили статус справочного материала per spec/plan `docs/superpowers/plans/2026-05-26-untie-l-chains-from-normative.md`.
```
- [ ] **Step 3: Также обновить «Связано» в footer строка 68**
Старая строка:
`- routing-off-phase.md — chains L1L12; consulted in step 4.`
Новая:
`- routing-off-phase.md — chains L1L16; consulted in step 4 as advisory hint (не обязательство).`
- [ ] **Step 4: Bump version в шапке и +entry в changelog footer**
Найти `**v1.4 (2026-05-22)**` блок (строка 76) и добавить **поверх**:
```markdown
- **v1.5 (2026-05-26)** — Step 4 переписан с прескриптивного «invoke the chain» на advisory hint: связки L1–L16 — справочник, не ожидание; ad-hoc-комбинация валидна. Также `L1L12` в текстах правлено на `L1L16` (актуальный счётчик после A1/A8/C1 интеграций). Сcоп процедуры не изменился. Spec/plan `docs/superpowers/plans/2026-05-26-untie-l-chains-from-normative.md`.
```
- [ ] **Step 5: Verify diff**
Run: `git diff docs/router-procedure.md`
Expected: 3 hunks — Step 4 переписан, footer «Связано» обновлён, changelog +v1.5 entry.
- [ ] **Step 6: Commit**
```powershell
git add docs/router-procedure.md
git commit -m "docs(router): Step 4 связки как hint, не invoke
router-procedure.md Step 4 «Canonical chain check» переписан с «invoke the chain»
на «available as a hint, not a requirement». L1-L12 правлено на L1-L16
(актуальный счётчик после C1 marketing).
v1.4 -> v1.5. Часть плана 2026-05-26-untie-l-chains-from-normative."
```
---
### Task 3: PSR_v1 R15.2 — счётчик связок + note
**Files:**
- Modify: `docs/Plugin_stack_rules_v1.md` (R15.2 — строка 820; шапка version + footer changelog)
- [ ] **Step 1: Перечитать R15.2 контекст (строки 808–825)**
Run: `Read docs/Plugin_stack_rules_v1.md offset 808 limit 20`
- [ ] **Step 2: Заменить параграф R15.2 строка 820**
Старый текст:
```
Полная таблица «задача → off-phase узел» вынесена в [`docs/routing-off-phase.md`](routing-off-phase.md) v1.0+. Там же — 12 канонических связок 2+ узлов (L1–L12, закрывает Rec4 SYSTEM-аудита: brainstorming-chain, security-слой, project-management-связка, runtime-debug, ML-trio и т.д.) + список anti-pattern связок.
```
Новый текст:
```
Полная таблица «задача → off-phase узел» вынесена в [`docs/routing-off-phase.md`](routing-off-phase.md) v1.7+. Там же — 16 канонических связок 2+ узлов (L1–L16; счётчик вырос v1.0 → v1.4 при A1/A8/C1 интеграциях) **в статусе справочного материала, не ожидания** (per routing-off-phase v1.7 от 26.05.2026): связки описывают известные синергии узлов, но их применение факультативно — ad-hoc-комбинация валидна. См. там же anti-pattern блок.
```
- [ ] **Step 3: Bump version в шапке файла (Header)**
Найти текущую версию (наверняка `**v3.22 от 22.05.2026**`) и добавить новую запись (v3.22 → v3.23) с описанием:
`v3.23 (2026-05-26) — R15.2 sync со связками-как-справочник: счётчик 12→16 (актуальный после A1/A8/C1), статус связок переписан с прескриптивного на справочный per routing-off-phase v1.7. Никаких новых правил R15 не вводится; R15.1/R15.3-R15.7 без изменений.`
- [ ] **Step 4: Verify diff**
Run: `git diff docs/Plugin_stack_rules_v1.md`
Expected: 2 hunks — R15.2 параграф + шапка version entry.
- [ ] **Step 5: Commit**
```powershell
git add docs/Plugin_stack_rules_v1.md
git commit -m "docs(psr): R15.2 связки 12->16 + статус справочный
R15.2 sync со связками-как-справочник: счётчик L1-L12 -> L1-L16 (актуальный
после A1/A8/C1), статус связок переписан с прескриптивного на справочный per
routing-off-phase v1.7. R15.1 / R15.3-R15.7 без изменений.
v3.22 -> v3.23."
```
---
### Task 4: Pravila §17.7 — chain channel note
**Files:**
- Modify: `docs/Pravila_raboty_Claude_v1_1.md` (§17.7 — строка ~1061, описание канала `chain:<L#>`; шапка + changelog)
- [ ] **Step 1: Перечитать §17.7 контекст (строки 1049–1075)**
Run: `Read docs/Pravila_raboty_Claude_v1_1.md offset 1049 limit 30`
- [ ] **Step 2: Заменить bullet про канал `chain:<L#>`**
Старый текст (строка 1061):
```
- `chain:<L#>` — задача покрывается канонической цепочкой `docs/routing-off-phase.md` (`chain:L15 security-go-live`).
```
Новый текст:
```
- `chain:<L#>` — задача покрывается канонической цепочкой `docs/routing-off-phase.md` (`chain:L15 security-go-live`). **Note:** связки — справочный материал (routing-off-phase v1.7+); применение этого канала = осознанный выбор использовать связку, **не** обязательство применять её только потому что один из узлов задачи в неё входит. Если задача покрыта одиночным узлом — выбирай `node:<NN>`, не `chain:<L#>`.
```
- [ ] **Step 3: Bump шапки + §10 changelog**
Найти шапку (обычно `**v1.42 от 25.05.2026**` или близкая) и добавить новую запись v1.43:
`v1.43 (2026-05-26) — §17.7 канал chain:<L#>: +note «связки — справочный материал, осознанный выбор, не обязательство». Поведенческое уточнение per routing-off-phase v1.7. Состав 6 каналов coverage не меняется.`
§10 (changelog в теле файла) — также +entry v1.43 такого же содержания.
- [ ] **Step 4: Verify diff**
Run: `git diff docs/Pravila_raboty_Claude_v1_1.md`
Expected: 3 hunks — §17.7 bullet + шапка version + §10 changelog entry.
- [ ] **Step 5: Commit**
```powershell
git add docs/Pravila_raboty_Claude_v1_1.md
git commit -m "docs(pravila): §17.7 канал chain:<L#> = осознанный выбор
§17.7 канал chain:<L#> получил note: связки — справочный материал per
routing-off-phase v1.7, применение канала = осознанный выбор, не обязательство
'я использовал узел из связки -> обязан написать chain:<L#>'. Если задача
покрыта одиночным узлом -> выбирай node:<NN>.
Состав 6 каналов coverage не меняется.
v1.42 -> v1.43."
```
---
### Task 5: Нормативный синк через агент normative-sync
**Files:**
- Modify (через делегата): `CLAUDE.md`, `docs/Pravila_raboty_Claude_v1_1.md`, `docs/Plugin_stack_rules_v1.md`, `docs/Tooling_v8_3.md` — §0 cross-refs + §9 changelog entries + version bumps (если ещё не сделаны в Tasks 1-4).
- [ ] **Step 1: Делегировать `normative-sync` (#84) через Agent tool**
Per Pravila §2.4: контроллер обязан звать `normative-sync` после крупной нормативной интеграции. Это правка R15.x + §17.7 + 2 docs/*.md — попадает под перимет.
```text
Agent({
subagent_type: "normative-sync",
description: "Sync 4 файла нормативки после untie L-chains",
prompt: "После правок Tasks 1-4 плана `docs/superpowers/plans/2026-05-26-untie-l-chains-from-normative.md` синхронизируй 4 нормативных файла:
СДЕЛАНО в Tasks 1-4:
- docs/routing-off-phase.md v1.6 → v1.7
- docs/router-procedure.md v1.4 → v1.5
- docs/Plugin_stack_rules_v1.md v3.22 → v3.23
- docs/Pravila_raboty_Claude_v1_1.md v1.42 → v1.43
ТВОЯ ЗАДАЧА:
1. Обновить §0 cross-refs во всех 4 файлах (Pravila/CLAUDE.md/PSR_v1/Tooling) — они ссылаются друг на друга через '**v1.XX от ДАТА**' и '**Прил.Н vX.XX**'.
2. CLAUDE.md шапка version bump (вероятно v2.28 → v2.29) + §0 row updates + §9 entry.
3. Tooling §0 cross-refs string updates (если меняется).
4. §9 changelog entries в Pravila и PSR_v1 (если не сделаны в Tasks 3-4).
5. Не править tools/* и не править таблицы / тела правил — только cross-refs, version bumps, §9 entries.
ПРЕДУПРЕЖДЕНИЯ:
- CLAUDE.md правится только через claude-md-management — если у тебя нет прав, отдай unified diff контроллеру.
- НЕ коммитить; только применить правки или вернуть diff.
- При parallel-branch конфликте — escalate (Pravila §15.2 pre-flight sync).
Контекст: связки L1-L16 переописаны как 'справочный материал, не ожидание'; инфраструктура tools/observer-chain-* не тронута; канал chain:<L#> в §17.7 сохраняется с note «осознанный выбор»."
})
```
- [ ] **Step 2: Verify diff после агента**
Run: `git diff CLAUDE.md docs/Tooling_v8_3.md docs/Pravila_raboty_Claude_v1_1.md docs/Plugin_stack_rules_v1.md`
Expected: точечные правки в §0 cross-refs + headers + §9 changelogs. **Не должно быть** правок тел правил, R15, §17, R10.1, §13.2 — это уже сделано в Tasks 1-4.
- [ ] **Step 3: Если CLAUDE.md остался, применить через claude-md-management**
Run: `Skill claude-md-management:claude-md-improver`
Подсказать в prompt'е скилу: «версия v2.28 → v2.29; §0 row Pravila v1.42→v1.43 / PSR_v1 v3.22→v3.23; §9 +entry про снятие связок как ожидания».
- [ ] **Step 4: Commit (один атомарный)**
```powershell
git add CLAUDE.md docs/Tooling_v8_3.md docs/Pravila_raboty_Claude_v1_1.md docs/Plugin_stack_rules_v1.md
git commit -m "docs(sync): version bumps + §0 cross-refs untie L-chains
Финальный нормативный синк после Tasks 1-4:
Pravila v1.42 -> v1.43 (§17.7 +note)
PSR_v1 v3.22 -> v3.23 (R15.2 счётчик + статус)
CLAUDE.md v2.28 -> v2.29 (§0 cross-refs + §9 entry)
Tooling Прил.Н — §0 cross-refs (если меняются)
Связки L1-L16 переописаны как справочный материал; инфраструктура
tools/observer-chain-* не тронута."
```
---
### Task 6: Verify regression GREEN
**Files:** read-only
- [ ] **Step 1: Lefthook полный прогон**
Run: `npx lefthook run pre-commit --no-tty`
Expected: все jobs GREEN — markdownlint / cspell / lychee / gitleaks / l1-watcher (C1) / cross-ref-checker (C2) / **chain-map-checker (C6 — самое важное: карта связок не тронута**) / observer-of-observer (C3) / status-md-generator (C4) / observer-coverage-checker (C5).
Если C2 (cross-ref-checker) ругается на drift — вернуться в Task 5 и проверить шапки.
- [ ] **Step 2: Tests tools/* (если есть локально)**
Run: `node --test tools/observer-chain-detector.test.mjs tools/observer-chain-map-checker.test.mjs tools/observer-retrofill-chain-ref.test.mjs tools/discipline-metrics.test.mjs tools/brain-retro-analyzer.test.mjs`
Expected: PASS (ни одного теста инфраструктуры мы не трогаем, поведение должно остаться идентичным).
- [ ] **Step 3: Decision gate**
Если оба прошли — продолжить Task 7 push.
Если что-то упало — диагностировать; вероятная причина — drift в шапках после Task 5 (cross-ref несинхронизирован).
---
### Task 7: Push на origin/main
**Files:** read-only
- [ ] **Step 1: Pre-flight sync per Pravila §15.2**
Run: `git fetch && git log HEAD..origin/main --oneline`
Expected: пусто (нет диверга) ИЛИ список коммитов, которые надо подтянуть rebase'ом.
Если диверг — `git pull --rebase` и повторить Task 6 (regression).
- [ ] **Step 2: Push**
Run: `git push origin HEAD`
Expected: 7 commits FF (Tasks 1, 2, 3, 4, 5, optionally CLAUDE.md sync если был отдельный коммит, 6 — нет коммита, 7 — нет коммита). Реальное число — 5–6 коммитов.
- [ ] **Step 3: Final report заказчику**
Сказать: «Связки L1–L16 переописаны как справочный материал во всех 4 живых нормативных документах. Инфраструктура `tools/observer-chain-*` не тронута. Коммитов на main: N. Канал `chain:<L#>` в §17.7 сохраняется с note «осознанный выбор». Полная история — §9 changelog'ов 4 файлов.»
---
## Self-Review
**1. Spec coverage:** Решение заказчика (option C из AskUserQuestion) — «снять связки из нормативки, инфраструктуру кода не трогать». Покрыто:
- routing-off-phase.md (Task 1) — главный документ связок → справочный статус.
- router-procedure.md Step 4 (Task 2) — «invoke the chain» → «advisory hint».
- PSR_v1 R15.2 (Task 3) — устаревший счётчик + статус справочный.
- Pravila §17.7 (Task 4) — канал chain:<L#> + note «осознанный выбор».
- Нормативный синк (Task 5) — version bumps + §0 cross-refs + §9 changelog entries.
- Regression GREEN (Task 6) + push (Task 7).
Гэп: ADR-008/009/011/014/015 могут содержать прескриптивные ссылки на связки; не правятся (исторические записи). При следующем ADR в этой области можно добавить amendment про статус связок — это отдельная задача.
**2. Placeholder scan:** «implement later», «TBD», «similar to Task N», «add appropriate error handling» — отсутствуют. Все шаги имеют конкретный текст.
**3. Type consistency:** L1L16 одинаково везде (счётчик исправлен с L1–L12). Имена версий: routing-off-phase v1.7, router-procedure v1.5, PSR_v1 v3.23, Pravila v1.43, CLAUDE.md v2.29 — без коллизий. Имена документов: `routing-off-phase.md` / `router-procedure.md` — точно соответствуют файловой системе.
**4. TDD не применим:** Это docs-only задача (правка нормативки). Тестировать нечего; verification — diff-review + lefthook regression (chain-map-checker C6 — самый важный: карта связок не тронута, не должен упасть). Это легитимная адаптация writing-plans skill для docs-only scope.
---
## Связано
- AskUserQuestion #2 (option C «снять связки из нормативки») — решение заказчика.
- `docs/Pravila_raboty_Claude_v1_1.md` §2.4 — обязательство звать normative-sync после крупной нормативной интеграции.
- `docs/Pravila_raboty_Claude_v1_1.md` §15.2 — pre-flight sync с 8-позиционным списком файлов (Task 7 Step 1).
- `CLAUDE.md` §5 п.10 — обязательный канал для правок CLAUDE.md (Task 5 Step 3 если CLAUDE.md остался).
- `.claude/agents/normative-sync.md` — описание агента #84.
- `docs/observer-chain-*` — инфраструктура, НЕ трогаем.