Repository navigation
Description
Agent pickup triage
Category: ready. This classifies the next task, not completion or a verified current-source pass.
Next bounded step: Verify merged #4694 canonical-envelope and #4698 transport contracts, then implement the standalone bounded local vsock call/cast service with isolation tests.
Read the linked handoff and coordinate any active owner before implementation. Preserve the original acceptance criteria below; this triage grants no spending, credentials, publication, host reconfiguration, or landing authority.
Parent: #4622
Outcome
Add a dedicated typed mailbox service over vsock with independent queues, credits, lifecycle, and authorization. It must work in standalone mvm without mvmd and must not share FlowMux, telemetry, or machine-control queues.
This service consumes mvm-contract::protocol::mailbox directly. It owns the workload-facing call/cast/reply behavior and local admission; it must not call into mvmd-types or require an mvmd process for identity, crypto, delivery, or receipts.
Scope
- A separately registered mailbox vsock service and bounded framing.
- Guest and host APIs for
callandcast, plus a separately named lossy operation only if the ADR admits one. - Correlation IDs, reply routing, monotonic deadlines, cancellation, and safe disposal of late replies.
- Per-mailbox, per-sender, per-tenant, and host aggregate admission limits.
- Explicit local outcomes for full, backpressured, unauthorized, expired, unavailable, and shutting-down destinations.
- Clean boot, reconnect, shutdown, and teardown behavior.
Acceptance criteria
- A guest and host can exchange typed calls and casts without
mvmdor a guest NIC. - Guest, host, and mock-I/O tests exchange the same canonical MVM envelope later consumed opaquely by cross-host transports and
mvmdwrappers. - Calls return correlated replies or typed timeout/cancellation results; late replies cannot satisfy a later call.
- Casts return after local admission and produce no application reply.
- A full queue fails according to the ADR and never silently drops an accepted normal message.
- Mailbox saturation cannot consume the configured credits or queues of control, telemetry, or FlowMux services.
- Malformed frames, unauthorized operations, oversized values, disconnects, and teardown are covered by integration tests over mock I/O and the supported vsock boundary.
- Dependency checks prove no MVM crate imports
mvmd-typesand no local mailbox path falls back to anmvmdAPI.
Activity
fix(mailbox): reject revoked transport bindings (tinylabscom#5034)
auser commentedon Nov 4, 2026
Coordination proposal opened in #5057 against the active SpiralCore#42/#43 contribution. Please coordinate patch ownership/pins before independently picking up the standalone mailbox service. The proposal separates primitive/Reply authorization, Firecracker custody, experimental registration, local service, and later FlowMux/access review gates. It does not change this issue’s acceptance criteria, assign a maintainer, apply the contributor fork, or claim production adoption. Contributor confirmation has been requested on SpiralCore#42.
auser commentedon Nov 5, 2026
Demo scope clarification from the #5126 discussion: the upcoming one-week demo does not require a reply sent before guest replacement to be consumed afterward. Prioritize a real standalone same-host user/host ↔ live-guest
call/cast/correlatedreplyover the canonical MVM envelope, dedicated bounded mailbox service and independent admission/credits, with no MVMD or guest NIC. Demonstrate at least unauthorized/stale-epoch and full/oversized refusals, late-reply isolation, disconnect/teardown and supported native guest/host behavior; label local admission distinctly from durable acceptance. Do not enable opt-in replacement handoff, private context, continuation-plus-outbox, or claim durable/replacement recovery for this demo. #5126 retains those follow-on decisions and evidence gates; no acceptance checkbox is being marked complete here. The active SpiralCore#42/#43 service owner and exact patch pin still need coordination via #5057 before overlapping implementation.feat(mailbox): start the granted guest mailbox from the per-VM endpoi…
feat(mailbox): start the granted guest mailbox from the per-VM endpoi…
feat(mailbox): start the granted guest mailbox from the per-VM endpoi…
Casey-allard commentedon Nov 11, 2026
Opened draft #5328 for the scoped verified-header and Reply-authorization APIs against current main
b3b2afd8. This is an outside contribution and a review/coordination point, not a claim that #4629 is complete. Exact core/host-mailbox/outbox checks and the remaining workspace/platform gates are listed in the PR.To make the existing implementation visible and avoid duplicate work, SpiralCore already has:
Those components include historical fork APIs. They are not a drop-in replacement for today's canonical service, and their old native/WAN results must not be relabeled as current-main qualification. The port will extend the merged outbox spool, backend HostDialRoute, ledger epochs and per-launch key owner, preserving independent mailbox/FlowMux/access semantics. Compression stays at the authorized plaintext endpoint; there is one object protocol and one canonical MVM envelope.
The remaining port targets are retained request/lost-verdict identity, correlated Call/Cast/Reply and cancellation, bounded replay/aggregate budgets and current admission time. We will reuse #5325's final QueueFull/lifecycle implementation when merged instead of duplicating that work. Canonical cross-host recipient key agreement remains a separate #4633/#5312 prerequisite. Please use #5328 for interface review/coordination while the complete integration is finished and qualified; this comment does not transfer ownership of other active mailbox changes or close any acceptance criterion.
Casey-allard commentedon Nov 11, 2026
Updated implementation and ownership index for the active #4629 contribution, so overlapping work can converge on the existing code before the complete networking submission is qualified.
78d30afb8c2d988657951933b01dad2945b7328a18b58e1ad2262a1c0bfa23d51f8e5679d3376f607cd704aefe01ed90169037415dd1574f876fdfea, based directly on upstreama707f5e8; isolated ten-file import, inactive until daemon integrationThe resource-exclusion implementation and its provenance are recorded on SpiralCore main. PR #5340 explicitly separates historical component checks from its pending standalone-head qualification. It does not claim daemon activation or collection of the original Child.
The new worker-owner component passed its exact Linux release scopes: 13 public harness entries (12 behavior plus one fixture), nine private entries (seven behavior plus two fixtures), 16 existing idle cases and strict all-targets Clippy; independent code/Rust and security reviews passed. It remains injected/inactive by default: actual helper/bootstrap wiring and installed lifecycle acceptance are unfinished. These tests are not WAN or fleet qualification.
The earlier ownership split was accepted in the #5328 reply: this contribution owns the four public API files and disjoint original-child/lifecycle work; the guest owner retains hostd mailbox process/service/reader and agentd integration, and the journal owner retains the existing journal module and focused tests/docs. No overlapping edits without an explicit handoff. Private source access remains subject to Ari’s approval. The scoped, versioned HistoryKeyRef/load_existing contract is accepted; exact original-key recovery, independent custody/anchor checks and current authorization remain delivery requirements.
SpiralCore #111 tracks actual helper ownership and #114 tracks cooperative host-agent shutdown; the published fresh-profile successor now drains the original signer before idle exit. Complete installed recovery and qualification remain open. Neither issue nor #4629 is complete. Please use #5328 as the shared interface discussion, #5336 for the independent SDK fix, and #5340 for the resource-exclusion primitive; the published components are available for reuse now, without waiting for the final WAN/platform submission.
The new exact-source process-handoff report is merged to SpiralCore main. It records the fresh standalone #5340 qualification, the separate b0958e0 process/CLI checks, preserved runtime failure and missing embedded-host assets. Full installed/native/WAN acceptance remains open.
Previous development implementation: 0aa190b32, with the cooperative idle report merged to SpiralCore main. The production Linux host-agent witness collected its original signer before exit 42, with zero fixture-adopted reaping, in 1.03 seconds. Twenty-five selected outer cases passed on the explicitly recorded runtime composition; exact immutable-commit gated compilation passed separately. Strict Clippy and all four original restart consumers still failed, with their raw outputs retained. This is a development checkpoint, not native-guest, WAN, fleet, FIPS or complete-service acceptance. Controlled startup and canonical frontend provisioning are next; the earlier table entries remain historical components, not separate competing protocols.
Previous frontend checkpoint: 98ec9d270, with the frontend/recovery report on SpiralCore main. It wires canonical local-home preparation before CLI/SDK writers and same-FileGate staged publication. Core 23 selected cases plus strict checks, SDK 56 launch cases, three actual CLI controls and separately exact immutable-commit compile gates are recorded. SDK strict remains blocked by Hostd dependency findings. Canonical provisioning moves the original four restart scenarios to two passes and two recovery failures; supplied fixture revisions are distinct from the published source. Subsequent testing also reproduced incorrect Ready on a used installation with missing journal inventory; that RED is retained, and genuine-first-use versus recovery refusal is being implemented. These are development checkpoints; full installed mailbox, native/WAN, sustained capacity and security qualification remain open. The accepted guest/journal ownership split is unchanged.
Latest published supporting source: 081901d02. The guarded-startup/publication report is merged to SpiralCore main through PR120. It retains actual RED/GREEN for missing journal after a prior epoch and for strict direct-worker home selection, 21 selected publication/custody/replay cases, and three final process controls with original signer collection. The Hostd runtime overlay is supplied separately from that public commit; exact immutable-commit gated compilation passes on 4,478 Git-matched files. No native/WAN or full installed-service claim is made.
The newer handoff acceptance supersedes parallel receipt-signer work: Ari's coordinated stream owns the trusted-host local-durable integration and V2 signer/verifier; our overlapping mailbox-core/admission/receipt edits are paused. The original verified-admission capsule and unchanged V1 bytes remain the shared interface.
AcceptedLocalDurableis a distinct local-crash tier, not V1AcceptedDurable, independent rollback protection or host-blind delivery. Access to the reported private integration pins still needs an approved accessible source handoff before our integration review.Current disjoint work is the original-owner interrupted-registration recovery consumer and durable endpoint-name ownership. The new signed deregistration regression now reaches the actual retained-lane refusal with original charges preserved; it is RED, not recovered service acceptance. Public upstream was refreshed at
a2659fb65b8a862322ec64dd25003811492ab59f(v0.28.0-rc.1 plus #5343 idle guest-dial fix and #5344 demo runbook). Reconciliation with that baseline and Ari's owned service changes remains required before the final combined submission. #5328/#5336/#5340 remain open at their listed heads.fix(mailbox): finalize public boot binding permissions on its owned file