feat: implement proper orchestrator workflow with reconciliation loop
ci / test (push) Failing after 1m2s

Rewrite OrchestratorWorkflow as true reconciliation loop:
- PlanningActivity decides what tasks to dispatch
- Fan-out TaskUnit workflows for parallel execution
- Each TaskUnit runs Implementer → Test → Judge → Commit
- Judge reviews code quality, retries on failure with lessons
- Fan-in waits for all TaskUnits
- Board update and squash merge on success
- continue-as-new for long-running workflows
- Proper error handling and signal support

Key changes:
- statemachine/orchestrator.go: Reconciliation loop (Plan → Dispatch → Review → Repeat)
- statemachine/taskunit.go: Task execution with retry loop & judge review
- statemachine/types.go: Updated TaskUnitInput/Output for new workflow
- cmd/worker/main.go: Register RunIntegrationTestActivity
- action/integration.go: Renamed from integration_test.go (fix Go build issue)

Models:
- Planner: reasoning (OpenAI-compatible from local LLM API)
- Judge: reasoning (reviews diff + tests, gates success)
- Implementer: ornith:35b (executes tasks)

Verification: go build ./cmd/worker ./cmd/starter ✓
This commit is contained in:
Test
2026-08-26 15:00:42 -07:00
parent 121cad1ad5
commit 6a87833c7f
9 changed files with 252 additions and 259 deletions
+11 -8
View File
@@ -69,20 +69,23 @@ type OrchestratorOutput struct {
// TaskUnitInput is the input to the TaskUnit workflow.
type TaskUnitInput struct {
TaskID string
TargetRepoPath string
JudgeSpec PromptSpec
ImplementerSpec PromptSpec
BaseTimeout time.Duration
MaxJudgeRetries int
TaskID string
RemoteURL string
TargetRepoPath string
Milestone string
Config OrchestratorConfig
DryRun bool
}
// TaskUnitOutput is the output of the TaskUnit workflow.
type TaskUnitOutput struct {
TaskID string
Verdict string // "pass" or "fail"
Critique string
Status string // "success" or "failed"
Verdict string // "pass" or "fail" from judge
Critique string // feedback from judge
Branch string
Reason string // error reason if failed
Changes string // summary of changes
}
// SkillRef references a skill source.