Commit Graph

342 Commits

Author SHA1 Message Date
Lukas May
aacfe53492 chore: complete v1.1 milestone
- Created MILESTONES.md with v1.0 and v1.1 entries
- Evolved PROJECT.md with validated requirements and current state
- Reorganized ROADMAP.md with collapsed v1.1 milestone
- Created milestone archive: milestones/v1.1-ROADMAP.md
- Updated STATE.md for next milestone planning
2026-01-31 16:31:57 +01:00
Lukas May
c6a4fb3cfe docs(09-01): complete conflict & parallel E2E tests plan
Tasks completed: 2/2
- Conflict hand-back round-trip tests
- Multi-agent parallel completion tests

SUMMARY: .planning/phases/09-extended-scenarios/09-01-SUMMARY.md
2026-01-31 15:46:37 +01:00
Lukas May
cc405c6e2f docs(09-02): complete recovery & resume E2E tests plan
Tasks completed: 2/2
- Create recovery/resume scenario tests
- Create extended agent Q&A scenario tests

SUMMARY: .planning/phases/09-extended-scenarios/09-02-SUMMARY.md
2026-01-31 15:46:17 +01:00
Lukas May
62b13d8e84 test(09-02): add recovery and Q&A E2E scenario tests
- Queue state survives in database (source of truth)
- In-progress task recoverable after agent crash
- Blocked task state persists and can be unblocked
- Merge queue state recoverable
- Question enters waiting state and completes after resume
- Question surfaces as structured PendingQuestion
- Agent resumes with answer and completes successfully
- Waiting agent status transitions correctly through full cycle
2026-01-31 15:44:57 +01:00
Lukas May
6ac9df7619 test(09-01): create multi-agent parallel completion E2E tests
- Multiple agents complete tasks in parallel
- Parallel merges process in correct dependency order
- Parallel dispatch with mixed outcomes (success + crash)
- 3 parallel work tests passing
2026-01-31 15:44:16 +01:00
Lukas May
878f2a28d7 test(09-01): create conflict hand-back round-trip E2E tests
- Full conflict cycle: detect conflict -> agent resolves -> merge succeeds
- Conflict resolution preserves original task context
- Multiple sequential conflicts resolved in order
- 3 conflict round-trip tests passing
2026-01-31 15:43:56 +01:00
Lukas May
e318a92413 docs(08.1-02): complete MockAgentManager schema alignment plan
Tasks completed: 3/3
- Update MockAgentManager to use schema-aligned scenarios
- Update TestHarness setAgentScenario helper
- Update MockAgentManager tests

SUMMARY: .planning/phases/08.1-agent-output-schema/08.1-02-SUMMARY.md
2026-01-31 15:33:12 +01:00
Lukas May
565f9fdae9 test(08.1-02): update tests to use schema-aligned scenarios
- Update MockAgentManager tests to use status-based scenarios
- Change outcome:'crash' to status:'unrecoverable_error' with error field
- Change outcome:'waiting_for_input' to status:'question' with question field
- Change outcome:'success' to status:'done' with result field
- Add tests for structured question data (options, multiSelect)
- Add tests for getPendingQuestion and resume clearing pending question
- Update E2E edge-cases tests with new scenario format
- Update harness tests with new scenario format
2026-01-31 15:31:56 +01:00
Lukas May
8e38bd298b feat(08.1-02): add TestHarness convenience methods for scenarios
- Add setAgentDone() for done status scenarios
- Add setAgentQuestion() for question status scenarios
- Add setAgentError() for unrecoverable_error scenarios
- Add getPendingQuestion() to harness interface
- Import PendingQuestion type from agent/types
2026-01-31 15:29:27 +01:00
Lukas May
ead4614383 feat(08.1-02): update MockAgentManager to schema-aligned scenarios
- Change MockAgentScenario from outcome-based to status-based discriminated union
- Align with agent output schema: done/question/unrecoverable_error
- Update completeAgent() to handle new status types
- Update resume() to use new scenario format
2026-01-31 15:28:38 +01:00
Lukas May
ee0d6eae33 docs(08.1-01): complete agent output schema plan
Tasks completed: 3/3
- Define agent output schema with Zod
- Update ClaudeAgentManager to use schema and handle question flow
- Update AgentWaitingEvent to include structured question data

SUMMARY: .planning/phases/08.1-agent-output-schema/08.1-01-SUMMARY.md
2026-01-31 15:26:47 +01:00
Lukas May
3a3d3f4c08 feat(08.1-01): update AgentWaitingEvent with structured question data
- Add options array for predefined question choices
- Add multiSelect boolean for multi-selection questions
- Update dispatch manager test mock with getPendingQuestion
2026-01-31 15:25:11 +01:00
Lukas May
d9673d54a3 feat(08.1-01): update ClaudeAgentManager to use structured schema
- Pass --json-schema flag to Claude CLI for validated output
- Parse discriminated union (done/question/unrecoverable_error) in handleAgentCompletion
- Add getPendingQuestion method to AgentManager interface
- Add PendingQuestion type for structured question data
- Store pending question in ActiveAgent for later retrieval
- Remove hacky string matching for waiting_for_input detection
- Update MockAgentManager with getPendingQuestion and options support
- Update tests for new CLI arguments and result format
2026-01-31 15:25:07 +01:00
Lukas May
41598f577f feat(08.1-01): define agent output schema with Zod
- Discriminated union with done/question/unrecoverable_error status
- Options schema for structured question choices
- JSON schema export for Claude CLI --json-schema flag
- Type export for runtime validation
2026-01-31 15:21:09 +01:00
Lukas May
3168b30185 docs(08.1, 09): insert agent output schema phase, update phase 9
Phase 8.1: Agent Output Schema (INSERTED)
- 2 plans in 2 waves (sequential)
- Defines discriminated union schema (done/question/error)
- Updates ClaudeAgentManager to use --json-schema flag
- Aligns MockAgentManager with new schema

Phase 9: Extended Scenarios (updated)
- 2 plans in 1 wave (parallel)
- Now depends on Phase 8.1
- Updated scenario format references
2026-01-31 15:19:14 +01:00
Lukas May
05f6f64fbe docs(09): create phase plan
Phase 09: Extended Scenarios
- 2 plans in 1 wave
- 2 parallel, 0 sequential
- Ready for execution
2026-01-31 15:06:47 +01:00
Lukas May
5152f0baa4 docs(09): capture phase context
Phase 9: Extended Scenarios
- Vision and goals documented
- Four core scenarios: conflict hand-back, multi-agent, recovery, question/answer
- CI deferred - focus on test coverage
2026-01-31 09:45:13 +01:00
Lukas May
761c59f3a3 docs(08-01): complete happy path E2E tests plan
Tasks completed: 2/2
- Create E2E happy path test file
- Add complex dependency flow test

SUMMARY: .planning/phases/08-e2e-scenario-tests/08-01-SUMMARY.md
2026-01-31 09:16:06 +01:00
Lukas May
a572a90e7e docs(08-02): complete edge case E2E tests plan
Tasks completed: 3/3
- Create E2E edge case tests (crash, waiting, blocking)
- Add merge conflict scenario tests
- Add test module index export

SUMMARY: .planning/phases/08-e2e-scenario-tests/08-02-SUMMARY.md
2026-01-31 09:15:46 +01:00
Lukas May
fd2f8ec9e3 test(08-01): add complex dependency flow test
- Multi-level dependency graph with COMPLEX_FIXTURE
- Complete 5 tasks sequentially with priority ordering
- Verify fixture dependencies stored in task_dependencies table
- Validate Task 4A depends on both Task 2A and Task 3A
2026-01-31 09:14:11 +01:00
Lukas May
ac0812861d docs(08-02): add E2E test module index
- Documents test module structure
- Lists test files and their purposes
2026-01-31 09:13:59 +01:00
Lukas May
ebeb538e21 test(08-02): add merge conflict scenario tests
- Merge conflict detection with merge:conflicted event
- Conflict appears in queue state as conflicted
- handleConflict creates conflict-resolution task
- Successful merge after separate task without conflict
2026-01-31 09:13:40 +01:00
Lukas May
6952e5e287 test(08-01): create E2E happy path test file
- Single task flow: queue -> dispatch -> complete
- Sequential dependencies: priority ordering, queue state
- Parallel dispatch: multiple agents, different tasks
- Full merge flow: task completion -> merge queue -> process
2026-01-31 09:13:26 +01:00
Lukas May
e0d8fc85c6 test(08-02): create E2E edge case tests for crash, waiting, and blocking
- Agent crash scenario: spawned -> crashed events, status not completed
- Agent waiting for input: waiting event with question, resume flow
- Task blocking: blocked list, event emission, not dispatchable
2026-01-31 09:12:45 +01:00
Lukas May
c823a6b44b docs(08): create phase plan
Phase 08: E2E Scenario Tests
- 2 plans in 1 wave (parallel)
- 08-01: Happy path tests (dispatch, dependencies, merge)
- 08-02: Edge case tests (crash, waiting, conflicts)
- Ready for execution
2026-01-31 09:06:44 +01:00
Lukas May
e79ba1d8ed docs(07-02): complete test harness plan
Tasks completed: 3/3
- Create fixture helpers for database seeding
- Create test harness with full system wiring
- Write tests proving harness works

Phase 7 complete (2/2 plans).

SUMMARY: .planning/phases/07-mock-agent-test-harness/07-02-SUMMARY.md
2026-01-31 08:51:16 +01:00
Lukas May
6cc9e7f6be test(07-02): write tests proving harness works
- Add 19 comprehensive test cases for TestHarness
- Test createTestHarness() returns all components
- Test seedFixture() creates hierarchies with correct IDs
- Test task dependencies resolved correctly
- Test event capture via getEventsByType/clearEvents
- Test dispatch flow with MockAgentManager
- Test agent completion triggers expected events
- Test full dispatch -> complete flow end-to-end
- Test MockWorktreeManager create/merge/setMergeResult
2026-01-31 08:49:38 +01:00
Lukas May
4424a46c80 feat(07-02): create test harness with full system wiring
- Add TestHarness interface with all system components and helpers
- Add createTestHarness() factory wiring full system with mocks
- Add MockWorktreeManager (in-memory worktree simulation)
- Add CapturingEventBus (event capture for verification)
- Wire real DispatchManager and CoordinationManager with mocks
- Export all components via src/test/index.ts
2026-01-31 08:47:15 +01:00
Lukas May
ba1f7ccd62 feat(07-02): create fixture helpers for database seeding
- Add TaskFixture, PlanFixture, PhaseFixture, InitiativeFixture interfaces
- Add seedFixture() for creating complete task hierarchies with dependency resolution
- Add SeededFixture result type with name-to-ID mappings
- Add SIMPLE_FIXTURE (A -> B, C dependency chain)
- Add PARALLEL_FIXTURE (2 plans with independent tasks)
- Add COMPLEX_FIXTURE (cross-plan dependencies across 2 phases)
2026-01-31 08:46:22 +01:00
Lukas May
e07050de93 docs(07-01): complete MockAgentManager adapter plan
Tasks completed: 2/2
- Implement MockAgentManager adapter
- Write comprehensive tests for MockAgentManager

SUMMARY: .planning/phases/07-mock-agent-test-harness/07-01-SUMMARY.md
2026-01-31 08:44:10 +01:00
Lukas May
e305375820 test(07-01): add comprehensive tests for MockAgentManager
28 test cases covering:
- spawn() with default scenario (immediate success)
- spawn() with configured delay
- spawn() with crash scenario (agent:crashed, result.success=false)
- spawn() with waiting_for_input (agent:waiting, status='waiting_for_input')
- resume() after waiting_for_input (agent:resumed, continues scenario)
- stop() kills scheduled completion, emits agent:stopped
- list() returns all agents with correct status
- get() and getByName() lookups
- setScenario() overrides for specific agent names
- Event emission order verification (spawned before completion)
- Name uniqueness validation
- Constructor options (eventBus, defaultScenario)
- clear() cleanup

Export MockAgentManager and MockAgentScenario from src/agent/index.ts
2026-01-31 08:43:15 +01:00
Lukas May
6148af784e feat(07-01): implement MockAgentManager adapter
- MockAgentScenario interface with outcome, delay, message, filesModified, question
- Constructor takes optional eventBus and defaultScenario
- setScenario() for per-agent scenario overrides
- spawn() creates agent, schedules async completion based on scenario
- Emits all lifecycle events: agent:spawned, agent:stopped, agent:crashed, agent:waiting, agent:resumed
- stop() cancels pending completion, marks agent stopped
- resume() re-runs scenario for waiting_for_input agents
- getResult() returns stored result after completion
- clear() for test cleanup
2026-01-31 08:41:49 +01:00
Lukas May
d0e9acf512 docs(07): create phase plan
Phase 07: Mock Agent & Test Harness
- 2 plans in 2 waves
- 1 parallel (07-01), 1 sequential (07-02)
- Ready for execution
2026-01-31 08:15:02 +01:00
Lukas May
95ac68b86b docs: create milestone v1.1 Test Infrastructure (3 phases)
Phases:
- 7. Mock Agent & Test Harness: configurable scenario simulation
- 8. E2E Scenario Tests: happy paths + edge cases
- 9. Extended Scenarios & CI: coverage + pipeline integration
2026-01-30 21:45:49 +01:00
Lukas May
207072fb55 chore: remove phase 7 (File System UI)
- Deleted .planning/phases/07-file-system-ui/ (4 PLAN.md files)
- FSUI-01, FSUI-02, FSUI-03, FSUI-04 deferred to v2
- v1 milestone complete: 23 requirements across 6 phases
- All 27 plans executed successfully
2026-01-30 21:25:26 +01:00
Lukas May
dbab535915 docs(07): create phase plan
Phase 07: File System UI
- 4 plans in 3 waves
- 2 parallel (07-02, 07-03 in Wave 2)
- Requirements: FSUI-01, FSUI-02, FSUI-03, FSUI-04
- Ready for execution
2026-01-30 21:19:22 +01:00
Lukas May
876b9ce161 docs(06): complete coordination phase
- Mark COORD-01, COORD-02 requirements as Complete
- Add missing 06-02-SUMMARY.md
2026-01-30 21:16:07 +01:00
Lukas May
7f07d1c135 docs(06-03): complete coordination tRPC & CLI plan
Tasks completed: 2/2
- Add coordination tRPC procedures
- Add CLI commands for merge coordination

SUMMARY: .planning/phases/06-coordination/06-03-SUMMARY.md
2026-01-30 21:15:10 +01:00
Lukas May
ae8d303e5e feat(06-03): add merge and coordinate CLI commands
- Add cw merge queue <taskId> to queue tasks for merge
- Add cw merge status to show merge queue status
- Add cw merge next to show next task ready to merge
- Add cw coordinate [--target <branch>] to process all ready merges
2026-01-30 21:13:29 +01:00
Lukas May
1a4de26966 feat(06-03): add coordination tRPC procedures
- Add coordinationManager to TRPCContext and CreateContextOptions
- Add requireCoordinationManager helper function
- Add queueMerge mutation for queuing tasks for merge
- Add processMerges mutation for processing merges in dependency order
- Add getMergeQueueStatus query for queue state inspection
- Add getNextMergeable query for next mergeable task
2026-01-30 21:12:48 +01:00
Lukas May
37a90db28c test(06-02): add comprehensive CoordinationManager tests
18 tests covering:
- Queue management (queueMerge, getQueueState)
- Dependency ordering (getNextMergeable with priority)
- Success path (processMerges with clean merges)
- Conflict handling (detect conflicts, create resolution task, send message)
- Error handling (missing repositories, missing agent)

Exports DefaultCoordinationManager from coordination module index.
2026-01-30 21:09:29 +01:00
Lukas May
4535707bc8 feat(06-02): enhance conflict bounce-back with agent messaging
Adds MessageRepository to DefaultCoordinationManager for conflict notification:
- Creates info message to agent when merge conflict occurs
- Message includes conflicting file list and resolution instructions
- System-generated messages use senderType='user' with null senderId
- Refactors conflict description into cleaner array.join format
2026-01-30 21:07:46 +01:00
Lukas May
6d7894bde4 feat(06-02): implement DefaultCoordinationManager adapter
Implements CoordinationManager interface with:
- In-memory merge queue with dependency tracking
- Dependency-ordered merging (getNextMergeable)
- Merge queue state tracking (queued, in_progress, merged, conflicted)
- Event emission for all merge lifecycle events
- Basic conflict handling (creates resolution task)
2026-01-30 21:06:54 +01:00
Lukas May
efcffef3ec docs(06-01): complete coordination events & port plan
Tasks completed: 2/2
- Add coordination domain events to event types
- Create CoordinationManager port interface

SUMMARY: .planning/phases/06-coordination/06-01-SUMMARY.md
2026-01-30 21:05:17 +01:00
Lukas May
0570d21ad6 feat(06-01): add CoordinationManager port interface
- MergeQueueItem type for merge queue entries
- MergeStatus type: queued | in_progress | merged | conflict
- MergeResult type with task context
- CoordinationManager interface with methods:
  - queueMerge: queue completed task for merge
  - getNextMergeable: get next task with resolved dependencies
  - processMerges: process all ready merges
  - handleConflict: bounce-back for conflict resolution
  - getQueueState: query queue by status
2026-01-30 21:03:54 +01:00
Lukas May
94130a6661 feat(06-01): add coordination domain events for merge lifecycle
- MergeQueuedEvent: completed task queued for merge
- MergeStartedEvent: merge attempt begins
- MergeCompletedEvent: merge succeeds
- MergeConflictedEvent: merge has conflicts (triggers bounce-back)
2026-01-30 21:03:02 +01:00
Lukas May
22572f410f docs(06): create phase plan
Phase 06: Coordination
- 3 plans in 3 waves
- 06-01: Coordination Events & Port (Wave 1)
- 06-02: CoordinationManager Adapter (Wave 2)
- 06-03: tRPC & CLI Integration (Wave 3)
- Ready for execution
2026-01-30 20:58:23 +01:00
Lukas May
e941561ecf docs(05): complete task-dispatch phase 2026-01-30 20:51:11 +01:00
Lukas May
a4484eb67d docs(05-05): complete message & dispatch CLI plan
Tasks completed: 2/2
- Add message and dispatch tRPC procedures
- Add message and dispatch CLI commands

Phase 5 complete: all task dispatch requirements implemented.

SUMMARY: .planning/phases/05-task-dispatch/05-05-SUMMARY.md
2026-01-30 20:50:18 +01:00
Lukas May
211411e795 feat(05-05): add message and dispatch CLI commands
- Add message command group: list, read, respond
- Add dispatch command group: queue, next, status, complete
- Message list shows pending count and filters by agent/status
- Dispatch status shows ready tasks with priorities
2026-01-30 20:48:22 +01:00