canon-revision · git:20260814.44e61cf · 2026-08-14 · sha256 09c65ed2dd15c9b8
canon-revision git:20260814.44e61cfA
Immutable. This exact content is served forever at /api/v1/blob/09c65ed2dd15c9b8.
--- 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]].