mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-08 04:32:42 +00:00
The baseline-drift card reported a pulse in the hundreds of millions against a usual range in the tens of thousands. Neither figure is a heart rate, and both came from the same place. The application declares a plausibility domain per metric, and every interactive, import, MCP and Telegram write validates against it. The derivation layer did not ask. So a single stored value outside that domain — a provider unit-decode slip, or a row from a writer that never had the gate — was folded into the day mean, carried by the median into the band, and then held against itself as "currently". The two numbers in the sentence were wrong by different amounts, which is why the line read as nonsense rather than as an exaggeration. Both readers now refuse a value the application has already declared impossible: the per-day means behind the band, and the latest-day mean the deviation reads. A day left with no plausible reading contributes nothing rather than a fabricated point, and the vital drops out of the comparison — the coverage floor already knows how to report an absent day. The rollup branch applies the same rule to a bucket mean, since the rollup writer averages whatever is stored. Everything downstream of `readDayMeanSeries` inherits it, which is every consumer of the usual range: the band strip, the drift card, the changepoint detector, readiness, trajectory, the coach read. The card also printed raw doubles. Each figure now renders at the metric's own decimal precision through the shared formatter, so a mean reads as a number rather than as a float and follows the reader's number convention. Left open, and recorded for a separate pass: the provider sync writers do not enforce the domain on the way in, so the impossible rows keep landing.