- шаг go-version в task gate сверяет объявленную версию в go.mod, Dockerfile, CLAUDE.md и README.md; судит по репозиторию, go не зовёт, docker и сети не требует - заведена capability toolchain: до сих пор спеки нормировали только поведение сервиса, теперь и инструмент сборки. Причина и цена — в двух ADR - закрыт дефект 2026-08-12: образ на golang:1.24-alpine разошёлся с go.mod и перестал собираться, а восемь шагов гейта и шесть проходов ревью были зелёными
49 lines
4.0 KiB
Markdown
49 lines
4.0 KiB
Markdown
# Журнал решений
|
||
|
||
Одна запись — одно решение. **ADR продвигает уже написанное решение, а не
|
||
сочиняет его заново**: запись цитирует решение и ссылается на источник —
|
||
`openspec/changes/archive/<id>/design.md`, а у решения, принятого разведкой без
|
||
изменения, на её записку.
|
||
|
||
## Когда заводить
|
||
|
||
Верно одно из трёх:
|
||
|
||
- **дорогой откат** — переделка стоит дороже переписывания одного файла;
|
||
- **намеренный отказ** от очевидного подхода;
|
||
- **пересмотр прежнего решения** — тогда у старой записи обязателен статус
|
||
«заменено на».
|
||
|
||
Не заводить для рутины и для того, что видно из кода и `git log`.
|
||
|
||
## Соглашения
|
||
|
||
- Имя файла — `ADR-ГГГГ-ММ-ДД-slug.md`, дата — когда решение реально принято.
|
||
Слаг **английский по сути, а не транслитом**: `queue-as-table`, не
|
||
`ochered-tablicej`. Форму имени и слаг проверяет `docs.py check`.
|
||
- Записи неизменяемы: передумали — новая запись, старой ставится статус.
|
||
- Активная запись статуса не имеет. Значений два: `заменено на ADR-…` и
|
||
`устарело`; ставятся полем меты записи — `- **Статус:** …` рядом с датой и
|
||
источником, а не абзацем в теле.
|
||
|
||
## Записи
|
||
|
||
Новые сверху.
|
||
|
||
| Дата | Запись | Статус |
|
||
| --- | --- | --- |
|
||
| 2026-08-12 | [Спекой нормируется и инструмент сборки, а не только поведение сервиса](ADR-2026-08-12-spec-norms-build-toolchain.md) | |
|
||
| 2026-08-12 | [Объявленную версию Go шаг гейта читает из репозитория, а не спрашивает у инструмента](ADR-2026-08-12-version-read-from-repo-not-from-tool.md) | |
|
||
| 2026-08-12 | [Ссылка на файл открыта знанием записи, а защищает её отсутствие имени в журнале](ADR-2026-08-12-file-link-open-but-not-logged.md) | |
|
||
| 2026-08-12 | [Каталог данных задаётся одним ключом `[storage] data_dir`](ADR-2026-08-12-single-data-dir-config-key.md) | |
|
||
| 2026-08-11 | [Границу распознавания доменного признака держит норма, а не код](ADR-2026-08-11-domain-marker-boundary-by-norm.md) | |
|
||
| 2026-08-11 | [Отказ, который решено не проверять, объявляется поимённо](ADR-2026-08-11-errcheck-check-blank.md) | |
|
||
| 2026-08-11 | [Наружу расширение выходит только приведённым к перечню](ADR-2026-08-11-known-format-label.md) | |
|
||
| 2026-08-11 | [Приложение пишем на Vue, а Node входит в гейт и в образ](ADR-2026-08-11-spa-on-vue.md) | |
|
||
| 2026-08-11 | [Очередь остаётся своей таблицей, но коллекцией PocketBase](ADR-2026-08-11-queue-as-pocketbase-collection.md) | |
|
||
| 2026-08-11 | [Хранилище, файлы и вход переезжают в PocketBase](ADR-2026-08-11-pocketbase-storage-with-admin-panel.md) | |
|
||
| 2026-08-11 | [Проверки не зовут внешних программ](ADR-2026-08-11-stub-adapters-in-tests.md) | |
|
||
|
||
Решения, принятые до заведения канона 2026-08-10, источника в архиве изменений
|
||
не имеют — сочинять их задним числом правило запрещает.
|