pyro-mcp/docs/roadmap/task-workspace-ga/2.8.0-named-snapshots-and-reset.md
Thales Maciel 18b8fd2a7d Add workspace snapshots and full reset
Implement the 2.8.0 workspace milestone with named snapshots and full-sandbox reset across the CLI, Python SDK, and MCP server.

Persist the immutable baseline plus named snapshot archives under each workspace, add workspace reset metadata, and make reset recreate the sandbox while clearing command history, shells, and services without changing the workspace identity or diff baseline.

Refresh the 2.8.0 docs, roadmap, and Python example around reset-over-repair, then validate with uv lock, UV_CACHE_DIR=.uv-cache make check, UV_CACHE_DIR=.uv-cache make dist-check, and a real guest-backed create/snapshot/reset/diff smoke test outside the sandbox.
2026-03-12 12:41:11 -03:00

1.3 KiB

2.8.0 Named Snapshots And Reset

Status: Done

Goal

Turn reset into a first-class workflow primitive and add explicit named snapshots, not only the implicit create-time baseline.

Public API Changes

  • CLI:
    • pyro workspace snapshot create
    • pyro workspace snapshot list
    • pyro workspace snapshot delete
    • pyro workspace reset WORKSPACE_ID [--snapshot SNAPSHOT_ID|baseline]
  • SDK/MCP mirrors

Implementation Boundaries

  • Baseline snapshot is created automatically at workspace creation.
  • Named snapshots are explicit user-created checkpoints.
  • workspace reset recreates the full sandbox, not just /workspace.
  • Reset may target either the baseline or a named snapshot.

Non-Goals

  • no secrets in this milestone
  • no live host-sharing or mount semantics
  • no branching/merge workflow on snapshots

Acceptance Scenarios

  • mutate workspace, create named snapshot, mutate again, reset to snapshot, confirm state restoration
  • mutate service and /tmp state, reset to baseline, confirm full sandbox recreation
  • diff after reset is clean when expected

Required Repo Updates

  • docs that teach reset over repair explicitly
  • example showing baseline reset and named snapshot reset
  • real Firecracker smoke for snapshot create -> mutate -> reset