# Журнал решений

Одна запись — одно решение. **ADR это промоут поверх архивного `design.md`**,
а не второе сочинение: запись цитирует решение и ссылается на
`openspec/changes/archive/<id>/design.md`.

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

Верно одно из трёх:

<!-- копия: adr-когда-заводить из av-dev-pm/skills/canon/references/canon.md -->
- **дорогой откат** — переделка стоит дороже переписывания одного файла;
- **намеренный отказ** от очевидного подхода;
- **пересмотр прежнего решения** — тогда у старой записи обязателен статус
  «заменено на».
<!-- /копия: adr-когда-заводить -->

Не заводить для рутины и для того, что видно из кода и `git log`.

## Соглашения

- Имя файла — `ADR-ГГГГ-ММ-ДД-slug.md`, слаг английский, дата — когда решение
  реально принято.
- Записи неизменяемы: передумали — новая запись, старой ставится статус.
- Активная запись статуса не имеет. Значений два: `заменено на ADR-…` и
  `устарело`; ставятся полем меты записи — `- **Статус:** …` рядом с датой и
  источником, а не абзацем в теле.

## Записи

Новые сверху. Все шесть активны — статуса поэтому ни у одной нет.

- [ADR-2026-08-04-otvet-tochek-nesyot-rod-i-ego-primenimost](ADR-2026-08-04-otvet-tochek-nesyot-rod-i-ego-primenimost.md)
  — конверт точек несёт измеренный род, его **применимость к отданному ряду** и
  границу окна измерения; строка `"aggregation": "sum"` пересмотрена, поле
  `applied` отвергнуто как выводимое; род вместе с данными взят у Google Cloud
  Monitoring и CloudWatch, отдельный `/metadata` Prometheus отвергнут.
- [ADR-2026-08-04-sloy-vybiraetsya-po-ohvatu-tochek](ADR-2026-08-04-sloy-vybiraetsya-po-ohvatu-tochek.md)
  — «самый мелкий слой, покрывающий весь диапазон» пересмотрено: правило было
  неопределено на законном входе. Охват меряется метками **точек**, а не часами
  объектов, иначе период короче часа отдаёт пустой ряд при непустых данных;
  цена меры измерена (13.9 мс против 0.026 мс) и потребовала одного словаря
  слоёв.
- [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`, а не переезд: адаптация
раскладки содержания не сочиняет.
