Skip to content

Add jobs/dispatch endpoint and GitHub queued-jobs scanning - #10

Merged
chandlerhuff merged 1 commit into
mainfrom
feature/github-endpoints
Aug 12, 2026
Merged

chandlerhuff merged 1 commit into
mainfrom
feature/github-endpoints

Conversation

@chandlerhuff

Copy link
Copy Markdown
Member

What changed

  • Adds POST /api/v1/jobs/dispatch to the router and executor, which queues and places a job the router never received (or lost) exactly like a webhook-delivered job — by executor priority, honouring capacity and CPU/memory limits — and reports when no executor could take it.
  • Adds GET /api/v1/github/queued-jobs on the executor, which scans the installation's repositories for GitHub Actions jobs sitting in queued with no runner, annotated with whether this executor's labels/image accept them.
  • Adds a bounded, rate-limit-aware GitHubActionsScanner (cache, repo cap, concurrency limit, timeout, rate-limit floor) plus GitHubScanConfiguration and the GitHubQueuedJobsProviding protocol.
  • RouterPendingJob gains pinnedHostname so dispatch can target one executor through the existing hostCanRun placement loop.
  • Bumps API/spec version to 0.25.0; documents the new endpoints and the required Actions: read installation permission in the README.

Why

A GitHub Actions job can be reported queued with no VM ever starting for it — a webhook delivery was missed, or an executor lost the job. There was no way to find these or recover them without GitHub credentials of your own. The dispatch endpoint re-places a lost job through the normal placement path, and the queue scan surfaces what GitHub is still waiting on (annotated with which executor can run it).

@chandlerhuff
chandlerhuff merged commit f1c10d0 into main Aug 12, 2026
2 checks passed
@chandlerhuff
chandlerhuff deleted the feature/github-endpoints branch August 12, 2026 23:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant