<?xml version="1.0" encoding="UTF-8"?>
<spec xmlns="https://vibevm.org/spec/1">
  <title id="root">Сопровождение документации — регламент, черновик кампании</title>
  <status stage="spec" state="done" comment="design rationale behind PROP-058 — the maintenance regulation drafted 2026-09-10 and rehearsed in phase 6; imported 2026-09-12; non-normative, PROP-058 wins where they disagree"/>
  <p p="1"><fact id="companion-line" status="spec/done">**Explains:** [PROP-058](../common/PROP-058-documentation-maintenance.xml).</fact></p>
  <section id="why" title="0. Зачем">
    <p p="2"><fact id="why-1" status="spec/done">Документация дрейфует с первого дня после публикации. Продукт меняет
команды и поля; читатели приносят вопросы, на которые страниц нет; мелкие
правки, накопившись, ломают лестницу понятий и тон. Ни один из трёх
процессов не останавливается сам. Значит, обновление — не «когда руки
дойдут», а регламент с триггерами, дежурными, инструментами и гейтами.</fact></p>
    <p p="3"><fact id="why-2" status="spec/done">Одно ограничение задано владельцем: продукт выходит по десять раз в день и
принимает по сто pull request'ов, документация между проверками неизбежно
дрейфует, и этот риск принят. Второе ограничение оттуда же: версия —
контракт на поведение, а не набор файлов; внутри версии продукт меняется
невидимо, десять релизов в день могут нести один номер, история
переписывается, и отличить одну amend-версию от другой не может никто.
Поэтому регламент не опирается ни на что, кроме номера версии, который
владелец меняет осознанно: единственная «разница», которую считает машина, —
разница между объявленными версиями по снимкам поверхности (§2.5), и она —
внутренняя кухня разработчиков документации; читатель видит номер и
контракт (`VISION.md`, D-27). Внутри версии всё сравнивается только с
текущим состоянием. Регламент не ставит технических замков между
релизом продукта и документацией. Он делает три вещи: измеряет дрейф,
показывает его читателю и закрепляет обещание команды время от времени
проводить полную сверку (§2.4).</fact></p>
    <p p="4"><fact id="why-3" status="spec/done">Этот документ описывает регламент **до** того, как документация написана,
чтобы кампания реализации сразу накапливала материал для него: каждая
удача, неудача и находка кампании записывается в журнал с пометкой, какое
правило регламента она подтверждает, меняет или создаёт. В фазе 6 регламент
переписывается по журналу и дважды репетируется на свежей документации,
прежде чем стать нормой.</fact></p>
  </section>
  <section id="drift" title="1. Три источника дрейфа и что их ловит">
    <table p="5">
      <tr>
        <td>Дрейф</td>
        <td>Как выглядит</td>
        <td>Что ловит уже по вижену</td>
        <td>Что добавляет регламент</td>
      </tr>
      <tr>
        <td><fact id="drift-1" status="spec/done">**Продукт меняется**</fact></td>
        <td><fact id="drift-2" status="spec/done">новая команда, флаг, поле манифеста, поведение; текст спеки изменился</fact></td>
        <td><fact id="drift-3" status="spec/done">`rule` цитирует текущий текст спеки (D-14); `derived` регенерируется из текущего бинарника; примеры исполняются как golden-тесты; гейт покрытия видит команды, поля и обязательства без страницы</fact></td>
        <td><fact id="drift-4" status="spec/done">очередь `vibe doc todo` (§3) как измеритель текущих пробелов, не замок; полная сверка по обещанию команды (§2.4); долг документации в `BACKLOG.md`. Устаревшую **прозу** машина не видит — её читает человек</fact></td>
      </tr>
      <tr>
        <td><fact id="drift-5" status="spec/done">**Мир меняется**</fact></td>
        <td><fact id="drift-6" status="spec/done">вопросы без страницы; новый сценарий; агенты не находят ответ по якорю</fact></td>
        <td><fact id="drift-7" status="spec/done">манифест страниц и гейт покрытия обязательств (D-14)</fact></td>
        <td><fact id="drift-8" status="spec/done">сигналы использования (§5), очередь `vibe doc todo`, «страница недели»</fact></td>
      </tr>
      <tr>
        <td><fact id="drift-9" status="spec/done">**Текст стареет**</fact></td>
        <td><fact id="drift-10" status="spec/done">лестница сломана вставками; термин появился без введения; тон поплыл; страницу не читали год</fact></td>
        <td><fact id="drift-11" status="spec/done">линтер стиля (D-25)</fact></td>
        <td><fact id="drift-12" status="spec/done">правило пяти правок (§6), возраст страницы в `reviews.toml`, чтение вслух, месячное ревью</fact></td>
      </tr>
    </table>
  </section>
  <section id="loops" title="2. Четыре петли">
    <table p="6">
      <tr>
        <td>Петля</td>
        <td>Триггер</td>
        <td>Кто</td>
        <td>Время</td>
        <td>Вход</td>
        <td>Выход</td>
        <td>Гейт</td>
      </tr>
      <tr>
        <td><fact id="loops-1" status="spec/done">**Коммита** (§2.1)</fact></td>
        <td><fact id="loops-2" status="spec/done">любой коммит в продукт или в документацию</fact></td>
        <td><fact id="loops-3" status="spec/done">автор коммита; для прозы — центральная сессия</fact></td>
        <td><fact id="loops-4" status="spec/done">минуты</fact></td>
        <td><fact id="loops-5" status="spec/done">дифф</fact></td>
        <td><fact id="loops-6" status="spec/done">документация в том же коммите или строка долга — привычка, не замок</fact></td>
        <td><fact id="loops-7" status="spec/done">панель: внутренние проверки документации зелёные; дрейф и долг — числом, не красным</fact></td>
      </tr>
      <tr>
        <td><fact id="loops-8" status="spec/done">**Недельная** (§2.2)</fact></td>
        <td><fact id="loops-9" status="spec/done">календарь, раз в неделю</fact></td>
        <td><fact id="loops-10" status="spec/done">дежурная центральная сессия; механика — дешёвая модель; владелец читает одну страницу</fact></td>
        <td><fact id="loops-11" status="spec/done">30–60 минут</fact></td>
        <td><fact id="loops-12" status="spec/done">`vibe doc todo`, сигналы недели</fact></td>
        <td><fact id="loops-13" status="spec/done">до пяти мелких правок, долг рассортирован, страница недели прочитана, запись в журнал</fact></td>
        <td><fact id="loops-14" status="spec/done">отчёт недели в журнале</fact></td>
      </tr>
      <tr>
        <td><fact id="loops-15" status="spec/done">**Месячная** (§2.3)</fact></td>
        <td><fact id="loops-16" status="spec/done">календарь, раз в месяц</fact></td>
        <td><fact id="loops-17" status="spec/done">центральная сессия с владельцем; код — Opus 5</fact></td>
        <td><fact id="loops-18" status="spec/done">полдня</fact></td>
        <td><fact id="loops-19" status="spec/done">метрики §7, журнал месяца, аналитика</fact></td>
        <td><fact id="loops-20" status="spec/done">до трёх переписанных страниц, изменения регламента, релиз пакета документации</fact></td>
        <td><fact id="loops-21" status="spec/done">отчёт месяца; `reviews.toml` обновлён</fact></td>
      </tr>
      <tr>
        <td><fact id="loops-22" status="spec/done">**Полная сверка** (§2.4)</fact></td>
        <td><fact id="loops-23" status="spec/done">обещание команды: раз в квартал и перед крупной вехой; не на каждый релиз</fact></td>
        <td><fact id="loops-24" status="spec/done">центральная сессия с владельцем; механика — дешёвая модель; код — Opus 5</fact></td>
        <td><fact id="loops-25" status="spec/done">день–два</fact></td>
        <td><fact id="loops-26" status="spec/done">`vibe doc todo` и `vibe doc check` против текущего продукта; весь корпус страниц</fact></td>
        <td><fact id="loops-27" status="spec/done">пробелы покрытия к нулю, `derived` перегенерированы, примеры зелёные, все страницы и адаптации перечитаны против текущего продукта, даты чтения обновлены, снимок поверхности текущей версии записан, релиз пакета документации</fact></td>
        <td><fact id="loops-28" status="spec/done">отчёт сверки; ноль пробелов и красных примеров на дату сверки; все страницы с датой чтения не старше сверки</fact></td>
      </tr>
      <tr>
        <td><fact id="loops-29" status="spec/done">**Смена версии** (§2.5)</fact></td>
        <td><fact id="loops-30" status="spec/done">осознанное решение владельца поднять номер версии продукта</fact></td>
        <td><fact id="loops-31" status="spec/done">разработчики документации: центральная сессия; механика — дешёвая модель</fact></td>
        <td><fact id="loops-32" status="spec/done">часы</fact></td>
        <td><fact id="loops-33" status="spec/done">`vibe doc diff &lt;старая&gt; &lt;новая&gt;` по снимкам поверхности</fact></td>
        <td><fact id="loops-34" status="spec/done">обновлены только перечисленные страницы, снимок новой версии записан, changelog для читателей написан руками, пакет документации выходит с новым `[[documents]] version`</fact></td>
        <td><fact id="loops-35" status="spec/done">все страницы из списка diff обновлены или получили долг с атомом; читателю не видно ничего, кроме номера</fact></td>
      </tr>
    </table>
    <section id="loop-commit" title="2.1 Петля коммита: мелочи">
      <p p="7"><fact id="loop-commit-1" status="spec/done">Правило одно, и это привычка команды, а не технический гейт: **изменение
продукта, которое видно пользователю, несёт документацию в том же коммите**
— как сегодня DEV-GUIDE и RUNTIME-GUIDE (план, R-11). «Видно пользователю»
— это новая или изменённая команда, флаг, поле манифеста или lock-файла,
формат отчёта, сообщение об ошибке с адресом, факт спеки с
`actionstage="doc"`, новый PROP. Привычку держит чекбокс в шаблоне pull
request'а: «документация: обновлена / долг записан / не нужна».</fact></p>
      <p p="8"><fact id="loop-commit-2" status="spec/done">Если документация в том же коммите невозможна (большая страница, ждёт
решения), коммит несёт **строку долга**: запись в `BACKLOG.md` с префиксом
`docs:` и severity, с адресом изменения. Панель считает строки долга и
печатает дрейф числом; ни то ни другое не роняет сборку — при десяти релизах
в день замок между продуктом и документацией недопустим, дрейф между
сверками принят как риск (§2.4). Месячная петля дренирует долг, полная
сверка добирает всё, что осталось. Долг без адреса не принимается.</fact></p>
      <p p="9"><fact id="loop-commit-3" status="spec/done">Для правок только документации — путь короткий: правка → `vibe doc check
--style --examples --citations` на затронутых страницах → коммит
`docs(vibevm-docs): …`. Мелкая правка подчиняется дисциплине §6.</fact></p>
      <p p="10"><fact id="loop-commit-4" status="spec/done">Первое действие любой правки — `git status` и проверка живого конфликта
писателей (журнал, J-005): две центральные сессии в одном дереве — стоп.</fact></p>
    </section>
    <section id="loop-weekly" title="2.2 Недельная петля: малое ревью">
      <p p="11"><fact id="loop-weekly-1" status="spec/done">Порядок, буквально:</fact></p>
      <list ordered="true" p="12">
        <item><fact id="loop-weekly-2" status="spec/done">Дешёвая модель запускает `vibe doc todo --format md` и `vibe doc check`
   по всему пакету и кладёт отчёт в журнал недели. Центральная сессия читает
   отчёт, не сырые выводы.</fact></item>
        <item><fact id="loop-weekly-3" status="spec/done">Сортировка очереди: что чинится за пять минут — чинится сейчас (не больше
   пяти правок за петлю, иначе это не мелочь); что больше — становится
   строкой долга с severity; что спорно — вопрос владельцу одной строкой.</fact></item>
        <item><fact id="loop-weekly-4" status="spec/done">Сигналы недели (§5): вопросы людей и агентов, отставание адаптаций,
   страницы с аномальным поведением читателей. Каждый сигнал — либо правка,
   либо долг, либо «наблюдение без действия» с причиной.</fact></item>
        <item><fact id="loop-weekly-5" status="spec/done">**Страница недели.** Одна страница по кругу (порядок — `reviews.toml`);
   владелец или центральная сессия читает её вслух как читатель из
   `STYLE.md` §1. Спотыкание — правка или долг. Дата чтения — в
   `reviews.toml`.</fact></item>
        <item><fact id="loop-weekly-6" status="spec/done">Запись в журнал: что сделано, что отложено, что удивило. Мелкие правки
   публикуются патч-версией пакета документации раз в неделю (вопрос
   владельцу, §11).</fact></item>
      </list>
    </section>
    <section id="loop-monthly" title="2.3 Месячная петля: большое ревью">
      <list ordered="true" p="13">
        <item><fact id="loop-monthly-1" status="spec/done">**Метрики** (§7) за месяц — таблица в отчёте; тренд важнее значения.</fact></item>
        <item><fact id="loop-monthly-2" status="spec/done">**Аудит корпуса**: каждая верхнеуровневая команда, каждое поле манифеста,
   каждый kind имеет страницу (сверка с `derived`); глоссарий — одно слово,
   одно значение (поиск синонимов по корпусу); лестница между страницами
   (термин впервые введён там, где его ищут); дубли и мёртвые страницы;
   уровни `llms.txt` укладываются в бюджеты токенов; выборка из десяти
   промптов прогоняется агентом (`vibe doc check --prompts --sample 10`,
   D-30) — красный ассерт → правка страницы или долг.</fact></item>
        <item><fact id="loop-monthly-3" status="spec/done">**Аналитика**: страницы с высоким выходом и коротким чтением —
   кандидаты на переписывание; запросы поиска без результата (когда поиск
   появится); принятые IndexNow, ошибки Search Console.</fact></item>
        <item><fact id="loop-monthly-4" status="spec/done">**Адаптации**: суммарное отставание; страницы, где отставание больше трёх
   ревизий, — в очередь адаптации.</fact></item>
        <item><fact id="loop-monthly-5" status="spec/done">**Долг**: `BACKLOG.md` строки `docs:` — каждая либо закрыта, либо получила
   атом, либо переоценена с причиной.</fact></item>
        <item><fact id="loop-monthly-6" status="spec/done">**Стиль**: тики, проскочившие за месяц (найдены при чтении), добавляются
   в списки линтера; ложные срабатывания линтера — правка правила.</fact></item>
        <item><fact id="loop-monthly-7" status="spec/done">**Журнал → регламент**: каждая запись месяца с пустым полем «→ регламент»
   получает решение; изменения регламента — правки этого документа (потом
   PROP) с датой и ссылкой на записи.</fact></item>
        <item><fact id="loop-monthly-8" status="spec/done">**Чтение вслух трёх страниц** владельцем: одна новая, одна самая
   посещаемая, одна самая старая по `reviews.toml`.</fact></item>
        <item><fact id="loop-monthly-9" status="spec/done">**Релиз** пакета документации минорной версией с changelog, собранным из
   журнала месяца (человеческий текст пишет центральная сессия).</fact></item>
      </list>
    </section>
    <section id="loop-reconcile" title="2.4 Полная сверка: обещание команды, не замок">
      <p p="14"><fact id="loop-reconcile-1" status="spec/done">Продукт выходит по десять раз в день и принимает по сто pull request'ов;
документация между сверками дрейфует, и этот риск принят. Ни один
технический гейт не связывает релиз продукта с документацией, и ничто не
пытается измерить «сколько изменилось с прошлого раза» — такой меры нет по
замыслу проекта (D-27). Вместо замка — две вещи: **текущие пробелы**
измеряются (`vibe doc todo` печатает число команд, полей и обязательств без
страницы, красных примеров и неразрешимых цитат; никогда не роняет сборку) и
команда **обещает себе полную сверку**: раз в квартал и перед крупной вехой
— мажорной версией, публичным анонсом, — не на каждый релиз.</fact></p>
      <p p="15"><fact id="loop-reconcile-2" status="spec/done">Порядок сверки, день–два:</fact></p>
      <list ordered="true" p="16">
        <item><fact id="loop-reconcile-3" status="spec/done">Дешёвая модель собирает документацию против **текущего релизного**
   бинарника, не отладочного (J-001): `vibe doc todo`, `vibe doc check` со
   всеми флагами, все примеры и **все промпты через агента**
   (`--prompts`, D-30); отчёт — в журнал.</fact></item>
        <item><fact id="loop-reconcile-4" status="spec/done">Центральная сессия закрывает пробелы: страницы для новых команд, полей и
   обязательств пишутся или получают долг с атомом; `derived`
   перегенерируются; примеры с изменившимся выводом обновляются как
   golden-тесты; неразрешимые цитаты чинятся.</fact></item>
        <item><fact id="loop-reconcile-5" status="spec/done">**Каждая страница перечитывается против текущего продукта** — это и
   есть сверка, потому что устаревшую прозу машина не видит: рядом с
   текстом открыты `--help` и спека, коридоры переписываются там, где
   разошлись. Порядок — по `reviews.toml`, от самых давно не читанных.
   Страницы, до которых руки не дошли, остаются с прежней датой чтения —
   честно.</fact></item>
        <item><fact id="loop-reconcile-6" status="spec/done">Адаптации перечитываются против источника; расхождение структуры
   (`--translations`) — ноль.</fact></item>
        <item><fact id="loop-reconcile-7" status="spec/done">Пакет документации релизится версией, совместимой с текущим релизом
   продукта (`[[documents]] version`); сайт показывает её как `latest`; после
   публикации — `curl` корневых ссылок домена на `/doc/sitemap.xml` и
   `/doc/llms.txt` (J-004), IndexNow по изменённым адресам.</fact></item>
        <item><fact id="loop-reconcile-8" status="spec/done">Отчёт сверки в журнал: пробелы до и после, число перечитанных и
   переписанных страниц, время. Ноль пробелов и все даты чтения не старше
   сверки — единственный гейт, и это гейт сверки, не релиза продукта.</fact></item>
      </list>
    </section>
    <section id="loop-version" title="2.5 Смена версии: псевдоистория для разработчиков документации">
      <p p="17"><fact id="loop-version-1" status="spec/done">Версия — контракт на поведение. Владелец поднимает номер осознанно, когда
контракт изменился, и это единственный момент, когда машина считает
«разницу между версиями» (D-27). Смысл механизма — не искать, что
изменилось в файлах, а **алгоритмически назвать страницы, которые надо
обновить**, чтобы LLM правила их, а не перечитывала всю документацию.</fact></p>
      <p p="18"><fact id="loop-version-2" status="spec/done">Порядок, часы:</fact></p>
      <list ordered="true" p="19">
        <item><fact id="loop-version-3" status="spec/done">Владелец меняет номер версии продукта. Никакого технического гейта на
   этом шаге нет и не будет.</fact></item>
        <item><fact id="loop-version-4" status="spec/done">Дешёвая модель записывает снимок поверхности новой версии против
   текущего релизного бинарника: `vibe doc surface --record &lt;новая&gt;` →
   `maintenance/surface/&lt;новая&gt;.json`. Снимок старой версии уже лежит рядом —
   его записала последняя полная сверка или прошлая смена версии.</fact></item>
        <item><fact id="loop-version-5" status="spec/done">`vibe doc diff &lt;старая&gt; &lt;новая&gt;` печатает список: что изменилось в
   контракте (команда, флаг, поле, обязательство, схема) и какие страницы
   это цитируют, выводят или обязаны покрывать; у каждой страницы —
   причина. Пустой список — тоже ответ.</fact></item>
        <item><fact id="loop-version-6" status="spec/done">Центральная сессия обновляет **только перечисленные страницы** (и
   пишет новые для того, что появилось без страницы); остальное не трогается.
   То, что не успевает, — долг `docs:` с атомом.</fact></item>
        <item><fact id="loop-version-7" status="spec/done">Человеческий changelog между версиями для читателей пишется по выводу
   diff — руками, по `STYLE.md`; сам вывод diff наружу не публикуется.</fact></item>
        <item><fact id="loop-version-8" status="spec/done">Пакет документации выходит с новым `[[documents]] version`; сайт
   показывает его как `latest` для новой версии. Читатель видит номер и
   контракт, ничего из кухни.</fact></item>
        <item><fact id="loop-version-9" status="spec/done">Запись в журнал: сколько страниц назвал diff, сколько обновлено, время.</fact></item>
      </list>
      <p p="20"><fact id="loop-version-10" status="spec/done">Внутри версии тот же инструмент можно запустить как `vibe doc diff &lt;версия&gt;
now` — подсказка полной сверке, какие страницы перечитать первыми. Это
кухня: никаких следов на страницах, никаких меток для читателя (вопрос
владельцу, `VISION.md` §10 п. 14).</fact></p>
    </section>
  </section>
  <section id="tools" title="3. Инструменты">
    <list ordered="false" p="21">
      <item><fact id="tools-1" status="spec/done">**`vibe doc todo`** — очередь сопровождения по **текущему** состоянию, без
  сравнений «с тех пор»: команды, поля манифеста и обязательства без
  страницы (гейт покрытия), красные примеры, неразрешимые цитаты,
  расхождения структуры адаптаций, возраст страниц по `reviews.toml`
  (старше 90 дней), строки долга из `BACKLOG.md`, статистика линтера;
  `--format md` для отчёта недели, `--format json` для метрик. Печатает
  числа, никогда не роняет сборку.</fact></item>
      <item><fact id="tools-2" status="spec/done">**`vibe doc check`** — существующие проверки (D-14, D-25); флаг
  `--prompts` прогоняет промпты страниц сценариев через агента-исполнителя
  и проверяет ассерты (D-30) — дорого, поэтому не в панели: руками, в
  месячной петле выборкой, на сверке целиком.</fact></item>
      <item><fact id="tools-3" status="spec/done">**`vibe doc surface --record &lt;версия&gt;`** — снимок поверхности продукта
  на объявленную версию: структурный JSON (команды и флаги из `--help`,
  поля манифеста и lock-файла, схемы, тексты фактов с `actionstage="doc"`,
  реестр форматов), не хэш; ключ — только номер версии, который назвал
  владелец. Лежит в `maintenance/surface/&lt;версия&gt;.json` пакета документации;
  сайт этот каталог не рендерит.</fact></item>
      <item><fact id="tools-4" status="spec/done">**`vibe doc diff &lt;старая&gt; &lt;новая&gt;`** — разница двух снимков, переведённая
  в страницы: через граф цитат `rule`, источники `derived` и карту покрытия
  — «что изменилось → какие страницы обновить → почему». Только для
  разработчиков документации (§2.5).</fact></item>
      <item><fact id="tools-5" status="spec/done">**`reviews.toml`** в пакете документации: страница → дата последнего
  чтения вслух и кто читал; порядок «страницы недели». Данные, не генерат и
  не история: дата говорит «когда читали», а не «против чего».</fact></item>
      <item><fact id="tools-6" status="spec/done">**`JOURNAL.md`** — журнал (§4). В кампании — в папке вижена, с фазы 1 в
  зоне кампании; после кампании — в пакете документации.</fact></item>
      <item><fact id="tools-7" status="spec/done">**`CHANGELOG.md`** пакета документации — что изменилось для читателя,
  по версиям; пишется из журнала, человеческим текстом.</fact></item>
      <item><fact id="tools-8" status="spec/done">**`BACKLOG.md`** хоста — долг документации строками `docs:` с severity.</fact></item>
    </list>
  </section>
  <section id="journal" title="4. Журнал">
    <p p="22"><fact id="journal-1" status="spec/done">Одна таблица, только дописывается. Поля: дата; тип — `успех`, `неудача`,
`находка`, `наблюдение`; стабильный идентификатор `J-NNN`; что случилось;
свидетельство (команда, коммит, якорь, файл); **→ регламент** — какое
правило это подтверждает, меняет или создаёт, либо «наблюдение без
действия: причина».</fact></p>
    <p p="23"><fact id="journal-2" status="spec/done">Три закона журнала:</fact></p>
    <list ordered="true" p="24">
      <item><fact id="journal-3" status="spec/done">**Запись делается в том же атоме**, где случилось событие: красная проба,
   ложное срабатывание линтера, опровергнутое предсказание, обходной путь,
   удачный приём. Не «в конце недели по памяти».</fact></item>
      <item><fact id="journal-4" status="spec/done">**Поле «→ регламент» не остаётся пустым** дольше месячной петли.</fact></item>
      <item><fact id="journal-5" status="spec/done">**Правило без находки — гипотеза.** Каждое правило регламента ссылается на
   записи журнала, которые его породили; правило без ссылки помечается
   «гипотеза» и проверяется. Так находки кампании не теряются и не
   выдумываются: регламент растёт только из того, что случилось.</fact></item>
    </list>
  </section>
  <section id="signals" title="5. Сигналы">
    <table p="25">
      <tr>
        <td>Источник</td>
        <td>Сигнал</td>
        <td>Куда попадает</td>
      </tr>
      <tr>
        <td><fact id="signals-1" status="spec/done">Сборка</fact></td>
        <td><fact id="signals-2" status="spec/done">неразрешимые цитаты, красные примеры, дыры покрытия, расхождения структуры адаптаций, статистика линтера</fact></td>
        <td><fact id="signals-3" status="spec/done">`vibe doc todo`</fact></td>
      </tr>
      <tr>
        <td><fact id="signals-4" status="spec/done">Продукт</fact></td>
        <td><fact id="signals-5" status="spec/done">новые команды, поля, обязательства и PROP без страницы — видны гейту покрытия как текущие пробелы, не как «изменения с тех пор»</fact></td>
        <td><fact id="signals-6" status="spec/done">`vibe doc todo`, петля коммита</fact></td>
      </tr>
      <tr>
        <td><fact id="signals-7" status="spec/done">Владелец</fact></td>
        <td><fact id="signals-8" status="spec/done">решение поднять номер версии продукта</fact></td>
        <td><fact id="signals-9" status="spec/done">§2.5: `vibe doc diff`, список страниц к обновлению</fact></td>
      </tr>
      <tr>
        <td><fact id="signals-10" status="spec/done">Промпты</fact></td>
        <td><fact id="signals-11" status="spec/done">красный ассерт при прогоне агентом; агент не понял промпт</fact></td>
        <td><fact id="signals-12" status="spec/done">правка страницы или долг `docs:`; два падения подряд — переписывание</fact></td>
      </tr>
      <tr>
        <td><fact id="signals-13" status="spec/done">Люди</fact></td>
        <td><fact id="signals-14" status="spec/done">вопросы в чате и issue, замечания владельца при чтении вслух</fact></td>
        <td><fact id="signals-15" status="spec/done">долг `docs:` или правка</fact></td>
      </tr>
      <tr>
        <td><fact id="signals-16" status="spec/done">Агенты</fact></td>
        <td><fact id="signals-17" status="spec/done">скилл `vibevm-docs` просит агента, не нашедшего ответ по якорю, записать вопрос строкой `docs-gap:` в `BACKLOG.md` проекта-потребителя; для хоста — в его `BACKLOG.md`</fact></td>
        <td><fact id="signals-18" status="spec/done">недельная петля</fact></td>
      </tr>
      <tr>
        <td><fact id="signals-19" status="spec/done">Сайт</fact></td>
        <td><fact id="signals-20" status="spec/done">просмотры, выходы, время чтения по страницам (Umami); поисковые запросы без результата, когда появится поиск; Search Console</fact></td>
        <td><fact id="signals-21" status="spec/done">месячная петля</fact></td>
      </tr>
      <tr>
        <td><fact id="signals-22" status="spec/done">Журнал</fact></td>
        <td><fact id="signals-23" status="spec/done">записи с пустым «→ регламент»</fact></td>
        <td><fact id="signals-24" status="spec/done">месячная петля</fact></td>
      </tr>
    </table>
  </section>
  <section id="small-edits" title="6. Дисциплина мелких правок">
    <list ordered="true" p="26">
      <item><fact id="small-edits-1" status="spec/done">Одна правка — один коммит `docs(vibevm-docs): …` с конкретным описанием.</fact></item>
      <item><fact id="small-edits-2" status="spec/done">Якоря не меняются (R-06); `derived` руками не правится (R-03); число или
   имя поля в прозе — только с `rule` рядом (R-01).</fact></item>
      <item><fact id="small-edits-3" status="spec/done">Вставленный термин вводится на месте (`STYLE.md` §2); линтер стиля
   зелёный на странице.</fact></item>
      <item><fact id="small-edits-4" status="spec/done">**Правило пяти правок:** пятая мелкая правка одной страницы с последнего
   чтения вслух ставит страницу в очередь «страница недели» — накопленные
   заплатки ломают лестницу незаметно для каждого автора заплатки.</fact></item>
      <item><fact id="small-edits-5" status="spec/done">Мелкая правка, которая тянет за собой другие страницы, — не мелкая: она
   становится долгом с атомом.</fact></item>
    </list>
  </section>
  <section id="metrics" title="7. Метрики месячного ревью">
    <table p="27">
      <tr>
        <td>Метрика</td>
        <td>Как считать</td>
        <td>Куда должна идти</td>
      </tr>
      <tr>
        <td><fact id="metrics-1" status="spec/done">Пробелы на начало месяца</fact></td>
        <td><fact id="metrics-2" status="spec/done">число строк `vibe doc todo` по покрытию, примерам и цитатам</fact></td>
        <td><fact id="metrics-3" status="spec/done">к нулю</fact></td>
      </tr>
      <tr>
        <td><fact id="metrics-4" status="spec/done">Возраст страниц</fact></td>
        <td><fact id="metrics-5" status="spec/done">медиана дней с последнего чтения по `reviews.toml`</fact></td>
        <td><fact id="metrics-6" status="spec/done">ниже 90</fact></td>
      </tr>
      <tr>
        <td><fact id="metrics-7" status="spec/done">Отставание адаптаций</fact></td>
        <td><fact id="metrics-8" status="spec/done">сумма ревизий по всем страницам адаптации</fact></td>
        <td><fact id="metrics-9" status="spec/done">к нулю на полной сверке</fact></td>
      </tr>
      <tr>
        <td><fact id="metrics-10" status="spec/done">Покрытие обязательств</fact></td>
        <td><fact id="metrics-11" status="spec/done">`vibe doc check --coverage`</fact></td>
        <td><fact id="metrics-12" status="spec/done">100 процентов</fact></td>
      </tr>
      <tr>
        <td><fact id="metrics-13" status="spec/done">Тики на тысячу слов</fact></td>
        <td><fact id="metrics-14" status="spec/done">линтер стиля по корпусу</fact></td>
        <td><fact id="metrics-15" status="spec/done">к нулю</fact></td>
      </tr>
      <tr>
        <td><fact id="metrics-16" status="spec/done">Долг</fact></td>
        <td><fact id="metrics-17" status="spec/done">строки `docs:` в `BACKLOG.md` по severity</fact></td>
        <td><fact id="metrics-18" status="spec/done">P1 = 0</fact></td>
      </tr>
      <tr>
        <td><fact id="metrics-19" status="spec/done">Находки → регламент</fact></td>
        <td><fact id="metrics-20" status="spec/done">записей за месяц / из них с решением</fact></td>
        <td><fact id="metrics-21" status="spec/done">все с решением</fact></td>
      </tr>
      <tr>
        <td><fact id="metrics-22" status="spec/done">Дней с последней полной сверки</fact></td>
        <td><fact id="metrics-23" status="spec/done">по дате в `reviews.toml`</fact></td>
        <td><fact id="metrics-24" status="spec/done">не больше 90 при квартальной каденции</fact></td>
      </tr>
    </table>
    <p p="28"><fact id="metrics-25" status="spec/done">Восемь чисел, не больше; таблица в отчёте месяца, тренд рядом.</fact></p>
  </section>
  <section id="roles" title="8. Роли по ярусам">
    <table p="29">
      <tr>
        <td>Ярус</td>
        <td>В петле коммита</td>
        <td>В недельной</td>
        <td>В месячной</td>
        <td>В полной сверке</td>
        <td>При смене версии</td>
      </tr>
      <tr>
        <td><fact id="roles-1" status="spec/done">Владелец</fact></td>
        <td><fact id="roles-2" status="spec/done">—</fact></td>
        <td><fact id="roles-3" status="spec/done">читает страницу недели (по желанию)</fact></td>
        <td><fact id="roles-4" status="spec/done">читает три страницы вслух; решает по регламенту</fact></td>
        <td><fact id="roles-5" status="spec/done">назначает дату, принимает отчёт сверки</fact></td>
        <td><fact id="roles-6" status="spec/done">поднимает номер; принимает changelog</fact></td>
      </tr>
      <tr>
        <td><fact id="roles-7" status="spec/done">Центральная сессия (Fable)</fact></td>
        <td><fact id="roles-8" status="spec/done">правит прозу, если коммит её требует</fact></td>
        <td><fact id="roles-9" status="spec/done">сортирует очередь, делает мелкие правки, пишет запись в журнал</fact></td>
        <td><fact id="roles-10" status="spec/done">аудит корпуса, переписывание страниц, изменения регламента, changelog</fact></td>
        <td><fact id="roles-11" status="spec/done">перечитывает страницы против текущего продукта, переписывает коридоры, закрывает пробелы новыми страницами</fact></td>
        <td><fact id="roles-12" status="spec/done">обновляет страницы из списка diff, пишет changelog для читателей</fact></td>
      </tr>
      <tr>
        <td><fact id="roles-13" status="spec/done">Opus 5 High</fact></td>
        <td><fact id="roles-14" status="spec/done">код инструментов</fact></td>
        <td><fact id="roles-15" status="spec/done">—</fact></td>
        <td><fact id="roles-16" status="spec/done">правки инструментов по находкам</fact></td>
        <td><fact id="roles-17" status="spec/done">правки инструментов и генераторов `derived`</fact></td>
        <td><fact id="roles-18" status="spec/done">правки `surface`/`diff` по находкам</fact></td>
      </tr>
      <tr>
        <td><fact id="roles-19" status="spec/done">Дешёвая модель</fact></td>
        <td><fact id="roles-20" status="spec/done">—</fact></td>
        <td><fact id="roles-21" status="spec/done">прогоняет `todo` и `check`, собирает отчёт</fact></td>
        <td><fact id="roles-22" status="spec/done">собирает метрики и аналитику, машинный черновик адаптации</fact></td>
        <td><fact id="roles-23" status="spec/done">прогоняет `todo`, `check` и примеры против текущего релиза, собирает отчёт; записывает снимок поверхности</fact></td>
        <td><fact id="roles-24" status="spec/done">записывает снимок новой версии, прогоняет `diff`, собирает список</fact></td>
      </tr>
    </table>
  </section>
  <section id="self-change" title="9. Как меняется сам регламент">
    <p p="30"><fact id="self-change-1" status="spec/done">Регламент — не догма: он меняется по журналу в месячной петле (§2.3 п. 7).
Каждое изменение — правка с датой и ссылками на записи `J-NNN`. Раз в
квартал — вопрос владельцу: какие петли оказались лишними, какие метрики
никто не смотрит, какие правила ни разу не сработали. Правило, не
сработавшее за квартал, помечается «спящее» и выносится из чеклиста; правило
без записи-основания — «гипотеза». Так регламент худеет, а не толстеет.</fact></p>
  </section>
  <section id="landing" title="10. Куда ложится норма">
    <table p="31">
      <tr>
        <td>Что</td>
        <td>Где</td>
        <td>Когда</td>
      </tr>
      <tr>
        <td><fact id="landing-1" status="spec/done">Норма петель, журнала, долга, гейта релиза</fact></td>
        <td><fact id="landing-2" status="spec/done">PROP «documentation maintenance», следующий свободный номер после PROP-057</fact></td>
        <td><fact id="landing-3" status="spec/done">фаза 6, атом A6.4</fact></td>
      </tr>
      <tr>
        <td><fact id="landing-4" status="spec/done">Страница для мейнтейнера «How this manual is maintained» (аудитория `dev`)</fact></td>
        <td><fact id="landing-5" status="spec/done">пакет `vibevm-docs`</fact></td>
        <td><fact id="landing-6" status="spec/done">A6.4</fact></td>
      </tr>
      <tr>
        <td><fact id="landing-7" status="spec/done">Чеклисты `maintenance/weekly.md`, `monthly.md`, `release.md`</fact></td>
        <td><fact id="landing-8" status="spec/done">пакет `vibevm-docs`</fact></td>
        <td><fact id="landing-9" status="spec/done">A6.4</fact></td>
      </tr>
      <tr>
        <td><fact id="landing-10" status="spec/done">`reviews.toml`, `JOURNAL.md`, `CHANGELOG.md`</fact></td>
        <td><fact id="landing-11" status="spec/done">пакет `vibevm-docs`</fact></td>
        <td><fact id="landing-12" status="spec/done">A6.1, A6.4</fact></td>
      </tr>
      <tr>
        <td><fact id="landing-13" status="spec/done">`vibe doc todo`</fact></td>
        <td><fact id="landing-14" status="spec/done">`vibe-doc`, CLI</fact></td>
        <td><fact id="landing-15" status="spec/done">фаза 2, A2.27</fact></td>
      </tr>
      <tr>
        <td><fact id="landing-16" status="spec/done">`vibe doc surface`, `vibe doc diff`, каталог `maintenance/surface/`</fact></td>
        <td><fact id="landing-17" status="spec/done">`vibe-doc`, CLI; пакет документации</fact></td>
        <td><fact id="landing-18" status="spec/done">фаза 2, A2.26; первый снимок — A6.5</fact></td>
      </tr>
      <tr>
        <td><fact id="landing-19" status="spec/done">Календарь полной сверки, чеклист `maintenance/reconcile.md`</fact></td>
        <td><fact id="landing-20" status="spec/done">пакет документации; даты чтения в `reviews.toml`</fact></td>
        <td><fact id="landing-21" status="spec/done">A6.5</fact></td>
      </tr>
      <tr>
        <td><fact id="landing-22" status="spec/done">Регламент как flow-пакет для чужих проектов с doc-пакетами</fact></td>
        <td><fact id="landing-23" status="spec/done">`org.vibevm.world/docs-maintenance`</fact></td>
        <td><fact id="landing-24" status="spec/done">вторая волна: когда второй проект захочет тот же ритуал</fact></td>
      </tr>
    </table>
  </section>
  <section id="open" title="11. Открытые вопросы владельцу">
    <list ordered="true" p="32">
      <item><fact id="open-1" status="spec/done">Каденции: неделя и месяц, как здесь, или две недели и квартал.</fact></item>
      <item><fact id="open-2" status="spec/done">Дежурный по недельной петле: владелец с центральной сессией или только
   сессия с отчётом владельцу.</fact></item>
      <item><fact id="open-3" status="spec/done">Публиковать мелкие правки патч-версией еженедельно или копить до
   месячного релиза.</fact></item>
      <item><fact id="open-4" status="spec/done">Сигнал от агентов `docs-gap:` в `BACKLOG.md` проектов-потребителей —
   уместно ли писать в чужой файл по воле скилла, или только предлагать.</fact></item>
      <item><fact id="open-5" status="spec/done">Каденция полной сверки: раз в квартал, перед крупной вехой, или и то и
   другое. Рекомендация — и то и другое, с правом владельца отложить.</fact></item>
      <item><fact id="open-6" status="spec/done">Примеры с `expect` — единственная техническая связка продукта с
   документацией (golden-тесты в панели): оставить как тесты или тоже
   перевести в измеритель. Рекомендация — оставить: они правятся как любой
   golden-файл и стоят минуты.</fact></item>
      <item><fact id="open-7" status="spec/done">Псевдоистория версий (§2.5): где хранить снимки и разрешить ли
   внутренний `vibe doc diff &lt;версия&gt; now` как подсказку сверке
   (`VISION.md` §10 п. 14).</fact></item>
    </list>
  </section>
</spec>
