# Новизна имени секции выводится из журнала, а не хранится реестром

- **Дата:** 2026-08-04
- **Источник:** openspec/changes/archive/2026-08-04-aktivnaya-proverka-novyh-sekcij/design.md

## Решение

Признак «имя непокрытой секции встречено впервые» **не хранится**: он считается
запросом к журналу — «встречалось ли имя в доставках, стоящих строго раньше этой
по паре `(received_at, id)`». Реестр-таблица по образцу `category_value` —
очевидный ответ на тот же вопрос, уже применённый в этом проекте, — отвергнут.

## Почему

Цитата из источника:

> Форма ответа взята у `category_value` — «когда имя встретилось впервые по
> журналу», — а носитель другой: факт уже лежит в `delivery.uncovered_sections`.
> Реестр здесь не добавляет ни одного сведения, он кэш запроса, а запрос идёт
> считанные разы за жизнь имени.

И там же, о цене реестра:

> Компромисс: вторая копия факта, обязанная сходиться с колонкой при каждой
> пересборке, плюс миграция и новая единица хранения витрины (а значит и
> отпечатка). Ноль новых сведений: имя выводимо из журнала.

Третья рассмотренная форма — множество виденных имён в памяти процесса —
отвергнута по инварианту «хранилище есть свёртка по журналу»: состояние стало бы
функцией жизни процесса, и живой приём разошёлся бы с пересборкой в том, что
считает первой встречей.

## Чем платим

Ценой названы три вещи, и все они следствия выбранного носителя:

- **проход по журналу** на каждой доставке с непокрытыми секциями. Измерено на
  синтетическом журнале годового объёма: у секции, приезжающей давно, ранний
  выход даёт десятки микросекунд, у появившейся только что — около 52 мс на
  доставку, пока её не покроет отдельная задача;
- **границы носителя наследуются целиком**: имя, вытесненное границей списка в
  32 имени, события не даёт вовсе; пересборка заполняет колонку заново и только
  по сохранившимся телам; покрытая разбором секция уходит из перечня;
- **история не переживает удаления тел.** Ретеншен, срезающий архив, унесёт с
  собой и записи о непокрытых секциях за те же периоды.

## Когда пересматривать

Последнее и есть условие пересмотра, названное заранее: **задаче ретеншена
архива реестр понадобится** — именно затем, чтобы история пережила удаление тел,
и тогда это уже другая цена, а не вторая копия факта. Запрет реестра в спеке
`uncovered-sections` — решение этого изменения, а не запрет навсегда.
