Our GitHub Actions bill kept climbing, so we moved CI to one box
What happened
Stand up self-hosted GitHub Actions runners on one box, provisioned so heavy CI jobs don't OOM or fill the disk (per-runner swap/scratch + reaper). Parameterized; Hetzner reference config inclu...
Summary assembled by rule from the sources below