The cheapest way to make a measurement faster is to not take it. For most of Readout’s life that was only half true of its own engine: the thermal read was gated behind the Temp + Fans widget, but CPU, memory, network and disk were sampled every tick whether or not a single pixel displayed them. That’s the standard design in this category. A monitor is for measuring, so it measures, and the cost hides in the idle noise.
0.5.0 turned the gate into policy: every source runs only when a menu bar widget or a visible popover section actually needs it. The per-app network sweep runs when a network display is on. The per-process CPU and memory sweep runs only while those popover sections are showing. Turn every widget off, close the popover, leave fan control on Auto, and the engine has no timer scheduled at all: 0.0% CPU over a sixty-second soak, 35 MB of memory, nothing to wake for. The existing Monitoring detail setting still decides how often; this decides whether.
The efficiency change turned out to be a safety fix wearing a smaller number.
The bug the audit found
Auditing what was sampled when exposed something worse than waste. In 0.4.x, with the Temp + Fans widget off and the popover closed, temperatures stopped being read. A fan curve kept commanding its last speed, and the 95° failsafe, which compares against a reading that no longer arrived, could not fire. The fans answered a thermometer nobody was reading.
So the gating rule has one deliberate exception: whenever fan control is in a curve or manual mode, the CPU-group temperature is read regardless of what’s on screen, because the curve and the failsafe eat from that read. And if a non-auto mode ever goes thirty seconds without a fresh reading, the fans go back to macOS, the section says “Auto: no temperature data” until you choose again, and the journal records fan.blind. The dead-man switch already covered the app dying; this covers the app alive and blindfolded.
The general lesson holds beyond fans. Sampling that follows the display is a real efficiency win, but every consumer of a measurement has to be on the ledger, and the ones that aren’t visible are exactly the ones that keep machines safe. Cheapness is a fine goal. Knowing who eats each number is a requirement.