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?

Continue in the specialist domain