Show accepted signup email delivery without a second send step #62

Closed
opened 2026-10-23 07:26:15 +00:00 by tech · 0 comments
Owner

Goal

A successful signup must immediately show the confirmed email-queued state instead of a false internal error on the next screen.

Approach

Carry the accepted verification delivery as a domain result through the shared auth service, provider and transient route state. Initialize the verification provider from that receipt instead of asking the verification service to send again. Preserve explicit resend, unverified-login recovery and direct confirmation links. Add regression coverage for accepted signup when a subsequent send would fail, privacy and journey outcome semantics.

Acceptance criteria

  • Accepted signup shows Check your inbox with its recipient without an automatic verification/send operation.
  • Signup rejection never claims that email is queued; explicit resend still reaches its service and exposes actual failure/retry state.
  • Queued state is transient, never serialized to browser history/URLs; reloads and direct links remain honest.
  • DTO, mapper, service, domain model, provider and UI boundaries remain intact, including preview services.
  • Semantic journey events reflect confirmed signup queue acceptance and do not double count on navigation or resend.
  • Focused regressions, formatting, affected-package analysis and make test-frontend pass; frontend review and local rebuild are recorded.

Notes

Primary module email-verification; secondary shared sxchnge_auth and consumer app routing. Owner tech; project SXCHNGE (16); frontend label. The live attempt returned signup 202 and SMTP acceptance 250, with no subsequent verification call; the user confirmed the error appeared immediately after Create account. An isolated release-browser reproduction currently succeeds, so the exact original client exception is not established. This change removes the redundant post-acceptance failure path rather than claiming that exception is diagnosed. Preserve local identity-facts-57 stand configuration and unrelated commits. No real email, activation token or password belongs in tracker text, logs or committed tests. No security scan or merge is authorized.

Delivery: PR #63, implementation commit 3af60f3. Changed-file formatting, Flutter analysis in both affected packages and make test-frontend (221 tests) pass. The failing-before/passing-after regression injects an unavailable follow-up send and covers EN/RU at 390px/1.5x text scaling; explicit resend failure/retry and history/analytics privacy pass. Full frontend and UX/observability review found no remaining task-caused issues. A release-browser fixture verifies accepted signup stays sent without calling resend, then explicit resend fails as configured. Fresh stable image resolution and frontend build/deployment succeeded; the served bundle matches the image at SHA-256 0a45ce6f0b4658b1f03d8e39b9e39fd3fbfcf6f1626cb3f17705dce2da130a6c. Normal-trust HTTPS returns 200 and sh infra/local/tools.sh verify passes all seven services and authenticated Sendico currency/ledger reads. No email, activation, payment or security scan was submitted for this change. Native Safari's original exception remains unobserved. Reload the existing browser tab to load the deployed fix. Scope, measurements, validation and limitations are recorded in docs/ux/auth-journeys.md. PR remains unmerged.

### Goal A successful signup must immediately show the confirmed email-queued state instead of a false internal error on the next screen. ### Approach Carry the accepted verification delivery as a domain result through the shared auth service, provider and transient route state. Initialize the verification provider from that receipt instead of asking the verification service to send again. Preserve explicit resend, unverified-login recovery and direct confirmation links. Add regression coverage for accepted signup when a subsequent send would fail, privacy and journey outcome semantics. ### Acceptance criteria - [x] Accepted signup shows Check your inbox with its recipient without an automatic verification/send operation. - [x] Signup rejection never claims that email is queued; explicit resend still reaches its service and exposes actual failure/retry state. - [x] Queued state is transient, never serialized to browser history/URLs; reloads and direct links remain honest. - [x] DTO, mapper, service, domain model, provider and UI boundaries remain intact, including preview services. - [x] Semantic journey events reflect confirmed signup queue acceptance and do not double count on navigation or resend. - [x] Focused regressions, formatting, affected-package analysis and make test-frontend pass; frontend review and local rebuild are recorded. ### Notes Primary module email-verification; secondary shared sxchnge_auth and consumer app routing. Owner tech; project SXCHNGE (16); frontend label. The live attempt returned signup 202 and SMTP acceptance 250, with no subsequent verification call; the user confirmed the error appeared immediately after Create account. An isolated release-browser reproduction currently succeeds, so the exact original client exception is not established. This change removes the redundant post-acceptance failure path rather than claiming that exception is diagnosed. Preserve local identity-facts-57 stand configuration and unrelated commits. No real email, activation token or password belongs in tracker text, logs or committed tests. No security scan or merge is authorized. Delivery: [PR #63](https://git.sendico.io/tech/sxchnge/pulls/63), implementation commit `3af60f3`. Changed-file formatting, Flutter analysis in both affected packages and `make test-frontend` (221 tests) pass. The failing-before/passing-after regression injects an unavailable follow-up send and covers EN/RU at 390px/1.5x text scaling; explicit resend failure/retry and history/analytics privacy pass. Full frontend and UX/observability review found no remaining task-caused issues. A release-browser fixture verifies accepted signup stays sent without calling resend, then explicit resend fails as configured. Fresh stable image resolution and frontend build/deployment succeeded; the served bundle matches the image at SHA-256 `0a45ce6f0b4658b1f03d8e39b9e39fd3fbfcf6f1626cb3f17705dce2da130a6c`. Normal-trust HTTPS returns 200 and `sh infra/local/tools.sh verify` passes all seven services and authenticated Sendico currency/ledger reads. No email, activation, payment or security scan was submitted for this change. Native Safari's original exception remains unobserved. Reload the existing browser tab to load the deployed fix. Scope, measurements, validation and limitations are recorded in `docs/ux/auth-journeys.md`. PR remains unmerged.
tech added the frontend label 2026-10-23 07:26:15 +00:00
tech self-assigned this 2026-10-23 07:26:15 +00:00
tech added this to the SXCHNGE project 2026-10-23 07:26:23 +00:00
tech added reference email-verification-62 2026-10-23 07:26:31 +00:00
tech changed reference from email-verification-62 to email-verification-62 2026-10-23 07:35:27 +00:00
tech closed this issue 2026-10-23 10:31:43 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: tech/sxchnge#62