SMS Orchestrator — Sync Contract
Status: populated Owner: Platform Engineering Last updated: 2026-04-18
1. Per-aggregate policy
| Aggregate | Policy | Rationale |
|---|---|---|
SmsMessage | server_authoritative | Server is the sole writer; clients receive status via events or GET /v1/sms/{id} |
IdempotencyKey | server_authoritative | Single-writer |
2. Offline behavior
The platform has no offline client path: SMS submission requires a live HTTP request. There is no client-side sync envelope.
3. Event consumption ordering
Within a partition (per-messageId), order is enforced by idempotency + state machine guards. Across messages, order is not guaranteed and is not required for correctness.
4. Replay tolerance
- NATS AckWait 30s; redelivery of
sms.outbound.requestis tolerated via RedisSET NX. - Client-side retries for
POST /v1/sms/sendare tolerated viaIdempotency-Key.