журнал решений: разложен по теме на файл, метки решений стали номерами
- DECISIONS.md (4040 строк, 65 тем) → decisions/, файл на тему плюс указатель; - буквенные метки решений заменены сквозными Р1–Р234, следствия получили префикс С при прежних номерах: схема букв выродилась до пятибуквенных и сломалась — `АЕАКЛ` была занята и темой 53, и темой 65; - 42 перекрёстные ссылки переписаны под новые номера и стали живыми; где номер означал тему, а слово стояло «решение», формулировка исправлена.
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
# 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. Два дома у факта расходятся не когда-нибудь, а сразу.** Из четырёх пар
|
||||
описаний плагина совпала одна — та, которую с момента заведения не правили.
|
||||
Reference in New Issue
Block a user