warmbox/docs/sprints/sprint-2.2.md

1,008 B

Sprint 2.2 — Spam rescue hardening

Status: Done

Backend

  • Per-UID matching: Rescuer fetches each spam UID, matches message-id / from+subject, moves only matched messages
  • Folder auto-discovery: resolveSpamFolder() tries presets then IMAP LIST; persists spamFolderPath on inbox
  • Auto-pause: checkCampaignSpamThresholds() pauses campaigns when 3 consecutive days exceed 30% spam rate (inbox < 70%)
  • Mailbox metadata: lastSpamRescuedAt updated on successful rescue

Dashboard

  • Paused campaign alert on dashboard and campaign detail
  • High spam rate alert strip (inbox < 70% today)
  • Placement stacked bar chart on campaign overview
  • Activity badges: rescued_from_spam, engaged_no_reply
  • Mailbox detail shows spam folder path and last rescue time

Verification

  1. Simulate spam placement in test logs
  2. Run rescuer job from Settings → Jobs
  3. Confirm per-log rescue status (not bulk sender match)
  4. After 3 high-spam days, campaign auto-pauses