@@ -86,24 +86,25 @@ jobs:
8686
8787 ios :
8888 # iOS builds require Xcode, which is only available on macOS runners.
89- # Pinned to macos-15 (rather than macos-latest) while that label migrates to macos-26
90- # (see https://github.com/actions/runner-images/issues/14167, rollout through
91- # 2026-07-15): macos-latest can currently land on either image at random, each with a
92- # different default Xcode (16.4 vs 26.4.1), and macos-15's *default* Xcode (16.4) doesn't
93- # match what any currently-published net10.0 iOS SDK pack requires (see WorkloadSetVersion
94- # below) - so this job also explicitly selects a non-default Xcode already installed on
95- # the image (see the "Select Xcode" step) to match. See
96- # https://github.com/CommunityToolkit/Datasync/issues/529. Revisit this whole job once we
97- # deliberately upgrade to a newer, Xcode-26-compatible workload set.
98- runs-on : macos-15
89+ # Pinned to macos-26 (rather than macos-latest) so the Xcode toolchain doesn't change
90+ # underneath us when the macos-latest label moves. macos-26 replaced the previous
91+ # (older) macOS image because macOS arm64 jobs on that image repeatedly failed to acquire
92+ # a runner due to capacity constraints (see
93+ # https://github.com/CommunityToolkit/Datasync/issues/622). macos-26's default Xcode
94+ # (26.6) is newer than what the pinned iOS SDK pack requires (see
95+ # WorkloadSetVersion below), so this job explicitly selects an older Xcode that is
96+ # already installed on the image (see the "Select Xcode" step) to match. See
97+ # https://github.com/CommunityToolkit/Datasync/issues/529. Revisit this whole job
98+ # once we deliberately drop the workload set pin and move to a newer Xcode.
99+ runs-on : macos-26
99100 env :
100101 # `dotnet workload install ios` alone always resolves the newest published
101102 # Microsoft.iOS.Sdk.net10.0_* pack. As of workload set 10.0.108, that's 26.5.10284,
102- # which requires Xcode 26.5 - not installed on macos-15 (even as a non-default Xcode).
103+ # which requires Xcode 26.5 ( installed on macos-26, but not the Xcode this job selects ).
103104 # Pinning to 10.0.107 (the last set before the iOS/MacCatalyst/macOS/tvOS manifest moved
104105 # to the 26.4/26.5 pack line; see workload-set history for package id
105106 # Microsoft.NET.Workloads.10.0.100 on nuget.org) resolves 26.2.10233 instead, which
106- # requires Xcode 26.3 - installed (non-default) on macos-15 as of image 20260629.0276.1
107+ # requires Xcode 26.3 - installed (non-default) on macos-26 as of image 20261026.0455.2
107108 # (see the "Select Xcode" step below). This also keeps other manifests (e.g. Android) at
108109 # their latest versions. `--version` pins only this job's `dotnet workload install`
109110 # invocation and the `restore`/`build` steps that follow it in the same runner - it's
@@ -118,7 +119,7 @@ jobs:
118119 uses : actions/checkout@v7
119120
120121 - name : Select Xcode ${{ env.RequiredXcodeVersion }}
121- # macos-15 defaults to Xcode 16.4 , which doesn't satisfy what the pinned iOS
122+ # macos-26 defaults to Xcode 26.6 , which doesn't match what the pinned iOS
122123 # workload (see WorkloadSetVersion above) requires. Xcode 26.3 is already installed
123124 # on the image, just not selected by default - so switch to it explicitly rather
124125 # than installing anything extra.
0 commit comments