Nestor G Pestelos Jr · Writing

The Metric You're Watching Already Happened Upstream

Published August 15, 2026

TL;DR

The number you're staring at almost always already happened elsewhere or earlier. It rarely has one clean cause. Fix a real contributor instead of reacting to the metric, and expect that fix to expire too.


Twenty minutes into a Black Friday outage, the dashboards read "high" latency. That drastically understated what was happening. Requests were timing out, so their true latency was effectively infinite. A metric that only counts completed requests can't see one that never finishes. Michael Nygard, writing up the incident in Release It!, put the trap plainly: "Response time is always a lagging indicator. You can only measure the response time on requests that are done." The average looked stressed but nominal. The system was failing, and the metric everyone was watching was structurally incapable of showing it, because the requests doing the most damage were the ones that never finished long enough to be counted.

I went through my notes gathering every case I had of this shape, then ran a session actively trying to find what would break it. The pattern holds far outside operations:

Norbert Wiener formalized the general idea in 1948: feedback is how a system adjusts future conduct by past performance. When that feedback arrives too late, the correction arrives too late with it, which is exactly Nygard's dashboard. Shortening the loop is the fix: watch something further upstream that's happening right now, before the delay has a chance to hide the failure again.

Two problems survived when I tried to break this.

First, there is rarely one clean cause to find. Richard Cook's How Complex Systems Fail makes the point bluntly: "Post-accident attribution to a 'root cause' is fundamentally wrong... there is no isolated 'cause' of an accident." Real failures need multiple contributors acting together, not one traceable cause. "Reputation caused the funding" or "onboarding caused the churn" names one real contributor among several. Name a contributor. Don't call it the cause.

Second, whatever you start watching upstream instead has the same problem waiting for it. Goodhart's Law, from 1975: any regularity you turn into a target stops behaving like a regularity. Watch account health scores the way you used to watch the cancellation number, and eventually someone learns to fake the score instead of fixing the account. The upstream signal is not a permanent fix. It's a fix with an expiration date, and the expiration date is the moment someone starts managing to it on purpose.

What changes, in practice:

The number told you about the past. The upstream signal only buys you a warning, and only for as long as nobody's optimizing for it yet.

Nygard's own prescription for the trap: supplement the average with percentiles and completion counts, the numbers that show a stuck request instead of hiding it. Build a way to see the failure the lagging number was built to miss.