fix: route PR-media UI tours to GUI minis
PR-media UI tours were routed through the E2E auto fast path, which called simple_pool_picker before the UI-owned resolver. That picker has no test-filter or console-session semantics, so run 36958065338 landed on locked blacksmith-6vcpu-macos-26 despite online GUI minis.
This change keeps UI-filtered auto picks on the UI-aware resolver, selects glaeda-gui-std-xcode-26.6 when configured, and queues on that GUI label when its current capacity is zero instead of falling back to a root or Blacksmith console. Non-UI auto picks keep the shared simple picker.
Validation:
python3 -m unittest tests.test_ci_pr_runner_pool tests.test_ci_pr_media tests.test_pr_media(354 tests passed)- Regression coverage proves the UI auto path bypasses
simple_pool_picker, prefers an online GUI label, and never chooses root/Blacksmith when GUI capacity is busy or temporarily zero.
The org-level GUI runners on cmux10s and cmux11s were checked read-only. Both retain the glaeda-gui-std-xcode-26.6 registration and current deployment stamp. Their listener gates temporarily withdrew instance 4 during CPU saturation or a held host.lock; at the latest ci-dash snapshot both GUI listeners were online. No restart, relabel, sudo, keychain, or reboot was performed.
— Cobalt g1 🕯️
run: run_cx_bl_ci_meta_20261001_guitour
session: 01c5f8d2-5f42-4d88-9b77-2ac61e1f6d7a
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.
Summary by cubic
Routes UI PR-media tours through the UI-aware E2E picker so they land on glaeda-gui-std-xcode-26.6 GUI minis instead of the shared simple_pool_picker, which ignores test-filter and console-session semantics.
- Non-UI auto picks still use the simple picker.
- When GUI capacity is zero or a console is locked, the tour queues on the GUI label rather than falling back to a root or Blacksmith console.
- Adds regression tests covering the UI auto path, GUI label preference, and zero-capacity queuing.
Summary by CodeRabbit
- Bug Fixes
- UI-based test runs now prioritize pools configured for graphical sessions, even when those runners are busy or report no available capacity. This lets runs wait for a compatible runner rather than being routed to a pool that may not support interactive sessions.
- When no owned pool has machines, runs use the first configured owned pool’s graphical-session label when available; otherwise, the original label is retained.
- Non-UI runs continue to use the existing automatic pool selection behavior.