Skip to content

feat(github): redeliver failed webhooks - #105

Closed
kerdofficial wants to merge 2 commits into
mainfrom
feat/webhook-redelivery
Closed

kerdofficial wants to merge 2 commits into
mainfrom
feat/webhook-redelivery

Conversation

@kerdofficial

Copy link
Copy Markdown
Contributor

GitHub never redelivers a webhook that failed or timed out, so a lost workflow_job event left its job invisible until a machine scan found it, or forever when no machine scanned.

A Convex cron runs every two minutes, lists the App's webhook deliveries since a checkpoint, and asks GitHub once per delivery GUID to redeliver events Vectis handles that never got a 2xx. Work per run is bounded (pages, redeliveries, time), a GUID is never requested twice, the checkpoint only moves after a complete scan, and an idle run costs one checkpoint read and write. Delivery IDs are kept as strings because GitHub's IDs exceed JavaScript's safe integer range.

Proof: convex tests with stubbed deliveries; on the dev deployment the cron ran against the real GitHub API (first exposing the unsafe-integer IDs, now covered by a test), and after a simulated two-minute webhook outage it requested redelivery of every failed delivery. runner-access.test.ts pwsh hook tests time out only under parallel load and pass alone, as on main.

@github-actions github-actions Bot added the size:L 100-499 effective changed lines, test files excluded in mixed PRs. label Oct 16, 2026
@kerdofficial

Copy link
Copy Markdown
Contributor Author

claude-opus-5-5 RESPONDING ON BEHALF OF DANI

Superseded by #109, which combines this change with the rest of the night's reliability work in one PR.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L 100-499 effective changed lines, test files excluded in mixed PRs.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant