diff --git a/decisions/66-canon-without-prefix.md b/decisions/66-canon-without-prefix.md new file mode 100644 index 0000000..4edcca5 --- /dev/null +++ b/decisions/66-canon-without-prefix.md @@ -0,0 +1,41 @@ +# 66. `doc-canon` → `canon`: скилл формы вышел из семейства документов (2026-08-13) + +Префиксы `doc-`, `task-`, `code-` пришли со слиянием плагинов ([тема +64](64-three-plugins-merged.md)) и называют **материал**, которым скилл занят, — +тем же признаком, каким прежде звались плагины ([тема +56](56-plugin-and-skill-renames.md)). Для восьми скиллов признак верен. Для +девятого он врал. + +**Р235. Скилл занят не материалом, а формой, и формы у проекта одна на все +части.** `check` сверяет раскладку документов, `adopt` заводит все части сразу и +зовёт владельцев каталога задач и `openspec/`, `upgrade` повышает **всю** +раскладку одним журналом версий — и документы, и каталог задач. Версия стала +общей ещё на слиянии ([Р231](64-three-plugins-merged.md)), и с этого дня префикс +`doc-` спорил с механикой, которую сам же скилл и исполняет. Имя осталось без +префикса: отсутствие префикса здесь — тоже утверждение, и читается оно как «этот +поперёк остальных». + +**Р236. Переименование поехало записью журнала версий, хотя в проекте ничего не +переехало.** Ни один файл проекта не сменил дом — сменились путь к скрипту +(`skills/doc-canon/scripts/docs.py`) и имя вызова (`av-dev:doc-canon`), а оба +живут **в проекте**: первый строкой гейта, второй в `CLAUDE.md`, в `Taskfile` и в +записях задач. Механизма догнать их у плагина нет, и без записи проект узнал бы о +переименовании покрасневшим гейтом или неразрешившимся вызовом. + +Запись 1 при этом не переписана: проект, ещё не прошедший её, переименует каталог +дважды подряд — в `doc-canon` и обратно в `canon`. Так работает журнал +([С189](56-plugin-and-skill-renames.md)): каждая запись исполняется на состоянии, +которое оставила предыдущая. + +## Что из этого следует + +**С226. Префикс имени — утверждение о владении материалом, и оно проверяемо.** +Скилл, работающий поперёк материалов, обязан остаться без префикса: имя, +приписавшее его к одному семейству, читается как обещание, что соседние семейства +его не касаются, — а его вызывают ровно затем, чтобы касались все. + +**С227. Переименование скилла — изменение раскладки проекта, если проект держит +его путь или имя у себя.** Разрез идёт не по тому, тронуты ли файлы проекта, а по +тому, есть ли в проекте адрес, который сломается. Гейт и `CLAUDE.md` такие адреса +держат, поэтому переименование получает запись журнала версий наравне с переездом +файлов. diff --git a/decisions/README.md b/decisions/README.md index 10bead1..cdb7a9f 100644 --- a/decisions/README.md +++ b/decisions/README.md @@ -6,8 +6,8 @@ Три сквозные нумерации, и они не пересекаются: - **Т** — требование: вход, который обязан быть удовлетворён. Живут здесь, ниже. -- **Р** — решение: что согласовано и почему. Р1–Р234 по темам в порядке журнала. -- **С** — следствие: что из решения вытекает. С1–С225, тоже сквозным счётом. +- **Р** — решение: что согласовано и почему. Р1–Р236 по темам в порядке журнала. +- **С** — следствие: что из решения вытекает. С1–С227, тоже сквозным счётом. Номер закреплён за записью навсегда: журнал описывает прошлые состояния и задним числом не переписывается. Отсюда и разнобой формы — ранние темы держат решения @@ -117,3 +117,4 @@ | 63 | [Обслуживание — третий сценарий: у цикла SDD там нет входа](63-maintenance-third-scenario.md) | 2026-08-13 | | 64 | [Три плагина слились в один: раскол платили, а не пользовались](64-three-plugins-merged.md) | 2026-08-13 | | 65 | [Перечень осей получил дом; две оси жили без владельца](65-axes-registry-home.md) | 2026-08-13 | +| 66 | [`doc-canon` → `canon`: скилл формы вышел из семейства документов](66-canon-without-prefix.md) | 2026-08-13 |