Two replicas of a shopping cart both accept a write to the same cart while partitioned from each other — one adds an item, the other removes a different item — and the partition heals. Walk through what a vector clock comparison of the two resulting versions actually returns, and why that outcome is correct rather than a bug.
A vector clock is a counter per process, carried as a map ({A: 3, B: 1}), where each process increments its own entry on every local event and takes the element-wise maximum plus its own increment on receiving a message. Comparing two vectors is three-way: one strictly dominates the other in every position (a real happens-before relationship), the reverse holds, or — the case here — neither dominates, which means the two writes are concurrent. Comparing the two carts' versions after the partition heals returns exactly that third outcome: neither write knew about the other, so neither vector is less-than-or-equal to the other in every position. That's not a failure of the clock or a bug in replication — it's the vector clock correctly reporting that this is a genuine conflict the application has to resolve (merge the two carts, keep both as siblings and ask the user), because there is no true answer to which write "really" happened first when neither one could have known about the other.