Skip to content

feat(launch): instance lifecycle over the host adapters - #18

Merged
ruvnet merged 1 commit into
mainfrom
feat/rvforge-integration
Aug 5, 2026
Merged

feat(launch): instance lifecycle over the host adapters#18
ruvnet merged 1 commit into
mainfrom
feat/rvforge-integration

Conversation

@ruvnet

@ruvnet ruvnet commented Aug 5, 2026

Copy link
Copy Markdown
Owner

Follows v1.6.0. Builds rvm-launch out from four modules into the full ADR-289 verb set.

ADR-289 verb Here
rvm inspect inspect
rvm verify verify
rvm run Instance::create then Instance::start
rvm suspend / resume Instance::suspend / resume
rvm checkpoint Instance::checkpoint
rvm witness Instance::witness
rvm terminate Instance::terminate

The surface is a library first and a CLI second, because ADR-289 rejects the alternative explicitly: the CLI, the Tauri reader via rvm-ffi, and Forge via rvm-node must not each enforce their own version of these rules.

Four invariants, held structurally

Nothing executes before verification succeeds. Instance::create takes a VerifiedPackage, whose only constructor rejects a failed report — there is no path from a failed verify to a running instance, rather than a convention that callers should check first.

Inspection is not execution. inspect and verify read headers, hash payloads and check signatures. Neither maps a segment, resolves an entry point, or interprets a payload, so a scanner can open an untrusted artifact without becoming an execution surface for it.

Illegal transitions are errors, not no-ops. The state machine permits nothing outside its table, and each refusal is witnessed before it is returned.

State binds to its lineage. A checkpoint carries the base RVF identity it was produced under (ADR-288 §4), and restore refuses one from a different base before it touches the state machine or a runtime. Instance identity is recorded as provenance but deliberately does not gate — ADR-289 criterion 7 requires suspending under one host adapter and resuming under another, so the far-side instance is new by construction.

Verification

cargo test -p rvm-rvf -p rvm-host -p rvm-launch   233 passed, 0 failed
cargo clippy ... --all-targets -- -D warnings     clean
cargo check --workspace                            ok

🤖 Generated with claude-flow

https://claude.ai/code/session_01ParP55bZs2iTGEGvpnUecx

Builds the rvm-launch surface out from four modules into the full
ADR-289 verb set — inspect, verify, run, suspend, resume, checkpoint,
witness, terminate — as a library first, with the CLI, the Tauri
reader through rvm-ffi, and Forge through rvm-node all calling into
it. ADR-289 rejects the alternative in its own alternatives section:
three callers enforcing three different things.

Four invariants are structural rather than documented:

Nothing executes before verification succeeds — Instance::create takes
a VerifiedPackage whose only constructor rejects a failed report, so
there is no path from a failed verify to a running instance.

Inspection is not execution — inspect and verify read headers, hash
payloads and check signatures without mapping a segment or resolving
an entry point, so a scanner can open an untrusted artifact without
becoming an execution surface for it.

Illegal transitions are errors, not no-ops, and each refusal is
witnessed before it is returned.

State binds to its lineage — a checkpoint carries the base RVF
identity it was produced under (ADR-288 §4) and restore refuses one
from a different base before touching the state machine. Instance
identity is provenance, not a gate, because ADR-289 criterion 7
requires resuming under a different host adapter.

233 tests across the three crates, clippy clean under -D warnings,
workspace checks.

Co-Authored-By: claude-flow <ruv@ruv.net>
Claude-Session: https://claude.ai/code/session_01ParP55bZs2iTGEGvpnUecx
@ruvnet
ruvnet force-pushed the feat/rvforge-integration branch from b94c593 to c622025 Compare August 5, 2026 13:50
@ruvnet
ruvnet merged commit 78acb36 into main Aug 5, 2026
2 checks passed
ruvnet added a commit that referenced this pull request Aug 5, 2026
The README stated that rvm-host and rvm-launch were "not yet in this
repo" and that an RVForge package "can be verified and capability-
mapped on RVM, not executed by it". Both landed in v1.6.0 and #18, so
the section understated the repo by two crates and a lifecycle.

Corrections, each checked against origin/main rather than memory:

rvm-host and rvm-launch are present — added to the crate table and to
the flow diagram, and removed from the not-yet list. rvm-ffi and
rvm-node genuinely are absent, and rvm-wasm still carries
MAX_MODULE_SIZE, so those claims stay.

The overview link pointed at the gist; it now points at the
walkthrough at ruvnet.github.io/RuVector/rvforge.

The integration map called rvm-rvf "in progress on
feat/rvforge-integration" and rvm-host/rvm-launch roadmap. All three
are marked landed. The rvm-native row now says what actually blocks it
— bare-metal execution — rather than crates that have since shipped.

npm reference bumped to @ruvector/rvforge@0.2.0, which is the version
that can author an .rvf rather than only consume one.

Added the invariants that came with the lifecycle: nothing runs
unverified, illegal transitions are witnessed errors, and state binds
to its lineage.


Claude-Session: https://claude.ai/code/session_01ParP55bZs2iTGEGvpnUecx
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.

1 participant