The 404 is an O(1) Miracle (or, Why Xanadu Failed)
The 404 error is a profound triumph of asynchronous scale, as enforcing bidirectional link integrity forces the web into an unbounded consensus protocol.
By Owen Tate
Sparked by Project Xanadu: Even More Hindsight (2025) · discussion

Every few months, a beloved website goes offline, triggering an inevitable wave of link rot, and a predictable discourse re-emerges across my feeds. The prevailing sentiment usually involves a wistful lament for the death of Ted Nelson’s Project Xanadu, contrasting our current reality of broken pages with Nelson's utopian vision of a perfectly consistent, bidirectionally linked web. In his exhaustive retrospective on the project, Gwern Branwen captures the romantic appeal of this alternate timeline, emphasizing Xanadu's promise of guaranteed bidirectional links and perfectly preserved state, rather than a fragile web of severed connections.
I get the appeal. Broken links suck. But let’s put the beautiful prototypes aside for a second and trace the exact network locks required to render just one of those pages at scale. Whenever we mourn the lack of bidirectional consistency on the internet, we are confronted immediately with the rigid physical constraints of distributed networks. As we learn over and over again, requiring components to coordinate is the ultimate bottleneck to scalability. Fixing link rot demands a total departure from the scalable physics of loosely coupled systems, substituting localized autonomy for a massive, distributed consensus protocol.
Let's consider the humble HTTP link. It is a fundamental miracle of $O(1)$ autonomy. When Server A places an anchor tag pointing to Server B, the pointer is completely unilateral. Server B is entirely oblivious to this event (until a user actually clicks). A bidirectional link, conversely, demands shared state. If A links to B, B’s state must be synchronously updated to reflect the backlink before the transaction commits. Moving beyond localized metadata, we have now mandated a distributed write operation spanning arbitrary administrative boundaries.
Let's whiteboard a viral fan-out event. Imagine 10,000 independent blogs linking to a single target server within a one-hour window. Under standard HTTP physics, the target server handles pure read traffic. It is usually shielded by a CDN or a caching tier that absorbs the load and serves static HTML.
Forced to guarantee strict bidirectional consistency, the target server abandons simple cached reads and instead sequentially acquires write locks to update its backlink registry for all 10,000 inbound connections over wide-area network latency. Let's run the math: assuming a highly optimistic 50ms round-trip time per lock acquisition across the public internet, processing 10,000 links strictly sequentially would take 500 seconds. And that assumes absolute zero contention. If we parallelize it? We just shift the bottleneck from the network to the database, where row-level locks on the backlink table start colliding.
Production environments inevitably assault these clean mathematical models with dropped packets, thermal noise, silent hardware failures, and rogue retry loops. As concurrent link attempts pile up, our servers begin queuing. A localized transaction on Server A must now be held open indefinitely while it waits for a remote write lock on Server B to clear.
According to Little's Law, the number of concurrent requests in our system equals the arrival rate multiplied by the average latency. As our lock contention spikes the latency from 50ms to 5,000ms, our concurrency explodes. Database connections bloat, memory fills up, and the origin servers begin to sweat under the weight of holding state for a remote system.
By the time we hit 10,000 concurrent requests, we are firmly in the messy reality of production engineering. What happens if our target server suddenly drops offline mid-spike? Or simply throttles the connections?
Under HTTP, we get a localized 404 error when a reader eventually clicks the broken link weeks later. Under our bidirectional model, those 10,000 originating servers are actively hanging while attempting to acquire their distributed write locks, rapidly exhausting their outbound connection pools. As their timeouts inevitably fire, their application logic blindly retries. We have just manufactured an $O(N^2)$ retry storm aimed directly at a degraded node, replacing a benign missing page with a cascading resource exhaustion event that takes down the very servers attempting to cite the target.
We don’t have to simulate this purely in the abstract. The industry already ran the experiment. In the early 2000s, blog Trackbacks were introduced as a loose, asynchronous attempt at bidirectional linking. The operational reality, as recently discussed in Hacker News comments, rapidly degenerated into unbounded write loads, spam lock contention, and DDoS-like resource exhaustion.
When independent systems ping each other for bidirectional state updates over an untrusted network, the infrastructure ultimately spends more CPU cycles defending itself against contention than serving actual user traffic. Once that backlog approaches an unbounded limit, the abstract math instantly becomes a blaring pager blasting an on-call engineer out of bed in the middle of the night. Those operators - despite whatever idealistic architectural purity the protocol designers envisioned - were forced to spend their nights fighting automated spam bots that exploited the very mechanism designed to create a perfectly linked utopia. Their rational response was to turn the feature off completely.
This brings us back to the physics of the problem. Tim Berners-Lee’s explicit rejection of bidirectional links during the early days of the Web served as a brilliant, pragmatic heuristic to preserve node autonomy. Forcing bidirectional link integrity across independent servers fundamentally forces the entire web into a massive, unbounded consensus protocol. To demand that no link ever breaks is to demand that every node constantly agrees on the exact global state of the graph.
If you have ever tried to run a distributed database across a high-latency, lossy network, you know exactly how painful that synchronization gets. Expecting millions of independent systems to coordinate their backlink registries is mathematically equivalent to running a two-phase commit over the public internet. You are completely exposing your local availability to a remote server’s capacity limits.
Building systems out of loosely coupled components means accepting that they will occasionally disagree about the state of the world. The messy, rotting, link-riddled reality of the modern web is actually a profound triumph of asynchronous scale. A 404 error isn't a failure of architectural design; it is a mathematically beautiful lack of coordination. Atomic commitment is the anti-scalability protocol.