Resiliency¶
Baseline resiliency is inherited from the Base Template. Catalog-specific considerations:
Catalog integrity¶
Status-transition invariants (ProductActivationRequiresPublishedEditionException, Invalid*StatusTransitionException), slug immutability, and uniqueness constraints protect the catalog from inconsistent edits. Editions carry CompositionVersion (ADR-0002) so consumers can detect composition changes.
Publish-only messaging¶
Catalog only publishes; there is no inbound saga to fail. The in-memory outbox keeps event publication consistent with the write. Because downstream contexts (Entitlements, Metering, Billing) react to product-retired/entitlements-changed, ensure durable transport/persistence in production.
Write serialization¶
ProductEditorGrain (keyed {tenantId}/{productId}) serializes concurrent edits to a single product.