Our admin error log sat over its allowed limit for most of a day. That reads as “something just broke.” Nothing had. We had started counting something we had never counted before.

Why the chart looked like an incident

Twelve days earlier, client-side error reporting had gone live on the admin for the first time. It caught JavaScript errors in the browser as well as errors thrown on the server. Before that date the log only saw the server’s side of the story. After it, every error a browser had been swallowing landed in the same log, on the same chart, on the same axis.

The chart could not tell “a new kind of error just started” from “we just started hearing about an old kind.” It showed a bigger number.

The server-side rate had not moved. That check settled it. The whole spike came from the new client-side channel, so the right read was “we can finally see something we were blind to,” and a regression was the wrong one.

What the new visibility found

That was not a null result. Tracing the spike ended in three tickets:

  • The admin’s main script did not parse at all in an old version of Safari. The fix was rewriting two ES6 spots as ES5 and recompiling. Those sessions had been failing with no server-side trace.
  • The reporter’s duplicate suppression had never worked, so one recurring error inflated the count all by itself.
  • Error rows never recorded a username, because a local variable shadowed the global.

The broader client-error clusters already had tickets, so we left those alone.

What the spike was

It was a change in what we measure. Treating it as a regression would have sent the investigation hunting for a change that did not exist. The three problems were already there before anyone was counting, and the jump in the number was the first time we could see them.