Skip to content

fix(ci): seven workflows can never run since #963 — cancel-in-progress: true combined with queue: max fails every run at startup #970

Closed

Description

@dezren39

Problem

PR #963 (commit ce6c4f00e2, merged 2026-10-30T08:24:07Z as 198b34765d, "cancel-in-progress everywhere") flipped cancel-in-progress: false → true in seven workflows that also set queue: max in the same concurrency block:

  • .github/workflows/docs-update.yml
  • .github/workflows/jules-daily-upstream-sync.yml
  • .github/workflows/main-broken.yml
  • .github/workflows/models-snapshot.yml
  • .github/workflows/opencode.yml
  • .github/workflows/review.yml
  • .github/workflows/stats.yml

GitHub Actions rejects that combination: queue: max is only valid when cancel-in-progress is false (the run cannot both cancel the in-progress run and queue behind it). Every run of these seven workflows since the merge fails at startup with zero jobs — no step ever executes.

This is the exact failure already fixed in dezren39/nix: nix #1174 / PR #1175 flipped opencode.yml back to cancel-in-progress: false while retaining queue: max, per that repo's ci-policy.md. main-broken.yml's own header comment still documents the invariant this change broke: "cancel-in-progress stays false, and this workflow never triggers on issues/pull_request_target, so queue: max is valid here" — the code now says true.

Verified this run (main afbe903e5b)

  • Diff of ce6c4f00e2 for stats.yml, review.yml, opencode.yml, main-broken.yml: the only change in each is cancel-in-progress: false → true beside an unchanged queue: max. The commit message states the intent ("every workflow touched here now sets cancel-in-progress: true, groups unchanged").
  • Run history: review.yml push runs 41026193869 (08:24:12Z, the ci: main-only workflow triggers, cancel-in-progress everywhere #963 merge push itself), 41028173095, 41028386720, 41028652184, 41029254767, 41029263067, 41031608536, 41032111192 — all completed/failure. stats.yml push runs show the same unbroken failure streak from 41026195101 (08:24:12Z) onward; the last pre-ci: main-only workflow triggers, cancel-in-progress everywhere #963 stats run (schedule, 2026-10-29T18:11:05Z, 40928384485) completed normally (skipped by its repo guard).
  • gh run view 41031614929 (main-broken.yml @ afbe903e): conclusion: failure, jobs: [] — a startup rejection, not a job failure. Seven workflows failed this way within 5 seconds of the afbe903e push (09:11:27–09:11:32Z): review, stats, docs-update, jules-daily-upstream-sync, main-broken, models-snapshot, opencode.
  • Grep on current main: 13 workflow files carry queue: max; exactly the 7 above also carry cancel-in-progress: true. The other 6 keep false and are unaffected.
  • Impact beyond noise: main-broken.yml is the watcher that files main-broken issues for the main-tier workflows — it cannot run, so the remediation chain is blind while it is broken. review.yml / opencode.yml (issue_comment automation) and models-snapshot.yml / docs-update.yml (push automation) are likewise dead on every trigger.

Fix shape (per the nix #1175 precedent)

Flip cancel-in-progress back to false in exactly those 7 workflows, retaining queue: max and the existing groups. Do NOT remove queue: max — that reintroduces the silent-drop problem closed by #179 ("a third arrival silently drops the pending run"). No other workflow changes; the main-only trigger policy from #963 stays as Drew ordered it.

Acceptance criteria

  • The 7 listed workflows set cancel-in-progress: false with queue: max retained and concurrency groups unchanged; no other workflows are touched.
  • After merge, a push to main produces runs of these workflows that start (jobs appear) instead of 0-job startup failures — verify at least stats/review/main-broken on the merge push.
  • The stale comment in main-broken.yml once again matches the code (it already states the correct invariant; no comment change needed if the flip lands).

Dedup: searched open and closed issues for "concurrency queue" and "cancel-in-progress" — #179/#156/#151/#74/#133 cover earlier queue:max additions and group sharing, none covers the #963 flip; no open issue tracks these startup failures.

Activity

  1. added
    kind/bugSomething isn't working (prefixed form of the classic bug label)
    task/small-fixQueue packet kind: bounded fix with reproduction and targeted tests
    source/creatorFiled by the new-issue-creator job
    priority/highImportant and time-sensitive
    area/ciCI, workflows, and build infrastructure
    effort/xsTrivial: expected under 30 minutes of work
    on Oct 30, 2026
  2. dezren39 commented on Oct 30, 2026

    @dezren39
    Author

    🤖 Agent note · filed

  3. dezren39 commented on Oct 30, 2026

    @dezren39
    Author

    🤖 Dispatcher hand-back — executor-saturated · openchamber-dispatcher run 2026-10-30 04:30 CDT

    • Queue task: 3901 (repo-health-opencode-pilot, small_fix, low risk, no flags, priority 90 / priority/high, effort/xs, timebox 20m) ↔ this issue (fix(ci): seven workflows can never run since #963 — cancel-in-progress: true combined with queue: max fails every run at startup #970). Packet verified this run on direct Supabase reads: task queued att 0/2 (enqueued 2026-10-30T09:29:40Z by the creator run that filed fix(ci): seven workflows can never run since #963 — cancel-in-progress: true combined with queue: max fails every run at startup #970), progress empty, and still queued att 0/2, progress empty, at the pre-posting verification read; issue OPEN via fresh gh reads; labels clean (kind/bug, task/small-fix, status/needs-triage, source/creator, priority/high, queue/queued, area/ci, effort/xs — no held / user/owned / do-not-merge / do-not-auto-edit, no work/*); no competing PR (fresh gh pr list searches for 970 and for cancel-in-progress both returned none open); no prior executor-saturated hand-back on this issue (comment scan: 1 comment total — the creator filing note).
    • Why handed back: the laptop OpenChamber location is over its practical cap of 12 live sessions (Drew 2026-10-27). Single server instance only (pid 2536772, OpenChamber 2.5.0, serverId LgSj5VlhWhEdG-5AgZ5DNY5twgI_0CGm8HXdpI_SYe8, startedAt 2026-10-30T08:27:11.947Z — unchanged at run end). This run's /api/session-activity reads at run start (~04:31 CDT) and run end both show 19 live sessions, all idle, 0 free slots — 7 over cap. No session was launched for this task. The concurrent babysitter round (04:17–04:30 CDT) corroborates: 19 live, all idle, at its round-end read.
    • Pools (gate state, fresh live read 04:32 CDT, laptop /api/quota/*; raw: dispatch-packets/quota-2026-10-30-0430.json.txt): meta OPEN — 5h 33% (reset 8:40 AM) / weekly 34% (reset Sun Nov 1 6:00 PM), plan "Muse Code High Usage". codex OPEN — active credential "OpenAI" ok, weekly 44% (reset Wed Nov 4 12:35 AM), credits 0. So pool headroom existed; saturation is slots only. CLOSED / WALLED (live-verified): opencode-go monthly 100% on BOTH credentials (Personal reset Mon Nov 2 9:02 PM; Lab reset Fri Nov 6 11:55 PM); cline-pass monthly 100% (reset Thu Nov 5 7:22 PM); openrouter monthly 100% (reset Sat Oct 31 7:00 PM). Failed reads named: claude ok:false "Rate limited. Retrying soon." (standing); openai endpoint "Unsupported provider" (not configured); opencode-go "Home" credential — no active Go subscription / unreadable response. deepseek ¥44.29 is a PAYG balance — never a routine route.
    • Queue state: the task remains queued, attempts 0, visible to the owning lane — there is no targeted claim/park verb for a dispatcher hand-back (the known binding gap, fix(script): stats.ts fetches have no deadline and buffer unbounded .json() bodies — PostHog, npm downloads, and the GitHub releases pager #1337/fix(changelog): read upstream changelog through a 1 MiB capped reader #1272), so no park verb was misfired at the wrong task. This comment is the hand-back record with reason class executor-saturated; the next dispatcher run with a free slot should dispatch it (Fast → opencode-route/speed if that route's pool is open at the time, else the open Meta/Codex-backed route — route id only, per Drew's 2026-10-29 route-only rule; this is mechanical, well-specified work: flip cancel-in-progress back to false in exactly the 7 named workflows, keeping queue: max and concurrency groups, per the nix Preserved branch: sweep/61-workflow-timeouts — decision needed (merge / cherry-pick / drop) #1174/PR Preserved branch: sweep/63-runscript-windows — decision needed (merge / cherry-pick / drop) #1175 precedent), or a lane may claim it if urgent.
  4. dezren39 commented on Oct 30, 2026

    @dezren39
    Author

    🤖 Agent note · picked up

  5. added
    work/self-assignedAn agent grabbed this item directly, outside the queue
    and removed
    queue/queuedHas a queued task in the Supabase agent queue
    on Oct 30, 2026
  6. dezren39 commented on Oct 30, 2026

    @dezren39
    Author

    🤖 Agent note · done — fixed and merged

    • Agent: issue sweep (issue-sweep-rotating)
    • Session / ID: issue-sweep-rotating run 2026-10-30 05:24 CDT
    • Task: fix(ci): seven workflows can never run since #963 — cancel-in-progress: true combined with queue: max fails every run at startup #970 fix complete. PR fix(ci): restore cancel-in-progress: false on the seven queue: max workflows #976 MERGED (squash adaee6e542), laptop worktree ~/git/fleet/970-queue-max-cancel, branch sweep/970-queue-max-cancel (deleted on merge).
    • Change: exactly 7 one-line flips — cancel-in-progress: true → false in docs-update, jules-daily-upstream-sync, main-broken, models-snapshot, opencode, review, stats — queue: max and groups retained, no other files.
    • Post-merge verification (acceptance): on the merge push to main adaee6e542, opencode and review runs now START: run 41041222038 has job opencode and concluded skipped by the fork's repo guard (the normal pre-ci: main-only workflow triggers, cancel-in-progress everywhere #963 behaviour), instead of the previous 0-job startup failure. stats/docs-update/models-snapshot did not trigger on this push (their triggers are not push on these paths); main-broken fires on workflow_run completion of test/check, which are still QUEUED in the fleet runner backlog — its first post-fix run is still owed when those complete.
    • Queue bookkeeping: cancel of task 3901 was attempted per protocol and returned cancel_repo_task: task 3901 is not queued or parked (the dispatcher hand-back at 04:30 CDT had already moved it out of queued/parked) — recorded here, not retried.
  7. dezren39 commented on Oct 30, 2026

    @dezren39
    Author

    🤖 Agent note · closed — already done (queue task 3901)

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/ciCI, workflows, and build infrastructureeffort/xsTrivial: expected under 30 minutes of workkind/bugSomething isn't working (prefixed form of the classic bug label)priority/highImportant and time-sensitivesource/creatorFiled by the new-issue-creator jobtask/small-fixQueue packet kind: bounded fix with reproduction and targeted tests

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions