Skip to content

Actions queue saturation: 120 open PRs + self-amplifying scheduler block all org merges (pg-erd-cloud: 0 merges since 2026-08-20) #1531

Description

@seonghobae

Symptom

ContextualWisdomLab/pg-erd-cloud has merged nothing to main since 2026-08-20 (~50 PRs piled up). Every new PR fails the required opencode-review check. Same pattern is expected across other org repos that use the central required workflows.

Root cause (investigated 2026-09-01)

  1. Required check opencode-review (.github/workflows/opencode-review.yml) dispatches repository_dispatch{merge-scheduler} then polls pulls/<n>/reviews for an opencode-agent[bot] head-SHA verdict for 90 min (for attempt in $(seq 1 180); sleep 30, timeout-minutes: 100), else fails closed.
  2. The verdict never arrives in time because the org Actions queue is saturated: ~148 queued runs vs ~6 in_progress, and growing tick over tick.
  3. Queue load, last ~24h (800-run sample):
    • pr-review-merge-scheduler.yml166 runs/day (self-triggers on push + every pull_request_target + every pull_request_review + workflow_run completion + */15 & */30 crons + repository_dispatch)
    • noema-review.yml — 87/day
    • strix.yml 39, plus osv/security/secret/scorecard/sbom/semgrep/python-security/codeql/close-empty at ~30/day each
    • repair-pr827-coderabbit-comments.yml52 runs / 3 days, all skipped (PR fix(coverage): replace stale LLVM runtime-boundary repair #827 is closed; on: pull_request has no branch filter so it fires on every .github PR event)
  4. The per-PR scan load is multiplied by ~120 open PRs in this repo (98 @seonghobae, 11 @cursor, 10 dependabot), oldest feat(coverage): add bounded PyO3 peer-evidence gate #789 from 2026-08-05. Many are month-old automation self-repair PRs that never merged; each new push re-runs ~10 scans. Self-amplifying.
  5. ~190 of 337 registered workflows are one-shot apply-pr*/finalize-pr*/one-shot-*/repair-pr*/export-pr* for long-closed PRs (608, 676, 759, 767, 782, 785, 787, 797, 952…). Most are dormant (no runs in 3 days) — orphaned registrations whose files are gone from main — so they are cleanup debt, not active load, except repair-pr827 above.

Actions taken this pass (safe, reversible)

  • Disabled repair-pr827-coderabbit-comments.yml (gh workflow disable 334949216) — closed PR, fired+skipped on every repo PR event.

Decisions needed from a maintainer (not safe to do autonomously)

  • Triage the ~120 open PRs. Most are @seonghobae automation-repair PRs; closing/rebasing the superseded ones removes the bulk of the per-PR scan load. An autonomous agent should not mass-close a human's PRs.
  • Whether to reduce pr-review-merge-scheduler.yml cron cadence (*/15 org-sweep → */30 or hourly) during the incident.
  • Whether to raise/relax the 90-min opencode-review poll ceiling or make it retry-on-rerun instead of fail-closed, so transient queue backlog doesn't block every repo.
  • Delete the ~189 dormant one-shot workflow registrations.

Workaround for downstream repos meanwhile

Re-run the failed opencode-review check after the queue drains; PRs with all other required checks green will pass once opencode-agent[bot] posts a current-head verdict.

Filed by the pg-erd-cloud autonomous review/merge loop.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions