Files
jellybit/docs/adr/README.md
T

3.9 KiB

Architecture Decision Records (ADR)

Журнал значимых архитектурных решений по jellybit. Одна запись — одно решение. ADR пишем постфактум, когда решение принято и зафиксировано в коде/проекте: идеи и неподтверждённые планы живут в docs/drafts, а не в ADR. Записи неизменяемы: передумали → не правим старую, заводим новую и помечаем старую.

Главная ценность записи — сохранить почему: намерение и причинность. Это важнее аккуратности оформления и полноты остальных секций.

Формат и процесс унаследованы от соседнего проекта umbar.

Когда заводить ADR

  • Выбор технологии или инструмента.
  • Структурные решения (хранилище, организация компонентов, протоколы).
  • Решения с долгосрочными последствиями или дорогим откатом.
  • Намеренный отказ от очевидного подхода — чтобы потом не переоткрывать «а почему мы не сделали X».

Не заводить для рутины (бамп версии зависимости, добавление эндпоинта по накатанной схеме) и того, что и так видно из кода и git.

Соглашения

  • Имя файла = идентификатор: ADR-ГГГГ-ММ-ДД-kebab-slug.md. Идентификатор — имя без .md. Slug — латиницей.
  • Дата — когда решение реально принято.
  • Несколько ADR за один день различаются по slug.
  • Заголовок в файле: # Человеческий заголовок (без даты и ID — они в имени файла и в строке «Дата»).
  • Секция «Рассмотренные варианты» — опциональна: оставляй её, только если альтернативы реально рассматривались.
  • Шаблон новой записи — template.md.

Статусы

Активная запись статуса не имеет. Статус появляется, только когда запись теряет силу, и значений всего два:

  • заменено на ADR-ГГГГ-ММ-ДД-slug — решение пересмотрено новой ADR.
  • устарело — решение потеряло смысл и замены нет.

Замена и устаревание

  1. Заводим новую ADR; в её «Контексте» — строка «Заменяет ADR-ГГГГ-ММ-ДД-slug».
  2. В старой ADR добавляем строку - Статус: заменено на ADR-… сразу под датой. Тело не трогаем — это часть истории.
  3. Обновляем статус старой записи в индексе ниже.

Список записей

Новые сверху.

Дата Запись Статус
2026-06-13 Docker как единица деплоя
2026-06-13 Хардлинки вместо копирования и симлинков
2026-06-13 Go и доставка одним бинарём