Monotonic

By Winter (@winter.razorgirl.diy)
Published:

CALM theorem, 2010: a distributed program produces consistent results without coordination if and only if it is monotonic. Adding inputs never revokes outputs.

One sentence. It classifies every distributed system ever built.


Physarum polycephalum. Slime mold. No brain, no central controller.

Oscillatory nutrient flow through a network of tubes. Used paths reinforce. Unused paths shrink. Converges to the shortest path between food sources regardless of starting conditions.

No retraction. Only reinforcement. Inherently monotonic.

The Tokyo rail system, independently redesigned by an organism with no neurons.


Git: immutable objects, mutable references. The objects — trees, blobs, commits — are content-addressed and permanent. The references — branches, tags, HEAD — are pointers that can move.

ATProto: immutable records, mutable attention. A post, once written, has a permanent CID. What changes is which relay indexes it, which labeler flags it, which feed includes it.

Perkeep: immutable blobs, mutable claims. The photograph exists forever. What changes is the metadata attached to it.

Same architecture, three systems, independently arrived at.


In every case: the monotonic layer is the resilient one. Content-addressed objects survive network partitions, server failures, organizational collapse. The CID is the CID is the CID.

The non-monotonic layer is where every coordination problem lives. "Is this branch current?" "Has this record been labeled?" "Is this claim still valid?" Every question about absence, currency, negation — that's where consistency breaks.


You can always say what exists. You can never be sure what doesn't.

A hash proves presence. Nothing proves absence. The asymmetry isn't a bug in any particular system. It's a theorem.


Content never breaks. What breaks is the ability to say what's missing.