FROZEN · v0.8.0 · 2026-06-24 release-gate-final

The single source of truth.

Every public page about ai-memory — README, marketing site, roadmap, architecture pages, sales decks — must source its numbers from this page or from the upstream test-hub evidence it cites. No other page invents its own counts. If a number on another page disagrees with this page, this page is correct and the other is a bug — please file an issue.

🧪 Live test-hub → 📊 v0.6.3 release evidence (historical) → 🚢 ship-gate 🤝 A2A-gate
Frozen facts · v0.8.0

The numbers.

Code-surface counts (MCP / HTTP / CLI / schema / struct) are counted directly from the v0.8.0 source tree. The dated test/benchmark rows (LongMemEval, the #1182 regression baseline) remain the latest published measurements and retain their measurement dates + provenance. Source links accompany each row.

FieldValueSource of truth
Current releasev0.8.0release branch release/v0.8.0 on alphaonedev/ai-memory-mcp · 2026-06 release campaign (tag-cut operator-gated)
MCP tools advertised (--profile full)101100 callable memory tools + always-on memory_capabilities bootstrap. Pinned by Profile::full().expected_tool_count() in src/profile.rs · disambiguation issue #862. v0.8.0 added the Pillar-1 coordination tool families (memory_action_* / memory_signal_* / memory_checkpoint_* / memory_lease_* / memory_routine_*, #1709)
MCP tools default (--profile core)7Original 5 + memory_load_family + memory_smart_load, plus always-on memory_capabilities bootstrap. See Profile::core() in src/profile.rs
HTTP routes (/api/v1/)92 / 7892 production .route(…) registrations / 78 unique URL paths. SSOT consts EXPECTED_PRODUCTION_ROUTES_COUNT = 92 + EXPECTED_PRODUCTION_UNIQUE_PATHS_COUNT = 78; route-path SSOT src/handlers/routes.rs (#1558 batch 4), registered by the src/lib.rs router (plus the bare /metrics Prometheus surface). v0.8.0 added the coordination write surfaces POST /api/v1/actions/{id}/transition + POST /api/v1/signals (#1718); v0.9.0 #1859 G13-mem added GET /api/v1/memories/{id}/lineage.
CLI subcommands89 / 8789 with --features sal or --features sal-postgres (sal-postgres implies sal), 87 in the default build (the 2-variant gap is Migrate + SchemaInit, both gated #[cfg(feature = "sal")] per src/daemon_runtime.rs::Command::{Migrate,SchemaInit}). SSOT consts EXPECTED_CLI_SUBCOMMANDS_DEFAULT = 87 + EXPECTED_CLI_SUBCOMMANDS_SAL = 89; counted from the clap top-level Command enum in src/daemon_runtime.rs (was 40 at v0.6.4).
Schema version (sqlite + postgres)v78Constant CURRENT_SCHEMA_VERSION = 78 in src/storage/migrations.rs (sqlite) and src/store/postgres.rs (postgres). The v34 → v57 ladder shipped at v0.7.0 (V-4 hash chain; federation_push_dlq #933; archive +14 cols #1025; per-namespace quota PK #1156; federation_nonce_cache #1255; transcript_line_dedup #1389; FTS trigger scoping #1418; tier-expiry backfill #1466; sargable catchup #1476; composite indexes + postgres tsvector #1579). The v58 → v70 ladder is v0.8.0: recall-observations identity binding (v58 #1705); the Pillar-1 coordination substrate actions/action_edges/leases (v59), signed signals (v60), attested checkpoints (v61), routines/routine_runs (v62) — all #1709; memory_links relation CHECK 6→9 (v63); memories.lifecycle_state (v64); signature-trigger restore (v65); governance_rules.severity +escalate (v66); owner-visibility index (v67 #1720); encrypted_envelope postgres+archive parity (v68 #228/#1728); kg_projection_outbox AGE cold-path queue (v69 #1735, postgres-only); archived_memory_links edge snapshot (v70 #1771). v71 is v0.8.1: signed forget_tombstones table (#1821 / W2.3 / gap G30). The v72 → v78 ladder is v0.9.0: signed memory_revisions append-only spine (v72 #1823 G6); signed_events.cause_hash audit cause-binding (v73 #1822 G5a); memories.cid/cid_genesis BLAKE3 content-id (v74 #1825 G8); memory_links.source_cid/target_cid lineage-DAG (v75 #1859 G13-mem); agent_lineage signed succession (v76 #1828 G13); recall_observations.folded recall-purity state (v77 #1869 P0-1); model_attestations (v78 #1870 §25.3 S1 D3-012).
Capabilities envelope schema_version"3"Post-A5; v1/v2 still negotiable via accept= on memory_capabilities MCP / Accept-Capabilities HTTP header — see src/mcp/tools/capabilities.rs
Memory struct fields28Was 15 at v0.6.x, 26 at v0.7.0; v0.8.0 adds the 27th field lifecycle_state (schema v64, #1709 Pillar-2 Typed Cognition; DEFAULT 'open'); v0.9.0 adds the 28th field cid (schema v74, #1825 G8 additive BLAKE3 content-id). The v0.7.0 additions were recursive-learning, Batman vocabulary, Form-4 provenance, Form-5 confidence-calibration columns, plus the v45 version column for Gap-1 optimistic concurrency. See src/models/memory.rs.
MemoryLink relation variants9related_to, supersedes, contradicts, derived_from, reflects_on, derives_from, plus the v0.8.0 Pillar-2 typed-cognition trio decomposes_into, depends_on, advances (#1709, schema v63). Enum MemoryLinkRelation (COUNT = 9) in src/models/link.rs
Subscription dispatchHMAC mandatoryUnsigned dispatch DISABLED post-R3-S1.HMAC (fix campaign 2026-05-13). See src/subscriptions.rs
TTL on accesssliding replacementTouch sets expires_at = now + per-tier-TTL — replacement, not max-of-old-and-new extend. Create-time backstop (6h short / 7d mid) applies only until first access. See recall pipeline docs in CLAUDE.md
CI matrix platforms3ubuntu-latest · macos-latest · windows-latest — see .github/workflows/ci.yml
LongMemEval Recall@596.4–97.8%LongMemEval-S, 500 questions. v0.7.0 binary-faithful (harness.py drives the shipped ai-memory recall): keyword/pure-FTS5 96.4%, semantic 96.8%, autonomous 95.8% (measured 2026-05-31). The historical 97.8% headline (489-question shadow harness, harness_99.py) used LLM query-expansion over FTS5 — not pure BM25 — and is reproduced at 97.2% R@5 on an OpenRouter cloud backend (Ollama-free, 0 failures). Full cross-harness matrix + per-category provenance: benchmarks/longmemeval/results.md.
Final-baseline regression (2026-05-31)15,951 / 0#1182 NO-FAIL-MISSION off a pristine rig restart (docker compose down -v + up -d, all volumes wiped). Domain 1 default-feature sqlite shipping build: 7,458 passed / 0 failed / 16 ignored. Domain 2 Postgres + Apache AGE SAL-parity (--features sal,sal-postgres): 8,493 passed / 0 failed / 37 ignored. Four 1:1 findings filed→fixed→closed (#1444 C8 allowlist, #1445 expand_query 3-surface envelope parity, #1446 / #1447 doc drift); three independent codegraph QC audits all ZERO-DEFECTS-CONFIRMED. Full provenance: docs/v0.7.0/regression-runs/2026-05-31-final-baseline/. Round 2 (2026-06-01) — independent re-run off a second full volume wipe — reproduced GREEN at 15,952 / 0 (Domain 1 7,458 / 0 / 16 identical; Domain 2 8,494 / 0 / 37, +1 = the #1445 regression test) with zero new defects, confirming the result is reproducible and stable: docs/v0.7.0/regression-runs/2026-06-01-round2/.
Note on test-count framing. Public materials should lead with the newest verified baseline above: 15,951 / 0 (#1182 final baseline, 2026-05-31 — Domain 1 sqlite 7,458/0 + Domain 2 Postgres+AGE SAL-parity 8,493/0), independently reproduced at 15,952 / 0 on the 2026-06-01 round-2 volume-wipe re-run. Always cite the figure with its date and provenance link so readers can see which run produced it. Historical figures stay honest with their era attached: the 1,809 total tests figure (1,600 lib + 209 integration) is the v0.6.3-era release-gate count — still exposed as the test-hub Tier 1 row "1 600/1 600 lib tests pass" for procurement teams who want library-test isolation, but it describes v0.6.3, not v0.7.0. Older pages may reference 191 tests (~v0.6.0 era) — those are stale and should be replaced. The 1,898 figure from a raw grep #[test] includes attributes inside #[cfg(test)] guards that are not always compiled, plus benchmark scaffolding — it is not a canonical test-pass count for any era.
Maturity

What is production-ready, what is not.

This is where conflicting maturity signals on other pages get resolved. Use these labels — and only these labels — when describing capability maturity in any public material.

Production-ready

Single-node operation

One ai-memory instance, one consumer. SQLite + WAL + FTS5 + HNSW. No network, no peers. Used in production by the project team daily. T1 + T2 of the architectures matrix.

Production-ready

Hybrid recall (FTS5 + semantic)

Adaptive blend, cross-encoder rerank, recency decay, tier boost. On LongMemEval-S (ICLR 2025, 500 questions), v0.7.0 binary-faithful R@5 measures keyword 96.4% / semantic 96.8% / autonomous (rerank) 95.8%; the 97.8% headline came from an FTS5 + LLM query-expansion path (shadow harness), reproduced at 97.2% on an OpenRouter backend. See benchmarks/longmemeval/results.md.

Production-ready

MCP + HTTP + CLI surface

101 MCP tools at --profile full (100 callable + always-on capabilities; 7 at --profile core), 92 HTTP routes (78 unique paths) at /api/v1/, 87 CLI subcommands (default build) / 89 with --features sal or --features sal-postgres. Stable contract. Used by Claude Code, Codex, Cursor, Windsurf, Continue.dev, Grok, OpenClaw, Hermes, and Llama integrations today.

Production-ready

Per-namespace governance

Allow / Deny / Pending policies; pending-approval queue; scope-visibility filter; immutable agent_id provenance. v0.6.2+ stable.

Beta

Federation — quorum writes (W-of-N)

Code shipped in v0.6.3: 10 broadcast functions, ack tracker, vector-clock catchup, mTLS fingerprint allowlist. Used in T3 (multi-node cluster) tests on the ship-gate. Not yet recommended for self-driving production fleets without an operator-on-call. See T3 architecture for what's wired and what's not.

Production-ready

Postgres + pgvector backend

--features sal-postgres build flag; ai-memory serve --store-url postgres://… selects the adapter. Schema parity at v70 with Apache AGE Cypher graph support. GA since v0.7.0 — the #1182 final baseline ran the full SAL-parity suite (8,493+ tests) green against Postgres + AGE.

Experimental

Smart / Autonomous tier (Ollama LLM)

Query expansion, auto-tagging, contradiction detection, cross-encoder reranking via Ollama (Gemma 4 e2b/e4b). Functional and tested but performance/quality varies by host hardware. Production use should pin model versions and run baseline recall regressions.

Beta (opt-in enforcement)

Cryptographic agent attestation

ai-memory ships attestation in the memory_links table: signature, attest_level (unsigned / self_signed / peer_attested), and signed_at columns are wired through H2 (outbound self-sign), H3 (inbound verify), and H4 (memory_verify MCP tool); #626 Layer-3 verifies caller-presented store-surface signatures (attest_level = "agent_attested"). An unsigned agent_id remains a claim ("claimed") unless AI_MEMORY_REQUIRE_AGENT_ATTESTATION=1 — pair with the attestation envelope for security decisions.

Unsupported (today)

Multi-region distributed consensus

No Raft, no Paxos, no global gossip/DHT. Tier 5 ("global hive") of the architectures matrix is vision — v1.0+ horizon. Don't deploy ai-memory across regions today expecting strong consistency.

Reconciling the "is not a distributed system" claim in ADMIN_GUIDE.md. The admin guide is correct in spirit and historically lagged the v0.6.3 federation work. The accurate v0.6.3 framing is: ai-memory is a single-machine primitive that ships beta-quality federation primitives (quorum writes, mTLS peer mesh, vector-clock catchup) for opt-in multi-node clusters (T3). It is not a distributed database. It does not provide strong consistency, distributed consensus, or self-healing global state. Operators choosing to run a federated cluster today must accept beta-quality replication and own their consistency guarantees at the application layer.
Certification

Current certification status.

ai-memory v0.8.0 holds the following internal certifications. External (third-party) audits and compliance attestations are not yet held for any release; do not represent ai-memory as SOC 2, ISO 27001, FedRAMP, or HIPAA-compliant.

CertificationStatusAuthority
A2A-Certified (internal)YesA2A gate · v0.6.2 + v0.6.3
Ship-Gate (internal)YesShip gate · 9/9 cert + 5/5 channels green at v0.6.2 cut
SOC 2NoNo third-party audit. Do not represent.
ISO 27001NoNo third-party audit. Do not represent.
FedRAMPNoNo authorization. Do not represent.
HIPAANoNo BAA. Do not represent.
Authoring rule

How to keep this page canonical.

  1. Cut a release tag.
  2. Run the full ship-gate matrix; publish a release evidence page at test-hub/releases/vX.Y.Z/.
  3. Update docs/evidence.html first — the hero FROZEN badge, every row of the facts table, and every status card whose maturity has changed.
  4. Sweep all references: grep -rE "(191|1,?[0-9]{3})\s*test|9[0-9]\.[0-9]+%\s*coverage|v0\.6\.[0-9]" docs/ README.md — every match either updates to the new canonical number or replaces with a link to evidence.html.
  5. Open one PR for the sweep. Block release until it merges.