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.2 KiB

ADDED Requirements

Requirement: Node interrupt function

The system SHALL provide an interrupt(value) function that pauses graph execution and returns a resume value when the graph is continued.

Scenario: Interrupt pauses execution with value

  • WHEN a node calls const approval = interrupt({ question: "Approve this action?" })
  • THEN execution SHALL pause and the interrupt value SHALL be available in the stream output

Scenario: Resume returns value to interrupt

  • WHEN the graph is resumed with Command({ resume: "approved" })
  • THEN the interrupt() call SHALL return "approved"

Scenario: Multiple interrupts are supported

  • WHEN a node calls interrupt() twice
  • THEN each interrupt SHALL be resolved sequentially, requiring two resume commands

Requirement: Command-based graph resumption

The system SHALL provide a Command class that supports:

  • Command.RESUME — resume value for pending interrupts
  • Command.GOTO — Send or node name for dynamic routing
  • Command.PARENT — bubble up to parent graph

Scenario: Command with resume continues execution

  • WHEN await graph.stream(new Command({ resume: "user input" })) is called
  • THEN the interrupted node SHALL continue with the resume value

Scenario: Command with goto routes dynamically

  • WHEN a node returns new Command({ goto: "human_review" })
  • THEN execution SHALL route to human_review node

Requirement: Automated interrupts at node boundaries

The system SHALL support interruptBefore and interruptAfter in compile() options to automatically pause at specific nodes.

Scenario: InterruptBefore pauses before node execution

  • WHEN graph.compile({ interruptBefore: ["approval_node"] }) is used
  • THEN the graph SHALL pause just before executing approval_node

Requirement: State snapshots on interrupt

When a graph uses a checkpointer, interrupt states SHALL be persisted so execution can be resumed across process boundaries.

Scenario: Interrupted state is checkpointed

  • WHEN a graphed with a checkpointer is interrupted
  • THEN the checkpoint SHALL contain the interrupt state
  • THEN restoring from that checkpoint SHALL yield the same interrupt state