Modernizing high-risk systems in the age of AI.
Your Platform Has a Monolith, Too
The floor is also moving. Your deployment platform, your identity provider, your CI system — all designed with assumptions that are no longer accurate.
Founder, Def Method
GitHub's CTO published an apology last week. Two incidents in five days — a merge queue regression that silently corrupted commits across 658 repositories, and a search outage that took down pull requests, issues, and projects across the platform. The letter was direct: the failures were unacceptable, the team is working on it.
What made it worth reading wasn't the apology. It was the explanation.
Since the second half of December 2025, agentic development workflows have accelerated sharply. Repository creation, pull request activity, API usage, automation, and large-repository workloads are all growing quickly. GitHub planned for 10x growth. By February it was clear they needed to design for 30x. The forecast fell short on both scope and timing.
The same day that letter went out, Wiz Research published the details of CVE-2026-3854: a critical remote code execution vulnerability in GitHub's internal git infrastructure. Any authenticated user, with a single git push, could execute arbitrary commands on GitHub's backend servers. No exploit required. No special access. Just a standard git client and a crafted push option.
The two stories look unrelated. They're not.
The Same Pressure, Twice
The availability failures and the vulnerability share a common structure. In both cases, the system was designed for a different scale of use, with assumptions baked in that held up until they didn't.
On the reliability side, a pull request can touch Git storage, mergeability checks, branch protection, GitHub Actions, search, notifications, permissions, webhooks, APIs, background jobs, caches, and databases. At high scale, small inefficiencies compound: queues deepen, cache misses become database load, indexes fall behind, retries amplify traffic, and one slow dependency can affect several product experiences. The merge queue incident wasn't a bug in the traditional sense. It was a correct system encountering conditions it wasn't designed to handle.
On the security side, the vulnerability worked the same way. When multiple services written in different languages pass data through a shared internal protocol, the assumptions each service makes about that data become a critical attack surface. One service assumed push option values were safe to embed verbatim. Another assumed every field in the internal header was set by a trusted source. The pre-receive hook assumed a particular environment variable could only appear in production under normal conditions. Each assumption was reasonable in isolation — and dangerous in combination.
Both failures are containment failures. The blast radius was larger than the system's designers anticipated, because the system is now operating at a scale and in patterns they weren't designing for.
The Infrastructure Is Not Neutral Ground
Engineering leaders tend to think about two layers: the code their teams write, and the platforms their code runs on. The implicit assumption is that the second layer is stable — that GitHub, AWS, your deployment platform, your identity provider are essentially fixed surfaces. You build on top of them. They hold still.
They don't.
The platforms your code depends on are themselves software systems, built by engineering teams, running on architecture that accumulates technical debt, scales under pressure, and contains assumptions that break when conditions change.
GitHub's monolith — nearly two million lines of Ruby — is undergoing the same kind of pressure that any long-lived Rails application faces, at a scale that makes the problems more visible. Parts of migrating performance- and scale-sensitive code out of the Ruby monolith into Go have been accelerated because agentic workflows arrived faster than the migration could.
This is the same problem your own systems face. AI development tools don't just increase the volume of code your team produces. They increase the rate at which your dependencies are stressed, your assumptions are tested, and your architecture is asked to do things it wasn't designed to do.
What Didn't Travel With the Change
The Wiz researchers who found CVE-2026-3854 used AI-augmented reverse engineering to do in hours what would previously have taken months — analyzing compiled binaries, reconstructing internal protocols, tracing how user input flowed across service boundaries. What they found is useful not as a security story but as an architecture one.
The exploit worked in part because the server had access to a code path that was not intended for the environment it was running in. It existed on disk as part of the server's container image, even though it was only meant to be used in a different product configuration. An older deployment method had correctly excluded this code. When the deployment model changed, the exclusion wasn't carried forward.
A code path existed that shouldn't have. It was correctly excluded under an older model. When the model changed, the exclusion didn't travel with it. No one made a mistake, exactly — the change was valid. The exclusion was a silent assumption that didn't survive the transition.
This is what complex systems do. They accumulate invisible dependencies between decisions made at different times by different people. The system behaves correctly until a new condition makes an old assumption visible.
What This Means for Teams Building on Top
Most organizations aren't GitHub. But most organizations depend on GitHub, or something like it — a platform that sits beneath their development workflow and is now absorbing the same agentic pressure that GitHub is describing in public.
The question isn't whether GitHub is safe to use. GitHub responded to the CVE in under two hours, confirmed no exploitation, and published a thorough postmortem. That's a mature response by any standard.
The question is what it means to build on infrastructure that is itself under active transformation. It means the floor is also moving. Your deployment platform is scaling. Your identity provider is adding capabilities. Your CI system is processing more volume. Each was designed with assumptions about usage patterns that are no longer accurate, and each is being actively changed to catch up.
The teams that handle this well aren't the ones that assume their dependencies are stable. They're the ones that treat their dependency on external systems as architecture — something to model, monitor, and design around. That means understanding what you depend on and how deeply, what the blast radius is if a dependency degrades or fails, and whether your systems can absorb that failure gracefully or whether it propagates.
Reducing hidden coupling, limiting blast radius, making systems degrade gracefully when one component is under pressure — that's not a GitHub-specific engineering goal. It's the goal for any system where breaking things is expensive. The question is whether you've designed for a floor that moves.
Ready to modernize your Rails system?
We help teams modernize high-stakes Rails applications without disrupting their business.
If this was useful, you might enjoy Essential Complexity — a bi-weekly letter on modernizing high-risk systems in the age of AI.