@@ -197,11 +197,18 @@ jobs:
197197 # harmless), but the Turbo cache gets its own key: with a shared key, only
198198 # the last committer's new entries survive each run, so the test and build
199199 # Turbo entries would evict each other nondeterministically.
200- # Same next build as the app image, so it needs the same larger runner in
201- # GitHub mode: it peaks ~21.9 GB and SIGKILLs on the free 16 GB ones.
200+ # Same next build as the app image, so it needs a large runner. Peak RSS
201+ # tracks Turbo/Turbopack cache warmth, and it is the COLD case that sizes the
202+ # runner: warm peaks ~12 GB, partial ~28 GB, and a cold full rebuild peaked
203+ # 51 GB. The 8vcpu tier only has 30.4 GB, so cold-cache runs OOM-killed the VM
204+ # (oom_count 1, memory p100 ~30.5 GB, ~99% of the tier) — the job burned 8-15
205+ # min and died, while warm runs finished under 8 min. NODE_OPTIONS'
206+ # --max-old-space-size only caps Node's JS heap; the bulk is native Turbopack
207+ # worker memory, so the cap cannot prevent this. 16vcpu = 60.8 GB fits the
208+ # 51 GB cold peak with headroom. Keep the test job on 8vcpu; its memory is fine.
202209 build :
203210 name : Build App
204- runs-on : ${{ (vars.CI_PROVIDER == '' || vars.CI_PROVIDER == 'blacksmith') && 'blacksmith-8vcpu -ubuntu-2404' || 'linux-x64-8-core' }}
211+ runs-on : ${{ (vars.CI_PROVIDER == '' || vars.CI_PROVIDER == 'blacksmith') && 'blacksmith-16vcpu -ubuntu-2404' || 'linux-x64-8-core' }}
205212 timeout-minutes : 15
206213
207214 steps :
0 commit comments