ci(coverage): run the diff-coverage gate on a self-hosted KVM runner #349

Open
didericis-claude wants to merge 1 commits from ci-kvm-runner into main
Collaborator

Splits the self-hosted KVM runner + diff-coverage gate out of #343 (deferred there so main CI wouldn't require a runner that isn't registered yet).

Moves the coverage job from ubuntu-latest (informational) to runs-on: [self-hosted, kvm] with a firecracker-readiness preflight, so the integration suite — which covers the ~230 lines of Firecracker VM/SSH orchestration and needs /dev/kvm + the provisioned TAP/nft pool — actually runs and the 90% diff-coverage gate can pass.

Do not merge until a self-hosted runner labelled kvm is registered and provisioned like a normal Firecracker host (firecracker on PATH, /dev/kvm, Docker, cached guest kernel + static dropbear, network pool as the persistent systemd unit). Until then this job has no runner to pick it up.

Unit/lint stay on ubuntu-latest. README documents the runner prerequisites. See PRD 0069 / #348.

🤖 Generated with Claude Code

Splits the self-hosted **KVM runner + diff-coverage gate** out of #343 (deferred there so `main` CI wouldn't require a runner that isn't registered yet). Moves the `coverage` job from `ubuntu-latest` (informational) to `runs-on: [self-hosted, kvm]` with a firecracker-readiness preflight, so the integration suite — which covers the ~230 lines of Firecracker VM/SSH orchestration and needs `/dev/kvm` + the provisioned TAP/nft pool — actually runs and the 90% diff-coverage gate can pass. **Do not merge until** a self-hosted runner labelled `kvm` is registered and provisioned like a normal Firecracker host (firecracker on PATH, `/dev/kvm`, Docker, cached guest kernel + static dropbear, network pool as the persistent systemd unit). Until then this job has no runner to pick it up. Unit/lint stay on `ubuntu-latest`. README documents the runner prerequisites. See PRD 0069 / #348. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
didericis-claude added 1 commit 2026-07-12 16:50:26 -04:00
Re-land the coverage gate deferred from #343. The Firecracker VM/SSH
orchestration (~230 lines) is only exercised by the integration suite,
which needs /dev/kvm + the provisioned TAP/nft pool — a container runner
skips it and those lines read uncovered, so the 90% diff gate can't pass
on ubuntu-latest. Move the `coverage` job to a self-hosted `kvm` runner
with a firecracker-readiness preflight (binary + /dev/kvm + `backend
status`) so the integration test actually runs. Unit/lint stay on
ubuntu-latest. README documents the runner prerequisites.

Depends on a registered self-hosted runner labelled `kvm`; until one is
provisioned this gate will not run. See PRD 0069 / #348.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WBMWTEtQdJ4W5UrWuLHCck
This pull request can be merged automatically.
This branch is out-of-date with the base branch
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin ci-kvm-runner:ci-kvm-runner
git checkout ci-kvm-runner
Sign in to join this conversation.