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

50 lines
1.8 KiB
Markdown

## ADDED Requirements
### Requirement: Stream modes
The system SHALL support multiple stream modes when invoking a compiled graph:
- `"values"` — emits the full state after each superstep
- `"updates"` — emits only the state changes after each superstep
- `"messages"` — emits individual message chunks for chat-oriented graphs
- `"debug"` — emits debug events with full superstep information
- `"custom"` — supports user-defined events via a emit function
#### Scenario: Values mode emits full state
- **WHEN** a graph is streamed with `streamMode: ["values"]`
- **THEN** each chunk SHALL contain the complete state object after each superstep
#### Scenario: Updates mode emits diffs
- **WHEN** a graph is streamed with `streamMode: ["updates"]`
- **THEN** each chunk SHALL contain only the state keys that changed
### Requirement: Stream event protocol
The system SHALL emit structured events during graph execution, including:
- `on_chain_start` — node execution begins
- `on_chain_end` — node execution completes
- `on_chain_stream` — intermediate output from a node
- `on_custom_event` — user-defined events
- Checkpoint metadata paired with each event (id, parent_id, step, source)
#### Scenario: Events include checkpoint metadata
- **WHEN** a stream event is received
- **THEN** it SHALL include a `checkpoint` envelope with `id`, `step`, and `source`
#### Scenario: Custom events propagate from nodes
- **WHEN** a node emits a custom event via an emit function
- **THEN** that event SHALL appear in the stream with type `on_custom_event`
### Requirement: Async iteration over streams
The system SHALL support `for await...of` iteration over graph streams.
#### Scenario: Stream is async iterable
- **WHEN** `for await (const chunk of graph.stream(...))` is used
- **THEN** each chunk SHALL be available as it is produced