Skip to content

docs(infra): microVM Runner V3 egress-in-guest design record - #745

Merged
mattwilkinsonn merged 1 commit into
mainfrom
compass-runner/rig-2494-v3-egress-in-guest-design
Aug 30, 2026
Merged

docs(infra): microVM Runner V3 egress-in-guest design record#745
mattwilkinsonn merged 1 commit into
mainfrom
compass-runner/rig-2494-v3-egress-in-guest-design

Conversation

@rigel-mintaka

Copy link
Copy Markdown
Contributor

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

@linear-code

linear-code Bot commented Aug 30, 2026

Copy link
Copy Markdown

RIG-2494

@github-actions

github-actions Bot commented Aug 30, 2026

Copy link
Copy Markdown

Compass engineering docs preview: https://compass-runner-rig-2494-v3-e.compass-eng-docs.pages.dev

Deployed from compass-runner/rig-2494-v3-egress-in-guest-design at a5fb18d.

Changed pages:

@rigel-mintaka
rigel-mintaka force-pushed the compass-runner/rig-2494-v3-egress-in-guest-design branch 3 times, most recently from a797c32 to 7b481fd Compare August 30, 2026 19:15
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
rigel-mintaka force-pushed the compass-runner/rig-2494-v3-egress-in-guest-design branch from 7b481fd to a5fb18d Compare August 30, 2026 19:20
@mattwilkinsonn
mattwilkinsonn merged commit f2d6328 into main Aug 30, 2026
13 checks passed
@mattwilkinsonn
mattwilkinsonn deleted the compass-runner/rig-2494-v3-egress-in-guest-design branch August 30, 2026 20:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants