Perseus Vault v2.13.0 — workspace isolation, retention semantics, /memories, dense prefilter
The largest release since the Perseus Vault rename — 24 PRs spanning v2.9.0→v2.13.0, with three schema migrations (v4→v6), full multi-workspace isolation, a coherent retention policy, and two new integration surfaces.
Security & isolation
- Workspace isolation, end to end.
context/recall_when/prepare/gRPC now accept a workspace scope (#338); entity identity is(category, key, workspace_hash)with a migrated unique index, soshare/federatecopy instead of destructively moving the source row (#342); near-duplicate detection no longer swallows one workspace's writes into another's (#338); dashboard endpoints workspace-scoped (#346). - Prompt-injection hardening: untrusted entity bodies are neutralized before splicing into
<memory-prep>/context blocks (#337); AAD delimiter collision fixed withrekey_aadmigration (#329).
Retention & memory semantics
- Documented forgetting policy — new docs/retention.md: the decay curve, the ~21-day auto-archive point, and every exemption.
- Unified constants (#337): one archive threshold across
decay_tick/cohere/autocohere; promotion atWORKING_THRESHOLDeverywhere; verified facts floored, never auto-archived. - Persistent importance (#344): an explicit
mimir_scorenow survives every decay recompute as a floor — fidelity beats recency. - Opt-in reinforcement (#343):
reinforce: trueon dense/hybrid recall makes used memories resist decay; the default stays byte-deterministic. - Local dreaming (#350):
autocoherenow consolidates the coldest overlapping memories into evidence-tracked observations and retires the merged sources (verified/importance-floored sources exempt) — compression instead of loss, running in the background. - Follow-rate efficacy scoring (#332): memories that get followed, not just recalled, resist decay; ignored rules fade.
New surfaces
mimir_memories(#345): Anthropic memory-tool directory convention (view/create/str_replace/insert/delete/renameunder/memories) — clients built against Claude's native memory tool work against the vault unchanged, with FTS search, encryption at rest, and versioned edits for free. 49 tools total.perseus-vault prepare(#336): pre-turn auto-injection — one CLI call returns the<memory-prep>block for a hook to splice into the system prompt, now workspace-scopable with--workspace.perseus-vault connect(#333): one-command MCP client setup (Claude Code, Codex, Cursor, VS Code, Hermes).
Performance
- Dense search signature prefilter (#347): sign-bit signatures (schema v6) Hamming-prefilter candidates above 2048 embedded rows — ~30× less scan I/O, exact-cosine re-rank, zero new dependencies, byte-identical below the cutover.
- Graph arm batched (#340):
graph_expand's N+1 point-queries → chunked batch hydration;consolidate's O(n²) trigram rebuilds → cached sets. - Hybrid recall gains a graph-expansion arm (#326): entities linked to a strong hit surface even when they rank poorly on keywords or embeddings alone.
Fixes worth knowing about
- Revived entities (forget → remember) were silently unsearchable forever — FTS row now restored (#345).
mimir_remember/mimir_recallaccept explicit JSONnullon optional fields (#334).as_ofzero-width history window, staleserverInfo.name, DOCX self-closing-tag corruption, and a build-break from two textually-clean-but-semantically-conflicting merges (#331, #324, #349).
Migrations: schema v3→v6 apply automatically and irreversibly on first open (unique-index swap, importance, emb_sig + signature backfill). Back up the DB file before upgrading if you may need to roll back the binary.
🤖 Generated with Claude Code