An undersized runner does not fail honestly: the kernel OOM killer takes the build, so the job reports exitcode 137 at ng build, or Karma disconnects mid-suite after twenty minutes. Both read as a flaky test rather than as a box that cannot hold the job, and both cost a whole CI slot. The check runs first in the three client jobs (Build-and-ng-test, Build-and-test-development, lighthouse), prints total and available RAM, vCPU count and any cgroup limit, and exits 1 when the effective size is under 8 GB - the supported minimum. A cold production build measures 3.8 GB peak on its own, so 8 GB leaves roughly 2x headroom.