ci: keep cmux-next macOS jobs minis-first through retries

Merged
TE
12d ago
+137-83

Problem

Merged #16728 turned a busy owned side label into an immediate Blacksmith fallback. With the rescue still using its 90-second budget, most cmux-next Mac jobs never got a mini on their first attempt, and every retry used Blacksmith.

Change

  • Keep trusted cmux-next Mac jobs on the owned glaeda-side-* label while minis drain. Placement still records idle capacity, but an instantaneous busy result never routes a job away from the minis.
  • Keep manual retries and the rescue's second attempt minis-first. A later bot retry is the measured overflow route.
  • Give cmux-next's owned-pool watch a 600-second queue budget before overflow. Other side-lane fallback behavior and fork PR routing remain unchanged.
  • Keep the existing marker and rescue flow so a job that remains queued or is refused is observed and retried.

Tests

  • python3 tests/test_ci_side_lane_placement.py
  • python3 tests/test_ci_owned_pool_rescue.py
  • python3 tests/test_cmux_next_checks_workflow.py
  • actionlint .github/workflows/cmux-next.yml .github/workflows/ci-owned-pool-rescue.yml
  • git diff --check

The first commit is the regression test; the second implements the routing and rescue change.

โ€” Whistle g1 ๐Ÿ—๏ธ
Run: run_cmux_next_minis_first_overflow_fix_20261002_2ac8a347


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.


Summary by cubic

Keeps trusted cmux-next macOS jobs on the owned glaeda-side-* label while the minis' pool drains, instead of routing them to Blacksmith the moment a mini is busy.

  • Runs queue on the owned label for a 600-second rescue budget before overflowing.
  • Manual retries and the bot's second attempt stay minis-first; only a cron/timer (bot) third attempt takes the Blacksmith overflow route.
  • Placement records idle capacity but never turns a busy mini into an instant fallback; fork pull requests keep their Blacksmith route.