Repository navigation
fix(client): retain mailbox grant for persistent launch admission - #5336
Casey-allard wants to merge 2 commits into
Conversation
|
Executed native follow-up for this SDK fix: all 1,024 synthetic binary bytes were received exactly through the canonical guest mailbox on Linux x86_64/Firecracker at The overall lifecycle result remains failed: canonical Stop and non-force Remove returned success, but the original helper had exited and remained a zombie at the held-identity collection check. Later absence and empty namespaces are recorded separately and do not upgrade that failure. No external waitpid/kill/repair or second guest was used. The separate owner issue and #5328 discussion track that implementation. Observed setup 658.948 ms, functional receive 104.022 ms (including the 100 ms probe schedule), attempted lifecycle 2,821.558 ms, host-orchestrator CPU 475.934 ms. These are one-case local diagnostics, not send-only or compression/WAN measurements; wire bytes and guest CPU were unavailable. The source-pinned report and compact JSON are now on SpiralCore main through #112, with both the positive delivery and original teardown failure retained. Native runtime preparation is measured separately. The complete networking contribution remains open. |
|
This PR has no current required |
|
Merged upstream The net diff against updated main remains only GitHub created CI run 43383672321 for the updated head, but it is already terminal with |
|
The approved fork run passed on this head, but merge-queue CI 43466249391 failed to compile against newer |
|
I could not push to the fork branch with upstream credentials. To avoid leaving your narrow SDK fix blocked on the known merge-group compile break, I preserved your original implementation and regression commits as ancestors of upstream-owned #5474, merged current main, and added the two required |
|
Superseded by upstream-owned #5474, now validated on its exact PR head and submitted to the normal merge queue. #5474 preserves the original |
A persistent
LaunchRequestcarrying.mailbox(grant)currently drops the grant whenboot_specconstructsMachineStartParams, so the machine can boot without the requested mailbox. Forward the request grant into canonical admission for that start. Keep ordinary persistent restarts explicitly ungranted; the grant is not added toMachineSpecor inherited from the saved definition.Current branch validation — 2026-11-13
Updated head
9105b02b4228a744c23b9742890c39db345f96cdmerges upstream mainc0f15d82d89e42f0a0f5805bc656f09029c4c19d, preserving original SDK head18b58e1ad2262a1c0bfa23d51f8e5679d3376f60and its historical evidence. No conflict resolution or combined helper/lifecycle contribution was added; the net diff remains two SDK files.On the updated head, full-workspace formatting and whitespace checks passed. Independent source review found no code/Rust/security blocker. Full build/test acceptance is pending: CI run 43383672321 is terminal
action_required, with zero jobs/checks. The contributor account has pull-only upstream permissions; maintainer approval is needed for the fork workflow. The executed test and native results below retain their original source identities and do not qualify this merged head.Original regression and executed evidence
The regression uses the public launch API with the hermetic Mock backend, which cannot serve guest mailboxes. Before the fix it unexpectedly boots successfully; after the fix it reaches the canonical mailbox-capability refusal before boot and removes the newly created failed definition. A second test confirms that creating a definition from a mailbox-bearing request does not grant a later ordinary start.
Validation on Linux x86_64 / Rust 1.97.1, release/locked,
test-support, serial tests, two build jobs, based on upstream28afdfe9ef7e36518ca42788d57c54f1d7275f57:cargo test --release --locked -p mvm-client --features test-support --lib persistent_ -- --test-threads=1: 31 passed.cargo test --release --locked -p mvm-client --features test-support --lib launch::tests:: -- --test-threads=1: 55 passed. These scopes overlap.--liband--tests, withtest-support: pass.cargo fmt -p mvm-client -- --check: pass.This follows the service ownership agreement in #5328 and addresses the SDK defect encountered by the current canonical Linux/Firecracker witness. This narrow fix does not establish reliable-service completion or WAN qualification. It does not edit the journal, change mailbox wire formats or close #4629. Both changed launch files remain unchanged in upstream through
a707f5e817982d5140e50e05228eb155ed2200a8; the executed checks above retain their original exact source pin.A subsequent canonical Linux/Firecracker diagnostic executed this exact SDK head with rebuilt runtime/helper and an unmodified canonical mailbox path. It recovered all 1,024 binary bytes exactly, including zeros (SHA-256
3cafacf7f3f4628dcc4da6be8a679c3d283911100632476924fc76fa0e2a20ad). The overall lifecycle gate failed: SDK Stop/remove succeeded but the original mailbox helper remained an uncollected zombie. That separate original-child ownership defect remains open; later PID disappearance does not upgrade the result. No wire-byte, compression, WAN or complete-service claim follows. The retained native report binds the executed source/artifacts, exact readback, timings and failure.