- роадмап отвечает «что умеет и чего не умеет»: PLAN.md → ROADMAP.md, четыре канонические секции, достигнутые звенья строками в «Готово», цели переформулированы возможностями приложения - задачи: род работы и «Затрагивает» набору спринта, 34 заголовка в форму действия, «Завершение» целей перечнями со ссылкой из каждой задачи - вычитка проходами task-form и doc-wording, починены протухшие факты в README, паспорте и review.md
4.9 KiB
Помечать нижний слой устаревшим после экспорта
- Секция: Ядро
- Зачем: Нижний слой растёт на ~100 тысяч координат в сутки, а после экспорта Apple он избыточен
- Теги: goal:lower-layer-cleanup
Нижний слой растёт примерно на 100 тысяч координат в сутки против ~3 700 у минутного и ~100 у часового — разница в три порядка (находка 41). Всё давление по объёму создаёт он один, и ровно там родной экспорт Apple оказывается настоящим надмножеством.
Два ограничителя, без которых правило опасно:
- пометка вешается по загруженному и проверенному экспорту, а не по сделанному: проверка — непрерывность по дням и сходимость сумм с часовым слоем;
- пометка ≠ удаление. Удаление включается только после того, как восстановление из экспорта отработает на живых данных хотя бы раз.
Двигает строку «Завершения» цели: «Нижний слой помечен покрытым после проверенного экспорта».
Чем помечать: разряд на диапазон, а не провенанс на точку
Решено при постановке 2026-08-04. Пометка — одна строка на диапазон:
метрика + слой + период + «покрыто проверенным экспортом». Не поле у точки.
Основание — соотношение цены и потребности:
- вопрос, на который надо ответить, диапазонный: «за этот период нижний слой обеспечен настоящими сэмплами Apple, посекундную развёртку HAE можно выбросить». Он не требует знать, из какой доставки приехало конкретное число;
- цена совпадает с самой проблемой: нижний слой растёт на ~100 тысяч координат в сутки, и поле у точки платит тем же объёмом, который задача и пришла экономить. Пометка на диапазон — десятки строк.
Провенанс на точку рассмотрен и отвергнут по цене, а не по ненадобности. Различать эти два основания важно: отказ по ненадобности закрывает вопрос навсегда, отказ по цене — только до появления потребителя. Появится тот, кому нужно «покажи, из какой конкретно доставки это число», — решение пересматривается. Сегодня такого потребителя нет: ни агент-медик, ни трекер, ни игра его не просят (passport.md).
Отдельно стоит помнить, что отделить старое от нового можно и без пометок:
состояние по определению есть import(экспорт) + replay(доставок по received_at), порядок известен, происхождение значения выводится пересборкой.
Пометка нужна ровно затем, чтобы отвечать на этот вопрос при чтении, не
пересчитывая.
Смежное: у сущностей (workouts, stateOfMind) провенанс уже есть — колонки
delivery_id и delivery_received_at (миграция 00007). У часового объекта
метрики есть first_delivery_id (миграция 00003), но это первая доставка,
а не источник каждой точки, и для этой задачи он не годится.
Приоритет низкий: пока история измеряется днями, экономить нечего. Задача станет актуальной, когда нижний слой перевалит за несколько гигабайт.
Зависит от импорта экспорта Apple — до него помечать нечем; выставляет пометку apple-export-import.