In a sane world if two vclocks descend each other they _have_ to be equal. In riak they can descend each other and have different timestamps? How? Deleted keys, re-written, then restored is one example. See riak_kv#679 for others. This is why we must check descends both ways rather than checking descends(A, B) and not equal(A, B). I think we need a comment that says this. 'Cos someone who knows version vectors may try and optimise this to use one descends and equals. (I know that, 'cos I did :( )