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,49 @@
|
||||
## ADDED Requirements
|
||||
|
||||
### Requirement: Pregel execution engine
|
||||
|
||||
The system SHALL implement a Pregel-style superstep execution engine where:
|
||||
|
||||
- Each "superstep" executes all ready nodes concurrently
|
||||
- Nodes communicate through typed channels (not direct function calls)
|
||||
- Channel writes from one superstep are visible as reads in the next
|
||||
- The engine supports `PULL` (edge-triggered) and `PUSH` (dynamic Send) task scheduling
|
||||
|
||||
#### Scenario: Nodes execute in dependency order
|
||||
|
||||
- **WHEN** node B subscribes to channel A
|
||||
- **THEN** node B SHALL execute in the superstep after node A writes to channel A
|
||||
|
||||
#### Scenario: Concurrent nodes run in parallel
|
||||
|
||||
- **WHEN** two nodes have no dependencies between them
|
||||
- **THEN** they SHALL execute concurrently within the same superstep
|
||||
|
||||
#### Scenario: Dynamic Send spawns new node executions
|
||||
|
||||
- **WHEN** a node calls `send("node_c", { ... })` via `Command`
|
||||
- **THEN** `node_c` SHALL be scheduled for execution in the current or next superstep
|
||||
|
||||
### Requirement: Graph compilation
|
||||
|
||||
The system SHALL provide `graph.compile()` that produces a runnable compiled graph.
|
||||
|
||||
Parameters:
|
||||
- `checkpointer?: Checkpointer` — optional persistence
|
||||
- `interruptBefore?: string[]` — nodes to pause before
|
||||
- `interruptAfter?: string[]` — nodes to pause after
|
||||
- `name?: string` — graph name
|
||||
|
||||
#### Scenario: Compiled graph can be invoked
|
||||
|
||||
- **WHEN** `compiled_graph.invoke({ messages: [] })` is called
|
||||
- **THEN** it SHALL execute all nodes and return the final state
|
||||
|
||||
### Requirement: Recursion limit
|
||||
|
||||
The system SHALL enforce a configurable recursion limit to prevent infinite loops.
|
||||
|
||||
#### Scenario: Exceeding recursion limit throws
|
||||
|
||||
- **WHEN** a graph exceeds the recursion limit
|
||||
- **THEN** a `GraphRecursionError` SHALL be thrown
|
||||
Reference in New Issue
Block a user