ci(nightly): retry secret-free Mac jobs on the fleet pool

TE
6d ago
+59-7

Leo: "why are changes to these not in my current nightly". The freshness rule is that each feed's newest published source stays within 30 minutes of its branch's newest landing.

A failed-jobs rerun retains the old picker result. Run 41253243235, attempt 2, queued its DMG image on the Blacksmith alternate after the app build and notarization succeeded. The three secret-free Mac jobs now rejoin the configured owned nightly pool, then the owned side pool, before Blacksmith once on attempt 2 retaining attempt 1's picker. Later reruns retain the existing Blacksmith alternate, so an unavailable fleet can overflow. Fresh picks keep precedence, the fleet switch still applies, and Xcode selection follows the chosen route. The secret-bearing DMG signer is unchanged.

The affected jobs compile nothing and reuse the built app and DMG artifacts; their existing warm-source exemptions still apply. Prior art: #26891 established current-attempt owned selection and matching Xcode pins; the existing legacy verify already has a pooled fallback. #27444 concerns classic's separate picker and is not changed here.

Validation: fleet tests pending. Regression cases execute all three runner and Xcode expressions for stale/fresh picks, attempts 2/3/4, disabled fleet routing, missing nightly/side pools, other branches, and forks.

Performance:

MetricBeforeAfterDeltaHarness
Secret-free Mac jobs forced to Blacksmith on a stale-picker rerun with a configured fleet pool30-3runner-expression regression cases
Blacksmith minutes/dayNot measuredNot yet measured after deploymentNo measured claimNo new build or test work; eligible reruns move to fleet

Agent session: agent session
🤖 Generated with Claude Code


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


Summary by cubic

Fixes nightly CI reruns so secret-free Mac jobs on nightly-next with fleet routing enabled rejoin the owned fleet pool on attempt 2 instead of queuing on the Blacksmith alternate with attempt 1's stale picker.

On a failed-jobs rerun, attempt 2 now uses the configured owned or side pool runner and the matching PR Xcode pin. Attempts 3+ keep the existing Blacksmith overflow, and fresh runs keep their normal pool selection. Adds regression tests covering stale and fresh picks, attempts 2/3/4, disabled fleet routing, missing pools, other branches, and forks.