Releases
v1.14.7
Compare
Sorry, something went wrong.
No results found
Summary
Serializes MCP write tools through an explicit queue to prevent concurrent SQLite write contention.
Fixes a mem_save timeout path exposed by v1.14.6 by closing candidate-search rows before follow-up writes.
Keeps MCP read tools direct so searches/current-project lookups do not wait behind writes.
Details
Queued MCP write tools: mem_save, mem_update, mem_delete, mem_save_prompt, mem_session_summary, mem_session_start, mem_session_end, mem_capture_passive, mem_merge_projects, and mem_judge.
Read tools such as mem_search, mem_context, mem_current_project, and mem_get_observation remain direct.
Queue cancellation is worker-owned so callers do not receive a false cancellation for a write that already started.
Panics in a write handler are isolated so the queue worker stays alive for later writes.
Queue backpressure returns a clear retryable error instead of hanging.
Validation
Double adversarial review returned clean after fixing the cancellation race.
go test -count=1 ./internal/mcp ./internal/store ./cmd/engram ./internal/setup
go test -race ./internal/mcp -run 'Test(WriteQueue|ReadHandlerDoesNotWaitBehindBlockedQueuedWrite)' -count=1
git diff --check
You can’t perform that action at this time.