Repository navigation
ci(dev tip): tip-dmg-build waits on the fleet, not a stalled Blacksmith queue - #25902
Conversation
…th queue The runner job's two-machine pick now passes --wait-owned (#25847's rule for verify): with no two owned Macs free and no Blacksmith label with two free, moving slots, verify and tip-dmg-build both wait on the owned pool with the shortest queue, which the owned-pool rescue watches. Run 40445038889's tip-dmg-build queued 25 min on Blacksmith macOS for 3 min of work. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-cc8bff1c3ddb4ec353c5
Bugbot needs on-demand usage enabledBugbot uses usage-based billing for this team and requires on-demand usage to be enabled. A team admin can enable on-demand usage in the Cursor dashboard. |
|
Owned by an agent session · session |
|
All contributors have signed the CLA ✍️ ✅ |
|
No actionable comments were generated in the recent review.
|
| Layer / File(s) | Summary |
|---|---|
Two-runner placement and fallback .github/workflows/cmux-next-dev-daily.yml, tests/test_cmux_next_dev_tip_feed.py |
The workflow requests two owned Macs and removes the one-Mac fallback for verify. The test expects the updated picker call and retains the one-machine fallback assertion. |
Priority:
Estimated code review effort: 2 (Simple) | ~10 minutes
Change: Bug fix
Possibly related issues
- Issue 14196 concerns macOS CI queue time and pool capacity. This change updates runner selection between the owned fleet and Blacksmith.
- Issue 22303 concerns queued
cmux-nextruns and runner availability. This change changes runner routing in the DEV workflow. - Issue 13325 covers owned Macs, Blacksmith fallback, and fleet reuse. This change updates that fallback behavior for the DEV tip build.
Possibly related PRs
- manaflow-ai/cmux#25442: Adds the runner-selection job in the same workflow, whose picker call this change updates.
- manaflow-ai/cmux#25880: Adds pool-placement logic for
tip-dmg-build; this change updates its picker call and fallback. - manaflow-ai/cmux#25847: Adds the
--wait-ownedflag used by the updated picker call.
Merge Risk: 
Minimal · up to 1d70a
-
No actionable merge-blocking risk is established; the runner placement change is ready to merge.
Pre-merge checks: 
25
-
Full details: Description check
-
Explanation
The description gives a detailed problem statement, resulting behavior, risk assessment, scope, and tests run. It does not use the template headings or include explicit Changelog, Proof, or Checklist sections, but the core review information is complete.
Full details: Docstring Coverage
-
Explanation
No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 0 functions across 1 files. (1 skipped: 1 unsupported.)
Full details: Cmux Cloud Persistent Session And Early Input
-
Explanation
PASS. The diff changes only the DEV daily GitHub workflow's macOS runner-pool selection and its assertions. It adds
pick 2 --wait-ownedand updates test expectations. It does not change Cloud terminal creation, cmux-tui clients, transports, manual renderers, PTY readiness, input routing, authentication, idempotency, revision fences, or leases.
Full details: Cmux Swift Actor Isolation
-
Explanation
The pull request changes only
.github/workflows/cmux-next-dev-daily.ymlandtests/test_cmux_next_dev_tip_feed.py. The authoritative diff contains no Swift files or Swift production changes, so it does not introduce or worsen Swift actor isolation issues.
Full details: Cmux Browser Automation Off-Main
-
Explanation
PASS: The pull request changes only
.github/workflows/cmux-next-dev-daily.ymlandtests/test_cmux_next_dev_tip_feed.py. The diff contains CI runner-pool selection and assertions, with nobrowser.*socket commands or changes toSources/TerminalController.swift,ControlCommandExecutionPolicy.swift, worker routing, WebKit, or AppKit. The browser automation rule is not applicable.
Full details: Cmux Cache Substitution Correctness
-
Explanation
PASS: The pull request changes only a GitHub Actions workflow and a Python test. It introduces no production Swift, TypeScript, or JavaScript change, and it does not substitute a cache for an authoritative read in a persistence, history, undo, or snapshot path.
Full details: Cmux No Hacky Sleeps
-
Explanation
PASS: The PR changes only a GitHub Actions workflow and a test. The workflow uses
--wait-ownedfor pool selection, but workflow YAML is explicitly out of scope when the wait is CI orchestration. No covered production TypeScript, JavaScript, shell, or build/runtime script changes introduce or worsen fixed sleeps, timers, polling, or wall-clock synchronization.
Full details: Cmux Algorithmic Complexity
-
Explanation
PASS. The production diff only changes the workflow command from
pick 2topick 2 --wait-ownedand updates comments. It adds no loop, collection scan, sort, filter, join, or per-target rescan. The picker handles a fixed runner-pool state and the changed job count is the constant2; the other changed file is test code.
Full details: Cmux Swift Concurrency
-
Explanation
The pull request changes only a GitHub Actions workflow and a Python test. The authoritative diff contains no Swift or other Apple source files, so it introduces no legacy Swift async, Combine, completion-handler, or fire-and-forget Task pattern.
Full details: Cmux Swift Package Boundaries
-
Explanation
PASS: The pull request changes only
.github/workflows/cmux-next-dev-daily.ymlandtests/test_cmux_next_dev_tip_feed.py. It introduces no production Swift changes, so the Swift package-boundary rule does not apply.
Full details: Cmux Swiftpm Lockfiles
-
Explanation
The PR changes only the macOS runner-pool selection in
.github/workflows/cmux-next-dev-daily.ymland related assertions intests/test_cmux_next_dev_tip_feed.py. It does not changePackage.swift, SwiftPM dependencies,.gitignore, Xcode package references, or anyPackage.resolvedfile. The SwiftPM lockfile conditions do not apply.
Full details: Cmux User-Facing Error Privacy
-
Explanation
The diff changes only an internal GitHub Actions runner-pool workflow and its test. The new
echotext is CI/operator diagnostic output and names Blacksmith, which the rule explicitly permits for internal CI and build tools. No changed text reaches a cmux app UI, product CLI, or product API, and no secret, credential, raw upstream error, or sensitive payload is exposed.
Full details: Cmux Full Internationalization
-
Explanation
PASS: The pull request changes only a GitHub Actions workflow and its Python test. The workflow edits runner-pool selection and operational comments; the test edits assertions. No user-facing Swift text, string catalog, web UI, metadata, API response, rendered markdown, changelog, or locale-specific data changes are present.
Full details: Cmux Swiftui State Layout
-
Explanation
PASS: The pull request changes only
.github/workflows/cmux-next-dev-daily.ymlandtests/test_cmux_next_dev_tip_feed.py. The diff contains no SwiftUI code,ObservableObject,@Published,@Observable,GeometryReader, or SwiftUI view changes. The SwiftUI state layout check is not applicable.
Full details: Cmux Architecture Rethink
-
Explanation
The diff changes only
.github/workflows/cmux-next-dev-daily.ymlandtests/test_cmux_next_dev_tip_feed.py. It contains no Swift architecture change, lifecycle ownership change, or Swift timing workaround. The check is not applicable.
Full details: Cmux Swift Auxiliary Window Close Shortcuts
-
Explanation
PASS: The pull request changes only
.github/workflows/cmux-next-dev-daily.ymlandtests/test_cmux_next_dev_tip_feed.py. It adds no Swift code and does not add or change any cmux-owned window. The auxiliary-window close-shortcut rule is not applicable.
Full details: Cmux Source Artifacts
-
Explanation
The PR changes only
.github/workflows/cmux-next-dev-daily.ymlandtests/test_cmux_next_dev_tip_feed.py. Both are intentional workflow and test source files. The diff adds no logs, screenshots, recordings, temporary directories, caches, build output, dependency checkout, or broad artifact directory.
Full details: Cmux No Test Or Debug Seam In Production Source
-
Explanation
PASS. The pull request changes only
.github/workflows/cmux-next-dev-daily.ymlandtests/test_cmux_next_dev_tip_feed.py. It changes no Swift file under a productionSources/path, so it cannot introduce a test or debug seam covered by this check.
-
Finishing Touches: 💡 1
-
🛠️ Fix failing CI checks: 💡
-
- Commit to this branch
- Create a new PR
📝 Generate docstrings
-
- Commit to this branch
- Create a new PR
🧪 Generate unit tests (beta)
-
- Commit to this branch
- Create a new PR
-
- Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.
Comment @coderabbitai help to get the list of available commands.
|
cmux status (one comment, edited in place; each line is updated by the job that owns it) Merge receipt for |
Follow-up to #25880. DEV publish 40445038889 placed
tip-dmg-buildon the owned pool first, but no mini was free at pick time, so the job fell through toblacksmith-6vcpu-macos-26. It then queued 25m07s there for 2m57s of work.This applies #25847's rule (merged as 4512284), which
verifyalready uses, totip-dmg-buildthrough the same--wait-ownedpath ine2e_runner_pool.py. The runner job's two-machine pick is nowpick 2 --wait-owned.simple_pool_picker.pickthen works like this:verifyandtip-dmg-buildboth take it, as before.tip-dmg-buildtakes Blacksmith macOS, andverifyalone triespick 1 --wait-owned, as before.Nothing changes for fork runs, the bot's re-runs or
tip-deltas(Sparkle and R2 keys), and nothing else in the job does either: still no secrets, and the same artifact hand-off to the Linux signer. No hosted macOS label is added.The diff is 2 files and 16 lines: the workflow pick step and the
test_cmux_next_dev_tip_feed.pyassertion.tests/test_ci_pr_runner_pool.py::test_auto_pick_waits_on_the_fleet_only_with_wait_ownedalready covers how the flag is wired.Risk
In the third case,
tip-dmg-buildnow queues on an owned mini instead of Blacksmith, which could delayverifyon the same pool. The rescue's queue budget bounds that wait. As in #25880, the job holds no secret, token or environment.Tests run locally:
tests/test_cmux_next_dev_tip_feed.pyPASS, and the--wait-ownedunit test passes.Agent session: agent session
🤖 Generated with Claude Code
Need help on this PR? Tag
@codesmith-botwith what you need.Summary by CodeRabbit