план и README синхронизированы с состоянием

- шаг 3 отмечен как почти готовый: частичный разбор закрыт, остались
  тренировки, reindex и словарь категориальных значений
- ближайшая цель — reindex: после миграции доставки числятся pending, а
  подобрать их некому
- находок в разведке 50, не 46
This commit is contained in:
av
2026-08-01 21:30:59 +03:00
parent 34e5109b6d
commit 2fa8287c8b
2 changed files with 30 additions and 9 deletions
+20 -5
View File
@@ -9,13 +9,22 @@
## Ближайшая цель
Метрики разбираются и ложатся в часовые объекты: тела перестали быть
недифференцированной кучей. Дальше — доразобрать остаток шага 3
(тренировки и записи со своими `id`, `reindex`, словарь категориальных
значений) и разобрать блокеры, накопившиеся из ревью.
недифференцированной кучей. Блокеры, накопившиеся из ревью, разобраны — их в
беклоге ноль.
Дальше — **`reindex`**, и он сейчас срочнее остального остатка шага 3. После
миграции 00005 доставки числятся `pending`, а подобрать их некому: код
пересборки не написан. Данные целы (тела в архиве, объекты в витрине), но
учёт честно говорит «этим разбором не смотрели», и так будет, пока пересборки
нет. Тем же кодом закрывается половина задачи «разнести ответ и свёртку».
Потом — остаток шага 3: тренировки и записи со своими `id` (это половина
потока: `workouts` и `stateOfMind` принимаются и хранятся, но не разбираются),
словарь категориальных значений.
Разведка закончена: правило вывода слоя, модель идентичности и формы точки
проверены на живом потоке, выводы — в
[local-research.md](local-research.md), 47 находок.
[local-research.md](local-research.md), 50 находок.
## Шаги
@@ -25,7 +34,9 @@
запись тела в архив, строка в `delivery`. Разбора ещё нет.
**подключаем телефон по локальной сети**
- [~] **3. Разбор и хранилище.** Метрики — сделано (`bucket`, `internal/hae`,
`internal/canon`, `internal/fold`); остались тренировки и записи со
`internal/canon`, `internal/fold`), вместе с частичным разбором: секции,
которых разбор не покрывает, перечисляются, доставка получает статус
`partial` и список непокрытых ключей. Остались тренировки и записи со
своими `id`, `reindex` и словарь категориальных значений. Миграции,
часовые объекты метрик
(`bucket`, ключ `метрика + слой + час`) + `workout`/`record` по своим
@@ -80,6 +91,10 @@
- **Ретеншен сырого архива** — удаление доставок старше последнего
проверенного экспорта (не фиксированный срок: журнал не должен рваться).
Пока архив не подчищается; включить после того, как разбор устоится.
Предусловие снято: статус `partial` и список непокрытых секций готовы, и
ретеншен обязан спрашивать статус, а не считать `parsed` разрешением.
Вместе с ним действует правило — задача, которая начинает разбирать секцию,
тем же изменением переводит `partial`-строки с этим ключом в `pending`.
- **Порог `sealed`** — с какого возраста час считается запечатанным. Ставим по
факту: сначала пишем `WARN` на изменение старых объектов и смотрим, какая
глубина досчёта встречается в жизни (наблюдалось до 22 минут, находка 10).