Skip to content

fix(ci): restore the iOS 26 test leg dropped from PR and nightly runs#474

Closed
james-enperso wants to merge 1 commit into
forcedotcom:devfrom
james-enperso:fix/restore-ios26-ci-leg
Closed

fix(ci): restore the iOS 26 test leg dropped from PR and nightly runs#474
james-enperso wants to merge 1 commit into
forcedotcom:devfrom
james-enperso:fix/restore-ios26-ci-leg

Conversation

@james-enperso

Copy link
Copy Markdown
Contributor

Problem

pr.yaml and nightly.yaml pass macos: ${{ matrix.macos }} to the reusable iOS workflow, but only the ^18 matrix leg defines macos:

matrix:
  ios: [^26, ^18]
  include:
    - ios: ^26
      xcode: ^26          # no macos
    - ios: ^18
      xcode: ^16
      macos: macos-15

For the ^26 leg matrix.macos is undefined, so an empty string is passed to the reusable workflow. That empty string overrides the callee's macos: { default: macos-latest }, leaving runs-on: ${{ inputs.macos }} empty — and GitHub creates no job for that leg: no run, no failure, no "skipped".

Effect: since this was introduced, every nightly and every PR has executed zero iOS 26 / Xcode 26 tests, while the iOS side of the run still reports green (only the ^18 leg runs). A regression that only surfaces on the newest iOS/Xcode lane — the primary support target — merges and ships with CI green, and nobody is told the leg is missing.

This was confirmed against the live GitHub jobs API: nightly runs after the change contain only 2 jobs (android + iOS ^18), with no ^26 job in any state.

Fix

Add macos: macos-latest to the ^26 include entry in both pr.yaml and nightly.yaml, so the input is never an empty string and the leg runs on the default runner again.

Test plan

  • Confirm the next PR/nightly run contains the iOS ^26 job again (4 jobs total: android + iOS ^26 + iOS ^18, plus the permission gate).

🤖 Generated with Claude Code

https://claude.ai/code/session_015CGbVaRKrx7DeurX81NWdQ

pr.yaml and nightly.yaml pass `macos: ${{ matrix.macos }}` to the reusable iOS
workflow, but only the ^18 matrix leg defined `macos`. For the ^26 leg the value
is undefined, so an empty string is passed, which overrides the reusable
workflow's `macos: default: macos-latest` and leaves `runs-on:` empty. GitHub then
creates NO job for that leg — no run, no failure, no "skipped" — so since this was
introduced, every nightly and PR has executed zero iOS 26 / Xcode 26 tests while
the iOS side still reports green (only the ^18 leg runs).

Add `macos: macos-latest` to the ^26 include entry in both files so the input is
never empty and the leg runs again. Verify by confirming the run has 4 jobs
(android + iOS ^26 + iOS ^18, plus the gate) rather than fewer.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015CGbVaRKrx7DeurX81NWdQ
@wmathurin

Copy link
Copy Markdown
Contributor

Hi @james-enperso — thank you for catching this! Confirming it against the live GitHub jobs API was exactly the right move, and your root cause analysis is spot on.

We're closing this in favour of #476, which fixes the same regression but at the call site rather than in the matrix include entries:

# pr.yaml / nightly.yaml — with: block
macos: ${{ matrix.macos || 'macos-latest' }}

The reason: adding macos: macos-latest to each include entry works today but duplicates the default string across multiple files and leaves the codebase one forgotten entry away from the same silent-skip bug recurring. The || 'macos-latest' fallback at the call site is self-enforcing — any future matrix row that omits macos automatically gets the right runner without extra bookkeeping.

Your contribution is credited in the commit message of #476. Thanks again!

@wmathurin wmathurin closed this Jul 6, 2026
wmathurin added a commit that referenced this pull request Jul 7, 2026
…ll site

When a matrix include entry omits `macos`, `${{ matrix.macos }}` evaluates
to an empty string which, when passed as a workflow_call input, overrides
the reusable workflow's `default: macos-latest` — causing `runs-on: ""`
and silently producing no job for that leg.

Fix by adding `|| 'macos-latest'` at the call site in both pr.yaml and
nightly.yaml, so any matrix row that omits `macos` automatically gets the
right runner without requiring explicit per-row bookkeeping.

Credit to @james-enperso for identifying the regression and confirming it
against the live GitHub jobs API (PR #474).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants