← notebook

"Getting sleepy" was true for half the day, which means it was never true

2026-08-25

This morning the home screen told me my son was getting sleepy. He had been awake about two and a half hours, the model's own forecast put the nap almost three hours away, and anyone in the room could see a boy who was nothing of the sort. The sentence was not a one-off glitch. By the math of my own model, that label had been eligible to print for roughly half of every wake window at his age. A status line that is true half the time carries no information — and a claim about a child that the parent can falsify by looking at the child costs something worse than information: trust.

A saturating number cannot tell you the phase of the day

Sleep pressure in the two-process model rises like a capacitor charging: fast at first, flattening as it approaches the ceiling. My copy was keyed to thresholds on that percentage — below 30% "fully rested", 70% "getting sleepy", and so on. For a young infant that works, because the rise time is short and the percentage tracks the clock closely.

But the rise-time constant grows with age. At two-plus years, the model crosses 70% of the average sleep threshold barely two hours into the day — and then needs almost three more hours to climb the remaining 30%, because that is what saturation means. The "getting sleepy" band, a 20-point sliver of the percentage, quietly stretched to cover the middle half of his entire wake window. The thresholds weren't wrong when I wrote them. They broke silently as the child grew, which is the most dangerous way for anything in this app to break.

The fix follows from stating the problem properly: the phase of the day lives in time-to-threshold, not in the percentage. The words are now keyed to how far away the crossing is; the percentage stays on screen as what it honestly is — a pressure reading, not a mood.

Say what you measured, not what he feels

The wrong math got me looking at the words, and the words had a second problem the math couldn't excuse. I'm a fan of Marshall Rosenberg's nonviolent communication, and its oldest distinction — observation versus evaluation — turns out to be a precise code-review tool for app copy.

The app owns exactly two honest kinds of sentence. An observation: awake for 2h 24m. A forecast, labeled as one: nap likely around one. "Getting sleepy" is neither. It is an evaluation of a mind I cannot read, printed with the confidence of a sensor reading. When it contradicts the visible child, one of two bad things happens: the parent stops believing the app, or — worse — starts doubting their own eyes. The whole design rests on the opposite premise: the parent is the sensor; the app just does the bookkeeping.

So the middle of the day now speaks in terms of what the time is for, which is the thing a parent can actually act on. Fully rested reads "a great window for play". The long middle stretch reads "plenty of wake time". The evening lead reads as evening, not as a countdown to bed. The industry default here is the push notification shouting "time to sleep!" at a fixed clock time — a deadline dressed up as care. I'd rather the app said less and was never caught lying.

The states that were missing were the stressful ones

Rewriting the ladder exposed a gap: the moments a parent most needs a sentence had no state at all. A nap that ends after twenty-five minutes. A day where the nap never happened. A morning that starts an hour and a half early. The app treated all three as ordinary awake time and said something generic, which at those moments reads as obliviousness.

Each now gets one line that normalizes before it advises — a short nap still counts; a missed nap is absorbed by an earlier bedtime; an early start shifts the day rather than ruining it. And one state I deliberately did not add: "the nap is running long, should you wake them?" Some sentences raise a parent's shoulders no matter how carefully you write them, and the cheapest way to pass that test is to not print the sentence.

The litmus for every line stayed the same as ever: read it at 3 a.m., after the fourth waking, and ask whether it lowers your shoulders. "Getting sleepy," printed over a child who visibly isn't, failed that test for half of every day. I just hadn't stood in the right half until this morning.