tasks: решено, чем помечать покрытие экспортом

- пометка — одна строка на диапазон (метрика + слой + период), а не провенанс
  на точку: вопрос диапазонный, а поле у точки стоит того объёма, который
  устаревание нижнего слоя и приходит экономить
- провенанс на точку отвергнут по цене, а не по ненадобности — различие
  записано, чтобы решение пересмотрели при появлении потребителя
- пометку выставляет импорт экспорта, по проверенному прогону; stateOfMind не
  получает её никогда — его в экспорте Apple нет
This commit is contained in:
av
2026-08-04 11:28:33 +03:00
parent 95377f54cd
commit 2130763d3c
2 changed files with 61 additions and 3 deletions
+34 -1
View File
@@ -17,7 +17,40 @@
- пометка ≠ удаление. Удаление включается только после того, как восстановление
из экспорта отработает на живых данных хотя бы раз.
## Чем помечать: разряд на диапазон, а не провенанс на точку
Решено при постановке 2026-08-04. Пометка — **одна строка на диапазон**:
`метрика + слой + период + «покрыто проверенным экспортом»`. Не поле у точки.
Основание — соотношение цены и потребности:
- **вопрос, на который надо ответить, диапазонный**: «за этот период нижний
слой обеспечен настоящими сэмплами Apple, посекундную развёртку HAE можно
выбросить». Он не требует знать, из какой доставки приехало конкретное число;
- **цена совпадает с самой проблемой**: нижний слой растёт на ~100 тысяч
координат в сутки, и поле у точки платит тем же объёмом, который задача и
пришла экономить. Пометка на диапазон — десятки строк.
**Провенанс на точку рассмотрен и отвергнут по цене, а не по ненадобности.**
Различать эти два основания важно: отказ по ненадобности закрывает вопрос
навсегда, отказ по цене — только до появления потребителя. Появится тот, кому
нужно «покажи, из какой конкретно доставки это число», — решение
пересматривается. Сегодня такого потребителя нет: ни агент-медик, ни трекер, ни
игра его не просят ([passport.md](../../passport.md)).
Отдельно стоит помнить, что **отделить старое от нового можно и без пометок**:
состояние по определению есть `import(экспорт) + replay(доставок по
received_at)`, порядок известен, происхождение значения выводится пересборкой.
Пометка нужна ровно затем, чтобы отвечать на этот вопрос **при чтении**, не
пересчитывая.
Смежное: у сущностей (`workouts`, `stateOfMind`) провенанс уже есть — колонки
`delivery_id` и `delivery_received_at` (миграция `00007`). У часового объекта
метрики есть `first_delivery_id` (миграция `00003`), но это **первая** доставка,
а не источник каждой точки, и для этой задачи он не годится.
Приоритет низкий: пока история измеряется днями, экономить нечего. Задача
станет актуальной, когда нижний слой перевалит за несколько гигабайт.
Зависит от импорта экспорта Apple — до него помечать нечем.
Зависит от импорта экспорта Apple — до него помечать нечем; выставляет пометку
[apple-export-import](apple-export-import.md).