Problem
src/github/webhook.ts:44 records the event status: queued then calls c.env.JOBS.send with no try/catch, and no sweeper requeues stuck queued rows. If the queue send rejects, the row stays queued forever and the dedup check suppresses GitHub redeliveries → silently dropped PR gate/advisory.
Fix
Wrap JOBS.send in try/catch → mark row error on failure (dedup excludes status===error, letting redelivery through); and/or a scheduled sweeper re-enqueues queued rows older than N minutes.
Acceptance
- Simulated queue-send failure leaves the row recoverable (redelivery processes it) — test covers.
Problem
src/github/webhook.ts:44 records the event
status: queuedthen callsc.env.JOBS.sendwith no try/catch, and no sweeper requeues stuckqueuedrows. If the queue send rejects, the row stays queued forever and the dedup check suppresses GitHub redeliveries → silently dropped PR gate/advisory.Fix
Wrap JOBS.send in try/catch → mark row
erroron failure (dedup excludes status===error, letting redelivery through); and/or a scheduled sweeper re-enqueuesqueuedrows older than N minutes.Acceptance