State Machine
State-machine rules keep critical transitions valid, auditable, and recoverable.
Visual summary
| Domain | Core states | Terminal states |
|---|---|---|
| Reservation | draft, confirmed | completed, cancelled |
| Membership | inactive, active | expired |
| Coupon redemption | available, redeemed | expired, invalid |
Reservation
stateDiagram-v2
[*] --> draft
draft --> confirmed: validate slot + payment/approval pass
confirmed --> completed: service fulfilled
confirmed --> cancelled: cancel by actor/policy
draft --> cancelled: abandoned/expired draft
cancelled --> [*]
completed --> [*]
Membership
stateDiagram-v2
[*] --> inactive
inactive --> active: activation success
active --> expired: validity period elapsed
expired --> active: renewal success
Coupon redemption
stateDiagram-v2
[*] --> available
available --> redeemed: valid claim
available --> expired: date/quota elapsed
available --> invalid: policy revoked
redeemed --> [*]
expired --> [*]
invalid --> [*]
Canonical transition contract
| Domain | From | To | Trigger | Reject code |
|---|---|---|---|---|
| Reservation | draft | confirmed | ReservationConfirmed event | RESERVATION_CONFLICT |
| Reservation | confirmed | cancelled | actor cancellation + policy check | CANCEL_NOT_ALLOWED |
| Membership | inactive | active | activation success | MEMBERSHIP_ACTIVATION_FAILED |
| Coupon | available | redeemed | claim accepted | COUPON_NOT_ELIGIBLE |