# Changelog

## Score

- CAI 63 → 48 (-15.1)
- Rubric changed (rubric-2026.08.18 → rubric-2026.08.15) — scores are not directly comparable.

## Lenses

- Code Health 69 → 87 (+18.0)
- Architecture 80 → 92 (+11.9)
- Maturity 77 → 78 (+1.5)
- Readiness 54 → 23 (-30.3)
- Security 71 → 57 (-14.0)

## Resolved (400)

- Build action pinned to a mutable branch
- ChromaBackend.get_collection (cognitive 25) (mempalace/backends/chroma.py)
- ChromaBackend.get_collection (cyclomatic 16) (mempalace/backends/chroma.py)
- ChromaCollection._lexical_search_via_sqlite (cognitive 34) (mempalace/backends/chroma.py)
- ChromaCollection._lexical_search_via_sqlite (cyclomatic 26) (mempalace/backends/chroma.py)
- ChromaCollection.get (cognitive 19) (mempalace/backends/chroma.py)
- ChromaCollection.get (cyclomatic 20) (mempalace/backends/chroma.py)
- ChromaCollection.query (cognitive 21) (mempalace/backends/chroma.py)
- ChromaCollection.query (cyclomatic 22) (mempalace/backends/chroma.py)
- Coverage not included — suite not readable by the collector
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- Dialect._detect_entities_in_text (cognitive 18) (mempalace/dialect.py)
- Dialect._extract_topics (cognitive 16) (mempalace/dialect.py)
- Dialect.compress (cognitive 16) (mempalace/dialect.py)
- Dialect.compress (cyclomatic 16) (mempalace/dialect.py)
- Dialect.decode (cognitive 16) (mempalace/dialect.py)
- Dialect.extract_key_quote (cognitive 27) (mempalace/dialect.py)
- Dialect.generate_layer1 (cognitive 62) (mempalace/dialect.py)
- Dialect.generate_layer1 (cyclomatic 31) (mempalace/dialect.py)
- Duplicated block (10 lines × 2) (mempalace/backends/milvus.py)
- …and 380 more

## New (63)

- Coverage not measured — test suite did not build
- Dimension evaluation failed
- Duplicated block (12 lines × 2) (tests/test_sync.py)
- Duplicated block (17 lines × 2) (tests/test_mcp_server.py)
- Duplicated block (17 lines × 2) (tests/test_sweeper.py)
- Duplicated block (22 lines × 2) (tests/test_closets.py)
- Duplicated block (5 lines × 2) (tests/test_qdrant_bulk_metadata_scroll.py)
- Duplicated block (6 lines × 2) (tests/test_corpus_origin.py)
- Duplicated block (7 lines × 2) (mempalace/backends/qdrant.py)
- Duplicated block (8 lines × 2) (mempalace/layers.py)
- Duplicated block (8 lines × 2) (tests/test_hallways.py)
- Duplicated block (9 lines × 2) (tests/test_mcp_server.py)
- High CVE: [GHSA redacted] (uv.lock)
- High CVE: [GHSA redacted] (uv.lock)
- High CVE: [GHSA redacted] (uv.lock)
- High CVE: [GHSA redacted] (uv.lock)
- High CVE: [GHSA redacted] (uv.lock)
- High CVE: [GHSA redacted] (uv.lock)
- High CVE: [GHSA redacted] (uv.lock)
- High CVE: [GHSA redacted] (uv.lock)
- …and 43 more

## Changes since last survey

- 44 commits — 9 feature/other, 35 fixes

## By area

- mempalace/backends — 8 commits
- mempalace/cli.py — 7 commits
- mempalace/convo_miner.py — 5 commits
- (root) — 4 commits
- mempalace/encoding_repair.py — 3 commits
- mempalace/repair.py — 3 commits
- .github/workflows — 2 commits
- docs/write-routing-policy.md — 2 commits
- mempalace/embedding.py — 2 commits
- mempalace/entity_detector.py — 2 commits
- mempalace/mcp_server.py — 2 commits
- mempalace/dedup.py — 1 commit
- mempalace/i18n — 1 commit
- mempalace/searcher.py — 1 commit
- tests/test_cli.py — 1 commit

## Notable commits

- fix: Merge branch 'pr-2089' into fix/2089-onto-develop
- fix: Merge pull request #2029 from mvalentsev/fix/2014-daemon-lock-contention-retry
- fix: Merge pull request #2050 from rohanprichard/fix/issue-2044-dedup-convo-miner-drawers
- fix: Merge pull request #2079 from MemPalace/codex/fix-local-single-writer
- fix: Merge pull request #2086 from KeilerHirsch/fix/repair-preserve-temp-on-swap-fail
- fix: Merge pull request #2087 from KeilerHirsch/fix/repair-sparse-embedding-metadata
- fix: Merge pull request #2090 from fatkobra/fix/2080-round-trippable-drawer-id
- fix: Merge pull request #2093 from KeilerHirsch/fix/preflight-count-divergence
- fix: Merge pull request #2107 from amorphous-dreams/fix/2106-hnsw-guard-corrupts-what-it-protects
- fix: Merge pull request #2109 from amorphous-dreams/fix/2108-repair-from-sqlite-mine-lock
- fix: Merge pull request #2125 from MemPalace/fix/2089-onto-develop
- fix: Merge pull request #2126 from MemPalace/fix/2103-onto-develop
- fix: Merge pull request #2127 from MemPalace/fix/2065-onto-develop
- fix: Merge pull request #2130 from MemPalace/fix/release-3.7.0-polish
- fix: Merge pull request #2134 from fatkobra/fix/2118-convo-dry-run-mined-state
- fix: Merge pull request #2136 from fatkobra/fix/embeddinggemma-image-soft-token
- fix: Merge pull request #2138 from MemPalace/fix/2133-from-sqlite-dry-run
- fix: Merge pull request #2140 from MemPalace/fix/2137-onto-develop
- fix: Merge pull request #2148 from fatkobra/fix/1055-repair-legacy-encoding
- fix: fix(chroma): adopt chromadb's own HNSW write defaults
- …and 24 more
