Files
correx/docs/epics/epic-8-progress.md
T

2.1 KiB

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.ktMap<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