Product lifecycle
The Lifecycle
Transitions Explained
A product starts active unless creation requests inactive status. Replacement can withdraw or restore it; retirement uses a dedicated versioned action and blocks ordinary corrections until reactivation. Deletion removes the local aggregate and then attempts to clear any owned Platform template. Older generated identities remain readable and deletable, but product updates fail the identity constraint.
What Cannot Happen
Creation and ordinary replacement cannot request retirement. Repeating retirement on a retired product or reactivation on an active product is refused. Locks and dependencies can prevent deletion regardless of status. Reusing a deleted identity creates a new record rather than restoring the removed one.
Concurrency and Timing
Replacement and lifecycle actions compare the version read by the caller while holding the product lock. Deletion locks and checks the current record without a version precondition. List activation and deactivation use replacement and can clear availability values they fail to resend.