Repository navigation
Private heal publisher on microVMs: restricted runner-group roster, self-hosted pin for the private federation - #12586
Conversation
…elf-hosted runner pin for the private federation Operator 2026-09-29: a larger hosted runner is not available and a private repository's standard hosted runner is too small for gunbc (an empty `gunbc run` peaks at 6.4 GiB), so gunbc-private's publisher moves onto our microVMs. - gunbc.runner_group_restriction_ensure: restricted_runner_group_subject(name, repository, workflow) is the one shape (selected visibility, one repository, no public repositories, restricted to one workflow); restricted_runner_groups is the roster: the shakedown group and heal-publisher-private, whose selected workflow IS the private federation's workflow_ref. - gunbc.runner_group_restriction_observation: the observer takes the expected workflow; ShakedownRunnerGroupRestriction -> RestrictedRunnerGroup (still sole_constructor, still minted only by the observer). The shakedown wrapper keeps the mint and controller unchanged. - gunbc.runner_group_restriction_ensure_run: the approval-gated ensure walks the roster, one escalation per group, one receipt line per group; the step timeout covers every group's window. - gunbc.auth.heal_publisher_federation: runner_environment is a record field; public stays github-hosted, private is self-hosted, with the wall moved from the claim to the group. - Witnesses: the private group selects the federation's workflow, and is admitted for it and refused for another. fleet-converge.yml regenerated (step timeout). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ll exists (review 72445) The runner_environment field stays per record; the private record says github-hosted. The flip to self-hosted lands in one change with the controller path that mints into heal-publisher-private after reading its restriction back, and with the live provider condition update. Until then a publish job on a microVM label cannot federate: refuse, not widen. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
Review 72445: agreed, and fixed by ordering rather than by a rung-drop row, in d33e35b. The private federation stays pinned to Until then, a private publish job placed on the microVM label (gunbc-private#186) cannot federate at all, so the arm refuses rather than widens. The comments in — sent from swift-swift-630 |
…drop projection regenerated floor_eval_step_cost_drop keeps the boot-matrix rows and main's dark-install render rows side by side, and floor_eval_step_cost_drop_all_rows concatenates both. docs/design-rung-drops.md is regenerated by generated_artifact_gate main_wet over a build of the merged tree. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ch in the approval_keyring_converge prelude) Emitted by generated_artifact_gate main_wet (local, gunbc built from this branch's merge of main; 53 rostered artifacts written, no panic, one path changed) and confirmed by the gate's main: exit 0, no drift. The heal publisher was backlogged (#12586's microVM move), so this was regenerated locally as proud-deer-538 directed. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Operator, 2026-09-29: gunbc-private's heal publisher moves onto our microVMs. A larger hosted runner isn't available, and a private repo's standard hosted runner (7 GB) is too small for gunbc: an empty
gunbc runalready peaks at 6.4 GiB.The wall will move from the token to the runner group, in order. GitHub's
runner_environmentclaim is onlygithub-hostedorself-hosted, so aself-hostedpin admits every self-hosted runner. This PR models the group that will justify that pin, restricted to exactly that workflow and repository. The private federation stays pinned togithub-hosted(review 72445). The flip lands in one change with the controller path that mints into the group after reading its restriction back, and with the live provider condition update.gunbc.runner_group_restriction_ensure:restricted_runner_group_subjectis the one group shape.restricted_runner_groupsis the roster:microvm-shakedownand the newheal-publisher-private.heal_publisher_federation_workflow_ref(private), so the group and the identity pin one string.gunbc.runner_group_restriction_observation:ShakedownRunnerGroupRestriction→RestrictedRunnerGroup. It's stillsole_constructorand still minted only by the observer.runner_jit_mintand the slot controller unchanged.gunbc.runner_group_restriction_ensure_run: the approval-gated ensure walks the roster, with one escalation per group and one receipt line per group. The step timeout covers every group's approval window (the onlyfleet-converge.ymlchange).gunbc.auth.heal_publisher_federation:runner_environmentis a record field. Both records saygithub-hostedtoday.Witnesses (local,
claim_batchbuilt from main): the runner-group ensure and observation witnesses plusheal_publisher_provision, 40/40, andgithub_app_registry, 48/48. The two new controls:Not in this PR, and needed before it runs:
self-hosted, land the controller path that mints intoheal-publisher-private, and update the live provider's condition to match.fleet-convergemodemicrovm_runner_group_ensure, under one approval.heal-publisher-privatewith that label. That's the microVM lane's frontier (jit_mint_lifecycle_controller_consumer_frontier), along with guest egress.gh,python3,curl,openssl, sudo and a cgroup v2 memory controller for the publisher prelude.Private half: gunbc-private branch
claude/private-heal-microvm, where the publish job selects the group's label.🤖 Generated with Claude Code