if d4 and e4 are conflicting edits, then how do you resolve them?
say (a1 b2 c3) is "abc" -- (a1 b2 c3 d4 d5) is "abxx" and (a1 b2 c3 e4) is "aby"
what is (a1 b2 c3 d4 e4)? it isn't "abxxy" or "abxy" or "abxxy" or anything else, because d4 and e4 are concurrent/conflicting updates, which have no single well-defined resolution (without additional information)
meaning, this is a conflict
if you just say that this resolves to (a1 b2 c3 e4) then this is LWW but you've lost the information in d4 and d5, so whoever was agent d has written information that was good for a little while, but then ultimately lost after merge, right? so this isn't consistent in any useful way?
When the document is loaded into memory, it has a unique uuid as the agent id.
If the current version is
hash(a1 b2 c3)
If two people edit the document at the same time the name will become
hash(a1 b2 c3 e4)
hash(a1 b2 c3 d4 d5)
After merging, the document name will become
hash(a1 b2 c3 d4 e4 d5)
a1, b2 is "Lamport timestamp" https://en.wikipedia.org/wiki/Lamport_timestamp
the full version (a1 b2 c3 e4) is “vector clock” https://en.wikipedia.org/wiki/Vector_clock