Marc-André Bombeck
ce2b745cc3
feat(measurements): add a bounded dense intra-day retention tier for HRV/HR
...
Daytime heart-rate-variability (SDNN) and heart-rate samples need to keep
their intra-day shape long enough for the stress engine to read them, but
the raw per-sample volume must stay bounded. Add a retention tier that
keeps the last 14 days of raw HRV/HR samples and folds everything older to
one daily-mean row via the proven mean-consolidation drain (same idempotent
stats:<HK>:<day> fold, soft-delete, and rollup recompute).
The two dense-tier types are deliberately EXEMPT from the destructive
daily-mean drain allowlist (HIGH_FREQUENCY_MEAN_TYPES) — that drain would
collapse the intra-day shape and soft-delete the raw rows. A regression test
pins both exclusions so a future edit that adds either type to the drain
allowlist fails loudly.
Migration 0108 adds only the partial index that keeps the retention drain's
discovery and per-user scan cheap; the retention bound lives in code so
tuning it never needs a migration.
2026-06-02 22:49:43 +02:00
..
2026-03-10 20:14:33 +01:00
2026-03-10 20:14:33 +01:00
2026-03-10 20:14:33 +01:00
2026-03-10 20:14:33 +01:00
2026-03-10 20:14:33 +01:00
2026-03-10 20:14:33 +01:00
2026-03-10 20:14:33 +01:00
2026-03-10 20:14:33 +01:00
2026-03-10 20:14:33 +01:00
2026-03-10 20:14:33 +01:00
2026-03-10 20:14:33 +01:00
2026-03-10 20:14:33 +01:00
2026-03-10 20:14:33 +01:00
2026-03-10 20:14:33 +01:00
2026-03-10 20:14:33 +01:00
2026-03-10 20:14:33 +01:00
2026-03-10 20:14:33 +01:00
2026-03-10 20:14:33 +01:00
2026-03-10 20:14:33 +01:00
2026-04-06 00:42:46 +02:00
2026-04-18 22:20:12 +02:00
2026-05-08 01:05:56 +02:00
2026-05-03 21:52:57 +02:00
2026-05-08 01:05:56 +02:00
2026-05-08 14:33:39 +02:00
2026-05-08 14:29:44 +02:00
2026-05-08 21:36:36 +02:00
2026-05-08 21:45:18 +02:00
2026-05-09 21:01:45 +02:00
2026-05-09 21:04:04 +02:00
2026-05-09 21:14:00 +02:00
2026-05-09 21:36:47 +02:00
2026-05-09 23:46:56 +02:00
2026-05-10 00:20:12 +02:00
2026-05-10 01:25:57 +02:00
2026-05-10 15:54:28 +02:00
2026-05-11 02:44:12 +02:00
2026-05-11 00:35:58 +02:00
2026-05-11 01:35:45 +02:00
2026-05-11 01:36:27 +02:00
2026-05-11 01:51:27 +02:00
2026-05-11 02:13:47 +02:00
2026-05-11 02:38:17 +02:00
2026-05-14 23:49:32 +02:00
2026-05-14 23:49:32 +02:00
2026-05-14 23:49:32 +02:00
2026-05-14 23:49:32 +02:00
2026-05-14 23:49:32 +02:00
2026-05-14 23:49:32 +02:00
2026-05-14 23:49:32 +02:00
2026-05-14 23:49:32 +02:00
2026-05-14 23:49:32 +02:00
2026-05-14 23:49:32 +02:00
2026-05-14 23:49:32 +02:00
2026-05-14 23:49:32 +02:00
2026-05-14 23:49:32 +02:00
2026-05-14 23:49:32 +02:00
2026-05-14 23:49:32 +02:00
2026-05-14 23:49:32 +02:00
2026-05-14 23:49:32 +02:00
2026-05-14 23:49:32 +02:00
2026-05-15 22:59:10 +02:00
2026-05-16 12:37:55 +02:00
2026-05-16 12:37:55 +02:00
2026-05-16 12:37:55 +02:00
2026-05-16 14:19:57 +02:00
2026-05-16 21:25:26 +02:00
2026-05-17 09:55:33 +02:00
2026-05-17 13:22:51 +02:00
2026-05-17 23:08:17 +02:00
2026-05-21 07:39:10 +02:00
2026-05-21 07:39:10 +02:00
2026-05-21 07:39:10 +02:00
2026-05-21 11:20:24 +02:00
2026-05-21 12:48:02 +02:00
2026-05-21 23:13:21 +02:00
2026-05-22 09:18:52 +02:00
2026-05-22 09:18:52 +02:00
2026-05-22 09:18:52 +02:00
2026-05-23 12:51:41 +02:00
2026-05-23 12:51:41 +02:00
2026-05-28 07:52:11 +02:00
2026-05-28 19:33:11 +02:00
2026-05-28 22:32:18 +02:00
2026-05-28 22:32:40 +02:00
2026-05-28 22:39:20 +02:00
2026-05-28 23:38:21 +02:00
2026-05-29 22:07:10 +02:00
2026-05-30 00:10:12 +02:00
2026-05-31 14:36:17 +02:00
2026-05-31 14:36:17 +02:00
2026-05-31 14:36:17 +02:00
2026-05-31 14:36:17 +02:00
2026-05-31 14:36:17 +02:00
2026-05-31 14:36:17 +02:00
2026-05-31 14:36:17 +02:00
2026-06-01 17:31:45 +02:00
2026-06-01 20:25:34 +02:00
2026-06-01 20:25:34 +02:00
2026-06-01 20:25:42 +02:00
2026-06-01 23:24:10 +02:00
2026-06-02 16:45:23 +02:00
2026-06-02 22:02:50 +02:00
2026-06-02 22:07:28 +02:00
2026-06-02 22:31:21 +02:00
2026-06-02 22:02:46 +02:00
2026-06-02 22:49:43 +02:00
2026-05-09 21:04:04 +02:00