diff --git a/WORK-RECORDS.md b/WORK-RECORDS.md index e3dc311..0709168 100644 --- a/WORK-RECORDS.md +++ b/WORK-RECORDS.md @@ -17,7 +17,7 @@ | workplan | EMAIL-WP-0007 | finished | — | workplans/EMAIL-WP-0007-ledger-backup-recovery.md | | workplan | EMAIL-WP-0008 | finished | — | workplans/EMAIL-WP-0008-scoped-transactional-callers.md | | workplan | EMAIL-WP-0009 | finished | — | workplans/EMAIL-WP-0009-wave2-resource-right-sizing.md | -| workplan | EMAIL-WP-0010 | active | — | workplans/EMAIL-WP-0010-platform-sender-transition.md | +| workplan | EMAIL-WP-0010 | finished | — | workplans/EMAIL-WP-0010-platform-sender-transition.md | | task | EMAIL-WP-0001-T01 | done | — | workplans/EMAIL-WP-0001-repo-onboarding.md | | task | EMAIL-WP-0001-T02 | done | — | workplans/EMAIL-WP-0001-repo-onboarding.md | | task | EMAIL-WP-0001-T03 | done | — | workplans/EMAIL-WP-0001-repo-onboarding.md | @@ -65,6 +65,6 @@ | task | EMAIL-WP-0008-T04 | done | — | workplans/EMAIL-WP-0008-scoped-transactional-callers.md | | task | EMAIL-WP-0009-T01 | done | — | workplans/EMAIL-WP-0009-wave2-resource-right-sizing.md | | task | EMAIL-WP-0010-T01 | done | — | workplans/EMAIL-WP-0010-platform-sender-transition.md | -| task | EMAIL-WP-0010-T02 | wait | — | workplans/EMAIL-WP-0010-platform-sender-transition.md | -| task | EMAIL-WP-0010-T03 | wait | — | workplans/EMAIL-WP-0010-platform-sender-transition.md | -| task | EMAIL-WP-0010-T04 | todo | — | workplans/EMAIL-WP-0010-platform-sender-transition.md | +| task | EMAIL-WP-0010-T02 | done | — | workplans/EMAIL-WP-0010-platform-sender-transition.md | +| task | EMAIL-WP-0010-T03 | done | — | workplans/EMAIL-WP-0010-platform-sender-transition.md | +| task | EMAIL-WP-0010-T04 | done | — | workplans/EMAIL-WP-0010-platform-sender-transition.md | diff --git a/deploy/k8s/railiance/README.md b/deploy/k8s/railiance/README.md index 4c00018..62bca03 100644 --- a/deploy/k8s/railiance/README.md +++ b/deploy/k8s/railiance/README.md @@ -13,9 +13,11 @@ be used. Read the-custodian/docs/agent-environment-orientation.md first. Platform owns OpenBao custody, Kubernetes-auth ClusterSecretStore openbao-email-connect and its scoped ESO ServiceAccount (RPF-WP-0045). -ExternalSecret email-connect/email-connect-runtime delivers the existing -EMAIL_CONNECT_INGEST_TOKEN, EMAIL_CONNECT_SMTP_USERNAME and -EMAIL_CONNECT_SMTP_PASSWORD fields. Never read or print Secret objects/annotations. +The receiver sender is platform@coulomb.social. Its SMTP username is that +same address and its SMTP password comes from Secret +email-connect-platform-smtp, projected from the admitted platform reader. +Callers come from the mounted callers file. Never read or print Secret +objects or annotations. Route needs through warden route find/show email-connect-transactional. The static ESO token bootstrap and duplicate store template are retired. diff --git a/deploy/k8s/railiance/configmap.yaml b/deploy/k8s/railiance/configmap.yaml index 9345f78..61e861b 100644 --- a/deploy/k8s/railiance/configmap.yaml +++ b/deploy/k8s/railiance/configmap.yaml @@ -17,7 +17,6 @@ data: # Matches the live user-engine Ingress host on railiance01 (nip.io until a # coulomb.social alias is cut over). Update when the public hostname changes. EMAIL_CONNECT_PORTAL_URL: "https://users.coulomb.social" - # Envelope From — interim identity matches the live forgejo IONOS SMTP lane - # (forgejo@coulomb.social) used to seed CCR-2026-0010. Switch to a dedicated - # noreply@ mailbox when that credential is minted separately. - EMAIL_CONNECT_SENDER: "forgejo@coulomb.social" + # Envelope From. The SMTP username and password are explicit Deployment + # environment entries from the admitted platform projection, not this map. + EMAIL_CONNECT_SENDER: "platform@coulomb.social" diff --git a/deploy/k8s/railiance/deployment.yaml b/deploy/k8s/railiance/deployment.yaml index 5197b46..8d07f84 100644 --- a/deploy/k8s/railiance/deployment.yaml +++ b/deploy/k8s/railiance/deployment.yaml @@ -52,12 +52,17 @@ spec: envFrom: - configMapRef: name: email-connect-config - - secretRef: - name: email-connect-runtime - optional: false env: - name: EMAIL_CONNECT_CALLERS_FILE value: /etc/email-connect-callers/callers.json + - name: EMAIL_CONNECT_SMTP_USERNAME + value: platform@coulomb.social + - name: EMAIL_CONNECT_SMTP_PASSWORD + valueFrom: + secretKeyRef: + name: email-connect-platform-smtp + key: password + optional: false resources: requests: cpu: 5m diff --git a/workplans/EMAIL-WP-0010-platform-sender-transition.md b/workplans/EMAIL-WP-0010-platform-sender-transition.md index f33147a..d366ede 100644 --- a/workplans/EMAIL-WP-0010-platform-sender-transition.md +++ b/workplans/EMAIL-WP-0010-platform-sender-transition.md @@ -4,7 +4,7 @@ type: workplan title: "Supervised platform sender transition with ledger continuity" domain: infotech repo: email-connect -status: active +status: finished owner: codex topic_slug: email-connect created: "2026-10-31" @@ -51,8 +51,7 @@ archive-fingerprint compatibility and private-output refusal. Owner suite: ```task id: EMAIL-WP-0010-T02 -status: wait -blocking_reason: "Executor and assembly tests complete; sealing the live proposal requires verified RPF-WP-0068-T04 and its successful foundation receipt." +status: done priority: high depends_on: [EMAIL-WP-0010-T01, RPF-WP-0068-T04] state_hub_task_id: "acb6f995-9177-5a3c-909a-feb152d6bfed" @@ -123,12 +122,16 @@ finish T02. Review: `docs/sender-attended-entry-2026-10-31.md`. No live grant, sender change, production capture or mail send occurred; existing backup and foundation source packets remain unchanged. T03/T04 retain live execution/return. +Done 2026-11-01 after RPF-WP-0068-T04. The sealed proposal is +`sha256:ecbfd2cd1cdcc991408d9923e9e4b1cda9af442a246ac7efcc87b228eb62582a`. +Five native server dry-runs passed. The change is forgejo@coulomb.social to +platform@coulomb.social. The ledger is retained and no mail is sent. + ## T03 — Execute the admitted sender switch ```task id: EMAIL-WP-0010-T03 -status: wait -blocking_reason: "Requires the complete sender executor and verified RPF-WP-0068-T04 credential-owner return." +status: done priority: high depends_on: [EMAIL-WP-0010-T02, RPF-WP-0068-T04] state_hub_task_id: "e0cbed16-f08f-50f7-8e15-633b3af29e88" @@ -141,11 +144,19 @@ the dry-run candidate as approval for an unprepared configuration change. Inspec any existing attempt before replay; uncertain outcomes require the reviewed recovery procedure. Preserve application/caller state and retained evidence. +Done 2026-11-01. The founder confirmed `DEPLOY` for digest +`sha256:ecbfd2cd1cdcc991408d9923e9e4b1cda9af442a246ac7efcc87b228eb62582a`. +The node returned `sender_deployed_verified` for `platform@coulomb.social`. +No mail was sent and the ledger was not restored. All six tables kept their +rows: 1 caller bucket, 2 deliveries, 1 suppression, 127 verifications and +127 verification attempts. No new rows and no permitted updates. The raw +snapshot bytes differ, which this check allows when the rows do not. + ## T04 — Verify the native sender return and reconcile sources ```task id: EMAIL-WP-0010-T04 -status: todo +status: done priority: high depends_on: [EMAIL-WP-0010-T03] state_hub_task_id: "19485ff3-132c-567c-8c28-8c039e63c2b4" @@ -159,6 +170,11 @@ authentication, selected inbox/return handling, suppression authority and retention/productive verdicts remain live consumer requirements; this configuration return does not establish them. No unsolicited mail is part of these checks. +Done 2026-11-01. `--inspect` reports phase `completed`, sender +`platform@coulomb.social`, one replica, and no running attempt. The deployment +source now matches that runtime. Delivered-message authentication, inbox and +return handling, suppression, and retention remain CSOC-WP-0015-T02. + ## Completion Finish after all four tasks have their stated native evidence. Hand any newly