Три слова жили в текстах, не входя в закрытый словарь правила 6, — то есть
выглядели словарём, не будучи им. Решение по каждому своё.
Чекпоинт и синк внесены с определением: первый называет плановый стоп, на
котором ждут ответа, второй — сверку каждого документа канона с работой, с
обязательным отрицанием по нетронутым. Русские замены обоих называют либо исход,
либо обряд, но не саму работу.
Опиниативный заменён на «проход с мнением» в 13 местах и добавлен к снятому
рядом с конфляцией и гайдом. Копии правил пересобраны resync.py; версию канона
это не двигает — в репозиторий проекта отсюда ничего не уезжает.
Проходы берут вход, потолки и состав половин из метки, а на прогоне обслуживания
метки нет — оба взяли бы их наугад и молча по-разному. План сценария теперь
называет глубину прямо: basics — сверка с потолком 2, code — вход small, потолки
3 и 2 и включённая третья половина.
Третья половина code включена не для полноты: без неё security и architecture не
смотрит вообще никто. Границы покрытия переписаны честно — requirements не
смотрел никто, две другие темы сверены только против записанных инвариантов и
только если проход по коду шёл.
Уставы review-code и review-basics знают прогон без метки, их описания тоже;
триаж знает, что план сценария встаёт на место плана разметки. В скилле задач
уточнено: тип не выбирает метку, но предлагает сценарий, а меняется он командой
edit --type, а не исполнителем по ходу. Плюс язык: заголовок, два оборота и
right-size на русском.
Имя `.pm.json` пережило плагин `av-dev-pm` на два месяца и указывало в пустоту.
Правило, которое из этого вынуто: имя служебного файла — имя плагина, который
его завёл, и по нему же владельца узнают.
- `docs/.pm.json` → `docs/.docs.json`, запись 13 журнала. Прежнее имя docs.py
не читает намеренно: по этому числу upgrade решает, какие записи применять,
и два дома разъехались бы молча ровно там, где это дороже всего. Вместо
совместимости — узнавание: check видит старый файл и печатает готовую git mv
- у каталога задач появилась своя версия формата — ключ `tasks` в
`.tasks.json`, свой журнал версий и своё повышение. До сих пор её не было
вовсе, хотя docs.py в комментарии уверенно на неё ссылался: описание
опережало механику ровно так, как сказано в решении 195
- число своё, а не копия канонического: плагин ставится в одиночку, и у
проекта без docs/ версии канона нет — сверять было бы не с чем
- конфиг задач стал обязательным (init и adopt apply пишут его всегда), check
сверяет число, `check --fix` его не приписывает: приписанное объявляло бы
каталог приведённым к формату, шагов которого никто не делал
- переезды 11 и 12 в новый журнал задним числом не переписаны — версия 1
велит догнать формат по журналу канона, называя признаки отставания
поимённо (каталог в docs/tasks/, живой SPRINT.md)
- запись 60 в DECISIONS со следствиями 200–203; отдельно разведено с решением
F, где `.docs.json` отвергался как указатель путей: отвергнут был указатель,
а не имя
Правило границы моё, копий восемь — и нарушал его я же.
- путь в дерево чужого плагина снят из пяти мест; маркер копии, уезжающий
в проект скелетом, оставлен, но сказано, что сама пара маркеров не едет
- короткое имя чужого скилла в четырёх местах стало полным
- стык «урожай ревью → задачи» не был назван ни с одной стороны, хотя
механика написана с обеих; теперь назван, с веткой «плагина нет»
- resolve звал av-dev-git:commit без строки доклада и пересказывал формат
коммита, нарушая собственное «ссылайся, не пересказывай»
- doc-wording обещал момент вызова, которого не исполнял никто. Правило:
звонящий — тот, кто только что писал текст. Вызов появился шагом в docs,
init, adopt и upgrade; healthcheck по-прежнему его не зовёт
- openspec.py искал SHALL по всему файлу, а образец даёт его в context —
проверка молчала ровно в том случае, ради которого написана
- фаза 2 review-rubric была недостижима; проход стал судить задуманное,
а не код, и это сходится с тем, что о нём говорит конвейер
- rules.tasks в образце конфига, ветка «записи задачи нет» у review-scope,
возвраты на чекпоинт в схеме resolve, старшинство правила дельта-спек
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Механизм расстановки приоритета не запускался ни разу: --section у move был
обязательным, а все три места, где груминг его предписывает, дают команду без
него — usage error. Чиню скриптом, а не текстами: перестановка внутри секции —
самая частая операция груминга, и требовать повторить текущую секцию значит
приглашать указать не ту.
- move: --section необязателен, без него берётся секция из индекса; сообщение
различает перестановку и перенос
- докстринги, отрицавшие правило 4 («в беклоге порядок значения не имеет»),
приведены к действительности
- reopen ставил возвращённую строку после сырья и давал ошибку check на ровном
месте
- edit портил написание секции в мете; корень шире — брался нижний регистр из
разбора, а не написание заголовка. То же в close и reopen
- дыра гейта: между заведением и ready запись не судил никто. Своя строка
здоровья check, отдельная от «готово к взятию» — она про другое
- шесть файлов и два устава обещали, что схему типа проверяет check
- раздел from-review о серьёзности стоял на «приоритетов нет»
- остатки спринта и сессии в семи местах, включая description агента формы
- индексов два, а не три; два определения порога готовности после adopt
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Имя описывало устройство, а не предмет: «пайплайн» говорит, что внутри
конвейер, — а плагин занят кодом по задачам, и с появлением чекпоинтов
он уже не конвейер в чистом виде. Набор имён стал параллельным:
docs / tasks / code / git, каждое называет материал.
Заодно review-pipeline стал review — слово ушло из плагина целиком, а
не наполовину; скиллы выровнялись: resolve / review / openspec.
Журнал версий канона переписан вместе со всеми, DECISIONS.md — нет.
Разрез по типу высказывания, а не файла: наблюдение и причина
неприкосновенны, предписание и адрес обязаны оставаться исполнимыми.
Запись версии 10 велит «проверить, что плагин av-dev-pipeline
установлен» — проект, дошедший до неё, выполнил бы невыполнимое.