---
name: canon-revision
description: "Полная структурная РЕВИЗИЯ always-loaded файла правил (CLAUDE.md / MEMORY.md): ТОП-блок самых важных правил + категории §0-§N, тела правил переезжают verbatim (скрипт двигает байты и доказывает 0 потерь, LLM решает только маппинг), жирная механика фолдится в триггер+суть+указатель, потом стражи → канон-рельса → 3-дневный датчик «не стало хуже» → раскат на флот. Триггеры: /canon-revision, «ревизия claude.md», «переструктурируй клод мд / memory md», «наведи порядок в правилах», «пересобери код мд», а также САМ, когда guard входит в жёлтую зону (100KB) и накопились устаревшие секции. Обкатано вживую 22.07.2026 (CLAUDE.md v2: ТОП-20 + §0-§10, md5 49f8df4b). Цикл Антона: файл свободно растёт до ~110-120KB → раз в несколько недель полная ревизия. НЕ пере-сжатие слов (declined) — только структура."
license: MIT
---

# canon-revision — ревизия always-loaded файла правил

Боль: файл правил растёт интейком, структура плывёт, важное тонет в середине. Решение Антона (22.07): жить циклами — свободный рост до жёлтой зоны, потом ПОЛНАЯ ревизия структуры. Эта процедура = та ревизия, обкатана на CLAUDE.md v2.

Роли: LLM решает ТОЛЬКО (а) маппинг секций по категориям, (б) состав ТОП-блока, (в) какие секции фолдить и точечные правки по явным решениям Антона. Байты двигает СКРИПТ и сам доказывает, что ничего не потерял. Никогда не перепечатывай файл руками.

## Шаг 0 — RECALL + рамки
- Память: [[claude-md-compression-contract]] (контракт: триггер·директива·клаузы·указатель; грабли двух концов), [[write-service-files-tight-no-recompress]], [[memory-index-hygiene]] (для MEMORY.md), [[declined-decisions]] (пере-сжатие слов = declined).
- Пороги = дефолты `~/.claude/scripts/claude_md_guard.py` (anton 22.07: жёлтая 100KB · красная 120KB). Цифры-истина = код гарда, не заметки.
- Ревизия = канон-правка → только машина Антона, живая сессия.

## Шаг 1 — Замер ДО
`python ~/.claude/scripts/claude_md_guard.py` + байты + счётчик секций (`^## `/`^### `). Записать: byte, sections, md5.

## Шаг 2 — Координация и страховка
1. `onair.py check --zone canon-skills` (для MEMORY.md: memory-index) → чисто → `onair.py declare --mode exclusive`.
2. `canon_write_gate.py <файл>` → GO + авто-бэкап; плюс свой `*.bak-<дата>-revision`.
3. ⚠️ Грабли двух концов (память compression-contract): перед publish сверь (а) md5 базы канона, (б) diff собранного со СВОИМ живым файлом — параллельные сессии дописывают интейком.

## Шаг 3 — Сборка (детерминированная)
Взять `references/restructure_claude_md.py` (рабочий образец 22.07), адаптировать маппинг:
- Разбор по `^## ` заголовкам; каждый заголовок обязан попасть в маппинг, лишний/пропавший = громкий отказ.
- Категории `## §N. <имя>` + правила `### §N.M <старый заголовок>`; тела verbatim.
- ТОП-блок `## §0. ⭐ ТОП-N` — самые важные правила по приоритетам Антона, одна строка = правило + `→ §X.Y`; состав ТОПа показать Антону до применения (или взять его прошлые приоритеты).
- Точечные правки — только по явным решениям Антона, каждая через anchored-replace с assert count==1.
- Встроенная проверка: каждое тело присутствует в выходе (BODY LOST = отказ).

## Шаг 4 — Пороговый контроль и фолды
Guard RED/жирная жёлтая → структурный фолд самых жирных ПРОЦЕССНЫХ секций (образец `references/fold_four.py`): остаётся триггер+суть+указатель, тело обязано УЖЕ жить в Библии/памяти (проверь, что канон существует, иначе сперва запиши его туда). Топ-правила Антона не фолдить без его до→после. Слова не пере-сжимать.

## Шаг 5 — Верификация (/tt-слой)
- Счётчики: секции ДО == ПОСЛЕ (минус явно удалённые по решению Антона), `### ` = N, ТОП-строки = N, ссылки §X.Y в ТОПе указывают на существующие номера.
- Guard повторно; при росте >87KB — живой замер, что харнес грузит хвост (в СВЕЖЕЙ сессии спросить содержимое последней секции; «потолок 89000б» — непроверенная легенда).
- По вкусу: cold-reader тест (памятка в compression-contract: свежий Sonnet + trap-сценарии).

## Шаг 6 — Публикация и дома
1. `publish_canon.py` (для CLAUDE.md); MEMORY.md едет синком сам.
2. Новые/изменённые правила → дома: память + MEMORY.md-строка (+ Библия, если правило человеко-исполнимо); `rule_home_guard.py <slug>`.
3. `onair close`, отчёт Антону до→после (байты, секции, что фолднуто, откат).

## Шаг 7 — Датчик «не стало хуже» + раскат
- Откат всегда наготове: `Copy-Item <файл>.bak-<дата>-revision <файл>` + `publish_canon.py`.
- 3 дня после ревизии: датчик «не стало хуже» — ОДНОРАЗОВЫЙ shadow-скрипт под конкретную ревизию по [[shadow-first-mvp-pattern]] (пишется заново на 3 дня, schtasks ночью, выпиливается по time-box — не постоянный компонент). Метрики: доля 🧒-блоков, таймстампы, целостность md5; деградация >30% = стоп/откат + разбор корня; норм = раскат подтверждён, обоснование в отчёт. Прецедент: ревизия 22.07 — пробник canon_v2_watch намерил ELI5-rate 80%→77% (= не хуже) → раскат обоснован, пробник убит по расписанию.
- Флот получает через канон-рельсу; ACK пиров по правилу шины.

## Границы
- ⛔ Не запускать на чужих машинах / не с живой сессии Антона (canon-gate сам заблокирует).
- ⛔ Не пере-сжимать слова, не выносить тела в `.claude/rules/` «под авто-загрузку» — фичи авто-загрузки НЕТ (опровергнуто 21.07, память rule-activation-audit).
- Канон: [[claude-md-compression-contract]] + `reglament-optimizatsiya-always-loaded-faylov-claude-md-i-memory-md`; сестра для MEMORY.md: [[memory-index-hygiene]].
