# Журнал решений Одна запись — одно решение. **ADR продвигает уже написанное решение, а не сочиняет его заново**: запись цитирует решение и ссылается на источник — `openspec/changes/archive//design.md`, а у решения, принятого разведкой без изменения, на её записку. ## Когда заводить Верно одно из трёх: - **дорогой откат** — переделка стоит дороже переписывания одного файла; - **намеренный отказ** от очевидного подхода; - **пересмотр прежнего решения** — тогда у старой записи обязателен статус «заменено на». Не заводить для рутины и для того, что видно из кода и `git log`. ## Соглашения - Имя файла — `ADR-ГГГГ-ММ-ДД-slug.md`, дата — когда решение реально принято. Слаг **английский по сути, а не транслитом**: `queue-as-table`, не `ochered-tablicej`. Форму имени и слаг проверяет `docs.py check`. - Записи неизменяемы: передумали — новая запись, старой ставится статус. - Активная запись статуса не имеет. Значений два: `заменено на ADR-…` и `устарело`; ставятся полем меты записи — `- **Статус:** …` рядом с датой и источником, а не абзацем в теле. ## Записи Новые сверху. | Дата | Запись | Статус | | --- | --- | --- | | 2026-08-11 | [Проверки не зовут внешних программ](ADR-2026-08-11-stub-adapters-in-tests.md) | | Решения, принятые до заведения канона 2026-08-10, источника в архиве изменений не имеют — сочинять их задним числом правило запрещает. Ближайшие кандидаты назовёт первое же изменение, которое тронет хранилище или вход: замена SQLite на PocketBase и вход через OIDC оба подпадают под критерий «дорогой откат».