Files
indifferentketchup c935687725 chore(openspec): drop 9 superseded proposals + 11 stub archive files
Drop 9 batch proposals that are superseded by the boocode-lift-analysis
(boocontext-audit, conductor upgrades, self-healing/verify-gate skills):
add-3tier-memory, import-llm-evaluator, import-pregel-engine, plugin-platform,
conductor-evolution, code-intelligence-upgrade, dev-workflow, ui-overhaul,
agent-reliability.

Delete 11 stub archive files (49-66B each, 'Status: Shipped. Archived.' only)
that provide zero documentation value over the existing CHANGELOG.md + git tags.
2026-06-07 22:15:38 +00:00

2.7 KiB

ADDED Requirements

Requirement: Sandbox creation

The system SHALL provide a Sandbox.create() static method that provisions a new isolated compute environment.

Parameters:

  • name?: string — optional human-readable name
  • source?: { type: "git" | "tarball" | "snapshot" } — source for initial filesystem
  • ports?: number[] — ports to expose (max 4)
  • timeout?: number — auto-terminate timeout in ms
  • resources?: { vcpus: number } — CPU allocation (2048 MB RAM per vCPU)
  • runtime?: string — runtime identifier
  • networkPolicy?: NetworkPolicy — network restrictions
  • env?: Record<string, string> — default environment variables
  • tags?: Record<string, string> — metadata tags (max 5)
  • persistent?: boolean — persistent filesystem across sessions
  • signal?: AbortSignal — cancellation support

Scenario: Create returns a running Sandbox instance

  • WHEN Sandbox.create() is called with valid parameters
  • THEN it SHALL return a Sandbox instance with a running session

Scenario: Create supports AsyncDisposable

  • WHEN Sandbox.create() is used with await using
  • THEN the sandbox SHALL be automatically stopped when scope exits

Scenario: Source specifies initial filesystem content

  • WHEN source: { type: "git", url: "..." } is provided
  • THEN the sandbox SHALL clone the git repository on creation

Requirement: Sandbox retrieval

The system SHALL provide Sandbox.get() to retrieve an existing sandbox and Sandbox.getOrCreate() for idempotent get-or-create.

Scenario: Get retrieves existing sandbox

  • WHEN Sandbox.get({ name: "my-sandbox" }) is called for an existing sandbox
  • THEN it SHALL return the sandbox with its session resumed

Scenario: GetOrCreate creates when not found

  • WHEN Sandbox.getOrCreate({ name: "new-sandbox", onCreate: ... }) is called and sandbox doesn't exist
  • THEN it SHALL create a new sandbox and call onCreate once

Requirement: Sandbox forking

The system SHALL provide Sandbox.fork() to create a new sandbox from an existing one's current filesystem state.

Scenario: Fork preserves filesystem state

  • WHEN Sandbox.fork({ sourceSandbox: "original" }) is called
  • THEN the new sandbox SHALL start with the filesystem state of the source sandbox

Requirement: Sandbox update and delete

The system SHALL support sandbox.update() for configuration changes and sandbox.delete() for removal.

Scenario: Update changes sandbox config

  • WHEN sandbox.update({ timeout: 300000 }) is called
  • THEN the sandbox's timeout SHALL be updated for subsequent sessions

Scenario: Delete removes the sandbox

  • WHEN sandbox.delete() is called
  • THEN the sandbox SHALL be permanently removed