- три решения опровергнуты экспериментами: повтор при SQLITE_BUSY не сходится без _txlock=immediate (242 из 800 против 800 из 800), разбор в map[string]any держит 197 МиБ против 54, канонизация без json.Number теряет литерал - канонизации назначен дом: общий internal/canon вместо hae, иначе импорт экспорта Apple потребует второй реализации и хеш-детектор станет бесполезен - вывод слоя вернул шаг наследования, WARN сравнивается только с надёжным заголовком; в bucket возвращены units и границы содержимого
2.6 KiB
2.6 KiB
Разбор метрик в часовые объекты
Приоритет: высокий
Приём работает, но дальше архива данные не идут: 89 доставок лежат телами
.json.gz, а в SQLite только строки delivery. Всё остальное — каталог,
Read API, MCP — стоит на этой задаче.
Правила выведены на живом потоке и проверены, изобретать заново не нужно
(docs/local-research.md, находки 33, 35, 36, 38, 39, 41):
- ключ точки — координаты
метрика + слой + метка;sourceв ключ не входит; - слой выводится из выравнивания меток: плотная метрика (≥10 точек) классифицируется сама, редкая наследует преобладающий слой доставки;
- при столкновении выигрывает более полная точка, а не последняя пришедшая (0.66% координат различаются набором полей, а не значением);
- три формата времени: локальное со смещением, RFC 3339 Z, Unix-эпоха внутри
heartbeatSeries; sleep_analysisразводится на два имени — поэпизодное и суточную сводку.
Шаги:
- миграция
bucket(метрика + слой + час, payload gzip-BLOB,sealed); - разбор метрик, вывод слоя, канонизация с округлением до ~12 значащих цифр;
- слияние точек в объект read-modify-write, хеш объекта как детектор изменений;
docs/database.md— ER-схема (её требует шаг гейтаer-schema).
Границы после ревью дизайна. Поэпизодный sleep_analysis в этой задаче не
сохраняется — модель идентичности вынесена блокером
identichnost-epizodnyh-metrik. Остальное
делается целиком.
Готово, когда по существующим 89 доставкам собирается хранилище (кроме
эпизодов сна), а суммы по часовому слою сходятся с проверкой из
tmp/research/.
Связано: docs/architecture.md → «Хранилище», план шаг 3.