Context
Fabro supports sub-workflows via house shape nodes — a parent workflow can invoke a child workflow with bidirectional context flow. The child gets a clone of parent context, executes independently, and modifications merge back via diff. The parent can configure max cycles, poll intervals, and stop conditions.
Wave's meta.go supports dynamic pipeline generation but not runtime composition — you can't have a pipeline step that invokes another pipeline.
Design
Nested Pipeline Steps
steps:
- name: plan
persona: navigator
- name: implement-and-test
type: pipeline
pipeline: implement-test-loop # reference another pipeline
depends_on: [plan]
config:
max_cycles: 50 # max iterations in child
timeout: 3600s # hard timeout
stop_condition: "context.tests_pass=true"
artifacts:
inject: [plan] # pass parent artifacts to child
extract: [implementation] # pull child artifacts back to parent
Context Flow
- Parent → Child: Artifacts listed in
inject are copied into child's .wave/artifacts/
- Child → Parent: Artifacts listed in
extract are copied back after child completes
- Context variables: Child's context updates merge into parent context
Use Cases
- implement-issue delegates to implement-test-loop for the implement→test→fix cycle
- speckit-flow delegates to implement for the actual coding step
- audit-dual runs audit-security and audit-dx as child pipelines
Workspace Handling
Child pipeline gets its own workspace (worktree) by default. Can share parent workspace via:
- name: implement-and-test
type: pipeline
pipeline: implement-test-loop
workspace:
ref: parent # share parent's workspace
Implementation Scope
- Add
type: pipeline step type to manifest schema
- Sub-pipeline executor — launches child pipeline within parent run
- Artifact injection/extraction between parent and child
- Context merging
- Lifecycle management (timeout, stop condition, max cycles)
- State tracking — child run is a sub-entry in parent run state
Research Sources
- Fabro sub-workflows:
house shape with stack.child_workflow, manager.max_cycles, manager.stop_condition
- Fabro context flow: bidirectional context clone + diff merge
Context
Fabro supports sub-workflows via
houseshape nodes — a parent workflow can invoke a child workflow with bidirectional context flow. The child gets a clone of parent context, executes independently, and modifications merge back via diff. The parent can configure max cycles, poll intervals, and stop conditions.Wave's
meta.gosupports dynamic pipeline generation but not runtime composition — you can't have a pipeline step that invokes another pipeline.Design
Nested Pipeline Steps
Context Flow
injectare copied into child's.wave/artifacts/extractare copied back after child completesUse Cases
Workspace Handling
Child pipeline gets its own workspace (worktree) by default. Can share parent workspace via:
Implementation Scope
type: pipelinestep type to manifest schemaResearch Sources
houseshape withstack.child_workflow,manager.max_cycles,manager.stop_condition