Integrate governed address contact resolution

This commit is contained in:
2026-08-02 07:24:29 +02:00
parent 7b0c9cfdde
commit 8099e34c6c
9 changed files with 774 additions and 12 deletions
+5 -5
View File
@@ -180,7 +180,7 @@ typed output template, and Report/Campaign run configuration.
| Multiple email, phone, and postal contact points | Implemented | Addresses |
| Static address lists | Implemented | Addresses |
| vCard import/export and CardDAV sync | Implemented | Addresses |
| Read-only lookup and immutable email-recipient snapshots | Implemented | Addresses |
| Read-only lookup and immutable email/postal recipient snapshots | Implemented | Addresses/Distribution Lists |
| Source provenance and sync conflicts | Implemented | Addresses |
| Organization units and function definitions | Implemented | Organizations |
| Effective-dated identity-to-function assignments | Implemented first slice | IDM |
@@ -190,10 +190,10 @@ typed output template, and Report/Campaign run configuration.
| Campaign snapshots, review, digital delivery, and evidence | Implemented first channel | Campaign |
| Typed template library and document rendering | Scaffold/issue only | Templates |
| BI reports and spreadsheet-grade exports | Scaffold/issue only | Reporting |
| Mixed operational distribution lists and governed segments | Contract/implementation issues only | Distribution Lists |
| Contact-point consent, suppression, and preferences | Open issue | Addresses/Policy |
| Deduplication, merge, quality, and complete history | Open issue | Addresses |
| Channel-neutral expansion and frozen postal targets | Missing | Distribution Lists/Addresses |
| Mixed operational distribution lists and governed segments | Implemented broad first slice | Distribution Lists |
| Contact-point consent, suppression, and preferences | Implemented | Addresses/Policy |
| Deduplication, merge, quality, and complete history | Implemented first slice | Addresses |
| Channel-neutral expansion and frozen postal targets | Implemented | Distribution Lists/Addresses |
| Printable label, envelope, and letter output | Open issue | Templates |
| End-to-end guided AdreMa workflow | Missing | Workflow plus consuming modules |
+13 -3
View File
@@ -83,6 +83,16 @@ The first capabilities should be:
- `dist_lists.expand`: expand a distribution list into immutable recipient rows.
- `dist_lists.writer`: explain whether a caller can create or change a list.
When `addresses.contact_point_resolution` is available, address-contact and
address-list entries are resolved through that versioned contract. Entry and
expansion channel constraints are intersected, and purpose, effective time,
address purpose, fallback rule, locale, and postal format are passed to the
provider. Selected and rejected contact points retain stable reason codes and
provider provenance. The frozen Distribution Lists snapshot stores the exact
rendered target and contact-point ID, so later address changes do not rewrite
delivery evidence. Legacy Addresses lookup/email-source capabilities are used
only as a compatibility fallback.
Consumers must resolve those capabilities through core and must not import
distribution-list ORM or service internals.
@@ -98,9 +108,9 @@ Likely consumers:
## Relationship To Address Lists
`govoplan-addresses` should implement classical address lists first. A
distribution list may later include an address list as an entry, but the
address module remains the owner of contact records and address-only grouping.
`govoplan-addresses` implements classical address lists. A distribution list
may include an address list as an entry, but the address module remains the
owner of contact records and address-only grouping.
The distribution-list module owns mixed operational routing. This prevents
campaign-specific recipient logic from becoming the platform's de facto
+5 -1
View File
@@ -44,13 +44,17 @@ Goal: allow distribution lists to resolve through installed modules.
Tasks:
- [x] integrate with `addresses.lookup` and address-list source capability
- [x] integrate with versioned, channel-neutral Addresses contact-point
resolution; retain lookup/address-list source capabilities as compatibility
fallbacks
- [x] integrate with IDM identity and effective function-assignment resolution
- [ ] resolve typed IDM groups once `govoplan-idm#7` exposes the provider contract;
until then the selector and expansion return an explicit unavailable outcome
- [x] integrate with Organizations unit/function resolution
- [x] consume governed Datasource/Connector states through pinned Dataflow outputs
- [x] apply Addresses preference/consent facts and explainable Policy decisions
- [x] freeze exact postal/email targets, contact-point IDs, revisions,
fingerprints, and decision provenance in expansion snapshots
- [x] preserve module independence when optional providers are absent
## Milestone 4: UI