12775d56da
The shipped Store 1 persisted repo-file descriptors in a new SqliteObservationStore — a second, unsynchronized SQLite writer on the event-log DB (no WAL/busy_timeout, one shared Connection across coroutines) holding a fact the log already carries. That violates "the event log is the only source of truth" (inv #1/#8): an Observation is just FileWrittenEvent.path + postImageHash + describe(bytes).render(), and render is a pure function of content-addressed CAS bytes. Replace the whole durable apparatus with an in-process memo (descriptorMemo, keyed on repoRoot+path+contentHash) on the orchestrator, next to the existing artifactContentCache. Rebuilt from the log on restart, disposable, no external store. Preserves the perf win (skip CAS read + regex on repeat describes) with none of the concurrency/lock risk. Deletes: ObservationStore/InMemoryObservationStore/SqliteObservationStore (+ tests), InfrastructureModule.createObservationStore, the FileReadTool priming path (which never hit anyway — it keyed on a workspace-relative path while every consumer looks up the absolute FileWrittenEvent.path), the FileReadConfig/SessionOrchestrator plumbing, and five orphaned build.gradle deps. Store 2 (soft-confidence hints) unchanged — it was correct. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HMbPmZZjcXhR2crU82zZ8S
30 lines
933 B
Groovy
30 lines
933 B
Groovy
plugins {
|
|
id 'java-library'
|
|
id 'org.jetbrains.kotlin.jvm'
|
|
id 'org.jetbrains.kotlin.plugin.serialization'
|
|
}
|
|
|
|
ext {
|
|
ktor_version = '3.0.3'
|
|
}
|
|
|
|
dependencies {
|
|
implementation project(":core:tools")
|
|
implementation project(":core:events")
|
|
implementation project(":core:approvals")
|
|
implementation project(":core:sessions")
|
|
implementation project(":core:tasks")
|
|
implementation project(":infrastructure:tools:filesystem")
|
|
implementation project(":core:artifacts")
|
|
implementation project(":core:artifacts-store")
|
|
|
|
// Web research tools (web_search, web_fetch) + deterministic HTML→markdown extraction.
|
|
implementation 'org.jsoup:jsoup:1.20.1'
|
|
implementation "io.ktor:ktor-client-core:$ktor_version"
|
|
implementation "io.ktor:ktor-client-cio:$ktor_version"
|
|
|
|
testImplementation "io.ktor:ktor-client-mock:$ktor_version"
|
|
}
|
|
|
|
tasks.named("koverVerify").configure { enabled = false }
|