Parent: #126
What
Define structured output types for each phase so inter-phase data flow is typed, not stringly-typed fields on a shared context:
PlanPhaseResult — structured plan, raw output, parsed success/failure
ReviewPhaseResult — decision (approve/request_changes), findings, feedback
ExecutePhaseResult — exit code, changed files, error snippet
VerifyPhaseResult — passed/failed, summary, QA results
TestPhaseResult — exit code, output, failure fingerprint
Phases return these. Orchestrator reads them to decide next step. Previous phase result passed into next phase's context factory.
Scope
packages/pipeline/src/types.ts — new result types
packages/pipeline/src/pipeline/planning-phases.ts — return typed results
packages/pipeline/src/pipeline/execution-phases.ts — return typed results
Estimate
~80 lines for types. Integration with dispatch loop adds ~50 more.
Depends on
#132 (dispatch loop) — results feed into dispatch decisions.
Parent: #126
What
Define structured output types for each phase so inter-phase data flow is typed, not stringly-typed fields on a shared context:
PlanPhaseResult— structured plan, raw output, parsed success/failureReviewPhaseResult— decision (approve/request_changes), findings, feedbackExecutePhaseResult— exit code, changed files, error snippetVerifyPhaseResult— passed/failed, summary, QA resultsTestPhaseResult— exit code, output, failure fingerprintPhases return these. Orchestrator reads them to decide next step. Previous phase result passed into next phase's context factory.
Scope
packages/pipeline/src/types.ts— new result typespackages/pipeline/src/pipeline/planning-phases.ts— return typed resultspackages/pipeline/src/pipeline/execution-phases.ts— return typed resultsEstimate
~80 lines for types. Integration with dispatch loop adds ~50 more.
Depends on
#132 (dispatch loop) — results feed into dispatch decisions.