Workspace Execution Migration v1

September 10, 2026 · View on GitHub

Status: HOSTED GREEN for the bounded v0.4.0 injected-handler implementation.

Audience: compiler, Project, ProgramRoot, semantic-service, runtime, and durable-checkpoint maintainers.

The v0.4.0 release baseline supersedes the former local-only and hosted-pending evidence classification.

This profile composes Workspace Execution Association v1 with Agent State Migration v3. It binds a checked migration between two workspace generations while preserving the existing state-migration and durable-runtime contracts.

Migration preparation

Preparation consumes a matching old-workspace producer, its actual durable Suspend evidence, and a destination-workspace producer. It retains both workspace generations, verifies the provenance of the old suspend and the destination selection, and then delegates to the existing pure migration operation. A caller-supplied state, root, task, or proposal cannot substitute for either producer or its evidence.

The resulting public association uses semaprax.workspace-migration-association.v1 and commits the old and destination workspace-binding digests, the two plain runtime-association digests, and the migration-root digest. It contains no private State, task, or proposal bytes. A separate semaprax.workspace-migration-evidence.v1 receipt is produced only by an actual migration run and binds the actual evidence root; preparation alone never mints execution evidence.

Resume and execution

Resume validates the caller's trusted checkpoint and independently trusted expected handoff through the existing recovery API. It reconstructs the public migration association from freshly retained compiler state, then exact-compares the canonical receipt bytes and digest. It does not deserialize an arbitrary receipt or treat receipt data as authority.

A fresh migration may use the consuming run or run_durable path. A recovered migration is durable-only. The run_current and run_durable_current paths check that the destination binding is current before any destination stage, checkpoint store write, or injected host operation. Ordinary run paths permit historical bindings. A stale destination is rejected while the previous generation remains a coherent historical binding.

The existing rich durable failure is preserved, including uncertain intent; uncertain work is not automatically retried. Trusted checkpoint-store authority remains caller-owned and unchanged. into_evidence preserves the underlying producer transfer semantics without minting a second association.

An actual migrated durable Suspend may feed a subsequent migration, so a chain A to B to C retains the existing cumulative call, byte, fuel, iteration, stage, and handoff accounting. Each link independently verifies its predecessor provenance; current-run paths also check destination currentness.

Boundaries

The profile owns no disk store and adds no service wire, MCP, CLI, or snapshot structure. It does not claim a durable semantic service, automatic reconciliation, cross-store exactly-once handoff, or a broader migration association. Existing workspace roots, runtime associations, state-migration handoff/checkpoint bytes, and rich failure values retain their prior meaning.

Focused evidence uses:

cargo test --locked -p semaprax --test agent_runtime_v1 execution_revision -- --nocapture

The three workspace migration cases in the original fifteen-test execution selection exercise A→B→C with recovered B suspension, zero host redispatch on replay, cumulative nine-call completion, independently reminted receipt and mismatched predecessor rejection, stale destination refusal before host or store, and terminal lost acknowledgement with the selected completion preserved. The selector also includes the earlier direct runtime, workspace binding, and durable migration regressions and later linked-role additions. The implemented release corpus is HOSTED GREEN; the original local test count is a historical corpus description, not a ceiling on current evidence.