Listing lifecycle

LegendLiveWaitingCompletedClosed / inactive

Reading guide

AreaStatesPrimary owner
Listingdraft, availableseller / admin
Transactionreserved, soldcheckout + order orchestration
Fulfillmentshipped, deliveredseller / system / buyer

Boundaries

ConcernLocationWhy
New listing creation (∅ → draft)create-draft-listing.action.tsCreation is a command boundary, not a machine transition
New listing + publish (∅ → available)publish-listing.action.tsCreation + publish is command handling outside applyListingTransition()
Publish guardpublish-listing.action.tsNSFW validation can force the listing back to draft
Hard delete (draft/cancelled → ∅)delete-listing.action.tsDeletion is a command boundary, not a machine transition
Transaction-driven statescheckout + order orchestrationreserved onward should be read as commerce flow, not seller editing flow

On this page