Protect the Invariants
Some properties cannot be traded away even in a small first version. State them before simplifying.
Scope
The question
What must never become false?
Do this
- Derive invariants from bad concrete outcomes.
- Put enforcement where concurrent actions meet.
- Turn each invariant into a test or constraint.
Example
- “Payment is captured at most once for an order” survives every version of checkout. A duplicate request is therefore a correctness case, not a later polish item.
Ask next
- ?What failure would violate this?
- ?Where can it be enforced?
- ?How will we prove it under concurrency?