Skip to content

Commit e9dade3

Browse files
cdeustclaude
andcommitted
release: 4.22.0
Every handler parameter is reachable over MCP (#559, 13 tools, parity test over every tool), decisions written under an agent context reach Team Decisions with a one-shot backfill (#561), core/ performs no I/O behind seams that raise when unwired, wired by one composition-root function every entry point calls (#560, no-regression benchmark within tolerance), and the recall fusion and module inventory docs match the code (#562, #563). Every version surface moves to 4.22.0 (pyproject, plugin and marketplace manifests, server.json, manifest.json, package.json and lock, gemini and codex manifests, badge, uv.lock, README alt text). Once merged, the squash commit is tagged v4.22.0; release.yml publishes to PyPI and the MCP Registry. Co-Authored-By: Claude Opus 5 (1M context) <[email protected]> Claude-Session: https://claude.ai/code/session_016CwRqZLmNxZ6LatpmKrKvH
1 parent 08453de commit e9dade3

13 files changed

Lines changed: 81 additions & 18 deletions

File tree

‎.claude-plugin/marketplace.json‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@
66
},
77
"metadata": {
88
"description": "The Cortex family of Claude Code plugins: home of hypermnesia-mcp (the persistent-memory server formerly named cortex, renamed in v4.15.0 over a directory name collision), zetetic-team-subagents, and hypermnesia-mcp-viz. The marketplace name stays cortex-plugins: it is the brand-level umbrella, while hypermnesia-mcp is one package inside it.",
9-
"version": "4.21.0"
9+
"version": "4.22.0"
1010
},
1111
"plugins": [
1212
{
1313
"name": "hypermnesia-mcp",
1414
"source": "./",
1515
"description": "Cortex — persistent memory and cognitive profiling for Claude Code (renamed from the 'cortex' plugin in v4.15.0 to match the PyPI/MCP-registry identity hypermnesia-mcp) — thermodynamic memory with heat/decay, intent-aware retrieval, biological plasticity, codebase intelligence, and cognitive profiling. 50 MCP tools (53 with the optional ai-architect-mcp-codebase + ai-architect-mcp-spec integrations) with enriched schemas (visualization extracted to the standalone Hypermnesia MCP Viz server). PostgreSQL + pgvector in CLI mode; automatic SQLite fallback in Cowork/sandboxed mode. v3.17.0 — autonomous per-project wiki: SessionStart auto-spawns a 6-hour consolidate cycle; a headless `claude -p` worker drains the curation-gap queue, calls codebase-intelligence MCP tools to ground each section in the real call graph, and authors missing anchor pages (architecture / services / api / data-flow / operations / decisions / PRD) per project from the source tree. 15 canonical scopes × 13 file sections; per-project dashboards under `wiki/_dashboards/`. Mermaid diagrams have a 🔍 lens with zoom + pan. Workflow graph with caller-qualified CALLS chains rendering full method-to-method dependencies (native tree-sitter, no AP required). Side panel humanized for non-technical users. Ingests codebase analysis (ai-architect-mcp-codebase) and PRDs (ai-architect-mcp-spec) into wiki + memory + knowledge graph. Docker image available.",
16-
"version": "4.21.0",
16+
"version": "4.22.0",
1717
"author": {
1818
"name": "Clement Deust",
1919
"email": "[email protected]"

‎.claude-plugin/plugin.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "hypermnesia-mcp",
33
"description": "Cortex — persistent memory for Claude Code that remembers across sessions automatically. Install and forget. Scientific retrieval backed by 97 published references. (Renamed from the 'cortex' plugin to match the PyPI/MCP-registry identity.)",
4-
"version": "4.21.0",
4+
"version": "4.22.0",
55
"author": {
66
"name": "Clement Deust",
77
"email": "[email protected]"

‎CHANGELOG.md‎

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,69 @@ adheres to [Semantic Versioning](https://semver.org/).
66

77
## [Unreleased]
88

9+
## [4.22.0] - 2026-09-15
10+
11+
### Fixed
12+
13+
- **Every handler parameter is reachable over MCP (#559).** The client-visible
14+
schema of a tool is derived from its hand-written wrapper in
15+
`mcp_server/tool_registry_*.py`, and 13 of 54 wrappers had drifted from their
16+
handler's `inputSchema`. `recall` dropped `tags_any`, `tags_all`,
17+
`include_low_signal`, `cross_domain` and `sa_mode`, so the host protocol's
18+
`recall(tags_any=["archival"])` could not be called. `remember` dropped
19+
`is_global`, `created_at` and `initial_heat`, so the remember-global skill's
20+
`is_global: true` never reached the handler. The same gap affected `anchor`,
21+
`consolidate`, `curate_wiki`, `get_causal_chain`, `ingest_codebase`,
22+
`rate_memory`, `recall_hierarchical`, `unified_search`, `validate_memory`
23+
and `wiki_purge`. `tests_py/handlers/test_tool_schema_parity.py` now asserts
24+
exact equality, in both directions, for every tool of a server built with
25+
every upstream gate open. `wiki_write`'s `title`, `summary` and `body`, which
26+
the handler never read, are removed from its contract.
27+
28+
- **Decisions written under an agent context reach Team Decisions (#561).**
29+
ADR-0200's rule (a decision stored with an agent topic is marked
30+
`is_global`) ran only in `core/memory_ingest.py`, which only benchmarks and
31+
tests call. On the live store, 233 current protected agent-scoped rows were
32+
local and 1 was global, so the SessionStart block and the subagent briefing
33+
almost never found one. `core/team_scope.py` now applies the rule on the
34+
`remember` path, for deliberate writes from a trusted origin only (a fetched
35+
page or an automatic capture carrying a decision cue does not propagate). A
36+
one-shot, idempotent backfill applies the same rule to rows stored before the
37+
fix; on the maintainer's store it matched 131 rows.
38+
39+
- **`core/` performs no I/O (#560).** The 17 modules under `mcp_server/core/`
40+
that imported `os` or `pathlib` no longer do. Environment flags
41+
(`CORTEX_ABLATE_*`, `CORTEX_DECAY_DISABLED`, `CORTEX_*_BETA`, ...), the
42+
FlashRank model cache and the wiki filesystem reads move behind seams that
43+
raise when unwired, and one function,
44+
`mcp_server.hooks.wiring.wire_composition_root()`, wires them all. The
45+
server, `scripts/launcher.py`, every hook, every benchmark runner and every
46+
script reaching core call it; a test enumerates those entry points. An
47+
unwired read that returned "unset" would have made every ablation run
48+
measure the un-ablated system, so it fails loudly instead. The background
49+
consolidation spawned by SessionStart now reports the dashboard outcome
50+
(`dashboards=written=N` or the error) instead of defaulting to `ok`. Measured
51+
with `benchmarks/reproduce.sh --no-regression --no-ablation` against the
52+
previous `main`: LongMemEval-S R@10 0.9800 (+0.0000), MRR 0.9057 (+0.0005);
53+
LoCoMo R@10 0.8890 (-0.0005), MRR 0.7801 (-0.0014), within tolerance.
54+
55+
- **The documentation describes the recall fusion the code runs (#562).**
56+
PostgreSQL fuses five signals (vector, `ts_rank_cd` full text, trigram,
57+
effective heat, recency) as a weighted sum of max-normalised scores; SQLite
58+
uses rank-based WRRF without the trigram signal; Hopfield and HDC run after
59+
fusion. The docs, the `recall` tool description and one MCP prompt said
60+
"6-signal WRRF". ADR-013 keeps its original text with a dated note.
61+
62+
- **`docs/module-inventory.md` no longer stores per-layer file counts (#563).**
63+
The four counts had drifted from the tree; the page gives the measurement
64+
command instead.
65+
66+
### Dependencies
67+
68+
- sentence-transformers 5.6.1 → 6.0.1 (#533), xxhash 3.8.1 → 4.0.1 (#532),
69+
anyio 4.15.1, fsspec 2026.7.0, pydantic-core 2.48.0, sse-starlette 3.4.11
70+
(#531), hashgraph-online/ai-plugin-scanner-action 1.2.624 (#529).
71+
972
## [4.21.0] - 2026-09-10
1073

1174
### Fixed

‎README.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
<img src="assets/badge-python.svg" alt="Python 3.10+">
1111
<img src="assets/badge-tests.svg" alt="tests passing">
1212
<img src="assets/badge-references.svg" alt="97 referenced papers">
13-
<img src="assets/badge-version.svg" alt="Version 4.21.0">
13+
<img src="assets/badge-version.svg" alt="Version 4.22.0">
1414
<a href="https://www.bestpractices.dev/projects/13836"><img src="https://www.bestpractices.dev/projects/13836/badge" alt="OpenSSF Best Practices"></a>
1515
<a href="https://mcptoplist.com/server/io.github.cdeust%2Fhypermnesia-mcp"><img src="assets/badge-mcp-toplist.svg" alt="MCP Toplist: Top 1.2% of 81,919 tracked MCP servers, July 2026"></a>
1616
</p>

‎assets/badge-version.svg‎

Lines changed: 4 additions & 4 deletions
Loading

‎gemini-extension.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "cortex",
3-
"version": "4.21.0",
3+
"version": "4.22.0",
44
"description": "Persistent local-first memory MCP server: remember/recall with thermodynamic heat and decay, knowledge graph, autonomous wiki, local SQLite store by default. Requires uv (uvx) on PATH; hooks-based auto-capture is Claude Code-only — on Gemini CLI memory is manual-tool-driven.",
55
"mcpServers": {
66
"cortex": {

‎manifest.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,5 +85,5 @@
8585
"type": "string"
8686
}
8787
},
88-
"version": "4.21.0"
88+
"version": "4.22.0"
8989
}

‎package-lock.json‎

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "hypermnesia-mcp",
3-
"version": "4.21.0",
3+
"version": "4.22.0",
44
"description": "Cross-platform persistent memory and cognitive profiling for AI coding agents",
55
"repository": {
66
"type": "git",

‎plugins/hypermnesia-mcp-codex/.codex-plugin/plugin.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "hypermnesia-mcp-codex",
3-
"version": "4.21.0",
3+
"version": "4.22.0",
44
"description": "Cortex persistent local-first memory for Codex, with Claude Code remaining the primary automatic integration.",
55
"author": {
66
"name": "Clement Deust",

0 commit comments

Comments
 (0)