Files
healthlog/docs/backlog/retenshen-syrogo-arhiva.md
T
av b2885c79e3 хранилище описано как свёртка по журналу событий
- экспорт Apple это снапшот всей истории, доставки после его даты — события
  поверх; состояние пересобирается как import(экспорт) + replay(доставки)
- отсюда ретеншен архива меняется с произвольных 14 дней на «до следующего
  проверенного экспорта» (~2 ГБ за квартал, измерено), а свёртка обязана быть
  детерминированной — воспроизведение строго по received_at
- названы границы модели: stateOfMind в экспорт не попадает вовсе, а верхние
  слои за периоды с удалёнными доставками не воскресают и досчитываться не
  должны — каталог обязан говорить это честно
2026-08-01 14:27:13 +03:00

29 lines
2.2 KiB
Markdown

# Ретеншен сырого архива
**Приоритет:** низкий
Срок жизни сырого архива объявлен (14 дней, `storage.raw_retention`), но
удаления нет: архив растёт бесконечно. Пока это 16 МБ и проблемой не является.
**Само правило изменилось.** Экспорт Apple — снапшот всей истории, доставки
после его даты — события поверх снапшота, и состояние всегда пересобираемо
свёрткой. Значит доставки должны жить **до следующего проверенного экспорта**,
а не фиксированные две недели: иначе между концом ретеншена и датой снапшота
образуется дыра в журнале, и пересобрать этот отрезок будет нечем.
Цена измерена: ~23 МБ архива в сутки, то есть ~2 ГБ за квартал между
экспортами. Дёшево за возможность пересобрать что угодно.
Отдельное исключение: `stateOfMind` в экспорт не попадает вовсе (проверено на
свежем архиве). Для него доставки — не хвост журнала, а единственный источник,
и под общее правило удаления он не подпадает.
Включать **после** того, как разбор устоится и пересборка докажет, что
хранилище действительно восстанавливается: иначе страховка исчезнет раньше, чем
перестанет быть нужна.
Готово, когда удаляются только доставки старше последнего проверенного
экспорта, записи `stateOfMind` не трогаются вовсе, а `/stats` показывает
глубину архива и дату снапшота, до которой он подрезан.