Skip to content

design: portable generated-workspace artifact #252

Description

@lloydrichards

Context

Preview interfaces currently return a list of generated files. That is enough for rendering a dry-run, but some future consumers may need a complete, restorable representation of the generated workspace.

Before exposing a new format, we should identify whether a real consumer needs to restore, transfer, persist, or incrementally update a previewed workspace.

Potential benefits

  • Restore or transfer exactly the workspace that was previewed.
  • Support reproducible bug reports or saved Recipe Builder sessions.
  • Provide a stable handoff for programmatic or remote consumers.
  • Send smaller updates when two processes share a known base workspace.

Questions

  • Which concrete consumer needs more than the existing file list?
  • Should an artifact describe the complete workspace, only relevant repository state, or only generated changes?
  • Which interface should produce and own it?
  • What compatibility and versioning guarantees would it require?
  • How would size limits and untrusted artifact decoding be handled?
  • Should persistence belong to Stack Effect or to the embedding application?

Effect VFS snapshots and deltas demonstrate technical feasibility, but this discussion should not commit Stack Effect's domain interfaces to those implementation types. Any externally exchanged artifact should use a Stack Effect-owned, versioned schema at the scaffold or application seam so its storage encoding remains replaceable.

Useful outcome

  • Decide whether a portable workspace artifact belongs on the roadmap.
  • Identify the first consumer that justifies it.
  • Record ownership, completeness, compatibility, size, and security requirements.
  • If justified, create a narrower implementation issue.

Related

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions