Describe the Two-Step Offering Save and Its Gap
Context
The recorded product-first sequence defines save order, while the permitted console scope contains no offering editor implementing it. The local API performs only the extension step.
Decision
This record preserves the documented order and describes the observed absence of compensation. The choice of an atomic workflow or detection remains with Product and Architecture.
Alternatives Considered
Compose product and extension saves in one Membership transaction. The product-write port exists, but no examined caller composes and exposes this workflow; adoption still requires implementation and product direction. Remove the product automatically after extension failure. An automatic cross-service removal would require an Accounting-compatible compensation policy that protects products already priced or referenced.
Consequences
An incomplete offering can retain an Accounting product without membership effect. No examined background process identifies that incomplete pair. Deleting a package extension also retains the base product.