Comment
Comment by shhsshs
Those two concepts are not mutually exclusive. Each change can be idempotent by marking some identifying information about the state it was trying to update.
It can definitely break down at some point (maybe the user really did want to increase by 10 two times, they just clicked twice really fast?). But idempotency and change-based flow can live together.