Skip to content

EE v0.15.0

Choose a tag to compare

@Dicklesworthstone Dicklesworthstone released this 12 Sep 11:29
· 19 commits to main since this release

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 latest pointer 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 status records 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 warming through the hook calls and then ready. 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 using new, get, put and len; it neither calls the affected pop operation 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 eeManaged metadata 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.