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.
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
## ADDED Requirements
|
||||
|
||||
### Requirement: Snapshot creation
|
||||
|
||||
The system SHALL provide `sandbox.snapshot()` to create a point-in-time filesystem snapshot.
|
||||
|
||||
Parameters:
|
||||
- `expiration?: number` — TTL in milliseconds (0 for no expiration)
|
||||
|
||||
#### Scenario: Snapshot stops the session and returns Snapshot instance
|
||||
|
||||
- **WHEN** `sandbox.snapshot()` is called on a running sandbox
|
||||
- **THEN** the current session SHALL be stopped and a `Snapshot` SHALL be returned
|
||||
|
||||
### Requirement: Snapshot retrieval and listing
|
||||
|
||||
The system SHALL provide `Snapshot.get()`, `Snapshot.list()`, and `Snapshot.tree()` for managing snapshots.
|
||||
|
||||
#### Scenario: Retrieve snapshot by ID
|
||||
|
||||
- **WHEN** `Snapshot.get({ snapshotId: "snap_abc" })` is called
|
||||
- **THEN** it SHALL return the snapshot with matching ID
|
||||
|
||||
#### Scenario: List snapshots with pagination
|
||||
|
||||
- **WHEN** `Snapshot.list({ name: "my-sandbox" })` is called
|
||||
- **THEN** it SHALL return a paginated list of snapshots for that sandbox
|
||||
|
||||
#### Scenario: Ancestry tree is accessible
|
||||
|
||||
- **WHEN** `Snapshot.tree({ snapshotId: "snap_abc" })` is called
|
||||
- **THEN** it SHALL return the ancestry tree of the snapshot
|
||||
|
||||
### Requirement: Snapshot deletion
|
||||
|
||||
The system SHALL provide `snapshot.delete()` to remove a snapshot.
|
||||
|
||||
#### Scenario: Deleted snapshot is no longer listable
|
||||
|
||||
- **WHEN** `snapshot.delete()` is called and then `Snapshot.list()` is called
|
||||
- **THEN** the deleted snapshot SHALL no longer appear in the list
|
||||
|
||||
### Requirement: Snapshot-based sandbox creation
|
||||
|
||||
The system SHALL support creating sandboxes from snapshots via `Sandbox.create({ source: { type: "snapshot", snapshotId } })`.
|
||||
|
||||
#### Scenario: Sandbox created from snapshot has matching filesystem
|
||||
|
||||
- **WHEN** a sandbox is created with a snapshot source and a file is written, then another sandbox is created from the resulting snapshot
|
||||
- **THEN** the second sandbox SHALL contain the file from the first
|
||||
|
||||
### Requirement: Snapshot retention
|
||||
|
||||
The system SHALL support `keepLastSnapshots` retention policy on sandboxes.
|
||||
|
||||
#### Scenario: Retention evicts oldest snapshots
|
||||
|
||||
- **WHEN** a sandbox has `keepLastSnapshots: { count: 3 }` and a 4th snapshot is created
|
||||
- **THEN** the oldest snapshot SHALL be evicted
|
||||
Reference in New Issue
Block a user