0c6ac903b7
Adds task tracking as a first-class event-sourced aggregate (ADR-0012). The
event log stays the only source of truth; the board is a projection, and all of
a project's task events live in one stream (tasks:<projectId>).
core:
- new core:tasks module mirroring core:sessions: TaskStatus/State/Reducer/
BoardProjector/CounterProjection/Repository + TaskService write path that
appends events via the existing EventStore (no new storage)
- task events in core:events (sealed marker TaskEvent), registered in
Serialization.kt; status is derived by the reducer from lifecycle facts
- work-graph edges: TaskLinkType + typed TaskTargetKind on the link, so bundle
resolution dispatches on the recorded kind instead of guessing from the id
- delete is a soft tombstone (TaskDeletedEvent); cancel stays a visible outcome
surfaces:
- agent tools (Tier T2 mutators, T1 read): task_create / task_update /
task_delete / task_context, registered in both the main and per-workspace
tool registries
- REST GET /tasks/{id}/context for external agents
context bundle (TaskContextAssembler):
- task fields + acceptance criteria + relevant files + resolved dependency
tasks (live status) + raw related links + notes, with a compact render()
- semantic enrichment via a TaskKnowledgeRetriever port bridged to the existing
L3 retriever (late-bound holder for composition-root ordering)
- ADR/doc resolution via a TaskDocumentResolver port + filesystem adapter
(docs/decisions/adr-*.md, padding-agnostic; *.md paths)
Unit-verified across core:tasks / infrastructure:tools / apps:server; full
gradlew check green. Not yet live-QA'd end-to-end against a running server.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
52 lines
1.2 KiB
Groovy
52 lines
1.2 KiB
Groovy
pluginManagement {
|
|
repositories {
|
|
mavenCentral()
|
|
gradlePluginPortal()
|
|
}
|
|
}
|
|
|
|
rootProject.name = 'correx'
|
|
|
|
include ':apps:cli'
|
|
include ':apps:server'
|
|
|
|
include ':core:kernel'
|
|
include ':core:events'
|
|
include ':core:transitions'
|
|
include ':core:context'
|
|
include ':core:inference'
|
|
include ':core:artifacts'
|
|
include ':core:artifacts-store'
|
|
include ':core:validation'
|
|
include ':core:approvals'
|
|
include ':core:tools'
|
|
include ':core:toolintent'
|
|
include ':core:router'
|
|
include ':core:sessions'
|
|
include ':core:tasks'
|
|
include ':core:config'
|
|
include ':core:risk'
|
|
include ':core:journal'
|
|
include ':core:critique'
|
|
|
|
include ':infrastructure:persistence'
|
|
include ':infrastructure:inference'
|
|
include ':infrastructure:inference:commons'
|
|
include ':infrastructure:inference:llama_cpp'
|
|
include ':infrastructure:router'
|
|
include ':infrastructure:router:turbovec'
|
|
include ':infrastructure:tools'
|
|
include ':infrastructure:tools:filesystem'
|
|
include ':infrastructure:workflow'
|
|
include ':infrastructure:artifacts-cas'
|
|
|
|
include ':testing:replay'
|
|
include ':testing:contracts'
|
|
include ':testing:kernel'
|
|
include ':testing:integration'
|
|
include ':testing:fixtures'
|
|
include ':testing:projections'
|
|
include ':testing:transitions'
|
|
include ':testing:approvals'
|
|
include ':testing:deterministic'
|