Skip to content

Confirm no signup users stranded by the Aug-9 lost auth emails (78 auth emails DLQ'd) #253

Description

@mdenner1234

Context

From the Aug-2026 activity-log audit. On 2026-08-09 ~01:29 UTC, 332 emails were dead-lettered ("Lost before send — reconciler timeout") when the restored stuck-email reconciler drained a pre-cutover backlog. Of those, 78 were auth emails: 70 signup confirmations, 7 password-recovery, 1 magic-link.

Root cause is already fixed — the reconciler cron (reconcile-stuck-emails) was missing since the Lovable→owned-project cutover; migration 20260809120010 restored it. It now runs every 5 min (2,217 successful runs at audit time) and there have been zero email_dlq events since Aug 9. This is not recurring.

Recovery/magic-link are self-service (the user just retries), so the only lasting risk is a signup user who never confirmed and therefore still can't log in.

Task

Confirm nobody is stranded, and re-trigger confirmation for any who are.

  1. Run the read-only check (worktree activity-log-audit-aug):
    $env:PGPASSWORD="<prod db password>"; node _audit_stranded_signups.mjs
    
    • Sections 1–2 re-prove the reconciler is active and DLQ stopped after Aug 9.
    • Sections 3–3b count pre-Aug-9 accounts still email_confirmed_at IS NULL (potentially stranded).
    • Section 4 joins the Aug-9 DLQ signup recipients to auth.users for the direct-victim list.
  2. For any confirmed-stranded signup users, re-send the signup confirmation (self-service resend or admin trigger).

Not needed

No code change for prevention — the reconciler + syshealth watchdog already cover it. This is a one-time data/outreach confirmation.

Ref: audit PRs #251 (captcha lockout), #252 (edge-deploy-smoke hardening).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions