итог аудита: запись 59, карта домов про конвенции, план
- дом «что механизировано» называл conventions/README.md, хотя документ канона живёт файлом или каталогом; копия пересобрана resync - запись 59: находки одного рода — правил механику, не правил описывающее её вовне. Пять выводов, включая «скелет не описывает, а порождает» - в план добавлена пачка мелочи, оставленной сознательно, и сказано, что бумажная часть закрыта Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -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. **Два дома у факта расходятся не когда-нибудь, а сразу.** Из четырёх пар
|
||||||
|
описаний плагина совпала одна — та, которую с момента заведения не правили.
|
||||||
|
|||||||
@@ -23,6 +23,9 @@
|
|||||||
Канон документов — **версия 12**. Живые проекты стоят на 2–3 и на плагине
|
Канон документов — **версия 12**. Живые проекты стоят на 2–3 и на плагине
|
||||||
`av-dev-pm`, которого больше нет.
|
`av-dev-pm`, которого больше нет.
|
||||||
|
|
||||||
|
Бумажная часть закрыта аудитом четырёх плагинов и четырьмя пропусками правок
|
||||||
|
(DECISIONS, запись 59). Всё, что ниже, проверяется **только на живом коде**.
|
||||||
|
|
||||||
## 1. Живые проекты — вернуть в рабочее состояние
|
## 1. Живые проекты — вернуть в рабочее состояние
|
||||||
|
|
||||||
Блокирует всё остальное: под текущим каноном не стоит ни один проект, и ни один
|
Блокирует всё остальное: под текущим каноном не стоит ни один проект, и ни один
|
||||||
@@ -78,7 +81,7 @@
|
|||||||
канонизация в транзакции, `-1 >= -1`. Цена и ожидаемый исход — REMAINING,
|
канонизация в транзакции, `-1 >= -1`. Цена и ожидаемый исход — REMAINING,
|
||||||
«Главный незакрытый риск»
|
«Главный незакрытый риск»
|
||||||
|
|
||||||
## 4. Пайплайн: что осталось после `resolve`
|
## 4. Конвейер: что осталось после `resolve`
|
||||||
|
|
||||||
Сам скилл написан (`av-dev-code:resolve`, два чекпоинта, ветка разведки),
|
Сам скилл написан (`av-dev-code:resolve`, два чекпоинта, ветка разведки),
|
||||||
`task-batch` удалён. Осталось то, что на бумаге не проверяется:
|
`task-batch` удалён. Осталось то, что на бумаге не проверяется:
|
||||||
@@ -91,7 +94,23 @@
|
|||||||
`rules.design`). **На живом проекте это ни разу не работало:** неизвестно,
|
`rules.design`). **На живом проекте это ни разу не работало:** неизвестно,
|
||||||
хватает ли двух артефактов, чтобы объяснение не пришлось дописывать руками
|
хватает ли двух артефактов, чтобы объяснение не пришлось дописывать руками
|
||||||
|
|
||||||
## 5. Обкатка
|
## 5. Мелочь, оставленная аудитом сознательно
|
||||||
|
|
||||||
|
Одной пачкой, когда будет повод открыть эти файлы, — не раньше:
|
||||||
|
|
||||||
|
- [ ] «чекпоинт» несёт третий смысл — точка наблюдаемости в коде
|
||||||
|
(`finding-contract.md`, `promote.md`). Слово занято дважды по своему же
|
||||||
|
правилу, но домены разные, и переименование здесь может выйти дороже
|
||||||
|
путаницы
|
||||||
|
- [ ] закрытый словарь `shared/language.md` не содержит ни «конвейера», ни
|
||||||
|
«чекпоинта», ни «груминга» — трёх рабочих терминов репозитория. Список
|
||||||
|
объявлен закрытым, и пополнять его на ходу нельзя
|
||||||
|
- [ ] `move <слаг>` без флагов теперь легален и значит «в конец своей секции» —
|
||||||
|
осмысленная операция, но в прозе не описана нигде
|
||||||
|
- [ ] `reopen` печатает «позиция это приоритет» и для целей роадмапа, где секции
|
||||||
|
очередью не являются
|
||||||
|
|
||||||
|
## 6. Обкатка
|
||||||
|
|
||||||
- [ ] один-два цикла healthlog на новом процессе. Наблюдения к первой обкатке
|
- [ ] один-два цикла healthlog на новом процессе. Наблюдения к первой обкатке
|
||||||
два: не выродились ли «границы покрытия» в шаблон (REMAINING, «Открытые
|
два: не выродились ли «границы покрытия» в шаблон (REMAINING, «Открытые
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ color: yellow
|
|||||||
| что необратимо | `CLAUDE.md` — **не** `architecture.md` |
|
| что необратимо | `CLAUDE.md` — **не** `architecture.md` |
|
||||||
| единые точки проекта | `architecture.md` |
|
| единые точки проекта | `architecture.md` |
|
||||||
| имя основной ветки, `testdata`, временный каталог | `CLAUDE.md` |
|
| имя основной ветки, `testdata`, временный каталог | `CLAUDE.md` |
|
||||||
| что уже механизировано правилом | `conventions/README.md` |
|
| что уже механизировано правилом | `conventions.*`, раздел «Механизировано» |
|
||||||
<!-- /копия: карта-домов -->
|
<!-- /копия: карта-домов -->
|
||||||
|
|
||||||
**Факта нет в карте — дома у него нет**, и это находка о самом каноне, а не о
|
**Факта нет в карте — дома у него нет**, и это находка о самом каноне, а не о
|
||||||
|
|||||||
@@ -466,7 +466,7 @@ kebab-case.** Причина не эстетическая: имя файла с
|
|||||||
| что необратимо | `CLAUDE.md` — **не** `architecture.md` |
|
| что необратимо | `CLAUDE.md` — **не** `architecture.md` |
|
||||||
| единые точки проекта | `architecture.md` |
|
| единые точки проекта | `architecture.md` |
|
||||||
| имя основной ветки, `testdata`, временный каталог | `CLAUDE.md` |
|
| имя основной ветки, `testdata`, временный каталог | `CLAUDE.md` |
|
||||||
| что уже механизировано правилом | `conventions/README.md` |
|
| что уже механизировано правилом | `conventions.*`, раздел «Механизировано» |
|
||||||
<!-- /дом: карта-домов -->
|
<!-- /дом: карта-домов -->
|
||||||
|
|
||||||
## Пустое называется пустым
|
## Пустое называется пустым
|
||||||
|
|||||||
Reference in New Issue
Block a user