NotificationPreference + CommunicationArchive (doc 07 §6.2/§9.2)

Featurekamo-shared-library
Shipped
June 27, 2026 at 3:46 AM UTC
Author
Kamo
Commit
54c1a67

Completes the doc-07 §6 entity model — the mutable convenience ledger + the immutable record-of-business. Same pkg (no @EnableJpaRepositories change). - NotificationPreference (mutable): per-(party,event_key,channel) toggle; **************** eventKey String (dual eventKind|category granularity); cadence/batchWindow; party-level locale/quiet-hours stay on LoanParty. - CommunicationArchive (PARTIAL-WORM, MlosLockRecord idiom + @PreRemove): the system-of-record per rendered message; messageKey UNIQUE (idempotency). Freezes **************** whitelists the delivery lifecycle — deliveryStatus (8-state transition table; SENT->OPENED allowed for provider out-of-order opens), sentAt (write-once RESPA/TILA proof), statusUpdatedAt (monotonic, no null-clear), provider/bounce/failure. DUAL consent snapshot (pointer + denormalized resolved state — the WORM ledger's effective state is point-in-time-resolved). assertConsentEvidence(): a transmitted SMS must carry granted TCPA_SMS consent (§6.5). - 12 tests green. 3 net-new enums (DeliveryStatus mirrors locked status naming). Grounded by a research Workflow + adversarial 2-agent review (SHIP-AS-IS; applied assertConsentEvidence + statusUpdatedAt null-clear + SENT->OPENED).

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing