Relevant paper on lattice types (BloomL): https://dsf.berkeley.edu/papers/UCB-lattice-tr.pdf
In addition to this, you’ll need a causal register (per-key merkle clock) to order concurrent edits, rather than drop one.
Lastly, you’re likely to need a Pijul style VCS to handle semantic merges.