Consensus by what hasn't been said out loud
Consensus protocols are a thirty-year-old conversation, and most of the field has been about chiseling the same shape — leaders, quorums, view changes — into successively narrower tolerances. Mirco Richter's Crisis paper from 2019 proposes a different shape entirely. Nodes don't vote. They emit events into a Lamport-style DAG of causal predecessors, and the protocol deduces what each node would have voted from the structure of the graph. Virtual voting. No vote messages on the wire. Order is recovered from causality.
I've been carrying this paper around for years and finally sat down with it in early May. The repository is what came out: a Python implementation of the protocol, a deterministic simulation harness that exports each run as a JSON event log, and CrisisViz — a SwiftUI curriculum visualizer that walks the protocol across ten chapters in extreme slow motion. The slowness is the point. Crisis is one of those protocols where the only thing standing between "I sort of get it" and "I actually understand why this works" is being forced to watch every causal edge, every fork, every deduced vote, in the order it would have happened on the wire.
The third layer is the one I didn't expect to build. crisis_agents — a coordination layer that lifts the protocol from "consensus between machines" to "consensus between AI agents." Same DAG, same virtual voting, same Byzantine tolerance, but the participants are LLM-backed actors instead of identical replicas. They produce, observe, gossip, and raise quorum-ratified Byzantine alarms when one of them starts behaving like a faulty node. It's the substrate problem again: how do you give an unruly collection of intelligent things enough shared machinery to refuse the bad ones, without giving up the openness that made them interesting in the first place?
The Crisis paper says: don't ask them to vote. Watch what they say to each other. That's the vote.
The branch is master, the tests pass under deterministic simulation, the visualizer has ten chapters and is the most patient teacher of a consensus protocol I have ever sat through. Mirco Richter's idea deserved an implementation that respects how strange it is. This is that implementation.
What becomes possible: BFT not on the assumption of homogeneous replicas, but on the assumption of causally honest peers — which is the assumption you actually want once "the peers" are language models with their own opinions.