diff --git a/README.md b/README.md index 287bb48..3f17911 100644 --- a/README.md +++ b/README.md @@ -43,6 +43,13 @@ inspection UI are implemented. The conflict review UI compares stored local and remote field payloads, can apply a stored remote vCard payload, and supports manual per-field local/remote merge choices. +API-managed CardDAV credentials are encrypted inside the source record. Source +deletion physically removes that credential material and records a non-secret +audit event in the same database transaction; destructive module retirement +audits every remaining credential before the owning tables are dropped. Legacy +external references are detached but are never sent to a secret provider for +deletion because Addresses cannot prove that it owns them. + ## Boundary `govoplan-addresses` owns: diff --git a/docs/ADDRESS_MODULE_ARCHITECTURE.md b/docs/ADDRESS_MODULE_ARCHITECTURE.md index 3ae21c5..fd7ec06 100644 --- a/docs/ADDRESS_MODULE_ARCHITECTURE.md +++ b/docs/ADDRESS_MODULE_ARCHITECTURE.md @@ -148,7 +148,12 @@ a conflict instead of silently overwriting remote data. The first conflict review UI compares stored local and remote field payloads and can apply a stored remote vCard payload or a manual per-field local/remote merge payload. Source disconnect/delete removes the source binding and related sync records -while keeping local contacts. +while keeping local contacts. Because API-managed CardDAV credentials are +encrypted in the source row, the same transaction physically removes their +ciphertext and emits non-secret credential-deletion audit evidence. Destructive +module retirement audits all remaining owned credential material before table +removal. An unowned legacy reference is detached rather than passed to an +external secret provider. ## Connector Direction