- DECISIONS.md (4040 строк, 65 тем) → decisions/, файл на тему плюс указатель; - буквенные метки решений заменены сквозными Р1–Р234, следствия получили префикс С при прежних номерах: схема букв выродилась до пятибуквенных и сломалась — `АЕАКЛ` была занята и темой 53, и темой 65; - 42 перекрёстные ссылки переписаны под новые номера и стали живыми; где номер означал тему, а слово стояло «решение», формулировка исправлена.
5.1 KiB
59. Аудит четырьмя сабагентами: описания отстают от механики молча (2026-08-09)
Реорганизация была объявлена законченной «на бумаге», и я запустил по аудитору на плагин — консистентность, самостоятельность, интегрируемость. Гейт при этом был зелёным и остался честен: он проверяет ровно то, что умеет.
Нашлось около полусотни расхождений, и они одного рода. Каждый раз я правил механику — вырезал спринт из скрипта, переименовал скиллы, перенёс судей — и каждый раз не правил то, что механику описывает вовне: скелеты документов, докстринги скрипта, уставы агентов, манифесты плагинов, README.
Самое дорогое: скелет CLAUDE.md уносил слоты спринта в каждый новый проект
через две недели после отмены спринтов. Скелет не описывает, а порождает: его
отставание не читается, оно исполняется.
Механизм приоритета не запускался ни разу. --section у move был
обязательным, а все три места, где груминг предписывает расстановку, дают команду
без него — usage error. Скилл написан, прогнан не был, и разницы между рабочим и
бумажным процессом не видно, пока его не запустят.
Правило границы я же и нарушал. Восемь дословных копий «путь в дерево чужого плагина не пишется никогда» — и пять мест, где путь написан, одно из них строкой выше собственного «пути туда конвейер не выносит».
Отдельно: у описания плагина было два дома, и три из четырёх разошлись. Класс
закрыт не дисциплиной, а машиной — frontmatter.py теперь сверяет plugin.json с
marketplace.json, а гейт разбужен на *.json.
Правки разобраны четырьмя пропусками по одному сабагенту на пропуск, с проверкой
результата каждого: скелеты и канон, исполнимость учёта задач, границы и стыки,
словарь и манифесты. Скриптовые правки проверены поведением на фикстурах, включая
настоящий git-репозиторий для reopen.
Чего аудит не даёт. Это было чтение. Ни один скилл по-прежнему не исполнялся на живом проекте, и находки вроде «чекпоинт вырождается в ритуал» такой проверкой не берутся по построению.
Что из этого следует
С195. Механика проверяется прогоном, описание — только чтением. Поэтому после каждой правки механики отстают именно описания, и отстают молча. Меняя механику, ищи её отражения поимённо: скелеты, докстринги, уставы агентов, манифесты, README.
С196. Скелет дороже документа: он не описывает, а порождает. Отставший документ врёт одному читателю; отставший скелет уезжает в каждый новый проект и становится там обязательным.
С197. Копия правила не заставляет его исполнять. Правило исполняется там, где его проверяет машина или чужой глаз; восемь копий на видном месте не помешали автору нарушить его пятью строками.
С198. Бумажный процесс неотличим от рабочего, пока его не запустили. Команда, которую никто не набрал, может не существовать вовсе — и именно так и было.
С199. Два дома у факта расходятся не когда-нибудь, а сразу. Из четырёх пар описаний плагина совпала одна — та, которую с момента заведения не правили.