Published · 1h agoBuild9 min read
Three headline gains, one clock: the long-lead item is your eval harness, not the next model
Only one of these productivity claims was measured against a clock. It landed 39 points below what the developers believed, and the one confirmed bug was surfaced by a backup pipeline.
Written for builders.See today for builders

What happened
- John Allspaw, citing the METR study in 2025 on developer productivity, said that before testing, developers guessed AI would make them 24% faster.
- After using AI, the developers in the METR study believed they were 20% faster, according to Allspaw's summary.
- Allspaw states the measured result was that the developers were actually 19% slower.
- An AMA questioner said AI had saved a lot of time in the incident review process: sifting through loads of data, constructing the timeline, extracting patterns, and saving time on conversations and interviews.
- Allspaw asked what data an AI dismisses as unimportant when it sifts data, and, since all timelines are opinionated because they are constructed from raw data in ways that make sense to the author, how the AI chooses between events to include and events to dismiss.
Compiled by The EngineerSomething wrong?How this is made
Why it matters
A questioner in the AMA at Incident Fest 2026 treated the gain as settled: AI had saved a lot of time in incident review, sifting through data, constructing the timeline, extracting patterns, and cutting the hours spent on conversations and interviews [4]. John Allspaw did not dispute the experience. He offered a measurement instead. In the METR study he cited, developers expected AI to make them 24 percent faster before testing, believed afterwards that they had been 20 percent faster, and were actually 19 percent slower [1][2][3].
The gap between the post-hoc belief and the measurement is 39 percentage points [1]. The gap from the prior expectation is 43 [2]. The number I find harder to explain away is the smallest one: after using the tool, the estimate moved by four points [3]. Direct exposure to the work barely touched the belief. Whatever mechanism produced the 24 percent guess was still producing roughly the same answer after the task was done, which means the self-report was not a noisy measurement of speed. It was measuring something else entirely.
Allspaw's follow-up questions went at the artifact rather than the feeling. When it sifts data, what does it dismiss as unimportant, and since every timeline is opinionated because it is constructed from raw data in ways that make sense to its author, how does the tool choose which events to include and which to drop [5]. Those are questions about a denominator. A timeline you cannot audit for omissions has no error bars on it, and the incident review artifact is precisely where the perceived time saving is banked.
Two more gains, and no interval on either
The DZone piece on structured logging leads with a claim of the same shape: fix severity levels, trace IDs, field consistency and the split between logs and traces, and incidents go from hours to minutes [10]. What the article actually demonstrates is a join. Put trace_id and span_id on every log entry and you can jump from a log line to its full distributed trace in a single query, which the author says compresses diagnosis from hours to minutes [11]. The capability is real and mechanical. The time figure is attached to it by assertion.
The same article then catalogues why the join degrades in the field. One service logs user_id, another userId, a third uid; errors land under error, err, or exception; during an incident that forces per-service query variations [12]. Severity misuse is described as endemic, including application errors logged as WARN because the developer did not want to trigger alerts, until teams stop filtering by level at all [14]. That catalogue is the variance in the article's own headline number, and its proposed fix, enforcing canonical fields at logger initialisation with structlog or logrus or zap [13], is a control on the input. It constrains what gets written. It does not measure what gets found.
Gremlin's piece on topology spread constraints has the tidier version of the problem. A few lines in a manifest, and the promise is deployments that are zone-redundant and evenly scalable [15]. The worked example sets whenUnsatisfiable to ScheduleAnyway, because the author wants the pod to run even when the constraint cannot be met [17]. Under that setting, maxSkew stops being a limit and becomes a preference: Kubernetes gives higher precedence to topologies that reduce skew, where DoNotSchedule would have enforced the maximum difference by refusing to place the pod [16]. The failure the article opens with, three replicas in us-east-1a and one in us-east-1b, or all four on a single node [18], is still reachable after the recommended change. Tellingly, the post's final section is headed "How to find pods with missing topology spread constraints" [19]. The declared spread and the achieved spread are two different objects, and only the second one is redundancy.
Why the part-level guarantee keeps getting sold as a whole-level outcome
Fred Hebert's framing explains the recurrence better than any individual example does. Analytical decomposition holds that the whole can be understood from its parts, with the corollary that if every part plays its role well, the machine ought to work well [20]. A logging schema and a scheduling constraint are both part-level guarantees. Each is well-formed at its own boundary, and each is offered as an outcome at the system boundary, which is where the claim stops being checkable by inspection. Hebert's second family of approaches treats complex systems as resistant to analysis and looks instead at interactions and the mechanisms that foster desirable emergent behaviour [21], and he warns that without examining the mindset behind a system's design you end up with clashing and conflicting measures and policies [22].
Of the four improvement claims in front of me, three name an outcome without measuring it or are contradicted by the one measurement available [4]. The fourth is the interesting one, because it was produced by a measurement loop rather than described by one.
The loop that actually found something
Tailscale hit 19 separate instances of database corruption over six months before resolving the underlying bug, which sat deep in SQLite [23][27]. The first detection did not come from an alarm on the database. A data pipeline that reads S3 backups reported an error, and running PRAGMA integrity_check against that backup confirmed the corruption [24]. The instrument was a downstream consumer of the artifact plus a cheap assay, and the pipeline that produced the artifact, a complete snapshot every few minutes uploaded to S3, had been running since early 2023 without incident [25].
Note what did not happen. The design was single-writer, one Go process per shard against one SQLite file, which the company describes as exactly how SQLite is meant to be used [27]. "Use the tool correctly" was already satisfied. The fault lived underneath the abstraction, where decomposition cannot reach it, and the only thing that surfaced it was something reading the output and failing.
At 19 events across six months, that is roughly one corruption every 9.6 days [5]. That cadence is both the cost and the mechanism. Each occurrence required stopping the control plane process on a shard to repair or restore, which took over an hour in the early incidents and got gradually faster over subsequent ones [26]. Nothing about SQLite improved during that sequence. The response loop improved, because it ran often enough to be tuned. The measurement side of the ledger also had a defect: a global status page event was posted every time, while the majority of shards and tailnets were never involved in a corruption incident at all [28]. The reported blast radius and the experienced blast radius were different numbers, and the trust cost fell on customers who were never affected.
Why an average is the wrong statistic here
Beth Adele Long, relaying a point made in J. Paul's talk, notes that when AI predictions are bad they degrade performance much more drastically than good predictions improve it [7]. If that asymmetry holds, a mean speedup is close to useless as an acceptance criterion, because the distribution's bad tail dominates the outcome. A harness that reports only a central tendency will pass a tool that occasionally sends a responder down a wrong path at speed.
The safety posture compounds this. Long is a proponent of read-only access during incidents, on the grounds that any write access powerful enough to be useful is also likely to be dangerous, and that incidents are confusing enough without unwinding a bizarre decision implemented at AI speed [6]. Under that posture, the only thing you can measure is the quality of advice, not the quality of action. Any claim about autonomous remediation is untested by construction, not by neglect.
The two methods in the same room that do not compose
Long's practical advice for someone told to pick an AI SRE tool is to run a pilot and ask the engineers, because operational types are blunt and overloaded and will give a fast honest read on whether a tool is helpful or just annoying [9]. Allspaw, answering a different question at the same event, cites a study in which engineers' own read on helpfulness inverted the sign of the measured effect [1][2][3]. Both answers are sound about different quantities. Self-report is a good instrument for annoyance and for whether a tool integrates into everyday work, and a bad instrument for time. A pilot that ends in a survey will tell you whether your SREs want to keep the thing. It will not tell you what it cost.
Long also supplies the shape of the missing artifact, in the pragmatic version of a leader's request: I believe AI SRE will help us do X, as measured by Y [8]. Y is the harness. Where it is absent, she notes, the request is more likely driven by pressure from a board or a VP, and there is correspondingly less room to negotiate on actual benefit [8]. A roadmap line reading "blocked on a better model" with no Y attached is not a technical statement, because nothing about it could come out false.
The harness is local, which is why nobody can sell you one
Bill Duncan's type conversion analogy carries the constraint. Every production system exposes latency, error rate and saturation somewhere, because you cannot run anything at scale without them; what varies is where they live and whether the number you are reading is raw or three layers of aggregation from the truth [29]. His first-week discipline is instrument scan practice: find the gauges, confirm what they actually measure, and work out which ones lie under load [30]. Severity levels bent to avoid paging [14] are exactly such a gauge, and the same is true of a declared maxSkew that resolves to a preference [16].
Duncan's other point is that the numbers are airframe-specific. Paging thresholds, SLO targets and escalation policy travel as concepts and not as values, and knowing that error budgets exist is a different kind of knowledge from knowing this system's numbers [31]. The failure he describes is not lack of skill but skill applied on autopilot to the wrong control [32]. A vendor benchmark is someone else's V-speeds.
Steven Shorrock's editorial supplies the oldest version of the requirement. Charles Billings' NASA report of 1996 lists that the human operator must be in command, must be involved in order to command, must be appropriately informed in order to remain involved, and that automated systems must be predictable [33]. Predictability is not a property you can read off a datasheet. It is a claim about behaviour across repeated trials, which means it can only be established by the thing most roadmaps do not have a line item for. Shorrock's own observation is that the remarkable fact is not the occasional loss of control but that control is maintained at all [34]. The trial series is the long-lead item. The model is a dependency you can swap once you can tell whether the swap helped.
Claim ledger
Ranked by verification strength, evidence, and original report placement.
- [1]
John Allspaw, citing the METR study in 2025 on developer productivity, said that before testing, developers guessed AI would make them 24% faster.
ReportedSource: John Allspaw, Adaptive Capacity Labs, in the Incident Fest 2026 AMAView cited source - [2]
After using AI, the developers in the METR study believed they were 20% faster, according to Allspaw's summary.
- [3]
Allspaw states the measured result was that the developers were actually 19% slower.
- [4]
An AMA questioner said AI had saved a lot of time in the incident review process: sifting through loads of data, constructing the timeline, extracting patterns, and saving time on conversations and interviews.
ReportedView cited source - [5]
Allspaw asked what data an AI dismisses as unimportant when it sifts data, and, since all timelines are opinionated because they are constructed from raw data in ways that make sense to the author, how the AI chooses between events to include and events to dismiss.
- [6]
Beth Adele Long said she is a proponent of read-only access during incidents, because any write access powerful enough to be useful is also likely to be dangerous, and incidents are confusing enough without unwinding a bizarre decision implemented at AI speed.
Sources & coverage · 7 publishers
The reporting this story was synthesized from, earliest first. Every link goes to the original.
- billduncan.org11h agoType Conversion
Cited in this coverage: billduncan.org
- tailscale.com11h agoHow Tailscale helped find the SQLite WAL-Reset bug


