Continuing the discussion from Radicle Collaboration Tools:
Creating a new topic for elaboration on matters of commutativity
I guess what it boils down to, at least in my head, is that a git history (a hash-linked DAG) is already a state-based CRDT for most practical purposes: there is always at least one topological order, and using timestamps as a secondary ordering works in non-pathological cases. The “C” in CRDT stands for “convergent”, though, not for “commutative”.
If we do not utilise this “native timestamping”, then the data itself needs to carry as much information as is necessary to yield the desired semantics. Maybe we can get away with simple Lamport clocks, but intuitively this would limit us to only a few primitives. Although that might be enough, idk.