# Architecture Decision Records (ADR) Журнал значимых архитектурных решений по jellybit. Одна запись — одно решение. ADR пишем **постфактум**, когда решение принято и зафиксировано в коде/проекте: идеи и неподтверждённые планы живут в `docs/drafts`, а не в ADR. Записи **неизменяемы**: передумали → не правим старую, заводим новую и помечаем старую. Главная ценность записи — сохранить **почему**: намерение и причинность. Это важнее аккуратности оформления и полноты остальных секций. Формат и процесс унаследованы от соседнего проекта umbar. ## Когда заводить ADR - Выбор технологии или инструмента. - Структурные решения (хранилище, организация компонентов, протоколы). - Решения с долгосрочными последствиями или дорогим откатом. - **Намеренный отказ** от очевидного подхода — чтобы потом не переоткрывать «а почему мы не сделали X». Не заводить для рутины (бамп версии зависимости, добавление эндпоинта по накатанной схеме) и того, что и так видно из кода и git. ## Соглашения - **Имя файла = идентификатор:** `ADR-ГГГГ-ММ-ДД-kebab-slug.md`. Идентификатор — имя без `.md`. Slug — латиницей. - **Дата** — когда решение реально принято. - Несколько ADR за один день различаются по slug. - **Заголовок в файле:** `# Человеческий заголовок` (без даты и ID — они в имени файла и в строке «Дата»). - Секция **«Рассмотренные варианты» — опциональна**: оставляй её, только если альтернативы реально рассматривались. - Шаблон новой записи — [`template.md`](template.md). ## Статусы Активная запись статуса **не имеет**. Статус появляется, только когда запись теряет силу, и значений всего два: - `заменено на ADR-ГГГГ-ММ-ДД-slug` — решение пересмотрено новой ADR. - `устарело` — решение потеряло смысл и замены нет. ## Замена и устаревание 1. Заводим новую ADR; в её «Контексте» — строка «Заменяет ADR-ГГГГ-ММ-ДД-slug». 2. В старой ADR добавляем строку `- Статус: заменено на ADR-…` сразу под датой. Тело не трогаем — это часть истории. 3. Обновляем статус старой записи в индексе ниже. ## Список записей Новые сверху. | Дата | Запись | Статус | | ---------- | ---------------------------------------------------------------- | ------ | | 2026-06-13 | [Авто-раскладка только при матче в метабазе](ADR-2026-06-13-auto-link-requires-db-match.md) | — | | 2026-06-13 | [Docker как единица деплоя](ADR-2026-06-13-docker-deploy.md) | — | | 2026-06-13 | [Хардлинки вместо копирования и симлинков](ADR-2026-06-13-hardlinks.md) | — | | 2026-06-13 | [Go и доставка одним бинарём](ADR-2026-06-13-go-single-binary.md) | — |