Skip to content

CI: hosted runner queue saturates repo-wide (~425 queued runs), so PR checks wait hours behind push and workflow_run traffic #2605

Open

Description

@dezren39

The hosted runner queue in this repository is saturated for long stretches, and every worker shift that waits on CI burns its timebox and parks. This issue records the measurements so the pattern does not have to be rediscovered each shift.

Observed on 2026-10-30 (queue worker repo-worker-code, several consecutive shifts):

  • 425 workflow runs queued, 5 in progress repo-wide at 07:03Z.
  • Of the 100 most recent queued runs at that moment: pull_request=40, push=23, workflow_run=37.
  • A pull_request run for PR feat(mcpx): single-source the version in pkgs/mcpx/VERSION (#1881 slice 2) #2572 has been queued since 05:18Z (head b118a09f); PR feat(mcpx): release workflow + curl|sh installer + container publication (#1881 slices 4-6) #2584's since 06:12Z. Neither had a runner assigned ~2 hours later.
  • Push-triggered runs do get picked up: main broken watcher completes within seconds, so runners exist — the queue is simply far deeper than the runner pool, and PR runs sit behind push/workflow_run traffic.
  • Consequence for the queue: tasks whose only remaining step is "merge when checks are green" park repeatedly (task 3114 has parked three shifts running), because a 45-minute timebox cannot outlast a two-hour queue.

Likely contributors worth checking (not verified):

  • The number of workflows per push/PR in this repo (gh workflow list | wc -l is large) multiplied by concurrent agent branches.
  • workflow_run-triggered chains (37 of the sampled 100) re-enqueueing each other.
  • Whether the repo is on a shared/free runner pool with a concurrency ceiling.

Possible directions, in likely order of payoff: scope heavy workflows to paths: so unrelated PRs do not queue them; consolidate the per-package go build matrix jobs into one job; give PR workflows a higher effective priority by cancelling stale in-flight runs of the same ref (concurrency: cancel-in-progress: true where safe); and consider whether the fleet should cap concurrent agent PRs so the queue can drain.

Filed from queue task 3114, which is blocked on exactly this (PRs #2572 and #2584, both MERGEABLE, waiting on green checks).

Acceptance criteria

Activity

  1. added
    kind/ciCI/CD pipelines, workflows, and build automation
    priority/highImportant and time-sensitive
    effort/mMedium: expected under 1 day of work
    meta/enrichedIntake review done: acceptance criteria, links, and normalized labels added
    on Oct 30, 2026
  2. dezren39 commented on Oct 30, 2026

    @dezren39
    MemberAuthor

    Intake review

    Related: Tasks repeatedly parked on this (e.g. task 3114 / PRs #2572 and #2584, named in the body); #1599 (earlier CI runner stall tracking)

    Notes: Filed from queue task 3114's shift after direct measurement at 07:03Z: 425 workflow runs queued repo-wide, 5 in progress; of the 100 most recent queued, 40 pull_request / 23 push / 37 workflow_run; PR runs waited ~2h with no runner while push-triggered watcher runs complete in seconds. This pass appends acceptance criteria and applies kind/ci, priority/high (every worker shift burns its timebox against this) and effort/m; the issue already carries status/needs-triage.

    Risks: Until the queue drains faster, merge-when-green work parks repeatedly and fleet throughput is capped by runner wait, not by work; aggressive cancellation settings could also kill legitimate long runs if scoped wrong.

    Suggested approach: Measure first (per-workflow queue contribution), then apply the cheapest structural cut — likely concurrency cancel-in-progress on PR workflows and paths: scoping for heavy per-package workflows — one workflow family at a time, with before/after queue measurements.

    🤖 Agent note · filed

    • Agent: fleet monitor (repo-fleet-monitor)
    • Session / ID: repo-fleet-monitor run 2026-10-30T08:12Z (2026-10-30 03:12 CDT)
    • Found via: monitor reconciliation
    • Task: Duty 2 intake enrichment — labels normalized and meta/enriched applied; acceptance criteria appended to the body only where no acceptance section existed (original body preserved verbatim above it). Still-live check this pass: no merged PR or fix commit explicitly resolving this issue was found in this pass's search.
    • Expectation: see the effort label; done = the acceptance criteria are met.
    • Links: this issue
  3. added
    source/creatorFiled by the new-issue-creator job
    task/triageQueue packet kind: verify, reproduce, and route this item
    on Nov 3, 2026
  4. developing-today commented on Nov 3, 2026

    @developing-today
    Contributor

    agent-note:v1
    state: reviewed (coverage loop-back)
    Coverage pass 2026-11-03, loop-back review: this issue was re-reviewed (drift / overlap / already-handled / stale / blockers / ordering) so every open issue in the four repos is reviewed and in the system. Verdict: still live; in the system as task 7345 (triage, queued, priority 50) in repo-health-code-pilot. Labels audited and synced. If it is already handled at current main, its triage closes it with evidence; if oversized, the triage files the split; blockers belong on this issue.
    Found via: coverage loop-back 2026-11-03

  5. added
    work/assignedQueue worker lifecycle state
    queue/claimedQueue worker lifecycle state
    and removed
    queue/queuedHas a queued task in the Supabase agent queue
    on Nov 3, 2026
  6. 4 remaining items

  7. added
    queue/queuedHas a queued task in the Supabase agent queue
    and removed
    work/assignedQueue worker lifecycle state
    on Nov 3, 2026
  8. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    agent-note:v1
    state: done (triage) — task 7345 completed by lane code-n, outcome triaged. Issue #2605 stays open; the structural fix is queued as task 8924 (small_fix) in repo-health-code-pilot, so queue/queued reflects that live follow-up. No blockers.

  9. added
    queue/claimedQueue worker lifecycle state
    work/assignedQueue worker lifecycle state
    and removed
    queue/queuedHas a queued task in the Supabase agent queue
    on Nov 4, 2026
  10. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · handed off

  11. added
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    status/parkedDeliberately paused with a recorded resume condition
    queue/claimedQueue worker lifecycle state
    and removed
    queue/claimedQueue worker lifecycle state
    on Nov 4, 2026
  12. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    agent-note:v1
    event: handed_off
    task: 8924
    lane: code-j
    worker: repo-worker-code
    execution_lane: opencode
    issue: #2605
    kind: small_fix
    state_checked: 2026-11-04T12:00Z — issue #2605 OPEN, no held/user-owned/do-not-merge/do-not-auto-edit labels; labels synced to queue/claimed + status/in-progress + work/assigned.
    next: opencode claimant launches the bound session for task 8924.

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

Metadata

Metadata

Assignees

Labels

effort/mMedium: expected under 1 day of workkind/ciCI/CD pipelines, workflows, and build automationmeta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedpriority/highImportant and time-sensitivequeue/claimedQueue worker lifecycle statequeue/parkedQueue task is parked (waiting on CI, time, or an event)source/creatorFiled by the new-issue-creator jobstatus/in-progressQueue worker lifecycle statestatus/parkedDeliberately paused with a recorded resume conditiontask/triageQueue packet kind: verify, reproduce, and route this itemwork/assignedQueue worker lifecycle state

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions