{"id":"sync-all-two-rounds-suffices","text":"`CRDTReplicaGroup.sync_all` runs exactly 2 rounds of all-pairs sync, which is sufficient for convergence of any state-based CRDT with a commutative/associative/idempotent merge","truth_value":"IN","source":"entries/2026/05/29/conflict-free-replicated-data-types-crdts.md","source_url":"","source_hash":"","justifications":[],"dependents":[],"metadata":{"example":"def sync_all(self):\n    for _ in range(2):  # two rounds guarantees convergence\n        for a in self.replica_ids:\n            for b in self.replica_ids:\n                if a != b: self.sync(a, b)"},"explanation":{"steps":[{"node":"sync-all-two-rounds-suffices","truth_value":"IN","reason":"premise"}]}}