Fixed
- Worker realtime capacity under campaign/status storms. Convert
WORKER_FAST_LANE_RESERVEDloops into a true realtime lane via atomicclaim_next_realtime_outbox_job. Inbound/user-preference webhooks, non-campaign transactional sends, and reactions stay admitted while delivery-status receipts and campaign/batch template traffic are excluded regardless of numeric priority. Prevents the 2026-07-21 failure mode where ~4,000 campaign template jobs at priority 5 preempted priority-10 inbound/reply work and produced multi-minute inbound queue waits. - Campaign activation/priority database guard. Transactional migration
20260721000000_outbox_realtime_lane_campaign_guard.sqlenforces the priority-40 floor for campaign-owned template dispatch and fails closed on malformed/cross-workspace/inactive campaign references. Standalone migration20260721000001_outbox_realtime_lane_index.sqlbuilds the realtime partial index concurrently.
Rollout
Apply both migrations before deploying the worker. Reserved realtime loops and the Realtime wake path call the new RPC.
See docs/operations/worker-realtime-lane-campaign-guard-rollout.md.