pyro-mcp/docs/roadmap/task-workspace-ga/2.6.0-structured-export-and-baseline-diff.md
Thales Maciel 84a7e18d4d Add workspace export and baseline diff
Complete the 2.6.0 workspace milestone by adding explicit host-out export and immutable-baseline diff across the CLI, Python SDK, and MCP server.

Capture a baseline archive at workspace creation, export live /workspace paths through the guest agent, and compute structured whole-workspace diffs on the host without affecting command logs or shell state. The docs, roadmap, bundled guest agent, and workspace example now reflect the new create -> sync -> diff -> export workflow.

Validation: uv lock, UV_CACHE_DIR=.uv-cache make check, UV_CACHE_DIR=.uv-cache make dist-check, and a real guest-backed Firecracker smoke covering workspace create, sync push, diff, export, and delete.
2026-03-12 03:15:45 -03:00

1.3 KiB

2.6.0 Structured Export And Baseline Diff

Status: Done

Goal

Complete the next explicit host-crossing step by letting a workspace export files back to the host and diff itself against its immutable create-time baseline.

Public API Changes

  • CLI:
    • pyro workspace export WORKSPACE_ID PATH --output HOST_PATH
    • pyro workspace diff WORKSPACE_ID
  • SDK:
    • export_workspace
    • diff_workspace
  • MCP:
    • workspace_export
    • workspace_diff

Implementation Boundaries

  • Capture a baseline snapshot at workspace create.
  • workspace diff compares current /workspace against that baseline.
  • workspace export exports files or directories only from paths under /workspace.
  • Keep output structured:
    • unified patch text for text files
    • summary entries for binary or type changes

Non-Goals

  • no named snapshots yet
  • no reset yet
  • no export outside /workspace

Acceptance Scenarios

  • seed workspace, mutate files, diff against baseline, export a file to host
  • sync push content after create, then confirm diff reports the synced changes
  • unchanged workspace returns an empty diff summary cleanly

Required Repo Updates

  • docs that distinguish seed, sync push, diff, and export
  • example showing reproduce -> mutate -> diff -> export
  • real Firecracker smoke for diff and export