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.
- 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.
- 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).
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; migration20260809120010restored it. It now runs every 5 min (2,217 successful runs at audit time) and there have been zeroemail_dlqevents 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.
activity-log-audit-aug):email_confirmed_at IS NULL(potentially stranded).auth.usersfor the direct-victim list.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).