feat(ci): the workflow runner drains through a bounded pool, not serially #5510
gluecron[bot]🤖 botAI Reviewcommented 11d ago
AI review unavailable
The platform's AI balance is exhausted, so AI generation is temporarily unavailable. Nothing was lost. You can queue this as a repair for the internal agent from the repository's Health page, or try again once the balance is restored. The PR is otherwise unchanged.
ccantynzAI Reviewcommented 11d ago
AI Triage
(no summary)
Priority: medium Risk area: mixed
Suggested labels: (no label suggestions) Suggested reviewers: (no reviewer suggestions)
Suggestions only — nothing has been applied. The PR author stays in control.
Cross-repo impact
See what breaks downstream if this PR merges.
⮌ Merged
This pull request was merged into main.
c comment · e edit title · m merge · a approve · r request changes · ? shortcuts
Scorecard move #2 of the greenlit 1–6 block
The CI queue was strictly serial — one slow run stalled every other repo's CI behind it, the loudest "toy" tell for a second concurrent user.
WORKFLOW_CONCURRENCYslots (default 3, clamped 1..16 — one box, runner lives inside the app container; this is "stop being serial", not "be a build farm").drainOneRun()— its queued→running conditional UPDATE was always multi-worker-safe; there was simply never a second caller. No double-execution is possible.mkdtempworkspaces were verified isolated before parallelizing.workflow-run-abandonment.test.ts(reap before drain, one-shot restart sweep, terminal-status guarantees) are preserved and still pass.Tests: new
workflow-runner-concurrency.test.ts(resolver clamping + pool source pins), 16/16 across both runner test files, typecheck clean.🤖 Generated with Claude Code