Files
boocode/openspec/changes/orchestrator-flow-advanced/tasks.md

1.8 KiB

Tasks — Orchestrator Advanced Flows

Prerequisites

  • v2.7.17 on main (orchestrator + flow-runner shipped)
  • v2.8.0 on main (fork-lifts complete)

Tasks

1. Trigger rules in Step type

  • 1.1 Add TriggerRule type to conductor/types.ts
  • 1.2 Add trigger_rule?: TriggerRule field to Step interface (defaults all_success)
  • 1.3 Write evaluateTriggerRule(deps, rule): boolean in flow-runner-decisions.ts
  • 1.4 Unit tests for each rule variant

2. Variable substitution

  • 2.1 Write resolveVariables(prompt, completedSteps): string in flow-runner
  • 2.2 Supports $stepId.output and $stepId.output.field (dot-path)
  • 2.3 Unit tests with multi-step outputs

3. Approval gate step kind

  • 3.1 Add 'approval' to StepKind union
  • 3.2 Flow-runner: when step.kind === 'approval', pause and publish permission_requested frame
  • 3.3 Wire permission_resolved frame handler to unblock blocked step
  • 3.4 Test: approval gate pauses flow, approval resumes it

4. Event-sourced step log

  • 4.1 Create flow_step_events table in apps/coder/src/schema.sql
  • 4.2 Write appendStepEvent(runId, stepId, event, payload?) helper
  • 4.3 Wire events into flow-runner lifecycle hooks (start, complete, fail, skip, pause, resume)
  • 4.4 Unit test: events are recorded in order

5. Example flow with parallel branches

  • 5.1 Create conductor/flows/parallel-research.ts — splits into 3 parallel research steps, then joins with synthesis
  • 5.2 Uses trigger_rule: 'one_success' on the synthesis step
  • 5.3 Integration test: parallel flow completes correctly

6. Smoke

  • 6.1 Run parallel-research flow with 3 agents
  • 6.2 Verify synthesis step triggers on first completion
  • 6.3 Verify variable substitution in synthesis prompt