Offer a package: the Accounting product first, then its membership extension
What It Does
The documented offering sequence prepares the shared Accounting product before its Membership extension. The verified API implements the extension step, with product existence and type checks. No administration screen implements the complete sequence in the permitted console scope.
The Flow
When Something Fails
Membership rolls back only its own extension transaction. A product saved separately can remain without membership effect, and no examined job finds or compensates that condition. Joined read-back occurs before Membership commit and is part of its rollback boundary.
Open Design Questions
Product must choose between implementing a composed atomic save and detecting incomplete offerings. The existing product-write port supports such composition but does not constitute a completed atomic workflow.