I nearly drew the wrong "usual"
2026-08-25
I added a detail view to the sleep log this week: a day opens as a stack of stretches, and behind each awake stretch sits a faint bar showing what "usual" looks like. Then I went to fetch the usual number and found the app already had two of them, sitting in different files, both correct, and not interchangeable. Reaching for the nearer one would have made every honestly logged nap render as late — not sometimes, not for a struggling week, but by construction, forever.
The two numbers are these. One is what the child actually does: the median gap between waking and the next nap, over the last couple of weeks, kept separate per nap position. The other is what the engine aims at, and it is deliberately pulled toward the early end of the evidence band — never the late end.
That second one is skewed on purpose, and the reason is a thing I only half-believed until I checked it. Parents log a nap when they notice drowsiness. But by the time drowsy signs are visible, the research is fairly blunt that you are already looking at mild overtiredness. So every onset in my own dataset — and in everyone's — is a slightly late record of the moment the child was actually ready. An engine that wants to help has to aim earlier than the log suggests, or it faithfully reproduces the delay it was supposed to catch.
Fine as guidance. Catastrophic as a backdrop.
A ruler that always reads short
Put that early-aiming target behind a record of what already happened and you get a picture where the real nap always starts after the reference. Every day. Not because the day went badly — because the reference was built to sit earlier than any logged onset, on purpose, for a completely different job.
I would have shipped a verdict machine wearing the costume of a measurement.
The uncomfortable part is how ordinary the mistake is. Both numbers are in the same repository, both are honest, both are called something like "usual" in my head. Nothing would have thrown an error. The chart would have rendered beautifully and quietly told a parent that their child is late for everything, and the only signal that anything was wrong is that it would have been always — and "always" is exactly the shape you stop noticing after a week.
So: a record gets the descriptive number, guidance gets the prescriptive one, and I wrote the reason into the source next to both so future-me can't reach for the wrong one on a tired evening.
The second thing: drift is not a debt
There is a related decision underneath. The ghost could sit at a fixed clock time — she usually naps around this hour — or it could re-anchor on whatever actually just happened.
A clock-pinned reference accumulates. A twenty-five-minute late wake makes the first nap late, which makes the second nap late, which makes bedtime late, and by evening the chart is showing a debt that nobody incurred and nobody can repay. That is the schedule model, and it is what most of this industry sells: a plan you fall behind.
Re-anchoring refuses the arithmetic. Each stretch is measured from what really happened, so a late morning is a late morning and then it is over. There is no running total.
Which is the same principle the rest of this app already runs on, and I still nearly broke it in a new place. That is what I actually learned this week: the philosophy doesn't hold itself. It has to be re-decided at every surface, because each new view offers a fresh, plausible, well-intentioned way to turn a gradient back into a deadline.
I also gave the ghost no colour. It is the same grey whether the day ran short or long, because the moment "longer than usual" turns amber, a parent has been handed a verdict at a glance and the whole careful apparatus underneath stops mattering. And where there aren't enough comparable days to know — fewer than five at that position — I draw nothing at all. An absent reference is honest. A reference built from two days is a lie with a confidence interval.
Nothing here is a target. It is a memory of the last fortnight, drawn faintly, so a tired person can see the shape of a day without being told a score. The nearby entry on comparing a measurement to a memory is the same failure in a different costume: the harm is never the number, it is putting it next to the wrong one.