Skip to main content

State Machine

State-machine rules keep critical transitions valid, auditable, and recoverable.

Visual summary

DomainCore statesTerminal states
Reservationdraft, confirmedcompleted, cancelled
Membershipinactive, activeexpired
Coupon redemptionavailable, redeemedexpired, 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

DomainFromToTriggerReject code
ReservationdraftconfirmedReservationConfirmed eventRESERVATION_CONFLICT
Reservationconfirmedcancelledactor cancellation + policy checkCANCEL_NOT_ALLOWED
Membershipinactiveactiveactivation successMEMBERSHIP_ACTIVATION_FAILED
Couponavailableredeemedclaim acceptedCOUPON_NOT_ELIGIBLE