Repository navigation
0.62.0 - 2026-06-11
·
389 commits
to 88ad7463e69a5e4ad27262626a8a259237f9cd44
since this release
Release Notes
Added
- In-band
scope_statusblock in everymemd search/memd agent-context
payload (and a terse markdown footer): reports the effective tenant/project,
retrieval_mode(hybridvstext_fallbackwhen semantic search is
degraded to substring matching), a warning when the requested tenant has no
stored memory on this machine, and — when a project-scoped search returns
fewer thankresults —wider_scope_hitswith the exact widening command,
so "no memory exists" and "memory exists one flag away" are distinguishable.
Thewider_scope_hitsprobe keys on the pre-budget retrieval count, so
token-budget trimming (the defaultagent-contextpath) never emits a
false widen hint or an avoidable extra tenant-wide scan. memd addpayloads reportcreated_tenant: truewhen a write creates a
brand-new tenant, so a typo'd--tenant-idno longer silently forks a
fresh silo.- Warm worker idle timeout (
MEMD_WARM_IDLE_TIMEOUT_SECS, default 1800,
0disables): an idle worker exits and releases the data-dir writer flock
instead of holding it forever. .writer.lockholder line now records the holder's memd version next to
its pid.
Changed
- The warm socket path is now a pure function of the data dir — version,
wire protocol, embedding model, and search variant are no longer hashed in
— so after a binary upgrade the new CLI can ping, stop, and auto-replace a
worker left behind by the old binary instead of bricking machine-wide
writes.warm stop/warm statusalso sweep legacy version-hashed socket
dirs (legacy_stopped/legacy_workerspayload keys). memd doctornow diagnoses the resolved global--data-dir(was
hardcoded~/.memd/data), pings the warm worker and flags worker-vs-CLI
version skew, and reports the PATH binary's actual--versionoutput
(was: the current process's compile-time version), flagging PATH skew.memd consolidatewith an explicit--tenant-idno longer silently
inherits the cwd scope file'sproject_id(mirrorsmemd search
semantics): tenant-wide consolidation now actually consolidates
tenant-wide. Tenant-wide runs warn in the summary JSON that lessons
written without aproject_idonly surface via tenant-wide search and
memory-md machine-wide takeaways.memory-md --global-limitnow defaults to 5 (was 0) andmemd session-startincludes machine-wide takeaways in the auto-refreshed
memory.md, so cross-project lessons reach new projects by default.- The priority-8+ write gate admits-and-downgrades instead of rejecting:
high-priority writes without a concreteAgent action:sentence are
stored at priority 7 with an in-bandadmission_warningnaming the verb
allowlist, which gained common imperatives (set,configure,pin,
export,point,enable,disable,update,keep). The gate and
the memory-md renderer now share one allowlist. memory.md's Known Failures section now requires a real failure signal
(kind:failuretag,root cause,failed because,failure:,
blocker): success traces mentioning "0 failures" or "resolved after"
classify as Validated Fixes instead of being filed as failures with
fabricated avoid-this guidance, and arrival via a*_failuresretrieval
query alone no longer counts as failure evidence.- The agent contract (skill, installer snippet, generated guardrails) adds:
if project-scoped retrieval returns nothing, rerun with--tenant-idonly
(no--project-id) before concluding no memory exists.
Removed
- The structurally unreachable cross-project sharing tiers:
consolidate --promote-to-sharedand theMEMD_SHARED_TENANTshared-tenant
plumbing (the multi-project trigger predicate could never fire — the
consolidation region is pre-filtered to one project), the
memory-md --cross-tenantsection (readable only from the unpopulatable
shared tenant),memd init --scope/--allow-tenantsand the
read_tenants/scope-mode fields intenant_scope.json/
project_scope.json(written but consumed by zero retrieval code; old
scope files with the fields still parse), the dead
HybridSearcher::search_with_routingsurface, and the never-spawned
digest sweeper (spawn_digest_sweeper). The unused
MEMD_DIGEST_SWEEP_INTERVAL_SECenv var is gone with it.
Install memd 0.62.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/fmschulz/memd/releases/download/v0.62.0/memd-installer.sh | shDownload memd 0.62.0
| File | Platform | Checksum |
|---|---|---|
| memd-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| memd-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| memd-aarch64-unknown-linux-musl.tar.xz | ARM64 MUSL Linux | checksum |
| memd-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |