ci: use shared runner state in remaining picker steps
Five remaining picker steps omit the shared runner-state input and always list runners through the routing App. Bind the trusted repository variable directly on ci-macos admission/late placement, cmux-next DEV daily/landing placement, and the internal archive picker. Their existing shared reader keeps the five-minute source-age limit and live-API fallback. Admission and DEV placement retain their existing warm-cache ranking.
The requested sixth location, dev-landing-compile, only runs dev_landing_place.py gap; that command reads git history and returns before constructing a GitHub client. It remains outside the state binding. Extend the existing workflow-scoping audit to cover the five actual picker steps and distinguish the git-only subcommand from placement.
Document the capacity contract beside REQUIRE_LIVE_CAPACITY: publication waits 120 seconds between refresh attempts during a repair pass, busy flags describe that observation, and delayed jobs can age the workflow context past five minutes and use live fallback. The reader limit stays five minutes.
Follow-up to #31834 and its review. Request: “add CI_RUNNER_STATE to six picker steps that still read live” and “either a tighter age limit for busy reads under REQUIRE_LIVE_CAPACITY or documenting the 120 s refresh.” Direct source inspection narrowed the first item to five real picker steps.
Performance
| metric | before | after | delta | harness or run link |
|---|---|---|---|---|
| routing-App runner-list requests/h at 1000 combined picker invocations/h with fresh state | 4000 | 0 | -4000 (-100%) | same workflow-env-to-shared-reader harness, 200 invocations of each changed step; synthetic complete census |
This isolates runner-list reads; it is not a claim about total installation traffic. Fresh state is required for the saving.
Observed / Not run
python3 -m unittest tests.test_ci_pr_runner_pool.SharedRunnerStateTests: 11 tests pass. The same command at the test-only commit fails for missing state in all three changed workflows; the bindings fix those failures. python3 tests/test_cmux_next_dev_landing_workflow.py: 7 tests pass. The self-hosted runner guard and workflow guard-wiring check pass. YAML comparison confirms each changed job differs only by the picker-step state input, and dev-landing-compile is unchanged. The same 1000-call harness records 4000 runner-list requests before and zero after. Live quota-hour evidence will be added after collection.
Changelog
none
Agent session: agent session