журнал решений: разложен по теме на файл, метки решений стали номерами
- DECISIONS.md (4040 строк, 65 тем) → decisions/, файл на тему плюс указатель; - буквенные метки решений заменены сквозными Р1–Р234, следствия получили префикс С при прежних номерах: схема букв выродилась до пятибуквенных и сломалась — `АЕАКЛ` была занята и темой 53, и темой 65; - 42 перекрёстные ссылки переписаны под новые номера и стали живыми; где номер означал тему, а слово стояло «решение», формулировка исправлена.
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
# 60. Служебный файл зовётся по плагину-владельцу; у задач появилась своя версия формата (2026-08-11)
|
||||
|
||||
Файл версии канона звался `docs/.pm.json` — по плагину `av-dev-pm`, который
|
||||
распался на четыре ещё в [теме 56](56-plugin-and-skill-renames.md) и которого
|
||||
больше нет. Имя пережило владельца на два месяца и указывало в пустоту: читающий
|
||||
его искал плагин, о котором в репозитории не осталось ни строки. Переименован в
|
||||
`docs/.docs.json` записью 13 журнала канона.
|
||||
|
||||
**Р207. Правило, которое из этого вынуто и теперь держит все три файла:** имя
|
||||
служебного файла — имя плагина, который его завёл. `.docs.json` — канон,
|
||||
`.tasks.json` — задачи, `openspec/config.yaml` — конвейер. По этому же следу
|
||||
скиллы узнают, что сосед в проекте работал, и правило перестало быть просто
|
||||
перечнем — оно выводимо.
|
||||
|
||||
**Р208. Прежнее имя `docs.py` не читает.** Соблазн «прочитать оба и не мешать
|
||||
людям» здесь стоит дороже, чем везде: по этому числу `upgrade` решает, какие
|
||||
записи журнала применять, и два дома для него разъехались бы молча в том самом
|
||||
месте, где расхождение и вредно. Вместо совместимости — узнавание: `check` видит
|
||||
файл под старым именем и печатает готовую команду `git mv`.
|
||||
|
||||
**Р209. У каталога задач появилась своя версия формата** — ключ `tasks` в
|
||||
`<каталог задач>/.tasks.json` и свой журнал версий в скилле
|
||||
`av-dev-tasks:tasks`. До сих пор её не было вовсе, хотя `docs.py` в комментарии
|
||||
уверенно ссылался на «свою версию формата» соседа: описание опережало механику
|
||||
ровно так, как описано в следствии [С195](59-four-subagent-audit.md). Формат
|
||||
задач при этом менялся — записями 8, 11 и 12 чужого журнала.
|
||||
|
||||
**Р210. Число именно своё, а не копия канонического.** Плагин ставится в
|
||||
одиночку: проект, взявший учёт работ без канона документов, каталога `docs/` не
|
||||
имеет вовсе, а значит не имеет и версии канона — сверять было бы не с чем. Копия
|
||||
чужого числа в `tasks.py` была бы вторым домом одной версии и разъехалась бы при
|
||||
первом же обновлении одного плагина без другого.
|
||||
|
||||
**Р211. Переезды, случившиеся до появления числа, задним числом в новый журнал
|
||||
не переписаны.** Версия 1 — это формат на день её появления; что проекту нужно
|
||||
было пройти до неё, названо шагом «догнать формат по журналу канона» с
|
||||
поимёнными признаками отставания (каталог в `docs/tasks/`, живой `SPRINT.md`).
|
||||
Второй перечень тех же шагов разошёлся бы с первым — это ровно та ошибка, из-за
|
||||
которой план однажды повторял записи версий 3, 4 и 5 построчно.
|
||||
|
||||
**Р212. Конфиг задач стал обязательным.** Раньше он заводился только ради имён,
|
||||
отличных от умолчания, и проект с умолчаниями жил без файла вовсе. Версия — не
|
||||
настройка, от которой можно отказаться, поэтому `init` и `adopt apply` пишут его
|
||||
всегда, а `check` требует числа.
|
||||
|
||||
Отдельно стоит сказать, чтобы не спутали при чтении журнала: `.docs.json`
|
||||
однажды уже был отвергнут — решением [Р6](02-project-doc-canon.md), но **как
|
||||
указатель путей**. Отвергнут был указатель, а не имя; сегодняшний файл путями
|
||||
проекта не распоряжается, он объявляет версию и называет то немногое, чего из
|
||||
раскладки не вывести.
|
||||
|
||||
## Что из этого следует
|
||||
|
||||
**С200. Имя служебного файла — часть границы плагинов, а не деталь.** Оно
|
||||
называет владельца, и по нему же владельца узнают. Пережившее владельца имя врёт
|
||||
дважды: указывает на несуществующее и прячет того, кто файл ведёт на самом деле.
|
||||
|
||||
**С201. Версия нужна каждому формату, который живёт в чужом репозитории.** Без
|
||||
числа «приведён ли проект» не имеет определённого ответа, и отставший каталог
|
||||
выглядит здоровым до первой команды, которая об него споткнётся.
|
||||
|
||||
**С202. Своя версия — у своего плагина, всегда.** Общее число на два плагина
|
||||
переживает ровно до первого проекта, где поставлен один из них.
|
||||
|
||||
**С203. Версию двигают руками, и это не слабость проверки.** Число отвечает на
|
||||
вопрос «по какой записи повышать», а не «сделаны ли шаги по существу». Машина,
|
||||
приписывающая недостающее число сама, объявляет проект приведённым к формату,
|
||||
которого никто не проходил.
|
||||
Reference in New Issue
Block a user