# Epic 8 — Tool System Progress

**Plan:** `docs/superpowers/plans/2026-05-11-core-tools.md`

## Done

### Task 1 — Tool shared vocabulary and lifecycle events in `core:events` ✅
- `AnyMapSerializer.kt` — `Map<String, Any>` ↔ JSON bridge via JsonElement
- `ToolRequest.kt`, `ToolReceipt.kt` — shared vocabulary data classes
- `ToolInvocationId` typealias added to `IdentityTypes.kt`
- 5 lifecycle event classes: `ToolInvocationRequestedEvent`, `ToolExecutionStartedEvent`, `ToolExecutionCompletedEvent`, `ToolExecutionFailedEvent`, `ToolExecutionRejectedEvent`
- All 5 registered in `Serialization.kt` polymorphic block
- 8 tests passing including polymorphic round-trip

### Task 2 — `core:tools` contract types and build config ✅
- `Tool.kt` — plain `interface` (not sealed; infrastructure implements it)
- `ToolCapability.kt` — enum: FILE_READ, FILE_WRITE, NETWORK_ACCESS, SHELL_EXEC, PROCESS_SPAWN
- `ValidationResult.kt` — sealed interface: `Valid` / `Invalid(reason)`
- `build.gradle` — deps: `core:events`, `core:approvals`, `core:sessions`
- 3 tests passing

## Remaining (nothing is done, clean plate)

### Task 3 — `core:tools` state model
- `ToolInvocationStatus` enum: REQUESTED, STARTED, COMPLETED, FAILED, REJECTED
- `ToolInvocationRecord` data class (holds one invocation's full lifecycle)
- `ToolState` data class: `invocations: List<ToolInvocationRecord>`

### Task 4 — `core:tools` reducer, projector, repository
- `ToolReducer` interface + `DefaultToolReducer` (applies 5 lifecycle events to ToolState)
- `ToolProjector` (implements `Projection<ToolState>`)
- `DefaultToolRepository` (wraps `EventReplayer<ToolState>`)

### Task 5 — Mock tools in `testing:fixtures`
- `EchoTool` (T0, always Valid)
- `FailingTool` (T2, always Invalid)
- `RejectedTool` (T4, always Valid)
- `testing/fixtures/build.gradle` gains `:core:tools` dep

## Resume Instructions

1. Open this session in `/home/kami/Programs/correx`
2. Read `docs/superpowers/plans/2026-05-11-core-tools.md` for full task specs
3. Continue from **Task 3**
4. Model selection: Haiku for implementers, Sonnet for reviewers
5. No git repo in this project — skip all commit steps in the plan
