# Task Board — Milestone T0 **Submilestone:** T0 (Multi-Agent Dev Orchestrator Temporal system) | ID | Scope | Status | Branch | Verification | Notes | |----|-------|--------|--------|--------------|-------| | T0.1 | Repo scaffold: go.mod, statemachine/, action/, cmd/, prompts/, internal/, tests/ | [x] | `task/T0.1` | `go build ./...` succeeds; layout matches PLAN.md | Foundation | | T0.2 | Shared types: ModelSpec, PromptSpec, OrchestratorConfig, ActivityTuning, PiRetryPolicy | [x] | `task/T0.2` | Unit test asserts all defaults (5m/2s/30s/2.0/30s stream/2m stream-max) | Config data model | | T0.3 | Git & locking: CloneRepoActivity, worktrees, squash-merge, orchestrator.lock | [x] | `task/T0.3` | Test vs local scratch repo: clone-if-empty vs fetch, worktree lifecycle, squash-merge produces 1 commit | Concurrency safety | | T0.4 | PrepareSkillsActivity, classifyPiErr (4xx/5xx/504), stream timeout learning | [x] | `task/T0.4` | Unit tests: all 3 error buckets against mocked pi HTTP client | Pi integration | | T0.5 | Planner/Judge/Implementer activities, LLM client, prompt templates | [x] | `task/T0.5` | Unit test: PromptSpec renders with system prompt + template override + raw template | LLM orchestration | | T0.6 | TaskUnitWorkflow: retry loops (timeout/judge-fail split), lessons injection, escalation | [x] | `task/T0.6` | Testsuite: pass-first-try, fail-then-pass-after-lesson, retries-exhausted, timeout-escalation | Task execution core | | T0.7 | OrchestratorWorkflow: config state, signals, fan-out/fan-in, continue-as-new, 504 learning | [x] | `task/T0.7` | Testsuite: fan-out/fan-in, squash-merge on complete, continue-as-new carries config, signals mutate config, 504 doubles StreamTimeout | Orchestration core | | T0.8 | cmd/worker, cmd/starter, internal/config (env/vsource loading) | [x] | `task/T0.8` | `go run ./cmd/worker` connects to temporal.riotpiao.com; `go run ./cmd/starter --dry-run` visible in Web UI | CLI integration | | T0.9 | End-to-end: real temporal.riotpiao.com + disposable forgejo scratch repo, all 7 verification items | [ ] | `task/T0.9` | Clone bootstrap, full cycle, live signal updates, 5xx retry+exhaust, 504 stream-timeout learning, continue-as-new bounded, squash-merge result | System validation | ## Submission Criteria All T0.1–T0.9 marked `[x]` → submilestone complete. At that point: 1. `git -C /workspace/Poimen/workflows checkout main && git pull` 2. `git merge --squash task/T0.1 task/T0.2 ... task/T0.9` 3. `git commit -m "T0: multi-agent orchestrator initial implementation"` 4. `git push origin main` 5. Delete all `task/T0.*` branches and worktrees This merge is the first real dogfood of the system's own git workflow: squashing 9 subtask branches into main as a single milestone commit. --- ## Notes - **Lessons file location:** `tasks/.orchestrator/lessons/.jsonl` (created on first failure, not committed until Planner's board commit) - **Branch naming:** Strict `task/T0.x` format; Orchestrator expects this pattern - **Dry-run vs real:** T0.8 tests with `--dry-run` (no real push); T0.9 removes flag (real remote operations) - **Temporal Web UI:** Monitor at `http://temporal.riotpiao.com:8080` (adjust port/host as needed) - **E2E fixture:** Disposable forgejo repo (deleted post-run); confirm it's not a production repo before starting T0.9