Elegant Wolves Labs

Outage postmortems: the dependency you didn't draw is the one that breaks

Engineer sketching a system diagram on a glass board while two colleagues watch

Halfway through October, the most useful reading in software is not a launch post. It is the incident report. The outage postmortems published this month describe different systems, but they keep landing on the same lesson: the dependency nobody drew on the diagram is usually the one that breaks.

On October 5, GitHub Actions and hosted runners were degraded for about four hours. A partial network failure cut one of GitHub's on-premises datacenter regions off from some cloud-hosted database and storage services. During the worst 90 minutes, 47% of workflow runs on GitHub-hosted runners failed. Self-hosted runners were not affected. For teams whose deploys run through Actions, a networking problem in a provider's provider quietly became a release freeze.

What October's outage postmortems have in common

Inngest's report on its October 9 and 10 incidents is unusually candid. Function execution depended on all three of its data centers, so losing the network at one stopped work for accounts tied to it, and a shared event pipeline carried the backlog to most other accounts. A day later, short deadlines on database lookups cancelled queries still waiting in the connection pooler, and the poolers destroyed connections faster than they could replace them. The first fix then routed traffic through gateways that silently dropped some connections. Some runs were left marked as running when they had actually stopped. The company's structural answer is to consolidate onto a single data center that acts as one cell, which is a deliberately simpler design.

None of this is exotic. Shared pipelines, timeouts that interact badly, a mitigation that causes its own problem, and failures that look like success are the ordinary ways systems fall over. They are also the parts that are easiest to leave off an architecture diagram.

The 2026 Stack Overflow Developer Survey, released October 6, adds useful context. Developers mostly use AI to generate code in familiar areas (67%) and to debug (61%). Only 20% use it for deploying, operating or troubleshooting production systems. That split seems right for now. AI can help write and review code faster, but the judgment in an incident, deciding what to fail over, what to roll back and what to tell customers, still sits with people who understand the whole system.

The practical takeaway is modest. Write down what each service actually depends on, including vendors and shared queues. Make sure failures show up as failures instead of stuck jobs. Rehearse the fallback, like the self-hosted runner or the manual deploy, before you need it. And read other teams' postmortems; they are free lessons. We would be interested to hear which incident report taught your team the most this year.