docs(infra): microVM Runner V3 egress-in-guest design record - #745
Merged
mattwilkinsonn merged 1 commit intoAug 30, 2026
Merged
Conversation
|
Compass engineering docs preview: https://compass-runner-rig-2494-v3-e.compass-eng-docs.pages.dev Deployed from Changed pages: |
rigel-mintaka
force-pushed
the
compass-runner/rig-2494-v3-egress-in-guest-design
branch
3 times, most recently
from
August 30, 2026 19:15
a797c32 to
7b481fd
Compare
Details the frozen parent microVM Runner design's V3 milestone (egress-in-guest) as a sibling detailing record under D6 (the frozen networking/egress substrate). Design-only; no implementation code. V2b built the exec gate but stubbed the arm: guestd's Provision hard-errors CodeUnimplemented on a non-empty nft_script, so a microVM session boots with open egress. V3 delivers EgressPolicy.NftScript() to guestd, runs it as guest root before the exec gate opens, fails the boot closed when arming fails, and makes the host arm path backend-correct while leaving the podman path byte-identical. Resolves the load-bearing arm-routing fork: ContainerSpec.Egress carries the policy; MicroVMRuntime.Start arms intrinsically via the Provision RPC it already issues; AgentRuntime.provision probe-and-skips the podman-style armEgress on the microVM backend via an unexported marker method (the frozen ContainerRuntime interface stays untouched). Plan decomposes into W1 (guestd arm, hermetic), W2 (host threading + launch/dial seam, hermetic), W3 (KVM-gated egress integration + V8 alignment). Drafted by a design subagent, red-teamed by a design-critic pass (1 blocker + 4 improvements + 3 nits folded). Open Questions carry 4 load-bearing forks (OQ-1 arm-timing vs frozen parent phrasing, OQ-2 probe mechanism, OQ-3 always-arm, OQ-7 empty-script test seam) + 3 non-load-bearing deferrals, each with a recommendation, for the pre-freeze ruling. Ledger-impact: none — V3 fills behavior the parent's frozen D6 already ratified; no new cross-cutting decision, docs/designs/DECISIONS.md untouched (infra bucket is governed, so this line satisfies the design-ledger-gate touch-coupling leg). Refs RIG-2494 Co-authored-by: Matt Wilkinson <matt@rigel.build>
rigel-mintaka
force-pushed
the
compass-runner/rig-2494-v3-egress-in-guest-design
branch
from
August 30, 2026 19:20
7b481fd to
a5fb18d
Compare
mattwilkinsonn
approved these changes
Aug 30, 2026
mattwilkinsonn
deleted the
compass-runner/rig-2494-v3-egress-in-guest-design
branch
August 30, 2026 20:19
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Details the frozen parent microVM Runner design's V3 milestone (egress-in-guest)
as a sibling detailing record under D6 (the frozen networking/egress substrate).
Design-only; no implementation code.
V2b built the exec gate but stubbed the arm: guestd's Provision hard-errors
CodeUnimplemented on a non-empty nft_script, so a microVM session boots with
open egress. V3 delivers EgressPolicy.NftScript() to guestd, runs it as guest
root before the exec gate opens, fails the boot closed when arming fails, and
makes the host arm path backend-correct while leaving the podman path
byte-identical.
Resolves the load-bearing arm-routing fork: ContainerSpec.Egress carries the
policy; MicroVMRuntime.Start arms intrinsically via the Provision RPC it already
issues; AgentRuntime.provision probe-and-skips the podman-style armEgress on the
microVM backend via an unexported marker method (the frozen ContainerRuntime
interface stays untouched). Plan decomposes into W1 (guestd arm, hermetic),
W2 (host threading + launch/dial seam, hermetic), W3 (KVM-gated egress
integration + V8 alignment).
Drafted by a design subagent, red-teamed by a design-critic pass (1 blocker +
4 improvements + 3 nits folded). Open Questions carry 4 load-bearing forks
(OQ-1 arm-timing vs frozen parent phrasing, OQ-2 probe mechanism, OQ-3
always-arm, OQ-7 empty-script test seam) + 3 non-load-bearing deferrals, each
with a recommendation, for the pre-freeze ruling.
Ledger-impact: none — V3 fills behavior the parent's frozen D6 already ratified;
no new cross-cutting decision, docs/designs/DECISIONS.md untouched (infra bucket
is governed, so this line satisfies the design-ledger-gate touch-coupling leg).
Refs RIG-2494
Co-authored-by: Matt Wilkinson matt@rigel.build