Isolated GitHub pre-check runners

The runner lifecycle enters only through Stado:

stado runner install --profile precheck <registry-target>
stado runner status --profile precheck <registry-target>
stado runner remove --profile precheck <registry-target>

Stado resolves the host address and release_platform from the canonical registry. install exchanges GITHUB_TOKEN.value through Stado's admin-scoped Skarbiec coordinates for a short-lived organization registration token, transports the installer and token on host-channel stdin, verifies the pinned Actions Runner archive, and installs the OS service. It also makes the Brama host's Skarbiec reconcile missing routes from its live vault, resolves agent:probierz to the request-signing item and field selected by Skarbiec, reads that field on the host without putting its value in argv, and installs the resolved value through stdin as the runner-owned, mode-0600 .stado/kronika-agent-auth-secret; the non-secret probierz agent ID is published as $runner_root/routes/kronika-agent-id beside $runner_root/routes/brama.url. Kronika runs the audit, while Probierz is the Brama client identity authorizing that product workflow. remove uses a short-lived removal token before deleting the service, account, files, and network rule.

The runner has one unprivileged stado-precheck account and a root-owned pre/post-job cleanup hook. Workspaces, diagnostics, package and toolchain caches, application caches, and .stado are runner-owned; the rest of the installation is root-owned and not writable by jobs. An nftables UID rule on Linux and a PF user rule on macOS reject loopback, RFC1918, link-local, unique-local, and CGNAT/Tailscale ranges while leaving public GitHub and package endpoints reachable. The one exception is the exact loopback Brama port published by Stado for the authorized kronika consumer. Those CIDRs are protocol network classes compiled into Stado, not fleet host addresses; fleet destinations remain registry data.

GitHub runner group stado-precheck grants access to an explicit repository list. Stado keeps public-repository admission disabled until stado runner install <target> --profile precheck --repository <repository> registers against a named repository; those workflows must refuse pull requests whose head repository differs from the base repository before GitHub assigns the job to this runner. Eligible Linux jobs use runs-on: [self-hosted, Linux, X64, stado-precheck]; eligible macOS jobs use runs-on: [self-hosted, macOS, ARM64, stado-precheck]. Repository access is the GitHub-side boundary: workflow-ref restrictions remain disabled because same-repository pull-request jobs execute from refs/pull/*, not the default branch.

Source: this website