orset-add-wins-semantics

Status: IN

Concurrent add and remove of the same element in `ORSet` resolves in favor of the add, because the add's unique tag was not in the remover's tombstone snapshot

Source: entries/2026/05/29/conflict-free-replicated-data-types-crdts.md

Example

def merge(self, other):
    merged_tombstones = self._tombstones | other._tombstones
    merged_tags = (self_tags | other_tags) - merged_tombstones
    # new add() creates fresh tag not in tombstones -> add wins

JSON