The acceptance criterion I reach for most is not the happy path. It's the duplicate action: double-clicked submit buttons, repeated webhook deliveries, retried payment calls, imported rows seen twice.
That one scenario exposes more vague thinking than a dozen success cases:
Given a user submits the same request twice within 2 seconds
When both requests reach the server
Then exactly one state change is recorded






