Skip to content

ci: allocate only the requested iOS simulator family - #13863

Merged
teamleaderleo merged 3 commits into
manaflow-ai:mainfrom
teamleaderleo:ci/ios-requested-family-matrix
Sep 23, 2026
Merged

teamleaderleo merged 3 commits into
manaflow-ai:mainfrom
teamleaderleo:ci/ios-requested-family-matrix

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Sep 23, 2026 •

Copy link
Copy Markdown
Collaborator

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 both inputs select both families; iphone and ipad select 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.

Written for commit 3a6a149. Summary will update on new commits.

Review in cubic

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.

@coderabbitai

coderabbitai Bot commented Sep 23, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository: manaflow-ai/cmux/.coderabbit.yaml

Review profile: ASSERTIVE

Plan: Advanced

Run ID: 8ad46386-7346-4502-bd98-14bd73d0af96

📥 Commits

Reviewing files that changed from the base of the PR and between a0c9b34 and 3a6a149.

📒 Files selected for processing (2)
  • .github/workflows/test-ios.yml
  • tests/test_ios_workflow_dispatch_ref.py

Included review availability: Your plan provides up to 10 included reviews per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

The workflow now resolves requested iOS simulator families before matrix expansion. It runs selected family entries without per-step family skip guards and labels runs with dispatch inputs. Tests cover family selection, matrix wiring, run-name content, and related workflow assertions.

Changes

iOS simulator dispatch

Layer / File(s) Summary
Resolve dispatch inputs and matrix
.github/workflows/test-ios.yml, tests/test_ios_workflow_dispatch_ref.py
The workflow maps device_family to a JSON family array, uses it for the simulator matrix, and formats the run name from dispatch inputs. Tests check the mapping, matrix wiring, run-name content, and related workflow assertions.
Run selected simulator families
.github/workflows/test-ios.yml
The workflow removes per-step guards for unrequested families and removes the skip step. Cache save conditions retain their seed, ref, and family checks.

Priority: ⬇️ Low

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Bug fix

Sequence Diagram(s)

sequenceDiagram
  participant DispatchInput
  participant FamiliesStep
  participant SimulatorMatrix
  DispatchInput->>FamiliesStep: device_family input
  FamiliesStep->>SimulatorMatrix: device_families JSON output
  SimulatorMatrix->>SimulatorMatrix: Expand selected family entries
Loading

Merge Risk: ⚪ Minimal · up to 3a6a1

No actionable merge-blocking issue is established; the change is ready for normal merge checks.

🚥 Pre-merge checks | ✅ 24 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 4 functions across 1 files. (1 skipped: 1 … Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (24 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely describes the main change: allocating only the requested iOS simulator family.
Description check ✅ Passed The description explains what changed and why, and reports the tests and validation performed. It does not include the template’s review trigger or checklist, but the core summary and testing informat…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Cmux Cloud Persistent Session And Early Input ✅ Passed PASS. The reviewed diff changes only .github/workflows/test-ios.yml and tests/test_ios_workflow_dispatch_ref.py. It selects iOS simulator families before allocating runners and tests that workflow…
Cmux Swift Actor Isolation ✅ Passed The reviewed diff changes only .github/workflows/test-ios.yml and tests/test_ios_workflow_dispatch_ref.py; it contains no Swift files or production Swift changes. The custom check does not apply.
Cmux Swift Blocking Runtime ✅ Passed The pull request changes only .github/workflows/test-ios.yml and tests/test_ios_workflow_dispatch_ref.py. It introduces no production Swift changes, so the Swift blocking-runtime check does not ap…
Cmux Browser Automation Off-Main ✅ Passed The diff changes only .github/workflows/test-ios.yml and tests/test_ios_workflow_dispatch_ref.py. It contains no browser socket automation commands, WebKit/AppKit operations, worker-router changes…
Cmux Expensive Synchronous Load ✅ Passed The check applies to production Swift changes. The reviewed diff changes only .github/workflows/test-ios.yml and tests/test_ios_workflow_dispatch_ref.py; it contains no Swift source changes or age…
Cmux Cache Substitution Correctness ✅ Passed The reviewed diff changes only .github/workflows/test-ios.yml and tests/test_ios_workflow_dispatch_ref.py. It contains no production Swift, TypeScript, or JavaScript changes, so the cache-substitu…
Cmux No Hacky Sleeps ✅ Passed The diff changes only .github/workflows/test-ios.yml and tests/test_ios_workflow_dispatch_ref.py. The repository rule excludes GitHub Actions workflow YAML from this check. The test additions use …
Cmux Algorithmic Complexity ✅ Passed The changed production logic is a shell case selector for the fixed both, iphone, and ipad choices. It does not scan user-owned collections, repeat scans per target, sort or filter records, or…
Cmux Swift Concurrency ✅ Passed The pull request changes only .github/workflows/test-ios.yml and tests/test_ios_workflow_dispatch_ref.py. The reviewed diff contains no Swift source changes, so it introduces or expands none of th…
Cmux Swift @Concurrent ✅ Passed The pull request changes only .github/workflows/test-ios.yml and tests/test_ios_workflow_dispatch_ref.py. The reviewed diff contains no Swift files or Swift function changes, so the Swift `@concur…
Cmux Swift Package Boundaries ✅ Passed The Swift package-boundaries check does not apply to this pull request. The authoritative diff changes only .github/workflows/test-ios.yml and tests/test_ios_workflow_dispatch_ref.py; it contains …
Cmux Swiftpm Lockfiles ✅ Passed The pull request changes only .github/workflows/test-ios.yml and tests/test_ios_workflow_dispatch_ref.py. The workflow diff changes simulator-family selection, run naming, and stale skip guards. I…
Cmux Swift Logging ✅ Passed The reviewed pull request changes only .github/workflows/test-ios.yml and tests/test_ios_workflow_dispatch_ref.py. The diff contains no Swift source changes, so the production Swift logging check …
Cmux User-Facing Error Privacy ✅ Passed The diff changes only the iOS GitHub Actions workflow and a workflow test. The added error is an internal CI diagnostic, and the run name is for the Actions run. Neither has a concrete path to a cmux …
Cmux Full Internationalization ✅ Passed The diff changes only .github/workflows/test-ios.yml and its workflow tests. The new English run name appears in the GitHub Actions workflow UI; it is CI-operational metadata, not production app or …
Cmux Swiftui State Layout ✅ Passed The pull request changes only .github/workflows/test-ios.yml and tests/test_ios_workflow_dispatch_ref.py. The review-scoped diff contains no Swift source changes, so it introduces none of the Swif…
Cmux Architecture Rethink ✅ Passed The check applies to Swift architecture changes. The reviewed diff changes only .github/workflows/test-ios.yml and tests/test_ios_workflow_dispatch_ref.py; it changes no Swift source, package mani…
Cmux Swift Auxiliary Window Close Shortcuts ✅ Passed The check is not applicable. The pull request changes only .github/workflows/test-ios.yml and tests/test_ios_workflow_dispatch_ref.py; it contains no Swift changes or auxiliary-window code.
Cmux Source Artifacts ✅ Passed The diff changes only .github/workflows/test-ios.yml and tests/test_ios_workflow_dispatch_ref.py. The workflow is intentional CI configuration, and the test file contains intentional regression te…
Cmux No Test Or Debug Seam In Production Source ✅ Passed The check does not apply to this pull request. The authoritative diff changes only .github/workflows/test-ios.yml and tests/test_ios_workflow_dispatch_ref.py; it changes no Swift file under a prod…
Full details: Docstring Coverage

Explanation

Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 4 functions across 1 files. (1 skipped: 1 unsupported.)

  • Fix all pre-merge checks with AI
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown
Contributor

All contributors have signed the CLA ✍️ ✅
Posted by the CLA Assistant Lite bot.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Sep 23, 2026 •

Copy link
Copy Markdown
⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Sep 23, 2026 •

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@teamleaderleo
teamleaderleo merged commit bbeb6f1 into manaflow-ai:main Sep 23, 2026
47 of 48 checks passed
@teamleaderleo
teamleaderleo deleted the ci/ios-requested-family-matrix branch September 23, 2026 11:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant