The matrix spent five runners on work that is almost entirely network wait: the collection install measured 0% CPU for its whole duration, and the parent-image pull, the package managers and the push are no different. One runner carries all five concurrently and frees the other four. Losing the matrix loses fail-fast: false with it, so push_all.sh awaits every build and reports each one by name before exiting non-zero. A broken distro no longer hides the other four, which is what made today's triage find three causes instead of one. Starts are spread by fibonacci seconds because each build opens with a parent-image pull of several hundred MB. Per-distro logs are grouped in the job output and uploaded as an artifact, and the pressure report now carries free -h: memory is the one resource this consolidation contends for, and an OOM kill would otherwise read as a build error. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Runner Hygiene 🧹
Shell helpers that prepare and inspect the GitHub-hosted runner host around image-build and deploy steps.
Scope 📋
This directory contains host-level helpers: disk-space reclamation and reporting, swap-file enlargement, Docker-daemon cleanup, and post-failure diagnostic dumps. Helpers MUST be invoked from workflow run: blocks under .github/workflows/ and MUST NOT be called from application code, Ansible roles, or any runtime path outside CI. They assume a GitHub-hosted Ubuntu runner and modify host-kernel state (mount points, swap, Docker storage) that does not exist inside the infinito container.
For the rationale behind disk reclamation and swap enlargement in deploy workflows see the "Disk space" and "Swap" sections in workflow.md. For the workflow catalog that drives these calls see workflows.md.