From 12b77c3393fca442aa760ab198e3eea881d603ce Mon Sep 17 00:00:00 2001 From: Anton Vakhrushev Date: Sun, 9 Aug 2026 18:48:21 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B8=D1=82=D0=BE=D0=B3=20=D0=B0=D1=83=D0=B4?= =?UTF-8?q?=D0=B8=D1=82=D0=B0:=20=D0=B7=D0=B0=D0=BF=D0=B8=D1=81=D1=8C=2059?= =?UTF-8?q?,=20=D0=BA=D0=B0=D1=80=D1=82=D0=B0=20=D0=B4=D0=BE=D0=BC=D0=BE?= =?UTF-8?q?=D0=B2=20=D0=BF=D1=80=D0=BE=20=D0=BA=D0=BE=D0=BD=D0=B2=D0=B5?= =?UTF-8?q?=D0=BD=D1=86=D0=B8=D0=B8,=20=D0=BF=D0=BB=D0=B0=D0=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - дом «что механизировано» называл conventions/README.md, хотя документ канона живёт файлом или каталогом; копия пересобрана resync - запись 59: находки одного рода — правил механику, не правил описывающее её вовне. Пять выводов, включая «скелет не описывает, а порождает» - в план добавлена пачка мелочи, оставленной сознательно, и сказано, что бумажная часть закрыта Co-Authored-By: Claude Opus 5 (1M context) --- DECISIONS.md | 54 ++++++++++++++++++++ TODO.md | 23 ++++++++- av-dev-docs/agents/doc-consistency.md | 2 +- av-dev-docs/skills/canon/references/canon.md | 2 +- 4 files changed, 77 insertions(+), 4 deletions(-) diff --git a/DECISIONS.md b/DECISIONS.md index 8e31614..227f30a 100644 --- a/DECISIONS.md +++ b/DECISIONS.md @@ -3593,3 +3593,57 @@ change нет — берём источником актуальные спек ясным входом скилл не нужен, его находит описание. Скилл заводят там, где надо решить, кого звать, что передать, в каком объёме и что делать с результатом. + +## 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. **Два дома у факта расходятся не когда-нибудь, а сразу.** Из четырёх пар + описаний плагина совпала одна — та, которую с момента заведения не правили. diff --git a/TODO.md b/TODO.md index 02c25ca..10ec2b9 100644 --- a/TODO.md +++ b/TODO.md @@ -23,6 +23,9 @@ Канон документов — **версия 12**. Живые проекты стоят на 2–3 и на плагине `av-dev-pm`, которого больше нет. +Бумажная часть закрыта аудитом четырёх плагинов и четырьмя пропусками правок +(DECISIONS, запись 59). Всё, что ниже, проверяется **только на живом коде**. + ## 1. Живые проекты — вернуть в рабочее состояние Блокирует всё остальное: под текущим каноном не стоит ни один проект, и ни один @@ -78,7 +81,7 @@ канонизация в транзакции, `-1 >= -1`. Цена и ожидаемый исход — REMAINING, «Главный незакрытый риск» -## 4. Пайплайн: что осталось после `resolve` +## 4. Конвейер: что осталось после `resolve` Сам скилл написан (`av-dev-code:resolve`, два чекпоинта, ветка разведки), `task-batch` удалён. Осталось то, что на бумаге не проверяется: @@ -91,7 +94,23 @@ `rules.design`). **На живом проекте это ни разу не работало:** неизвестно, хватает ли двух артефактов, чтобы объяснение не пришлось дописывать руками -## 5. Обкатка +## 5. Мелочь, оставленная аудитом сознательно + +Одной пачкой, когда будет повод открыть эти файлы, — не раньше: + +- [ ] «чекпоинт» несёт третий смысл — точка наблюдаемости в коде + (`finding-contract.md`, `promote.md`). Слово занято дважды по своему же + правилу, но домены разные, и переименование здесь может выйти дороже + путаницы +- [ ] закрытый словарь `shared/language.md` не содержит ни «конвейера», ни + «чекпоинта», ни «груминга» — трёх рабочих терминов репозитория. Список + объявлен закрытым, и пополнять его на ходу нельзя +- [ ] `move <слаг>` без флагов теперь легален и значит «в конец своей секции» — + осмысленная операция, но в прозе не описана нигде +- [ ] `reopen` печатает «позиция это приоритет» и для целей роадмапа, где секции + очередью не являются + +## 6. Обкатка - [ ] один-два цикла healthlog на новом процессе. Наблюдения к первой обкатке два: не выродились ли «границы покрытия» в шаблон (REMAINING, «Открытые diff --git a/av-dev-docs/agents/doc-consistency.md b/av-dev-docs/agents/doc-consistency.md index f6c5976..d77a26e 100644 --- a/av-dev-docs/agents/doc-consistency.md +++ b/av-dev-docs/agents/doc-consistency.md @@ -33,7 +33,7 @@ color: yellow | что необратимо | `CLAUDE.md` — **не** `architecture.md` | | единые точки проекта | `architecture.md` | | имя основной ветки, `testdata`, временный каталог | `CLAUDE.md` | -| что уже механизировано правилом | `conventions/README.md` | +| что уже механизировано правилом | `conventions.*`, раздел «Механизировано» | **Факта нет в карте — дома у него нет**, и это находка о самом каноне, а не о diff --git a/av-dev-docs/skills/canon/references/canon.md b/av-dev-docs/skills/canon/references/canon.md index 09d1867..0ef79b7 100644 --- a/av-dev-docs/skills/canon/references/canon.md +++ b/av-dev-docs/skills/canon/references/canon.md @@ -466,7 +466,7 @@ kebab-case.** Причина не эстетическая: имя файла с | что необратимо | `CLAUDE.md` — **не** `architecture.md` | | единые точки проекта | `architecture.md` | | имя основной ветки, `testdata`, временный каталог | `CLAUDE.md` | -| что уже механизировано правилом | `conventions/README.md` | +| что уже механизировано правилом | `conventions.*`, раздел «Механизировано» | ## Пустое называется пустым