feat(T2.5): implement git operation batching
- Add internal/batching package for git operation batching - Implement GitBatcher with configurable batch size and age - Queue git operations (commit, push, merge) - Auto-flush on max batch size - Manual flush on demand - Time-based flush (max batch age) - Batch status tracking (pending, executing, completed, failed) - Network savings calculation - Statistics tracking per batch and aggregated - 24 batching tests, all passing Features: - Enqueue() for adding operations to queue - Flush() for manual batch creation - GetPendingBatch() for next pending batch - MarkBatchExecuting/Completed/Failed() for status tracking - GetStats() for batching statistics - CalculateNetworkSavings() for round trip savings - GetExecutedBatches() for completed batch history - TimeSinceLastFlush() for age checking - ShouldFlush() for time-based decisions Performance Benefits: - N commits batched into 1 push saves N-1 round trips - Example: 10 commits in 2 batches saves 8 round trips - Configurable batch size (default 10) - Configurable max age (default 5s) - FIFO queue processing Network Savings Example: - 10 operations in 2 batches of 5 each - Network savings: 8 round trips (vs 10 individual operations) - Verified in TestGetStats Status Tracking: - pending: queued and ready to execute - executing: currently being executed - completed: finished successfully - failed: execution failed (kept for retry) Test Coverage: - 24 batching tests (enqueue, flush, status, stats) - Auto-flush on max size verified - Time-based flush behavior tested - Network savings calculation verified - Error handling and state management - Concurrent safe operations (RWMutex) Next: T2.6 (LLM request batching)
This commit is contained in:
+1
-1
@@ -8,7 +8,7 @@
|
||||
| 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 | [x] | `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 | [x] | `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.5 | Git operation batching: combine multiple worktree commits into single push/merge | [x] | `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 |
|
||||
|
||||
Reference in New Issue
Block a user