From a85c86ed42a30dbd701704fa251a1f3383152c0f Mon Sep 17 00:00:00 2001 From: Leo Li Date: Thu, 24 Sep 2026 04:39:00 -0400 Subject: [PATCH 1/2] ci: seed DerivedData on the 12 vCPU macOS 26 pool Seeds shared blacksmith-6vcpu-macos-26 with every pull request's macOS jobs and waited 19-25 minutes for a runner on 2026-09-24, so the seed landed a build or more behind main. blacksmith-12vcpu-macos-26 runs the same image (macOS 26.3, rootfs 26-20260916, Xcode 26.6 17F113) and started jobs in about 15 s over the same window. Neither the seed key nor the product key names the runner size, so a seed built there still hits for admission on the 6 vCPU pool. Only the 6 vCPU macOS 26 value of MACOS_RUNNER_PR maps to the larger runner; any other value keeps the seed on admission's pool. Co-Authored-By: Claude Opus 5.5 --- .github/workflows/nightly.yml | 2 +- .github/workflows/seed-derived-data.yml | 8 ++++++-- tests/test_seed_derived_data.py | 14 ++++++++++++++ 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 517e2ab34242..991ef9e26a8b 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -561,7 +561,7 @@ jobs: # toolchain and the build paths, so a mismatch is a miss, not a wrong hit. # Pull requests are what restore this seed, so track the runner the # admission job picks for `pull_request`, not the merge-queue one. - runs-on: ${{ github.repository_owner != 'manaflow-ai' && 'macos-26' || vars.MACOS_RUNNER_PR || 'blacksmith-6vcpu-macos-15' }} + runs-on: ${{ github.repository_owner != 'manaflow-ai' && 'macos-26' || vars.MACOS_RUNNER_PR == 'blacksmith-6vcpu-macos-26' && 'blacksmith-12vcpu-macos-26' || vars.MACOS_RUNNER_PR || 'blacksmith-6vcpu-macos-15' }} environment: ${{ github.ref == 'refs/heads/main' && 'ci-cache-writer' || '' }} timeout-minutes: 75 env: diff --git a/.github/workflows/seed-derived-data.yml b/.github/workflows/seed-derived-data.yml index a025ee128a7e..6bd59d070a8c 100644 --- a/.github/workflows/seed-derived-data.yml +++ b/.github/workflows/seed-derived-data.yml @@ -40,7 +40,7 @@ env: # push replaces that pending run, so the published seed is never more than # about one build behind main. tests/test_seed_derived_data.py pins this. concurrency: - group: seed-derived-data-${{ github.repository_owner != 'manaflow-ai' && 'macos-26' || vars.MACOS_RUNNER_PR || 'blacksmith-6vcpu-macos-15' }} + group: seed-derived-data-${{ github.repository_owner != 'manaflow-ai' && 'macos-26' || vars.MACOS_RUNNER_PR == 'blacksmith-6vcpu-macos-26' && 'blacksmith-12vcpu-macos-26' || vars.MACOS_RUNNER_PR || 'blacksmith-6vcpu-macos-15' }} cancel-in-progress: false jobs: @@ -83,7 +83,11 @@ jobs: if: needs.decide.outputs.build == 'true' # Must match pull-request compile admission: the seed key carries the # toolchain and the build paths, so a mismatch is a miss, not a wrong hit. - runs-on: ${{ github.repository_owner != 'manaflow-ai' && 'macos-26' || vars.MACOS_RUNNER_PR || 'blacksmith-6vcpu-macos-15' }} + # The 12 vCPU macOS 26 pool runs the same image and Xcode as the 6 vCPU + # one admission uses, but pull requests do not queue on it: on 2026-09-24 + # seeds waited 19-25 minutes for a 6 vCPU runner while 12 vCPU jobs + # started in 15 s. Neither key names the runner size. + runs-on: ${{ github.repository_owner != 'manaflow-ai' && 'macos-26' || vars.MACOS_RUNNER_PR == 'blacksmith-6vcpu-macos-26' && 'blacksmith-12vcpu-macos-26' || vars.MACOS_RUNNER_PR || 'blacksmith-6vcpu-macos-15' }} environment: ${{ github.ref == 'refs/heads/main' && 'ci-cache-writer' || '' }} timeout-minutes: 60 env: diff --git a/tests/test_seed_derived_data.py b/tests/test_seed_derived_data.py index 940b0f9f5cc0..74a8d106c1c7 100644 --- a/tests/test_seed_derived_data.py +++ b/tests/test_seed_derived_data.py @@ -221,6 +221,20 @@ def test_every_main_push_seeds_incrementally_under_the_key_admission_reads(self) _, admission_spm = named(steps("ci-macos.yml", "macos-compile-admission"), "Cache Swift packages") self.assertEqual(seed_spm["with"]["key"], admission_spm["with"]["key"]) + def test_the_seed_pool_differs_from_admission_only_in_runner_size(self): + # Seeds used to queue behind pull requests on admission's own pool. + # They may move to a larger runner of the same image, since neither + # the seed key nor the product key names the size, but never to + # another image or Xcode. + runs_on = load("seed-derived-data.yml")["jobs"]["seed"]["runs-on"] + admission = load("ci-macos.yml")["jobs"]["macos-compile-admission"]["runs-on"] + larger = "vars.MACOS_RUNNER_PR == 'blacksmith-6vcpu-macos-26' && 'blacksmith-12vcpu-macos-26'" + self.assertIn(larger, runs_on) + # Any other pool value is admission's pull-request pool, unchanged. + fallback = "vars.MACOS_RUNNER_PR || 'blacksmith-6vcpu-macos-15'" + self.assertTrue(runs_on.rstrip("} ").endswith(f"{larger} || {fallback}"), runs_on) + self.assertIn(fallback, admission) + def test_main_push_publishes_the_product_admission_would_compile(self): """Pull requests adopt this product in place of compiling, so it has to be the admission product: same key, same staging, same packaging, same From 5b7e50ba28d2cbd01d02169f1d2e192c5102898e Mon Sep 17 00:00:00 2001 From: Leo Li Date: Thu, 24 Sep 2026 05:03:11 -0400 Subject: [PATCH 2/2] ci: note the larger seed runner beside the nightly seeder Co-Authored-By: Claude Opus 5.5 --- .github/workflows/nightly.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 991ef9e26a8b..2794313a264a 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -560,7 +560,9 @@ jobs: # Match the admission job's runner and Xcode. The cache key carries the # toolchain and the build paths, so a mismatch is a miss, not a wrong hit. # Pull requests are what restore this seed, so track the runner the - # admission job picks for `pull_request`, not the merge-queue one. + # admission job picks for `pull_request`, not the merge-queue one. On the + # 6 vCPU macOS 26 pool, use its 12 vCPU sibling: same image and Xcode, + # no pull-request queue (see seed-derived-data.yml). runs-on: ${{ github.repository_owner != 'manaflow-ai' && 'macos-26' || vars.MACOS_RUNNER_PR == 'blacksmith-6vcpu-macos-26' && 'blacksmith-12vcpu-macos-26' || vars.MACOS_RUNNER_PR || 'blacksmith-6vcpu-macos-15' }} environment: ${{ github.ref == 'refs/heads/main' && 'ci-cache-writer' || '' }} timeout-minutes: 75