(I can have a look, I'm just not very familiar with go intricacies)
Indeed it can be argued that CRDTs are a natural fit for SQL because it is essentially a derivative of set theory
As I understand it, the only guarantee we get from all CRDTs is that all copies end up in the same state irrespective of merge order. And then there are some trivial examples, like counters, where this state is also logically consistent. But that is not guaranteed in general.
So what about the classical example of transferring an amount from account A to account B if account A has sufficient funds?
I think for a CRDT to support such cases (for arbitrary schemas) it would have to have some notion of atomicity and some way to specify preconditions.
Notwithstanding, there are a lot of possible changes that can compose well, but with traditional databases it is hard to merge divergent datasets even if the changes are non-overlapping. That is where solutions like this improve the state of the art - by obviating a need for secondary sync/merge layer on top.
For the actual cell level conflicts the application developer will have to either write custom resolution or model the domain so that they can be resolved by user later.
It's not very clearly stated, but the links show it has "Last Write Wins" semantics for conflicting changes
https://bartoszsypytkowski.com/crdt-map/#crdtmapwithlastwrit... https://bartoszsypytkowski.com/operation-based-crdts-registe...
https://en.wikipedia.org/wiki/Conflict-free_replicated_data_...