- три плагина слились в один `av-dev`: служебные `docs/.docs.json` и `tasks/.tasks.json` заменены на `.av-dev.toml` в корне, в гейте переехали пути трёх скриптов, вызовы скиллов переименованы по всему репозиторию - тип задачи `goal` и `ROADMAP.md` упразднены: семь целей закрыты с причинами, теги сняты, объявлена стадия `support` - метка `small`/`medium`/`large` снята из процесса — вместо «Триггеров метки» в review.md подраздел «Когда звать глубокое ревью»; следом разобран урожай doc-consistency: девять фактов сведены к одному дому
Журнал решений
Одна запись — одно решение. ADR продвигает уже написанное решение, а не
сочиняет его заново: запись цитирует решение и ссылается на источник —
openspec/changes/archive/<id>/design.md, а у решения, принятого разведкой без
изменения, на её записку.
Главная ценность записи — сохранить почему: намерение и причинность. Это важнее аккуратности оформления и полноты остальных секций.
Решение старше OpenSpec либо принятое вне этого репозитория архивного
design.md не имеет по построению. Тогда поле Источник называет то, что
есть, — историю git, черновик, записку соседнего репозитория — и прямо говорит,
что архивного design.md нет. Запись без поля «Источник» вовсе — дефект; запись,
честно назвавшая отсутствие источника, — нет.
Когда заводить
Верно одно из трёх:
- дорогой откат — переделка стоит дороже переписывания одного файла;
- намеренный отказ от очевидного подхода;
- пересмотр прежнего решения — тогда у старой записи обязателен статус «заменено на».
Не заводить для рутины и для того, что видно из кода и git log.
Соглашения
- Имя файла —
ADR-ГГГГ-ММ-ДД-slug.md, слаг английский, дата — когда решение реально принято. Идентификатор записи — имя файла без.md; несколько записей за один день различаются слагом. - Заголовок в файле —
# Человеческий заголовок, без даты и id: они в имени файла и в поле меты. - Секция «Рассмотренные варианты» опциональна: оставляй, только если альтернативы реально рассматривались.
- Записи неизменяемы: передумали — новая запись, старой ставится статус.
- Активная запись статуса не имеет. Значений два:
заменено на ADR-…иустарело; ставятся полем меты записи —- **Статус:** …рядом с датой и источником, а не абзацем в теле. - Замена: в новой записи — строка «Заменяет ADR-…», в старой — поле статуса, тело не трогаем (это часть истории), в таблице ниже правится статус.
Записи
Новые сверху.