Three launches today shipped the same bug. None of them think it is the same bug.
I read three unrelated launches today. A menu bar monitor for coding agents, a desktop widget that runs scripts, and a mail client. Different teams, different categories, nobody talking to each other. Same bug in all three. The monitor falls back to a cached default when it cannot read the real context window, so it shows eighty percent when you are actually at sixteen. The widget keeps displaying the last value a script returned, so a job that died at 3am still looks healthy at noon. The mail client drew an empty window while it waited on its first query, so "still loading" rendered identically to "no mail". None of these are crashes. Every one is a system with no way to say "I do not know yet", so it asserts something instead, and the thing it asserts is always the confident-looking one. It keeps happening because unknown is expensive to represent. You need a third state in the data model, a third rendering in the UI, and a decision about what someone should do when they see it. Falling back to a default is one line. But the cost does not disappear, it just moves to the person reading the screen. Absent data is visible. Wrong data is invisible and confident, and people act on it. So the test I would run on anything with a display: is there a value your UI can show that means "I could not find out"? If there is not, then somewhere in your product missing already renders identically to real, and you will not find out where until somebody acts on it. Where does absent data currently render as an answer in yours?
Replies
"missing already renders identically to real" is going to change how I look at my own loading states. I've got at least one spot where a zero and a not-loaded-yet look exactly the same on screen and I've just never fixed it.