EE v0.15.0
EE 0.15.0 improves daemon-backed memory retrieval, generated hooks, native reranking, and backup correctness.
Upgrade steps
After installing this release, run ee index rebuild --workspace . for each workspace with a semantic index. The updated Model2Vec loader has a new producer identity, so existing vector indexes need rebuilding. Reinstall managed hooks to receive the updated snippets. For Claude Code, inspect EE hook entries before and after reinstalling: entries without eeManaged metadata can be duplicated, and ee hook status does not detect those duplicates (#41).
Changes
- Windows doctor runs can replace their own
latestpointer on repeated invocations while retaining the previous pointer and rejecting redirected parent directories. - Workspace daemons now serve anchored recall and bounded fast orientation, with local fallback when a daemon is unavailable. Anchored recall does not require loading an embedding model.
- macOS daemon clients preserve replies buffered before the server closes, fixing a socket-timeout race that broke retrieval and daemon shutdown.
- SessionStart hooks inject useful memory and rule text with provenance within their token budget.
ee hook statusrecords invocation outcomes separately from installation freshness. Missing EE or Python processes fail open. - Native reranking uses the request's blocking pool and cancellation budget. Optional reranking failures preserve fusion results with an explicit degradation; snapshot cleanup preserves the original search error.
- Model2Vec callers share verified weights within a process. Streamed decoding avoids retaining another full weight-file buffer. Persistent tokenizer caching remains upstream work.
- Backup exports preserve original memory-body whitespace. Query normalization preserves literal leading exclusion markers, deterministic UUIDs retain their sequence without ambient randomness, and pack DNA avoids duplicate unavailable-PPR warnings.
- Recorder follow commands handle SIGINT inherited as ignored from background launchers, including during long polling waits.
- Updated crossbeam-queue, base64, fs4, uuid, zeroize, zstd and toml_edit. The pinned runtime uses the maintained PEM parser and includes the Windows readiness-import correction.
- Integration tests are grouped into 39 executable targets while preserving the root test modules and required process isolation.
Validation and distribution
- Final-source
cargo check --all-targets --locked, Clippy with-D warnings, formatting, and the all-features forbidden-dependency check passed. RCH receipts retain the authorized build-admission exception and a proof-broker source-state-mismatch diagnostic; these are compiler passes, not clean infrastructure attestations. - All six final release binaries passed actual memory workflows with version, source commit, target and binary hash checked: native Windows x86-64, native Apple Silicon, Intel Mac under Rosetta, GNU x86-64 and musl x86-64 on Debian 10, and GNU ARM64 on Debian 10 under QEMU. Both GNU binaries require at most glibc 2.28; the musl binary has no ELF interpreter or dynamic-library dependencies. Windows additionally passed real byte-lock contention and two successive doctor repairs with the prior pointer preserved.
- The 9,523-case library selection was accounted for across the original run and exact continuation batches: 9,517 passed, two failed, and four were ignored. The two failures identified stale doctor metadata and a stale hook-template assertion, both corrected in this release. All three focused doctor, hook-template and buffered-reply regressions passed on the final source: three passed, zero failed, zero ignored, 9,521 filtered out. The original combined build/test invocation timed out and remains recorded as a timeout. Two ignored cases involving real models passed separately on an earlier issue-fix candidate; two explicit microbenchmarks were not run.
- Dependency-specific regression groups passed individually: 58 writer-queue, 151 encoding/cursor/identifier, 78 locking/secret-store plus three CLI cases, 34 UUID/runtime, five backup/recovery, 44 compression/cache plus eight pack integration cases, and 75 configuration/profile tests.
- The final GNU/Linux binary passed the strict multi-process writer scenario: six processes, 60 interleaved memory/journal writes, zero dropped writes, all memory bodies durably readable, and the exact index generation and search-ID set verified before read repair (eight assertions, 32.273 seconds).
- A final-source Linux hook scenario used the actual Model2Vec model and automatic daemon warming in two one-rule semantic workspaces. All 20 CLI/hook commands passed, with five real capabilities observations showing
warmingthrough the hook calls and thenready. Recall and fast orientation worked during warming and after readiness; missing-socket and wrong-workspace fallbacks preserved the correct memory. SessionStart took 0.817 seconds and PreToolUse 0.266 seconds in this small fixture. These are measured fixture timings, not a general latency guarantee. - On the immediately preceding candidate, which predates the final Mac-only daemon fix, three semantic context scenarios passed with the actual Model2Vec model. A 300-memory reranking fixture requested 160 candidates; the selected portable profile capped that at 96, and all 96 received native rerank scores in 15.319 seconds. Mac boundary migration passed 8/8. Linux installed-hook workflows passed; the corrected final Mac binary also passed all 17 recorded daemon, fallback, workspace-isolation, installed-hook, deduplication and shutdown commands.
- The unchanged shell installer passed an offline installation of the exact GNU x86-64 archive in a fresh retained container, including mandatory SHA-256 verification and its executable self-test. The installed binary matched the qualified binary byte for byte and reported the exact release source. Process-local cleanup suppression retained temporary files; cleanup, same-host upgrades and semantic model downloads were not qualified by this probe. Public asset downloads are checked separately.
This release is built through DSR without GitHub Actions. Source: d09edf26a0adf8d39897de615610b7d67430bb81. The assets carry SHA-256 checksums and a source-bound build manifest; they are unsigned and have no Sigstore bundle or SLSA attestation. They do not satisfy --require-provenance.
Remaining limits
- RustSec audit remains nonzero for RUSTSEC-2026-0253, through Tantivy's
lru 0.16.4. This dependency was already in 0.14.5. Exact-source review found only a private integer-key cache usingnew,get,putandlen; it neither calls the affectedpopoperation nor permits a panicking key destructor. A compatible upstream backport is still needed; no new advisory ignore was added. Follow-up: #40. - The original high-concurrency library-test SIGSEGV report (#29) remains unresolved. Passing runs under other profiles do not prove that report fixed.
- A late report exposed a remaining Claude Code installer issue (#41). On the final binary, reinstalling intact managed entries is byte-identical, but removing their
eeManagedmetadata causes one existing hook per event to become two while status still reports four fresh hooks. This reproduction deliberately removed metadata; it does not establish how the reporter's original settings lost it. The issue remains open. - The integration sweep is not entirely green: retained baseline failures include stale fixtures, performance and environment-sensitive checks, and a promoted-rule/source-body selection limitation. These are not claimed fixed by the dependency update.
- crates.io publication is blocked by six unavailable dependency versions and an API missing from published Asupersync 0.4.11. The binary release uses the exact pinned sibling sources.