Skip to content

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.

See also