mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-08 20:42:43 +00:00
The lookback was pinned at seven days, so a sync that stayed broken for longer than a week came back with a window too narrow to reach the gap. The quieter case did the same damage with every signal green: a ring left unsynced holds its nights in Oura's cloud until the app is opened, every hourly tick succeeds with empty arrays, and when the days finally arrive they sit outside the window. Anchor the window on the newest live Oura measurement instead, clamped between the existing seven-day floor and a new thirty-day ceiling, plus a day of overlap. Both failure modes leave the same fingerprint, so one anchor closes both, and the watermark cannot drift out of step with the data because it is the data. Tombstones are excluded: the sleep sweep soft-deletes rows a revised hypnogram orphaned, and one of those must not pass for a live reading. The ceiling is thirty rather than the ninety days Oura's guidance would allow, because the whole batch still rides one transaction. With data flowing normally the clamp floors at seven and the tick is unchanged. A connection with no rows at all takes the full month.