Yesterday's cart could resurrect a deleted item. Vector clocks are why it knew to merge at all.
Diagram — HOW IT READS:
| Event | Cart version |
|---|---|
| Write on A | [A:1, B:0] |
| Write on B | [A:0, B:1] |
| Write on A | [A:1, B:0] |
| Then again | [A:2, B:0] |
Neither dominates → CONFLICT
Second dominates → NEWER, discard old
Diagram — WHAT DYNAMO DOES:
The database doesn't resolve ambiguity.
Both versions go back to the application, which knows the business rule.
Cart's rule: keep everything.
The cost line:
Every replica that touches a key adds an entry. Clocks grow. Dynamo capped the list and trimmed the oldest — trading a rare wrong merge for bounded memory.
