Skip to content

Commit 334e3b5

Browse files
committed
release: v6.0.1 — llamacpp embedder L2-normalization fix
Bumps pyproject.toml / mnemos/_version.py to 6.0.1 and moves the CHANGELOG Unreleased section under a dated 6.0.1 entry alongside the new llamacpp-backend L2-normalization fix (adf01f6). Updates every operator-facing doc's current-version claim, health-JSON examples, "Tracks MNEMOS server vX" footers, and "as of vX" markers from 6.0.0 to 6.0.1 per tests/test_doc_version_pins_match_code.py.
1 parent b3ef573 commit 334e3b5

21 files changed

Lines changed: 74 additions & 34 deletions

API_DOCUMENTATION.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# MNEMOS API Documentation
22

33
**Base URL**: `http://localhost:5002`
4-
**Version**: v6.0.0 current (release candidate; legacy GA is v5.0.1) (on top of v5.0.0 GA shipped 2026-05-02)
4+
**Version**: v6.0.1 current (patch release on the v6.0.0 GA line; legacy GA is v5.0.1) (on top of v5.0.0 GA shipped 2026-05-02)
55
**Format**: JSON
66

77
---
@@ -63,7 +63,7 @@ Liveness + readiness check (no auth required).
6363
"status": "healthy",
6464
"timestamp": "2026-05-02T14:30:00.000Z",
6565
"database_connected": true,
66-
"version": "6.0.0",
66+
"version": "6.0.1",
6767
"profile": "edge",
6868
"distillation_worker": "idle"
6969
}

CHANGELOG.md

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,45 @@ All notable changes to MNEMOS are documented here.
5757

5858
## [Unreleased]
5959

60+
## [6.0.1] — 2026-07-10
61+
62+
### Fixed — `_LlamaCppBackend` embeddings missing L2-normalization
63+
64+
`mnemos/runtime/embedder.py`'s `_LlamaCppBackend._embed_sync` returned
65+
`llama_cpp.Llama.create_embedding()`'s raw output unnormalized, unlike
66+
`_OpenVINOBackend._embed_sync` and `_CixNpuBackend._embed_sync`, which
67+
both L2-normalize. Any deployment on `MNEMOS_EMBED_BACKEND=llamacpp`
68+
(the in-process path for AMD ROCm / NVIDIA CUDA / CPU hosts per the
69+
2026-05-21 in-process-embedding architecture decision) stored
70+
correctly-shaped but wrong-magnitude vectors.
71+
72+
`mnemos/api/routes/memories.py`'s `score_to_similarity()` converts a
73+
backend's raw distance to a similarity via `sim = 1.0 - (v*v)/2.0` for
74+
the `euclidean_unit` metric — valid only when both vectors are unit
75+
length (max distance ≈ 2). Un-normalized llama.cpp vectors produced raw
76+
distances around 20+, so `sim` came out deeply negative, clamped to
77+
`0.0`, and fell below `effective_semantic_floor()` (default 0.65) on
78+
every query. `insert_memory` succeeded and the vector really was
79+
stored (confirmed via direct `VECTOR_DIMENSION_COUNT()` / raw
80+
`VECTOR_DISTANCE` queries) — `semantic_search` just silently returned
81+
zero rows, with no exception or log line anywhere in the stack.
82+
83+
Fix: `_embed_sync` now L2-normalizes its output, matching the other
84+
two in-process backends.
85+
86+
**Operator note:** any memories written under `MNEMOS_EMBED_BACKEND=llamacpp`
87+
before this fix have wrong-magnitude vectors permanently stored and
88+
will not surface in search until re-embedded/backfilled. Separately —
89+
not a code bug, but a deployment trap this fix's investigation
90+
surfaced — switching embedding *backend* is not the same as preserving
91+
the embedding *model*: two different models at the same dimensionality
92+
(e.g. bge-m3 vs bge-large-en-v1.5, both 1024-dim) produce mutually
93+
incompatible vector spaces, so a host with an existing corpus must
94+
migrate to a backend serving the *identical* model or run a full
95+
re-embed.
96+
97+
Pinned by `tests/test_inprocess_embedder.py::test_real_embed_is_l2_normalized`.
98+
6099
### Fixed — Webhook deliveries limit cap + capabilities GIN index (#205)
61100

62101
Two LOW audit findings (`mem_1778221719390_8cb1ba`) bundled.

DEPLOYMENT.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# MNEMOS Deployment & Configuration Guide
22

3-
**Status**: v6.0.0 current (release candidate; legacy GA is v5.0.1) (released on top of the v5.0.0 GA shipped 2026-05-02).
3+
**Status**: v6.0.1 current (patch release on the v6.0.0 GA line; legacy GA is v5.0.1) (released on top of the v5.0.0 GA shipped 2026-05-02).
44

55
---
66

@@ -38,7 +38,7 @@ mnemos serve --profile dev
3838
### Installation
3939

4040
```bash
41-
python -m pip install mnemos-os==6.0.0 # source-install from v6.0-rc tag
41+
python -m pip install mnemos-os==6.0.1 # source-install from v6.0-rc tag
4242
mnemos install --profile dev
4343
mnemos serve --profile dev
4444
```

EVOLUTION.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
The version numbers on releases are tidy. The actual path was not. This
44
document is the honest version — decisions, refactors, mistakes, and the
5-
reasoning that got us from the original prototype to the current v6.0.0 release line. If you
5+
reasoning that got us from the original prototype to the current v6.0.1 release line. If you
66
are considering MNEMOS for your own stack, you should know where it came
77
from; if you are contributing, you should know which doors have been closed
88
and why.

QUICK_START_REQUIREMENTS.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# MNEMOS Quick Start Requirements
22

3-
**Applies to**: current v6.0.0 release line (legacy GA v5.0.1)
3+
**Applies to**: current v6.0.1 release line (legacy GA v5.0.1)
44
**TL;DR**: Python 3.11+ for package installs; no host Python for single-binary.
55
Use SQLite for `edge`/`dev`, or PostgreSQL 16 + Redis for `server`.
66
**Full Details**: See `SYSTEM_REQUIREMENTS.md`
@@ -34,7 +34,7 @@ sudo apt install -y git curl build-essential libpq-dev
3434
# 3. MNEMOS package (2 minutes)
3535
python3.11 -m venv ~/.venvs/mnemos
3636
source ~/.venvs/mnemos/bin/activate
37-
pip install mnemos-os==6.0.0 # source-install from v6.0-rc tag
37+
pip install mnemos-os==6.0.1 # source-install from v6.0-rc tag
3838

3939
# 4. SQLite-backed dev profile
4040
mnemos install --profile dev
@@ -47,7 +47,7 @@ For a production `server` profile, add PostgreSQL + pgvector and Redis:
4747
sudo apt install -y postgresql-16 postgresql-16-pgvector postgresql-client redis-server
4848
python3.11 -m venv venv
4949
source venv/bin/activate
50-
pip install mnemos-os==6.0.0 # source-install from v6.0-rc tag
50+
pip install mnemos-os==6.0.1 # source-install from v6.0-rc tag
5151
export MNEMOS_PROFILE=server
5252
export RATE_LIMIT_STORAGE_URI=redis://localhost:6379/1
5353
mnemos install --profile server
@@ -326,6 +326,6 @@ kill -9 <PID>
326326

327327
---
328328

329-
**Version**: v6.0.0 (release candidate)
330-
**Updated**: 2026-05-08
329+
**Version**: v6.0.1
330+
**Updated**: 2026-07-10
331331
**Accuracy**: Production-verified

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
# MNEMOS + GRAEAE
1313

14-
**MNEMOS v6.0.0 is the memory operating system for
14+
**MNEMOS v6.0.1 is the memory operating system for
1515
serious agentic work: a packaged FastAPI runtime, **EPIMONE** — the six-backend
1616
persistence layer (SQLite + sqlite-vec by default, PostgreSQL + pgvector,
1717
Oracle Database 26ai HNSW INMEMORY NEIGHBOR GRAPH, IBM Db2 12.1.5 (EAP) DiskANN

ROADMAP.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,11 @@ This document is kept intentionally narrow. It lists what the next release will
66

77
---
88

9-
## Current status — v6.0.0 GA (split-distribution release; legacy GA v5.0.1 shipped 2026-05-08)
9+
## Current status — v6.0.1 GA (patch release on the v6.0.0 split-distribution line; legacy GA v5.0.1 shipped 2026-05-08)
1010

11-
**v6.0.0 (split-distribution GA)** makes MNEMOS a modular, multi-backend,
12-
portability-first memory platform. New in v6.0.0:
11+
**v6.0.1** is a patch release on top of **v6.0.0 (split-distribution GA)**,
12+
which made MNEMOS a modular, multi-backend, portability-first memory
13+
platform. New in v6.0.0:
1314

1415
-**MIF 1.0 as the native portability format** — CHARON native adapter with
1516
lossless round-trip export/import, MIF bundles (concept files + manifest), and a

SYSTEM_REQUIREMENTS.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# System Requirements
22

33
Reference for operators planning a MNEMOS deployment. Covers the
4-
resource floor for each of the operating modes that the current v6.0.0 release line supports
4+
resource floor for each of the operating modes that the current v6.0.1 release line supports
55
today, plus what drops off at each tier.
66

77
Profiles are descriptive sizing tiers. The feature set is controlled by

docs/GRAEAE_FEATURES.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# GRAEAE Feature Surface
22

3-
**Status:** current v6.0.0 documentation (on top of v5.0.0 GA shipped 2026-05-02).
3+
**Status:** current v6.0.1 documentation (patch release on the v6.0.0 line; on top of v5.0.0 GA shipped 2026-05-02).
44

55
GRAEAE is MNEMOS's multi-provider reasoning bus. It fans a prompt out to live
66
LLM providers, scores the responses, persists consultations, and writes a

docs/MEMORY_ARCHITECTURE.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,7 @@ fleet without bloating the install.
272272
### 5.4 Hot-path expansion
273273

274274
The compression read paths preferring compressed variants over raw
275-
content is incremental. As of v6.0.0:
275+
content is incremental. As of v6.0.1:
276276

277277
* `/v1/memories/search` honors `include_compressed` to swap
278278
variants into the response.
@@ -605,4 +605,4 @@ round-trip on the native subset.
605605

606606
---
607607

608-
*v1.0 — 2026-05-08. Tracks MNEMOS server v6.0.0*
608+
*v1.0 — 2026-05-08. Tracks MNEMOS server v6.0.1*

0 commit comments

Comments
 (0)