v1.14.7

Gentleman-Programming/engramv1.14.7Apr 28, 2026by github-actions[bot]

Upgrading?

Release notes summary

Serialized MCP write tools through an explicit queue to prevent concurrent SQLite write contention and fixed timeout paths exposed in previous versions.

Key Highlights

  • Serialized MCP write tools via explicit queue to prevent SQLite contention.
  • Fixed timeout path by closing candidate-search rows before follow-up writes.
  • Kept MCP read tools direct to avoid blocking searches behind writes.

New Features

  • Improved concurrency handling for MCP write operations.

Full Release Notes

## 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`

Related Repositories