Skip to content

Topic

Incident Analysis and Postmortems

How teams reason about triggers, load paths and blast radius after an outage rather than stopping at a single root cause.

Current stories

buildOne report1 publisher

Firebase's server-side dashboards stayed green while a flag cleanup crashed iOS apps

Firebase says a two-line cleanup of a stale remote-config flag crashed iOS apps on launch within three minutes while its dashboards stayed green. Teams that use those flags as kill switches have to catch that kind of failure in their own crash data.

Publishers:dev.to

Reality

Evidence58
Adoption
Not scored
Hype gap+5
Incentives55
Confidence55
buildOne report1 publisher

A one-millisecond flaw in legacy NATS code stopped UK departures for four and a half hours

NATS traced a four-and-a-half-hour halt to UK departures to a legacy defect that corrupted a squawk-code update inside a one-millisecond window. Its first symptom, a link drop that healed in 45 seconds, was logged as having no ongoing operational impact.

Publishers:dev.to

Reality

Evidence58
Adoption
Not scored
Hype gap+12
Incentives
Not scored
Confidence55
buildOne report1 publisher

Kubernetes' default rollout settings can stall single-replica apps on ReadWriteOnce volumes

Professional IT Services reviewed all 15 volume-backed Deployments on its K3s cluster after a routine node upgrade caused a three-hour outage. Three now use Recreate, because the default rolling update can stall on a ReadWriteOnce volume.

Publishers:dev.to

Reality

Evidence60
Adoption15
Hype gap+5
Incentives30
Confidence55
buildConfirmed3 publishers

GitHub's autoscaler watched the wrong meter, and auth, CI and Copilot fell together

The August 17 postmortem describes a sidecar that hit its concurrency limit while its autoscaler measured the host, then a VS Code retry bug that kept Copilot down hours after everything else returned.

Perspective Coverage

3 publishers
Builder
Builder 39%
Operator
Operator 38%
Investor
Investor 23%

Reality

Evidence66
Adoption82
Hype gap−12
Incentives58
Confidence64
buildOne report1 publisher

A Kafka Streams auth cache kept a revoked API key working for four days

Moving authz-gateway's key checks from Postgres to a Kafka Streams store cut p99 from 40ms to 4ms, yet a revoked key kept working for four days. Three pods cut off from Kafka for 30 hours rejoined at zero lag and kept honoring it, a dev.to write-up says.

Publishers:dev.to

Reality

Evidence45
Adoption
Not scored
Hype gap+10
Incentives
Not scored
Confidence50
buildOne report1 publisher

npm ci OOM-killed a 1.6 GB production box while Cloudflare reported 521 and 522

Cloudflare's 521 and 522 look the same whether an origin is powered off, firewalled or thrashing, and it took a gap in syslog timestamps to pin a 10-hour outage on npm ci run against a 1612 MB VPS.

Publishers:dev.to

Reality

Evidence62
Adoption10
Hype gap−8
Incentives20
Confidence55
buildOne report1 publisher

GitHub's cleanup job watched replica lag while the primary ran out of connections

GitHub's published post-mortem traces two hours of site-wide failure on September 13 to a data-cleanup job whose only brake measured replica lag, on the cluster holding permission data that nearly every authenticated request reads.

Publishers:dev.to

Reality

Evidence62
Adoption24
Hype gap+16
Incentives46
Confidence55
buildOne report1 publisher

An 8-minute dashboard heartbeat held a Databricks serverless warehouse open all weekend

A dev.to account puts one weekend of Databricks serverless compute at $14,000 and traces it to a Tableau connection that polled information_schema every eight minutes, restarting a 10-minute auto-stop timer it never let expire.

Publishers:dev.to

Reality

Evidence20
Adoption12
Hype gap+30
Incentives40
Confidence35
productOne report1 publisher

How one shared policy library ran a provisioning service out of memory

A policy library that behaved well when an engineer ran it on one storage instance at a time exhausted a provisioning service's memory once the same calls ran in parallel. Nothing in it was broken.

Publishers:devops.com

Reality

Evidence38
Adoption
Not scored
Hype gap+22
Incentives30
Confidence45
buildOne report1 publisher

A WAF role with account-wide S3 access turned one SSRF into 106 million records

Trust Boundary's walkthrough of the 2019 Capital One breach puts the weight on the IAM role attached to the firewall instance, and says the OCC consent order that followed does not mention server-side request forgery at all.

Publishers:dev.to

Reality

Evidence62
Adoption55
Hype gap+10
Incentives35
Confidence66
buildOne report1 publisher

A wildcard in the twenty-first field hid CrowdStrike's field-count mismatch for four months

CrowdStrike's IPC template declared 21 input fields and the integration code supplied 20, a mismatch that compiled cleanly, and the channel file used in testing skipped that field as well.

Publishers:dev.to

Reality

Evidence70
Adoption84
Hype gap−6
Incentives55
Confidence72
buildOne report1 publisher

GitHub traced two hours of delayed Actions runs to timeouts on one git data partition

At the peak, up to 25% of runs started late and up to 4% never started at all. The component that failed was GitHub's own pull request processing, upstream of the self-hosted runners a hybrid CI plan falls back to.

Publishers:dev.to

Reality

Evidence50
Adoption30
Hype gap+25
Incentives55
Confidence45
buildOne report1 publisher

Treating a publish timeout as failure is how a retry can send the same article twice

A dev.to postmortem works through what a publishing runner has to record when the browser stops answering between the click and the proof, because an ambiguous timeout leaves open whether the article went out.

Publishers:dev.to

Reality

Evidence45
Adoption10
Hype gap+18
Incentives28
Confidence55
buildOne report1 publisher

A Safari MCP server minted capability tokens its own cold start would throw away

One cached identifier was enough to retire a browser tab permanently, because every recovery path in the ownership model also demanded the proof of ownership that had just gone missing.

Publishers:dev.to

Reality

Evidence62
Adoption10
Hype gap+8
Incentives32
Confidence58
buildOne report1 publisher

A forty-line guard removes the second writer behind a double-posted announcement

The idempotency key was correct and sitting in a git file that had not been pushed, so a second run repeated the whole job. The team weighed a post-hoc duplicate reaper against a guard, and shipped the guard.

Publishers:dev.to

Reality

Evidence58
Adoption24
Hype gap0
Incentives38
Confidence62
buildOne report1 publisher

The same postmortem names two different root causes for one file descriptor leak

A Rust author pins his proxy's socket exhaustion on getrandom, arriving via ring via trust-dns, and later on a single into_inner() call in his own connection pool. Only one of the two comes with a mechanism.

Publishers:dev.to

Reality

Evidence18
Adoption10
Hype gap+34
Incentives55
Confidence66
buildOne report1 publisher

A 48-hour ENOSPC hunt ended with one run of df -i

A dev.to field notebook records forty-eight hours spent truncating logs on a filesystem that had gigabytes free and no inodes left, when two commands run in the right order would have named the cause on the first pass.

Publishers:dev.to

Reality

Evidence58
Adoption
Not scored
Hype gap+5
Incentives22
Confidence60
buildOne report1 publisher

A Bi-LSTM in the Kubernetes controller buys ten minutes against a thirty-minute node build

One team's postmortem has GPU nodes landing 45 minutes after the spike began. Their new forecast reaches only ten minutes out, which is why the design also holds the fleet at 70 percent utilization and pays for idle accelerators.

Publishers:dev.to

Reality

Evidence34
Adoption11
Hype gap+33
Incentives28
Confidence48
buildOne report1 publisher

A five-day QStash hold outlives the signature on its own webhook

A social-media scheduler traced silently dead posts to a delivery JWT that QStash mints at enqueue time, and rebuilt dispatch so no message waits in the queue longer than its own signature stays valid.

Publishers:dev.to

Reality

Evidence44
Adoption17
Hype gap−6
Incentives34
Confidence52

Earlier coverage