A conflict-free replicated data type lets many replicas take writes independently — offline, concurrent, out of order — and still converge to the identical state, with no consensus round at all. The trick is algebra: define the merge so it is commutative, associative, and idempotent — a join on a semilattice. Then order, duplication, and delay stop mattering: any two replicas that have seen the same set of updates compute the same value, guaranteed by construction. This is exactly the mechanism DACI (Eskimo Brothers' third brother) is built on.
THE TECHNIQUE merge = a semilattice join (commutative, associative, idempotent) → convergence, no consensus
Take a grow-only counter across three nodes; let two replicas diverge, then merge by taking the per-node max — and confirm the merge is order-independent and repeat-proof, so both replicas land on the same total whichever way you combine them: live demo
HISTORY & CREDIT Shapiro, Preguiça, Baquero & Zawirski, 2011
“Concurrent writes to replicated data force a conflict you must resolve — by a consensus round, a lock, or last-writer-wins throwing data away.” — not if the merge is a semilattice join. Then concurrent updates commute, and convergence is a theorem, not a negotiation. Strong eventual consistency with zero coordination. cited
1984–2007 · precursors — Wuu & Bernstein's replicated dictionary (1984); Amazon's Dynamo shopping cart (2007) merging concurrent carts by union. 2011 · Shapiro, Preguiça, Baquero & Zawirski — “Conflict-free Replicated Data Types”: names and unifies them, proves that a join-semilattice merge (CvRDT) gives strong eventual consistency. now · Riak, Redis, Automerge/Yjs (collaborative editors), Figma-style multiplayer — all lean on CRDTs.
The radical part is what it removes: no leader, no quorum, no round-trip. Agreement is not reached, it is made impossible to avoid — the algebra of the merge forces every replica to the same place. Convergence by construction. Shapiro et al. 2011
On the canonical compiler, a 3-node grow-only counter with replicas A=[3,1,0] and B=[0,1,4] merges by per-node max — and the merge is order-independent and idempotent, so both replicas reach the same total 8:
$ i13 run crdt.i13 # G-Counter, merge = per-node max
merge(A,B) - merge(B,A) = 0 -- COMMUTATIVE: order does not matter
merge(m,m) - m = 0 -- IDEMPOTENT: duplicates are harmless
total = 8 -- 3+1+4, both replicas converge here
Recommend: the CRDT is LIT and a keeper-grade fit for I-13 — verified a G-Counter merge is commutative (merge(A,B)=merge(B,A), difference 0) and idempotent (merge(m,m)=m), so both replicas converge to 8 regardless of message order or duplication. Agreement with no consensus round — the semilattice join is the whole mechanism, and it is the substrate DACI replicates across N nodes.