From d33c83b1b3711a1110028dd321b09ac6b77f9865 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 29 Oct 2026 19:18:18 +0000 Subject: [PATCH] ci(filter): start the jobs that run setup-workspace, setup-pnpm and .nvmrc on a diff confined to them The `filter` job's paths lists matched none of the two composite actions every gated ci.yml job runs first, nor `.nvmrc`, the Node version they set up from. A PR confined to them merged with Build Core, Test Core, Build Docs and every UI job skipped. Each path now joins the lists of exactly the jobs that run it, as measured: setup-workspace -> core + docs; setup-pnpm and .nvmrc -> core + docs + ui. half-state-patrol is no ci.yml job's step and joins none. The `core` output gains a reader note. Co-Authored-By: Claude Claude-Session: https://claude.ai/code/session_01WGufziRAJnkSn1iGTfop1P --- .github/workflows/ci.yml | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1eb8b897d73..c920d174a53 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -157,6 +157,9 @@ jobs: # guard is true and the expression reads exactly as ` || # 'true'` did. docs: ${{ github.event_name != 'merge_group' && steps.changes.outputs.docs || 'true' }} + # Read by `test-plan`, `test` (ORed with `crosspkg`) and `build-core`, + # and on push / schedule by `dogfood`, `dogfood-verify` and + # `temporal-conformance` — see the `core` filter below and each job's `if:`. core: ${{ github.event_name != 'merge_group' && steps.changes.outputs.core || 'true' }} # Gates the `test` job ONLY, ORed with `core` — see the `crosspkg` # filter below and the `test` job's `if:` (#9829, #10015). @@ -273,6 +276,10 @@ jobs: - 'content/**' - 'pnpm-lock.yaml' - '.github/workflows/ci.yml' + # Build Docs' setup (#27673): see the same three rows under `core:`. + - '.nvmrc' + - '.github/actions/setup-workspace/**' + - '.github/actions/setup-pnpm/**' core: - 'packages/**' - 'examples/**' @@ -284,6 +291,18 @@ jobs: - 'tsconfig.test.base.json' - 'vitest.preset.mts' - '.github/workflows/ci.yml' + # THE SETUP EVERY CORE JOB RUNS FIRST (#27673): each one starts + # with `./.github/actions/setup-workspace`, which calls + # `./.github/actions/setup-pnpm` and hands actions/setup-node + # `.nvmrc` as its `node-version-file`. Before these rows a diff + # confined to one of the three matched no list here, so every job + # that runs it skipped on the PR and the change first ran in the + # merge queue. One row per action, not `.github/actions/**`: + # `half-state-patrol` is no step of any job in this file. The + # `docs` and `ui` lists carry the rows their own jobs run. + - '.nvmrc' + - '.github/actions/setup-workspace/**' + - '.github/actions/setup-pnpm/**' # BUILD INPUTS outside every package (#21202): turbo.json itself, # its `globalDependencies`, and each `$TURBO_ROOT$/…` input of a # build task Build Core's `pnpm build` runs. A diff confined to @@ -497,6 +516,13 @@ jobs: - 'scripts/sdui-manifest.record.json' - 'scripts/gen-sdui-manifest-node.mjs' - 'scripts/check-sdui-manifest.mjs' + # The setup every ui job runs first (#27673): + # `./.github/actions/setup-pnpm`, and `.nvmrc`, which each job's + # actions/setup-node step reads as `node-version-file`. A diff + # confined to either matched no list, so no ui job ran it on the + # PR, nor in the queue, where these outputs read the same diff. + - '.nvmrc' + - '.github/actions/setup-pnpm/**' # The seven packages objectui installs from this tree (the set its # `.objectstack-pin` used to pack). A change here compiles and builds # the Console in the same PR — the check the retired Spec Shape Gate