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

ADDED Requirements

Requirement: Node output references

Prompts and commands SHALL support $nodeId.output to reference the output text of an upstream node, and $nodeId.output.field to reference a specific field from a structured output.

Scenario: Output reference substitution

  • WHEN a prompt contains $analysis.output
  • THEN it SHALL be replaced with the full output text of the node with id analysis

Scenario: Field reference with structured output

  • WHEN a prompt contains $analysis.output.summary and the upstream node declared output_format: { type: "object", properties: { summary: ... } }
  • THEN it SHALL be replaced with the value of the summary field from the parsed JSON output

Scenario: Missing node reference

  • WHEN a prompt references $nonexistent.output
  • THEN the reference SHALL resolve to an empty string with a warning

Scenario: Missing field on schemaless node

  • WHEN a prompt references $node.output.field and the upstream node has no output_format and its output is not valid JSON
  • THEN the consuming node SHALL fail with an error

Scenario: Strict field access for declared schemas

  • WHEN a prompt references $node.output.field and the upstream node's output_format declares properties but field is not among them
  • THEN the consuming node SHALL fail with a field-not-found error

Requirement: Built-in variables

The engine SHALL support $ARGUMENTS, $ARTIFACTS_DIR, $WORKFLOW_ID, $BASE_BRANCH, $DOCS_DIR.

Scenario: $ARGUMENTS substitution

  • WHEN a prompt contains $ARGUMENTS
  • THEN it SHALL be replaced with the full user message/arguments string

Scenario: $ARTIFACTS_DIR substitution

  • WHEN a prompt contains $ARTIFACTS_DIR
  • THEN it SHALL be replaced with the path to the run's artifact directory

Scenario: $WORKFLOW_ID substitution

  • WHEN a prompt contains $WORKFLOW_ID
  • THEN it SHALL be replaced with the workflow run ID

Requirement: Loop-specific variables

Loop nodes SHALL support $LOOP_USER_INPUT (from approve at interactive gates) and $LOOP_PREV_OUTPUT (output of the previous iteration).

Scenario: $LOOP_PREV_OUTPUT on first iteration

  • WHEN a loop node is on its first iteration
  • THEN $LOOP_PREV_OUTPUT SHALL resolve to an empty string

Scenario: $LOOP_PREV_OUTPUT on subsequent iterations

  • WHEN a loop node is on iteration 2+
  • THEN $LOOP_PREV_OUTPUT SHALL contain the cleaned output of the previous iteration

Requirement: Approval-specific variables

Approval nodes SHALL support $REJECTION_REASON.

Scenario: $REJECTION_REASON in on_reject prompt

  • WHEN an approval node is rejected with a reason
  • THEN $REJECTION_REASON SHALL contain the reviewer's feedback text