From dcf74bf0d427a1bdbbec23ba144c5c27222cd265 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 5 Aug 2026 16:45:35 +0000 Subject: [PATCH] chore(ci): lint.yml typecheck falls back to build-core's turbo cache (#5401) Only main writes the Turbo cache, so a merge_group entry always restores by PREFIX. This job's chain covered only its own job namespace, which has a window where that prefix matches nothing at all: the previous main generation is already gone while the current one is still being written. Measured 2026-08-05 (run 30985524210, job 92239260750): at 07:34:18Z all three keys reported "Cache not found" and "Build workspace packages" went from 4s to 4m54s, while the very same queue entry's ci.yml jobs hit `-main-f417863f` in that same minute. build-core's entry survives the window - its main-push save completed 07:32:50Z, 88s earlier - and `pnpm build` (turbo run build --filter=!@objectstack/docs) is a superset of this job's build step. Adds the two build-core fallbacks the Temporal Conformance / Dogfood Verify / Console Pin jobs in ci.yml already carry, spelled byte-identically. The writer is untouched: "Save Turbo cache (main only)" keeps its condition and key, so the single-writer discipline is unchanged. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01BWS4heBoAitLmzCLhcYdbK --- .github/workflows/lint.yml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 4581aadceb..c0fae7d1e0 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -405,6 +405,25 @@ jobs: # Restore-only on PRs (same policy as ci.yml): PR-side saves churned the # 10 GB Actions cache pool and evicted the main seeds; only main pushes # save (the "Save Turbo cache" step at the end of the job). + # + # The build-core fallbacks are #5401. Only main writes, so a merge_group + # entry always restores by PREFIX — and this job's own namespace has a + # window where that prefix matches nothing: the previous main generation + # is already gone while the current one is still being written (measured + # 2026-08-05, run 30985524210 — all three keys reported "Cache not found" + # at 07:34:18Z and the workspace build went 4s -> 4m54s, while the very + # same queue entry's ci.yml jobs hit `-main-f417863f` in that same + # minute). build-core's entry is the one that survives that window: its + # main-push save had completed at 07:32:50Z, 88s earlier, and `pnpm + # build` (turbo run build --filter=!@objectstack/docs) is a SUPERSET of + # this job's build step, so the entries it carries are the ones this + # build needs — same reasoning as the fallbacks the Temporal + # Conformance / Dogfood Verify / Console Pin jobs already carry in + # ci.yml, whose spelling these two lines match exactly. + # + # Partial by construction, and that is the honest expectation: it warms + # the `build` tasks, not the `typecheck` tasks (build-core never runs + # those, so nothing seeds them outside this job's own namespace). - name: Restore Turbo cache uses: actions/cache/restore@v6 with: @@ -413,6 +432,8 @@ jobs: restore-keys: | ${{ runner.os }}-turbo-${{ github.job }}-${{ github.ref_name }}- ${{ runner.os }}-turbo-${{ github.job }}- + ${{ runner.os }}-turbo-build-core-${{ github.ref_name }}- + ${{ runner.os }}-turbo-build-core- - name: Install dependencies run: pnpm install --frozen-lockfile