- Add internal/dispatch package for concurrent task execution - Implement Task interface for flexible task types - Implement Dispatcher with configurable max concurrency - Semaphore-based concurrency control for thread safety - Parallel execution of multiple tasks with context support - Task result aggregation with timing metrics - Speedup calculation: sum of task durations / wallclock time - Per-task timing: start time, end time, duration - Completion tracking and status queries - Statistics collection (total, completed, duration metrics) - 15 dispatch tests, all passing Features: - DispatchAll() for concurrent task execution - Configurable concurrency limit (default 10, semaphore-based) - Error handling without blocking other tasks - Wall-clock execution time measurement - Task duration aggregation - Speedup metrics (parallel efficiency) - Context cancellation support - MockTask helper for testing Verification: - 9 tasks @ 100ms each run in ~100ms (speedup ~9x) ✓ - Concurrency limit enforced ✓ - All tasks complete even with errors ✓ - Timing metrics accurate ✓ - Speedup calculation correct ✓ Performance: - Linear speedup with task count - Minimal overhead from dispatching - Thread-safe concurrent execution - Configurable parallelism Next: T2.3 (Prompt template caching)
1.8 KiB
1.8 KiB
Task Board — Milestone T2: Scale & Performance
Submilestone: T2 (Distributed execution, caching, performance optimization)
| ID | Scope | Status | Branch | Verification |
|---|---|---|---|---|
| T2.1 | Activity result caching: deduplicate repeated LLM calls for same task state | [x] | task/T2.1 |
Implementer called 2x on same code → second call returns cached Implementer output |
| T2.2 | Parallel task dispatch: multiple T0.x tasks execute truly concurrently (not sequential) | [x] | task/T2.2 |
9 tasks complete in ~1/9 total time (wall-clock speedup measured) |
| T2.3 | Prompt template caching: pre-compile Go templates on worker startup | [ ] | task/T2.3 |
Template render latency < 100ms (vs parse+render each time) |
| T2.4 | Lessons file indexing: fast lookup of past failures without full file scan | [ ] | task/T2.4 |
Query lessons by task type → return in < 10ms for 1000s of entries |
| T2.5 | Git operation batching: combine multiple worktree commits into single push/merge | [ ] | task/T2.5 |
N tasks → 1 push (vs N pushes), measured via git ref-log |
| T2.6 | LLM request batching: group similar Implementer calls into one API request | [ ] | task/T2.6 |
3 implementer tasks → 1 Anthropic API call with batch input (vs 3 separate calls) |
| T2.7 | Workflow history pruning: trim old task unit outputs from orchestrator history | [ ] | task/T2.7 |
Continue-as-new cycle history size constant despite 1000s of task units completed |
| T2.8 | Distributed lock optimization: replace flock with Redis/etcd for multi-pod scenarios | [ ] | task/T2.8 |
5 concurrent orchestrators on different pods share FS safely via distributed lock |
Submission Criteria
All T2.1–T2.8 marked [x] → submilestone complete → squash-merge task/T2.* to main.