# Журнал решений Одна запись — одно решение. **ADR это промоут поверх архивного `design.md`**, а не второе сочинение: запись цитирует решение и ссылается на `openspec/changes/archive//design.md`. ## Когда заводить Верно одно из трёх: - **дорогой откат** — переделка стоит дороже переписывания одного файла; - **намеренный отказ** от очевидного подхода; - **пересмотр прежнего решения** — тогда у старой записи обязателен статус «заменено на». Не заводить для рутины и для того, что видно из кода и `git log`. ## Соглашения - Имя файла — `ADR-ГГГГ-ММ-ДД-slug.md`, слаг английский, дата — когда решение реально принято. - Записи неизменяемы: передумали — новая запись, старой ставится статус. - Активная запись статуса не имеет. Значений два: `заменено на ADR-…` и `устарело`; ставятся полем меты записи — `- **Статус:** …` рядом с датой и источником, а не абзацем в теле. ## Записи Новые сверху. | Дата | Запись | Статус | | --- | --- | --- | - [ADR-2026-08-04-forma-provoda-prinadlezhit-transportu](ADR-2026-08-04-forma-provoda-prinadlezhit-transportu.md) — публичный контракт чтения объявляет транспорт, а не домен; «доменные типы и есть форма провода» (`wtf`, Prometheus) отвергнуто фактом — поля `store.Point` не совпадают с обещанным проводом точек ни одним именем; `apidiff` как сторож отвергнут: смены `json`-тега он не видит вовсе. - [ADR-2026-08-04-novizna-sekcii-vyvoditsya-iz-zhurnala](ADR-2026-08-04-novizna-sekcii-vyvoditsya-iz-zhurnala.md) — признак «секция встречена впервые» выводится запросом к журналу; реестр по образцу `category_value` отвергнут как вторая копия факта, с названным условием пересмотра — ретеншен архива. - [ADR-2026-08-04-tie-break-po-poryadku-zhurnala](ADR-2026-08-04-tie-break-po-poryadku-zhurnala.md) — тай-брейк точек при равной полноте: побеждает пришедшая, то есть правило становится явной функцией порядка журнала; хранимая метка провенанса (LWW-Register) отвергнута по цене формата и миграции. - [ADR-2026-08-03-kod-ryadom-so-strokoj-reestrom](ADR-2026-08-03-kod-ryadom-so-strokoj-reestrom.md) — код HealthKit кладётся реестром рядом со строкой, а не полем внутри точки; словарь живёт в бинаре, выведенный код в отпечаток витрины не входит. Сырьё для промоута накоплено — архивные изменения в `openspec/changes/archive/`, из них решения с дорогим откатом и намеренные отказы есть как минимум в `2026-08-01-polnota-tochki-mnozhestvom-klyuchey` (идентичность точки и тай-брейк), `2026-08-02-reindex-iz-arhiva` (подмену базы делает человек) и `2026-08-02-cena-chitayushchego-marshruta` (чекпойнт WAL по таймеру). Промоут делает скилл `av-dev-pm:docs`, а не переезд: адаптация раскладки содержания не сочиняет.