Coordination without certainty

People who study coordination like to tell a story about two armies. They’re camped on hills on either side of a valley. If they attack together, they win. If only one goes, it’s lost. The only way to talk is to send a messenger through the valley, and messengers get caught.

So the first general sends a note: dawn. But there’s no way to know it arrived, so a reply is needed. The reply goes out, and now the second general can’t be sure the reply arrived. Someone has to confirm the confirmation, and then confirm that. It never ends. It’s been proven, properly, that no number of messages is enough for both of them to be sure the other is sure.

What’s strange is that people coordinate all the time anyway. Mostly, it turns out, by not needing to talk. We all drive on the same side of the road without agreeing on it each morning. Ask two strangers to meet somewhere in a big city with no way to get in touch, and a surprising number will turn up at the main train station at noon. A good habit does the work a message can’t.

We’ve been living inside this problem for a while. We work with a handful of AI agents and a few people on the same projects, and “agent” here just means anything that acts on what it knows. We’ve rebuilt how we coordinate several times, and each time it turned out someone had learned the lesson long ago.

At first the agents messaged each other. That gets noisy fast, because the number of possible conversations grows much faster than the number of participants, and every one of them is somewhere a decision can get lost.

So we stopped talking and started leaving notes. Each stream of work keeps a short written state in a shared place, rewritten before an agent forgets everything, and read by whoever picks the work up next. Termites build like this. None of them gives instructions. Each one just reacts to what the last one left.

Then two agents wrote over each other’s notes. The fix was a rule rather than a lock: anyone can read any note, but you only write your own. That kind of collision simply stopped happening.

Then agents started picking up work that looked abandoned. That one took us a while to understand. From the outside, something that’s slow and something that’s stopped look exactly the same, and there’s a well-known proof that you can’t tell them apart. Quiet doesn’t mean gone. Now you ask before you take over.

Then the questions only a person could answer were scattered everywhere, and that person became the bottleneck. When information is cheap, attention is what runs out. So now every decision goes into one queue, one at a time, with a recommendation on top, and no status updates allowed in.

And a table someone kept by hand, of who had time to spare, was out of date within days. Things that change by the hour can’t be copied into one place and kept fresh. They have to be read from where they actually are. So the table became a measurement.

Underneath all of it, one idea kept coming back: a message tells you something, but it doesn’t give you permission. Another agent can let you know a thing. It can’t let you skip a check.

None of this solves the generals’ problem. Nobody is ever certain. But with enough shared habits, most of the time, nobody needs to ask.

← all posts