Story Index: notifications (NOTIF) — sub-version v0.0.0¶
This file indexes v0.0.0 only. The notifications module is decomposed across the whole V0 envelope; each sub-version lives in its own directory and index. See the V0 sub-version roadmap below.
Module: notifications
Sub-version: v0.0.0 (architecture-backed)
Total stories (v0.0.0): 8
Decomposed from: docs/architecture/notifications-arch.md (v0.0.0 scope; founder-approved per /decompose invocation)
PRD reference: docs/prd/notifications-prd.md (V0 Envelope §"V0 Envelope Scope" + V1 §§A/B/C as forward-compat reference) + docs/prd/prd-v0.md
Design reference: N/A — NOTIF is a backend Control-plane primitive; no UI in v0.0.0 (the consent UI is v0.0.1, owned by CP)
Date: 21/05/2026 (v0.0.0); 28/05/2026 (v0 roadmap + later sub-versions added)
[ARCH-PENDING] note: notifications-arch.md is explicitly v0.0.0-only; v0.0.1 / v0.0.2 / v0.1.0 are forward-compatibility checkpoints there, not designed slices. Their stories (NOTIF-005…010) are drafted from the PRD V0 Envelope + design + the v0.0.0 architecture's reserved hooks (reserved status values, stubbed admin paths, pre-provisioned agency_id). Each later-sub-version story carries an [ARCH-PENDING] banner and must be reconciled with an ARCHITECT pass for its sub-version before dev-start. Story IDs are continuous (NOTIF-002/003/004 are v0.0.0 sub-slices, NOT the PRD's original one-story-per-sub-version mapping; the later sub-versions use NOTIF-005+ to avoid collision).
Note on scope: this index covers the v0.0.0 architecture-level slices only. The V1 PRD §A.3 lists 11 user stories (NOTIF-US-01 through NOTIF-US-11); architecture §0 explicitly defers most ACs to later sub-versions. The table below maps the v0.0.0-relevant ACs to stories. ACs marked "deferred" land in v0.0.1 / v0.0.2 / v0.1.0 / V1 stories not in this index.
PRD User Story
ACs
Assigned To
NOTIF-US-01 (idempotent dispatch)
AC-01.1
NOTIF-001a + NOTIF-001b (completion)
NOTIF-US-01
AC-01.2 (Idempotency-Key)
NOTIF-001a
NOTIF-US-01
AC-01.3 (natural-key conflict)
NOTIF-001a
NOTIF-US-01
AC-01.4 (mandatory-field gate)
NOTIF-001a
NOTIF-US-02 (WA-first cascade)
AC-02.1 / AC-02.2 / AC-02.3 / AC-02.4
Deferred — v0.0.0 ships SMS-first → WA at T+5d (NOTIF-ADR-02); the V1 PRD WA-first model is replaced. NOTIF-003 covers the v0.0.0 cascade.
NOTIF-S0 — must merge first (Tier 0 serial). Unblocks Tier 1.
NOTIF-001d — country-profile resolver. No business logic dependency on NOTIF-001a; can land in parallel.
NOTIF-001a — dispatch endpoint + persistence + idempotency. Blocks every downstream slice. AUDIT-002 catalog extension MUST be merged first (R1 in architecture §12).
NOTIF-001c — suppression read-side. MUST land before NOTIF-001b reaches production (no real SMS goes out without suppression honored — ARTCI mitigation #5).
NOTIF-001b — SMS adapter + async submit + status webhook. Completes the v0.0.0 SMS happy path.
NOTIF-002 — inbound STOP capture. Closes ARTCI mitigation #5 on the write side.
NOTIF-003 — WhatsApp cascade at T+5d. Ships last because it cross-depends on AUTH reissueForCascade (OQ-NOTIF-13) and CP customer.session_opened (OQ-NOTIF-14); ships behind FEATURE_NOTIF_WHATSAPP_CASCADE_ENABLED until ARTCI B5+B10 are notified.
OQ-NOTIF-02 — ARTCI B5 + B10 authorizations for cross-border WA flow — INCERTAIN — avocat requis. WhatsApp cascade ships behind FEATURE_NOTIF_WHATSAPP_CASCADE_ENABLED until both authorizations are notified. SMS-only path remains available regardless. Pilot proceeds under [FOUNDER-RISK-ACCEPTED 2026-05-20].
OQ-NOTIF-01 — Concrete WA BSP + SMS aggregator choice — blocks NOTIF-001b and NOTIF-003 dev-start (adapter implementation needs a target). Adapter interfaces are fixed; concrete picks land before dev-start.