- каждая запись каталога задач получила тип вместо тега kind: и префикса заголовка; секция роадмапа «Разработка» стала «Сопровождением», порядок секций канонический - поправлены протухшие факты: нереализованные маршруты Read API, MCP и `healthlog import`, словарь слоёв в инварианте, семантика гейта по покрытию диффа, периметр перестал дублировать security.md - замер слияния переведён с находки 49 на находку 54, заполнены Purpose спек storage и parsing
4.9 KiB
✨ Помечать нижний слой устаревшим после экспорта
- Тип: feature
- Категория: Ядро
- Зачем: Нижний слой растёт на ~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.