ci: allocate only the requested iOS simulator family
An iPhone-only manual dispatch currently allocates both iPhone and iPad macOS jobs, then spends a runner on an iPad job whose steps only say “Skipping ipad.” Select and validate the requested family in the existing Linux routing job, then expand the macOS matrix from that output. Missing/default and both inputs retain both families; invalid inputs fail before Mac allocation.
Run names now include the requested ref, package or simulator suite, test filter, family, and requested iOS version, so distinct manual iterations are visible in Actions.
This extracts only family selection from the broader draft #13600. Simulator build-once/product-transfer work remains there; this change does not reuse products across revisions or cancel legitimate manual runs.
Validation: four dispatch regression tests pass, including execution of the workflow's real matrix-selector script for missing, empty, both, iPhone, iPad, and invalid inputs. The runner-admission safety suite and git diff --check pass. The first commit demonstrates the missing selector and run-name regression; the second implements them.
Summary by cubic
Manual iOS dispatches now select and validate simulator families in the Linux routing job before allocating macOS runners. Only requested families enter the matrix and execute tests, replacing the old behavior of allocating and then skipping unrequested jobs.
- Missing, empty, and
bothinputs select both families;iphoneandipadselect one; invalid values fail before Mac allocation. - Removed stale skip guards so selected matrix members run normally.
- Run names include the ref, package or simulator suite, test filter, family, and iOS version.
- Tests cover matrix selection, run names, resolved refs, runner admission, and workflow formatting.
Summary by CodeRabbit
- Workflow Improvements
- iOS simulator runs now target only the requested device family, or both iPhone and iPad when both are selected.
- Run titles now show the selected ref, package, filter, device family, and iOS version, making runs easier to identify.
- Unsupported device-family selections now produce an error.