[Feature] Expose channel-neutral contact-point resolution and frozen postal snapshots #14

Open
opened 2026-07-31 11:39:40 +02:00 by zemion · 0 comments
Owner

Context

addresses.recipient_source currently produces email-oriented snapshots. The Distribution Lists AdreMa vertical requires postal/internal-mail contact-point candidates, explicit address-purpose selection, deterministic fallback, and evidence for unresolved or blocked targets.

Scope

  • Define a versioned channel-neutral contact-point candidate/resolution contract while preserving the current email contract.
  • Resolve email, postal, and internal-mail contact points for local contacts or stable IDM/Organizations subject references.
  • Evaluate communication purpose, effective date, preferred contact point, explicit address purpose, fallback rule, locale, and international formatting.
  • Return usable, unresolved, invalid, ambiguous, duplicate, and suppressed outcomes with stable reasons.
  • Preserve contact/contact-point IDs, provider subject references, source revisions, preference/consent fact revisions, and provenance.
  • Freeze immutable postal/email snapshots for direct consumers and provide bounded preview/count APIs.
  • Leave mixed audience expansion and final cross-provider Policy/channel decisions to Distribution Lists.

Acceptance Criteria

  • A caller receives deterministic contact-point candidates plus explanations for exclusions.
  • Past snapshots do not change when contact data, preferences, or source revisions change.
  • Postal-only contacts and address-list entries are supported.
  • Existing email-source consumers continue to work through a versioned migration.
  • No IDM/Organizations/Distribution Lists implementation is imported directly.

Parent: #1. Depends on #9. Consumed by GovOPlaN/govoplan-dist-lists#7 and GovOPlaN/govoplan-campaign#90.

## Context `addresses.recipient_source` currently produces email-oriented snapshots. The Distribution Lists AdreMa vertical requires postal/internal-mail contact-point candidates, explicit address-purpose selection, deterministic fallback, and evidence for unresolved or blocked targets. ## Scope - Define a versioned channel-neutral contact-point candidate/resolution contract while preserving the current email contract. - Resolve email, postal, and internal-mail contact points for local contacts or stable IDM/Organizations subject references. - Evaluate communication purpose, effective date, preferred contact point, explicit address purpose, fallback rule, locale, and international formatting. - Return usable, unresolved, invalid, ambiguous, duplicate, and suppressed outcomes with stable reasons. - Preserve contact/contact-point IDs, provider subject references, source revisions, preference/consent fact revisions, and provenance. - Freeze immutable postal/email snapshots for direct consumers and provide bounded preview/count APIs. - Leave mixed audience expansion and final cross-provider Policy/channel decisions to Distribution Lists. ## Acceptance Criteria - A caller receives deterministic contact-point candidates plus explanations for exclusions. - Past snapshots do not change when contact data, preferences, or source revisions change. - Postal-only contacts and address-list entries are supported. - Existing email-source consumers continue to work through a versioned migration. - No IDM/Organizations/Distribution Lists implementation is imported directly. Parent: #1. Depends on #9. Consumed by GovOPlaN/govoplan-dist-lists#7 and GovOPlaN/govoplan-campaign#90.
zemion added this to the Module And Integration Roadmap milestone 2026-07-31 11:39:40 +02:00
zemion changed title from [Feature] Add channel-neutral recipient resolution and frozen postal snapshots to [Feature] Expose channel-neutral contact-point resolution and frozen postal snapshots 2026-07-31 14:49:02 +02:00
zemion added the module/dist-lists label 2026-07-31 14:51:54 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: GovOPlaN/govoplan-addresses#14