Drain claims outbox rows as sent before the provider acks. Late ERROR webhooks were regressing delivered rows to failed; late DELIVERED could upgrade exhausted failures. Gate webhook updates by allowed source status. Co-authored-by: cynarAI <cynarAI@users.noreply.github.com>