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,57 @@
|
||||
## 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
|
||||
Reference in New Issue
Block a user