Phase 14: Parallel Phase Execution - 8 plans in 5 waves - 4 parallel in Wave 1, 3, 5 - Adds phase_dependencies schema (mirrors task_dependencies) - PhaseDispatchManager port and adapter - tRPC procedures and CLI commands - Unit tests and E2E tests
3.2 KiB
phase, plan, type, wave, depends_on, files_modified, autonomous
| phase | plan | type | wave | depends_on | files_modified | autonomous | |||
|---|---|---|---|---|---|---|---|---|---|
| 14-parallel-phase-execution | 07 | execute | 5 |
|
|
true |
Purpose: Verify phase dependency and dispatch logic works correctly. Output: Unit tests with full coverage of new functionality.
<execution_context>
@/.claude/get-shit-done/workflows/execute-plan.md
@/.claude/get-shit-done/templates/summary.md
</execution_context>
Reference implementations:
@src/dispatch/manager.test.ts @src/db/repositories/drizzle/task.test.ts
Task 1: Add PhaseRepository dependency tests src/db/repositories/drizzle/phase.test.ts Add test cases for new PhaseRepository methods:describe('createDependency'):
- creates dependency between two phases
- throws if phase doesn't exist
- allows multiple dependencies for same phase
describe('getDependencies'):
- returns empty array for phase with no dependencies
- returns dependency IDs for phase with dependencies
- returns only direct dependencies (not transitive)
describe('getDependents'):
- returns empty array for phase with no dependents
- returns dependent phase IDs
- returns only direct dependents
Use existing test patterns with createTestDatabase() and cleanup. npm test -- src/db/repositories/drizzle/phase.test.ts passes PhaseRepository dependency methods have test coverage
Task 2: Add DefaultPhaseDispatchManager tests src/dispatch/phase-manager.test.ts Create test file for DefaultPhaseDispatchManager:describe('queuePhase'):
- adds phase to queue
- emits PhaseQueuedEvent
- includes dependencies in queued phase
describe('getNextDispatchablePhase'):
- returns null when queue empty
- returns phase with no dependencies first
- skips phases with incomplete dependencies
- returns oldest phase when multiple ready
describe('dispatchNextPhase'):
- updates phase status to in_progress
- emits PhaseStartedEvent
- returns failure when no dispatchable phases
describe('completePhase'):
- updates phase status to completed
- removes from queue
- emits PhaseCompletedEvent
describe('blockPhase'):
- updates phase status
- adds to blocked list
- emits PhaseBlockedEvent
Use EventEmitterBus for event verification. Mock PhaseRepository for dependency data. npm test -- src/dispatch/phase-manager.test.ts passes DefaultPhaseDispatchManager has test coverage
Before declaring plan complete: - [ ] `npm run build` succeeds without errors - [ ] `npm test` passes all tests - [ ] New tests cover all new functionality<success_criteria>
- All tasks completed
- All verification checks pass
- Tests follow existing patterns
- Coverage includes happy path and edge cases </success_criteria>