From 0e49c686b4ddd77c94f62a04c547fa2a1fa9089e Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 28 Oct 2026 20:31:14 +0000 Subject: [PATCH] Run release-readiness on a hosted runner release-readiness is a ~10 s job (checkout, two reuse probes, release-lint.sh) that gates coverage, e2e-build and most of the run. On Depot it pays a host boot before any real work starts; in the slow-start episodes of #1512 that boot reached 307 s and pushed a merge_group run's ci-ok from ~8.7 to 11.5 min. Move it to ubuntu-latest, as #1747 did for ci-ok. The job needs only git, python3, bash and gh, all on the hosted image. The repo variable RELEASE_READINESS_RUNNER is the escape hatch if hosted Linux backs up. All needs: edges stay as they are. A scheduling test pins the runner. Fixes #1795 Co-Authored-By: Claude Opus 5.5 (1M context) Claude-Session: https://claude.ai/code/session_011f9aeRFXYtAsVJCfxwhyiz --- .github/workflows/ci.yml | 6 +++++- scripts/tests/test_ci_scheduling.py | 7 +++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1b46d880d..3e06020ea 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -285,7 +285,11 @@ jobs: # job so a run starts no extra runner. release-readiness: if: github.event.pull_request.draft != true - runs-on: ${{ vars.DISABLE_DEPOT_RUNNERS == 'true' && 'ubuntu-latest' || 'depot-ubuntu-24.04-4' }} + # GitHub-hosted, not Depot: a ~10 s job that gates coverage, e2e-build and + # most of the run, so a slow Depot boot here delays every job behind it + # (#1795). If hosted Linux backs up, set the repo variable + # RELEASE_READINESS_RUNNER (e.g. depot-ubuntu-24.04-4); no merge needed. + runs-on: ${{ vars.RELEASE_READINESS_RUNNER || 'ubuntu-latest' }} timeout-minutes: 10 permissions: contents: read diff --git a/scripts/tests/test_ci_scheduling.py b/scripts/tests/test_ci_scheduling.py index 3c94c5587..32bcad39f 100644 --- a/scripts/tests/test_ci_scheduling.py +++ b/scripts/tests/test_ci_scheduling.py @@ -45,6 +45,13 @@ def test_ci_ok_defaults_to_a_hosted_runner(self): runs_on = [line for line in JOBS["ci-ok"] if line.startswith(" runs-on:")] self.assertEqual(runs_on, [" runs-on: ${{ vars.CI_OK_RUNNER || 'ubuntu-latest' }}"]) + def test_release_readiness_defaults_to_a_hosted_runner(self): + # A ~10 s gate in front of coverage and e2e-build must not pay a Depot + # host boot on the critical path (#1795); the variable is the escape hatch. + runs_on = [line for line in JOBS["release-readiness"] if line.startswith(" runs-on:")] + self.assertEqual(runs_on, + [" runs-on: ${{ vars.RELEASE_READINESS_RUNNER || 'ubuntu-latest' }}"]) + def test_expensive_jobs_cannot_start_after_a_failed_preflight(self): cheap = {"clippy", "lint-ecosystems", "release-readiness", "dispatch-tests", "ci-ok"} # windows-compile-check is the lean queue's only Windows job and sits