Skip to content

v0.7.0 — same NHI tomorrow

Choose a tag to compare

@alphaonedev alphaonedev released this 13 Jun 03:35
· 84 commits to main since this release
v0.7.0
a2b448f

ai-memory v0.7.0 — same NHI tomorrow

Persistent, governed, attested memory for any AI. Self-hosted. MCP-native. The release where a substrate-native memory system learns to reflect on what it knows, survive a crash between turns, and prove who wrote what — across SQLite and PostgreSQL+AGE, on the desktop and on-device.


Why v0.7.0 matters (read this first)

v0.6.x made ai-memory a fast, token-lean memory server. v0.7.0 makes it a substrate. Three things change the category:

  1. It reasons over its own memory. Recursive learning lets the system reflect on stored memories to produce higher-order insight, consolidate near-duplicates with provenance, and traverse a knowledge graph of entities and relations — with a hard, stoppable depth cap.
  2. It never loses context to a crash. The #1389 L1–L4 layered auto-capture architecture guarantees that a SIGKILL between conversation turns no longer loses — or duplicates — what was learned.
  3. It can prove its provenance. Every write can be attested; the audit chain is a tamper-evident, cross-row hash chain that fails closed; federation requires signatures + replay-proof nonces by secure default.

All of it runs on a single storage-abstraction layer (SAL) with two production backends — embedded SQLite and PostgreSQL + Apache AGE — behind one identical API.


TL;DR by audience

👤 If you just want your AI to remember things

Nothing to relearn. brew upgrade ai-memory (or cargo install ai-memory --force) and your existing setup keeps working. Your AI can now recover its own context after a crash and build on what it learned instead of just looking it up.

brew upgrade ai-memory && ai-memory doctor

🛠️ If you build agents / NHI on top of ai-memory

  • 74 MCP tools at --profile full (7-tool core default + always-on memory_capabilities bootstrap); three-surface parity across MCP / HTTP / CLI.
  • New primitives: memory_reflect, memory_consolidate, memory_entity_register / memory_entity_get_by_alias, memory_kg_query / memory_find_paths / memory_kg_timeline / memory_kg_invalidate, memory_capture_turn (idempotent L4), memory_offload / memory_deref, memory_persona, memory_calibrate_confidence.
  • Provider-agnostic: point the LLM and the embedder at any of 15 vendor aliases (or self-hosted OpenAI-compatible / Ollama). Tier no longer dictates vendor.

🏢 If you operate it in production

  • PostgreSQL + Apache AGE backend at full parity with SQLite via the SAL trait (--store-url postgres://…).
  • Secure-by-default posture: governance fails closed, SSRF guard fails closed, keyless-bind refusal, signed federation with per-message nonces, agent-attestation enforcement.
  • Config schema v2 (sectioned [llm] / [embeddings] / [reranker] / [storage] / [limits]) with ai-memory config migrate; ai-memory doctor reachability probes for LLM + embeddings.

What's new

🧠 Substrate-native recursive learning

  • memory_reflect produces reflections over source memories with a stoppable depth cap (REFLECTION_DEPTH_EXCEEDED at the namespace max_reflection_depth, default 3), reflects_on edges, and reflection_origin lineage.
  • memory_consolidate merges near-duplicates, preserving derived_from + consolidated_from_agents provenance.

🕸️ Knowledge graph

  • Recursive-CTE traversal (find_paths, kg_query, kg_timeline) with temporal validity (valid_from / valid_until) and kg_invalidate; Apache AGE Cypher on the PostgreSQL backend.
  • First-class entities with alias resolution (entity_registerentity_get_by_alias), union-idempotent re-registration.

🛟 L1–L4 layered auto-capture (#1389) — never lose context to a crash

  • L1 store-first discipline + capture-lag watcher · L2 recover-previous-session (transcript rehydration after SIGKILL) · L3 filesystem watcher · L4 memory_capture_turn — host-volunteered, idempotent by (host_session_id, host_turn_index), backed by schema v52 transcript_line_dedup.

🔐 Attestation, governance & a fail-closed audit chain

  • V-4 cross-row hash-chained signed_events; Ed25519-signed daemon serverInfo at the MCP initialize handshake.
  • Operator-signed governance rules (R001–R004), namespace standards, K9 permission gate — all fail closed on error.
  • L4 host-signature verification against an operator allowlist (attest_level = "signed_by_peer"); federation requires signatures + nonces by secure default.

🔌 Provider-agnostic LLM and embeddings

  • One client over 15 vendor aliases + generic OpenAI-compatible + Ollama, for both chat and embeddings (#1067, #1598). Switch embedding models with ai-memory reembed.

📱 On-device build pipeline

  • iOS xcframework (device + both simulators) and Android jniLibs (4 ABIs) artifacts; cross-compile + runtime CI (#1068).

⚡ Performance

  • Async double-buffered HNSW rebuild (search p95 held under budget during rebuild), sargable list / federation-catchup queries, PostgreSQL stored-generated tsvector + GIN, mmap reads, and a tuned cross-encoder rerank sequence cap.

Schema

  • Current schema v57 — automatic migrations on first open; archive→restore lossless for the full v0.7.0 Memory shape on both backends.

Full detail in CHANGELOG.md.


Upgrade & compatibility

  • Default MCP surface remains the lean core profile (since v0.6.4). Opt back to everything with ai-memory mcp --profile full, AI_MEMORY_PROFILE=full, or [mcp] profile = "full".
  • Config: the sectioned v2 schema is canonical. Legacy v0.6.x flat fields still parse (removed in v0.8) — run ai-memory config migrate to convert. Verify wiring with ai-memory doctor.
  • Migrations apply automatically; existing databases upgrade in place to schema v57.

Distribution channels

Channel Install
GitHub Release this page — binary tarballs for 5 targets + .deb/.rpm + iOS/Android artifacts
crates.io cargo install ai-memory --version 0.7.0
Homebrew tap brew install alphaonedev/tap/ai-memory
ghcr.io docker pull ghcr.io/alphaonedev/ai-memory:0.7.0
Fedora COPR sudo dnf copr enable alpha-one-ai/ai-memory && sudo dnf install ai-memory
PyPI (Python SDK) pip install ai-memory-mcp==0.7.0
npm (TypeScript SDK) npm install @alphaone/ai-memory@0.7.0

Targets: x86_64/aarch64 Linux, x86_64/aarch64 macOS, x86_64 Windows.

Verification

  • Source provenance: this release is cut from commit a2b448f1 on release/v0.7.0; the v0.7.0 tag is Ed25519-signed.
  • Binary integrity: verify downloaded tarballs against the SHA256SUMS published on this release page.

Quality gate

8/8 CI workflows green · per-module coverage 170/170 (global 93.52%) · 3-region PostgreSQL+AGE fleet dogfood green · singleton NHI dogfood clean across all nine substrate surfaces (store · recall/search · reflect · consolidate · entity · KG · governance · capture/offload · capabilities).


Persistent memory so your AI can be the same NHI tomorrow as it is today. Self-hosted, governed, attested.


⬇️ Downloads

Platform Package
Linux · x86_64 ai-memory-x86_64-unknown-linux-gnu.tar.gz
Linux · aarch64 ai-memory-aarch64-unknown-linux-gnu.tar.gz
macOS · Apple Silicon (arm64) ai-memory-aarch64-apple-darwin.tar.gz
macOS · Intel (x86_64) ai-memory-x86_64-apple-darwin.tar.gz
Windows · x86_64 ai-memory-x86_64-pc-windows-msvc.zip
Debian / Ubuntu · amd64 ai-memory_0.7.0_amd64.deb
Debian / Ubuntu · arm64 ai-memory_0.7.0_arm64.deb
Fedora / RHEL · x86_64 ai-memory-0.7.0-1.x86_64.rpm
Fedora / RHEL · aarch64 ai-memory-0.7.0-1.aarch64.rpm

Or via package managers:

cargo install ai-memory --version 0.7.0           # crates.io
brew install alphaonedev/tap/ai-memory            # Homebrew
docker pull ghcr.io/alphaonedev/ai-memory:0.7.0   # GHCR
sudo dnf copr enable alpha-one-ai/ai-memory && sudo dnf install ai-memory   # Fedora COPR

The complete asset list (every binary, .deb/.rpm, the Android jniLibs bundle, and source archives) is in the Assets section at the bottom of this page.


What's Changed

  • docs(release): v0.6.4 release-body rewrite — capability-surface clarity + 3-audience honesty by @alphaonedev in #540
  • ci: OIDC Trusted Publishing for both SDKs by @alphaonedev in #541
  • docs(readme): v0.6.4 alignment pass (drift #512) by @alphaonedev in #542
  • docs(pages): v0.6.4 marketing repositioning + new whats-new-v064.html by @alphaonedev in #543
  • fix(pages): move USPTO trademark notice from BLUF to footer + v0.6.3→v0.6.4 footer drift by @alphaonedev in #544
  • docs(pages): make --profile full 100% knowable + Grok 4.2 NHI testimonial (closes profile-discoverability gap) by @alphaonedev in #547
  • docs(pages): cortex-on-core promo — Pareto-optimal point shipping today by @alphaonedev in #548
  • docs(v0.6.5): epic — cortex-fluent (Path 2 + Path 3 scope) by @alphaonedev in #549
  • docs(v0.7): epic — attested-cortex (rolls v0.6.5 into v0.7.0) by @alphaonedev in #550
  • feat: v0.7-f1 — v0.7.0 migration guide (draft) by @alphaonedev in #551
  • feat: v0.7-c1 — schema compaction audit by @alphaonedev in #552
  • feat: v0.7-a1 — capabilities v3 summary field (#545) by @alphaonedev in #553
  • feat: v0.7-g1 — hooks.toml config schema with hot reload by @alphaonedev in #554
  • feat: v0.7-k2 — pending_actions timeout sweeper by @alphaonedev in #555
  • feat: v0.7-a2 — capabilities v3 to_describe_to_user (#545) by @alphaonedev in #556
  • feat: v0.7-f6 — attested-cortex design RFC by @alphaonedev in #559
  • feat: v0.7-i1 — memory_transcripts schema (zstd-3 BLOB, v22) by @alphaonedev in #557
  • feat: v0.7-a3 — capabilities v3 per-tool callable_now (#545) by @alphaonedev in #560
  • feat: v0.7-d2 — landing-page compatibility matrix by @alphaonedev in #561
  • feat: v0.7-h1 — per-agent Ed25519 keypair CLI by @alphaonedev in #558
  • feat: v0.7-a4 — capabilities v3 agent_permitted_families (#545) by @alphaonedev in #562
  • feat: v0.7-g2 — 20 hook event types with payloads by @alphaonedev in #563
  • feat: v0.7-a5 — bump capabilities default to v3 (#545) by @alphaonedev in #565
  • feat: v0.7-j1 — AGE detection in Postgres SAL by @alphaonedev in #564
  • feat: v0.7-h2 — outbound Ed25519 signing on memory_links by @alphaonedev in #566
  • feat: v0.7-g3 — hook executor (subprocess JSON-stdio + daemon mode) by @alphaonedev in #567
  • feat: v0.7-i2 — memory_transcript_links join table (v24) by @alphaonedev in #568
  • feat: v0.7-k3 — permissions.mode actually enforced by @alphaonedev in #569
  • feat: v0.7-g4 — decision types (Allow / Modify / Deny / AskUser) by @alphaonedev in #570
  • feat: v0.7-b4 — detect harness from MCP clientInfo by @alphaonedev in #571
  • feat: v0.7-h3 — inbound verification on federated links by @alphaonedev in #572
  • feat: v0.7-f2 — whats-new-v07 landing page by @alphaonedev in #576
  • feat: v0.7-i3 — transcript TTL + archive→prune lifecycle by @alphaonedev in #575
  • feat: v0.7-h5 — append-only signed_events audit table (v26) by @alphaonedev in #574
  • feat: v0.7-g5 — chain ordering + first-deny-wins by @alphaonedev in #573
  • feat: v0.7-i4 — memory_replay MCP tool by @alphaonedev in #577
  • feat: v0.7-j2 — Cypher kg_query (AGE backend) by @alphaonedev in #579
  • feat: v0.7-k5 — capabilities rule_summary populated by @alphaonedev in #580
  • feat: v0.7-h4 — attest_level enum + memory_verify MCP tool (re-rebased) by @alphaonedev in #581
  • feat: v0.7-j3 — Cypher kg_timeline (AGE backend) by @alphaonedev in #582
  • feat: v0.7-g6 — per-event-class hard timeouts by @alphaonedev in #583
  • test: v0.7-h6 — identity end-to-end test by @alphaonedev in #584
  • feat: v0.7-k4 — approval-event routing through subscriptions by @alphaonedev in #585
  • feat: v0.7-f3 — landing-page references bumped to v0.7.0 by @alphaonedev in #588
  • test: v0.7-g7 — hot reload integration test by @alphaonedev in #586
  • feat: v0.7-j4 — Cypher kg_invalidate (AGE backend) + G14 audit edges by @alphaonedev in #587
  • test: v0.7-e3 — Discovery Gate T1-T3 loader cells by @alphaonedev in #589
  • feat: v0.7-k6 — A2A correlation IDs + ACK/retry + DLQ table by @alphaonedev in #594
  • docs: v0.7-f4 — README + ADMIN_GUIDE for v0.7 features by @alphaonedev in #591
  • docs: v0.7-j6 — AGE/CTE depth budget table in PERFORMANCE.md by @alphaonedev in #596
  • feat: v0.7-d1 — cross-harness benchmark by @alphaonedev in #593
  • feat: v0.7-i5 — R5 pre_store transcript extraction reference hook by @alphaonedev in #590
  • feat: v0.7-b1 — memory_load_family always-on tool by @alphaonedev in #595
  • test: v0.7-d4 — harness detection integration tests by @alphaonedev in #597
  • docs: v0.7-b5 — memory_capabilities description for v3 by @alphaonedev in #598
  • feat: v0.7-d3 — install-time system-prompt snippet per harness by @alphaonedev in #599
  • test: v0.7-j5 — AGE vs CTE dual-path equivalence by @alphaonedev in #600
  • feat: v0.7-g8 — on_index_eviction hook event by @alphaonedev in #601
  • feat: v0.7-k7 — subscription reliability (replay + DLQ + HMAC) by @alphaonedev in #603
  • feat: v0.7-g10 — pre_recall daemon-mode hook by @alphaonedev in #602
  • feat: v0.7-g11 — R3 auto-link detector reference hook by @alphaonedev in #604
  • feat: v0.7-j7 — memory_find_paths (BFS over KG, dual backend) by @alphaonedev in #605
  • feat: v0.7-k9 — unified permission system (rules + modes + hooks) by @alphaonedev in #608
  • ci: hard coverage floor + ratchet (top-shelf engineering) by @alphaonedev in #612
  • docs(v0.7.1): seed roadmap — MTP-Gemma-4 autonomous-tier work by @alphaonedev in #613
  • feat: v0.7-b2 — memory_smart_load(intent) always-on tool by @alphaonedev in #611
  • feat: v0.7-b3 — pre-computed family-descriptor embeddings by @alphaonedev in #592
  • fix(subscriptions): K4 dispatch_count race in approval_requested test by @alphaonedev in #615
  • feat: v0.7-j8 — AGE vs CTE bench gate (depth=5, >=30% speedup) by @alphaonedev in #607
  • fix(tests): serialise env-var mutations in snippet + keypair tests by @alphaonedev in #617
  • feat: v0.7-k10 — approval API (HTTP + SSE + MCP, HMAC, remember=forever) by @alphaonedev in #610
  • fix: clippy baseline cleanup — -D warnings -D pedantic clean by @alphaonedev in #614
  • feat: v0.7-k8 — per-agent quotas (memories/storage/links + daily reset) by @alphaonedev in #606
  • feat: v0.7-k11 — ai-memory governance migrate-to-permissions CLI by @alphaonedev in #609
  • perf: v0.7-g9 — batched reranker for concurrent recall by @alphaonedev in #616
  • feat: v0.7-c2 — tool description / docs split for token budget by @alphaonedev in #618
  • fix(tests): binary-spawn flake on macOS — OnceLock + PID-scoped target by @alphaonedev in #623
  • ci: v0.7-c5 — full-profile token-budget hard gate (≤3500) by @alphaonedev in #619
  • feat: v0.7-c4 — optional params hidden from default schema by @alphaonedev in #620
  • feat: v0.7-e1 — T0 cell orchestration script (4 LLMs) by @alphaonedev in #621
  • feat: v0.7-c3 — strip inline e.g. examples from tool descriptions by @alphaonedev in #624
  • feat: v0.7-e2 — post-ship convergence verification script by @alphaonedev in #622
  • fix(test): C5 budget gate measures the trimmed wire form (#628 15th-blocker) by @alphaonedev in #634
  • docs(drift): post-K8 + post-J7 stale-number fixes (#628) by @alphaonedev in #629
  • fix(governance): K9 namespace lock + K7 SSRF loopback + K8 TOCTOU (#628 H1/H3/H4) by @alphaonedev in #630
  • fix(identity): H5 invalidate_link reset + I4 replay K9 authz + I1 zstd bomb cap (#628 H5/H6/I1) by @alphaonedev in #631
  • fix(governance): K10 HMAC replay window + SSE tenant filter + remember=forever (#628 C1/C2/H10) by @alphaonedev in #632
  • fix(hooks): G3 daemon-mode stderr drain + ExecExecutor surfacing (#628 H9) by @alphaonedev in #633
  • test(coverage v0.7.0): bring cli/rules.rs back above 95% floor by @alphaonedev in #715
  • test(coverage v0.7.0): bring daemon_runtime.rs back above 86% floor by @alphaonedev in #713
  • fix(test): clippy pedantic cleanups on Phase E + parity test files by @alphaonedev in #714
  • fix(test): autonomy_hook tests must not depend on live Ollama daemon by @alphaonedev in #711
  • fix(test): gate s75_capabilities_db_schema_version behind sal feature by @alphaonedev in #712
  • ci(v0.7.0): add SAL-only feature-gate job — closes Phase D observability gap by @alphaonedev in #710
  • fix(security v0.7.0): close federation red-team P2s (#238 #239) by @alphaonedev in #716
  • fix(lint): gate default-features unused imports/symbols introduced in #716 by @alphaonedev in #719
  • fix(test): gate 2 SAL-only endpoint tests behind sal feature by @alphaonedev in #720
  • fix(fmt): canonical import order for cfg-gated imports by @alphaonedev in #721
  • ci: separate release.yml from ci.yml — operator-gated publish by @alphaonedev in #722
  • fix(test): gate curator daemon shutdown test unix-only (Windows libc unavailable) by @alphaonedev in #723
  • fix(test): peer_attestation env-mutex + e1 Windows path tolerance by @alphaonedev in #724
  • fix(test): normalise CRLF->LF in snapshot_matches_generator + .gitattributes by @alphaonedev in #725
  • fix(test): normalise CRLF->LF in wire_check_sole_path_pin source reads by @alphaonedev in #726
  • docs(v0.7.0 QW-4): positioning page — Tencent TencentDB Agent Memory entry by @alphaonedev in #727
  • feat(v0.7.0 QW-3): context-offload substrate primitive by @alphaonedev in #741
  • feat(v0.7.0 QW-1): file-backed reflection chain export by @alphaonedev in #742
  • feat(v0.7.0 WT-1-A): schema v36 atomisation foundation by @alphaonedev in #743
  • WT-1-B: atomiser core + curator pass (v0.7.0) by @alphaonedev in #744
  • docs(v0.7.0): pin grok-4.3 + reasoning_effort=medium as canonical xAI config by @alphaonedev in #745
  • feat(v0.7.0 QW-3 follow-up): register memory_offload + memory_deref in MCP tool registry by @alphaonedev in #746
  • feat(v0.7.0 WT-1-F): ai-memory atomise CLI subcommand by @alphaonedev in #747
  • feat(v0.7.0 WT-1-D): auto_atomise namespace policy + pre_store hook by @alphaonedev in #748
  • feat(v0.7.0 WT-1-E): recall atom-preference + forensic atomisation chain by @alphaonedev in #750
  • feat(v0.7.0 WT-1-C): memory_atomise MCP tool by @alphaonedev in #751
  • feat(v0.7.0 WT-1-G): atomisation capabilities-v3 + cookbook + docs by @alphaonedev in #752
  • feat(v0.7.0 QW-2): Persona-as-artifact substrate primitive by @alphaonedev in #749
  • feat(v0.7.x 7th-form): agent-EXTERNAL Layer-4 wiring across Bash/FS/Net/Spawn (closes #760) by @alphaonedev in #761
  • feat(v0.7.x Form 1+2): online dedup-and-synthesis + synchronous atomise-before-embed (closes #754, #755) by @alphaonedev in #762
  • feat(v0.7.x Form 4): citations + source-as-URI + atom-grain span fact-provenance (closes #757) by @alphaonedev in #764
  • feat(v0.7.x Form 3): multi-step ingest orchestrator with prompt-cache reuse + explicit-trust deterministic helpers (#756) by @alphaonedev in #763
  • feat(v0.7.x Form 6): MemoryKind Batman vocabulary + recall filter + optional auto-classify (closes #759) by @alphaonedev in #765
  • feat(v0.7.x Form 5): auto-confidence + shadow-mode + freshness decay + calibration tooling (closes #758) by @alphaonedev in #766
  • audit(batman-6-form): adversarial procurement-grade verification — honest findings by @alphaonedev in #753
  • fix(kg,entity,governance): post-NHI v0.7.0 audit fixes (F2 + F3 + F4 helper) by @alphaonedev in #636
  • fix(v0.7.0 cluster-H): docs accuracy sweep — tool counts, MIGRATION, README, release-notes, 6 new docs (issue #767) by @alphaonedev in #768
  • fix(v0.7.0 cluster-J): migration filename collision cleanup + uniqueness test pin (issue #767) by @alphaonedev in #769
  • fix(v0.7.0 cluster-C): signed-events chain integrity + drainer DLQ + HMAC binding tests (issue #767) by @alphaonedev in #770
  • fix(v0.7.0 cluster-A): Form 4 fact-provenance correctness + atomisation idempotency (issue #767) by @alphaonedev in #771
  • fix(v0.7.0 cluster-E): kind-filter inversion + Skills CLI/HTTP parity (issue #767) by @alphaonedev in #772
  • fix(v0.7.0 cluster-I): CI runs postgres integration tests + memory_kind backfill pinning (issue #767) by @alphaonedev in #773
  • fix(v0.7.0 cluster-D): L1-6 fail-closed knob + handle_deref IDOR + matcher correctness (issue #767) by @alphaonedev in #775
  • fix(v0.7.0 cluster-G): shadow-mode unboundedness + sampling cache + streaming calibration (issue #767) by @alphaonedev in #774
  • fix(test): bump s75_capabilities_db_schema_version pin 37 → 41 (post-v0.7.0 grand-slam, issue #767) by @alphaonedev in #776
  • fix(v0.7.0 cluster-B): Form 1 synthesis security + verdict-application + prompt-injection guard (issue #767) by @alphaonedev in #777
  • fix(v0.7.0 cluster-K): QW-4 disposition + ADRs + accepted-debt + audit doc post-closeout + issue cleanup (issue #767) by @alphaonedev in #778
  • fix(v0.7.0 cluster-F): memory_store + memory_recall hot-path refactor — connection threading + recall N+1 + touch batching (issue #767) by @alphaonedev in #785
  • fix(v0.7-polish #780): auto_export detached-thread failure counter + capability surface by @alphaonedev in #786
  • docs(v0.7-polish #784): expand 6 operator references to production-grade runbooks (~12-15K words total) by @alphaonedev in #787
  • perf(v0.7-polish #779): pre-allocate synthesis candidate prompt buffer by @alphaonedev in #788
  • test(v0.7-polish #783): opportunistic coverage matrix expansion — COV-15..18 by @alphaonedev in #789
  • perf(v0.7-polish #782): Form 3 multistep stage content borrow + LLM truncation cap by @alphaonedev in #790
  • perf(v0.7-polish #781): auto_persona indexed entity-id column replaces content LIKE scan (schema v42 sqlite / v41 postgres) by @alphaonedev in #792
  • test(v0.7-polish): lift global coverage 89.61% → 93.75% via handler tests (issue #767) by @alphaonedev in #794
  • test(v0.7-polish): coverage recovery — restore 9 modules above per-module thresholds (issue #767) by @alphaonedev in #795
  • test(v0.7-polish): close mcp/tools/store.rs coverage gap toward 96% floor + policy update (issue #767) by @alphaonedev in #796
  • fix(#797): move v36/v38/v39/v41/v42 partial indexes out of bootstrap SCHEMA by @alphaonedev in #798
  • fix(#813): persona signing pipeline — close #810, #811, #812 end-to-end by @alphaonedev in #814
  • fix(post-install-815-816): dispatch deadlock + #819 hermetic tests + clippy pedantic cleanup by @alphaonedev in #820
  • v0.7.0 ship-readiness session 2026-05-21 — 17 Wave-2 carve-outs + #972 MCP registry split + drift sweep by @alphaonedev in #1013
  • docs(#1144): MCP env-block LLM-backend wiring across install / integration / GH Pages by @alphaonedev in #1145
  • feat(config) #1146: enterprise configuration standard — sectioned schema + canonical resolver + migration + doctor probe by @alphaonedev in #1147
  • ci(#1148): mold linker + [profile.coverage] — fix linker-OOM on Coverage / Postgres / Per-Module Coverage gates by @alphaonedev in #1149
  • docs(v0.7.0): comprehensive drift sweep + new MIGRATION_QUICKSTART + red-team migration fixes by @alphaonedev in #1150
  • docs(v0.7.0) round 2: codegraph-driven full drift sweep — ~50 additional items closed by @alphaonedev in #1151
  • docs(v0.7.0) round 3: codegraph-driven full drift sweep — install/config/migration 100% correct + deferred deep-content rewrites + count corrections by @alphaonedev in #1152
  • feat(mcp, #1154) + docs(compliance, #1153): NSA CSI MCP Security Compliance — 10/10 structural coverage achieved by @alphaonedev in #1157
  • feat(http, #1155) + docs(security, #1153): NSA CSI MCP polish — Accept-Provenance HTTP + per-primitive mapping comments + Control→Feature table + legal hardening by @alphaonedev in #1158
  • ci(mobile-runtime, #1159): robust iPhone device-preference list — unblock release/v0.7.0 ship gate by @alphaonedev in #1160
  • ci(mobile-runtime, #1159): drop pipefail in Android emulator script (dash compat) — final blocker-1 fix by @alphaonedev in #1161
  • ci(mobile-runtime, #1159): collapse multi-line adb shell — final Android emulator fix by @alphaonedev in #1162
  • style(#1159): cargo fmt across NSA CSI MCP files — final Lint blocker fix by @alphaonedev in #1163
  • ci(mobile-runtime, #1159): push libc++_shared.so + LD_LIBRARY_PATH for Android runtime by @alphaonedev in #1164
  • ci(mobile-runtime, #1159) RE-PUSH: libc++_shared.so + LD_LIBRARY_PATH (PR #1164 squash-merged with empty diff) by @alphaonedev in #1165
  • feat(quotas, #1156): per-namespace K8 quota dimension extension (schema v50) by @alphaonedev in #1166
  • docs(#1146): full v0.6.4 → v0.7.0 migrator rollout — [llm] config-first across all surfaces by @alphaonedev in #1167
  • fix(config, #1168): route memory_capabilities.models.* through AppConfig resolver by @alphaonedev in #1170
  • docs(#1171): heterogeneous AI NHI assessment scaffold + Claude Opus 4.7 Phase-1 report by @alphaonedev in #1173
  • fix(#1172): regression suite pinning memory_reflect metadata.entity_id passthrough by @alphaonedev in #1177
  • fix(config, #1169): resolver-side embedding_dim via canonical lookup table by @alphaonedev in #1178
  • fix(mcp, #1176): include metadata in approval-gate pending_action payload by @alphaonedev in #1180
  • docs(#1171): Claude Opus 4.7 Phase-1 report — refinement for #1172 + #1169 closures by @alphaonedev in #1179
  • fix(#1175): vendor-neutral substrate source default — close heterogeneous-NHI monoculture by @alphaonedev in #1181
  • refactor(#1174): pm-v3.1 PR4 — substrate "ollama" backend literal sweep by @alphaonedev in #1184
  • refactor(#1174): pm-v3.1 PR3 — extract SECS_PER_HOUR/_DAY/_WEEK constants by @alphaonedev in #1185
  • refactor(#1174): pm-v3.1 PR6 — sweep raw tier strings to Tier::.as_str() by @alphaonedev in #1186
  • refactor(#1174): pm-v3.1 PR1 — extract 73 MCP tool names to tool_names const module by @alphaonedev in #1187
  • refactor(#1174): pm-v3.1 PR2 — extract HEADER_CONTENT_TYPE + MIME_JSON constants by @alphaonedev in #1188
  • refactor(#1174): pm-v3.1 PR9 — deflake test fixtures from vendor-specific "claude" literals by @alphaonedev in #1189
  • refactor(#1174): pm-v3.1 PR8 — extract Class A SHOULD statics into AppState / metrics registry by @alphaonedev in #1195
  • refactor(#1174): pm-v3.1 PR7 — collapse ACTIVE/OVERRIDE_PERMISSIONS_MODE dual-source-of-truth into single RwLock by @alphaonedev in #1191
  • refactor(#1174): pm-v3.1 PR5 — extract DEFAULT_NAMESPACE / disambiguate from quotas::GLOBAL_NAMESPACE by @alphaonedev in #1190
  • refactor(#1183): move WrapStrategy per-CLI-binary table to sibling module src/llm_cli_wrap.rs by @alphaonedev in #1199
  • fix(#1194): replace polling with health-check loop in postgres-integration wait-for-ready by @alphaonedev in #1202
  • fix(#1193): macOS-latest CI timing-flake — macOS-specific budget multiplier on timing-sensitive hooks tests by @alphaonedev in #1203
  • fix(#1201): bypass wiremock pool + per-test path for webhook tests by @alphaonedev in #1210
  • refactor(#1174): pm-v3.1 PR10 — lint-gate enforcement (clippy.toml docs + scripts/check-vendor-literals.sh + CI job) by @alphaonedev in #1200
  • refactor(#1174 followup #1192 #1196): cross-surface RuntimeContext + MUST/SHOULD static extraction by @alphaonedev in #1204
  • test(#1206): rewrite daemon_mode_timeout_still_trips_with_drain_task_running to fake clock by @alphaonedev in #1211
  • fix(#1207): executor spawn-retry-with-backoff + macOS timing-budget multiplier by @alphaonedev in #1209
  • fix(#1212): HNSW concurrent_writes test diagnostic + deterministic settling by @alphaonedev in #1214
  • fix(infra, #1225): .dockerignore exclude .claude/ + .cargo-target/ by @alphaonedev in #1230
  • docs(pages, #1216): schema-version drift v49 -> v50 by @alphaonedev in #1221
  • docs(pages, #1224): refresh test-campaign refs to 2026-05-22-release-gate-final by @alphaonedev in #1227
  • docs(pages, #1228): heterogeneous AI NHI assessment HTML render by @alphaonedev in #1229
  • docs(pages, #1232): v0.7.0 architecture page + CHANGELOG synthesis by @alphaonedev in #1233
  • fix(infra, #1231): entrypoint.plan-c.sh no longer overrides AI_MEMORY_AGENT_ID=daemon by @alphaonedev in #1235
  • fix(identity, #1234): use shape-only validator at internal-bootstrap sites for reserved-sentinel agent_ids by @alphaonedev in #1236
  • fix(#1257): close recall DTO parity gap — CLI --session-id flag by @alphaonedev in #1271
  • docs(#1274): correct stale 'power (10)' family doc to (23) by @alphaonedev in #1276
  • fix(tests, #1272): live_kg_*_without_age skip via backend detection by @alphaonedev in #1277
  • test(#1213): pin atttypmod probe scoping to public schema (reproduces at final v0.7.0) by @alphaonedev in #1268
  • sec(mcp, #1249): cap MCP stdio line length to prevent OOM DoS by @alphaonedev in #1270
  • sec(forensic, #1250): harden tar parser against unchecked integer arithmetic by @alphaonedev in #1273
  • sec(identity, #1251): block path-traversal in agent_id shape validator by @alphaonedev in #1275
  • fix(tests, #1278): uuid-randomize postgres test ids + namespaces by @alphaonedev in #1282
  • ci(#1245): pin C8 + vendor-literal lint gates as required checks by @alphaonedev in #1280
  • ci(#1246): close yank.yml GHA shell-injection via env-var indirection by @alphaonedev in #1281
  • docs(#1247): document consumer-signs-at-integration for mobile artifacts by @alphaonedev in #1283
  • sec(subscriptions, #1253): cap subscription DLQ depth at 10_000 rows per subscription by @alphaonedev in #1284
  • fix(#1213): scope memories atttypmod probes to public schema (post-#1268 production fix) by @alphaonedev in #1285
  • chore(#1248): remove dead build.rs from Cargo.toml include array by @alphaonedev in #1288
  • fix(offload, #1264): re-evaluate stored_at in sweep_expired DELETE by @alphaonedev in #1289
  • sec(mcp, #1254): gate higher-profile tool-name leak in tools/call errors by @alphaonedev in #1290
  • sec(quotas, #1256): replace unchecked + with saturating_add on quota cap checks by @alphaonedev in #1291
  • chore(subscriptions, #1265): track CARGO_PKG_VERSION in webhook User-Agent by @alphaonedev in #1292
  • docs(hooks, #1266): refresh executor module docstring — G5/G6 shipped by @alphaonedev in #1294
  • sec(federation, #1255): persist FederationNonceCache LRU across daemon restarts by @alphaonedev in #1296
  • docs(kg, #1267): clarify DEFAULT_MAX_DEPTH is a safety ceiling, not policy by @alphaonedev in #1297
  • sec(#1258): zeroize secret-holder buffers on Drop + add direct zeroize dep by @alphaonedev in #1293
  • test(#1259): extend test_secret_not_in_capabilities to cover V3 envelope by @alphaonedev in #1298
  • sec(#1261): sanitize skills handler 500 responses + log raw error by @alphaonedev in #1300
  • test(#1263): isolate list_enabled_by_kind_filters_correctly from dev-host operator key by @alphaonedev in #1303
  • sec(llm, #1237): wire NetworkRequest gate into generate + generate_with_model_override by @alphaonedev in #1287
  • fix(llm-cli-wrap, #1238): add claude/claude-cli rows + document gpt/grok/anthropic-cli gaps by @alphaonedev in #1295
  • refactor(llm, #1243): replace 4 literal "ollama" duplicates with BACKEND_OLLAMA const by @alphaonedev in #1299
  • fix(atomisation, #1244): thread curator model name into atomisation_complete signed event by @alphaonedev in #1304
  • test(#1262): regression tests for Debug/Serialize redaction (orphaned PR #1301 recovery) by @alphaonedev in #1305
  • fix(persona, #1241): propagate DB errors from next_version (COR-2) by @alphaonedev in #1286
  • fix(models, #1242): add ConfidenceSource::CuratorDerived for engine-output rows by @alphaonedev in #1302
  • fix(embeddings, #1260): honour [embeddings].backfill_batch from config.toml by @alphaonedev in #1306
  • fix(#1239): synthesis verdict emits supersedes link (new -> target) by @alphaonedev in #1307
  • fix(#1240): synthesis batch cycle-depth guard at cap=3 by @alphaonedev in #1308
  • docs(roadmap): moonshot-aligned ROADMAP.md revision (#1309) by @alphaonedev in #1310
  • fix(#1311): pin schema-pinning tests to SSOT + bump v50→v51 doc claims by @alphaonedev in #1312
  • fix(#1313): add mobile.md row to docs/integrations/README.md matrix by @alphaonedev in #1314
  • fix(#1321 + #1340 + #1341): unified base-CI fix — zeroize + postgres migrate + schema_parity SSOT + atttypmod mutex by @alphaonedev in #1345
  • docs(#1171): replace Opus 4.7 Phase-1 report with fresh 2026-05-25 re-run + self-audit by @alphaonedev in #1322
  • docs: explain why CLI omits flat reflect verb (preserves §2.6 bias-displacement architecture) by @alphaonedev in #1328
  • policy(claude-md): pm-v3.3 (C5 step 7 recompile-retest) + sole-authority operator + no-external-code-injection by @alphaonedev in #1330
  • test(mcp, #1315): pin memory_reflect wire-layer metadata passthrough by @alphaonedev in #1316
  • chore(ci, #1343): coverage.yml docs-only short-circuit — mirror ci.yml classify pattern by @alphaonedev in #1344
  • test(#1317): pin HTTP + CLI wire-layer parity for memory_reflect metadata passthrough by @alphaonedev in #1339
  • fix(#1319 + #1320 + #1324): contradiction-detection two-stage filter + reranker score-floor + transcripts capabilities honesty by @alphaonedev in #1337
  • fix(#1325 + #1326 + #1327): memory_reflect.depth + namespace_get_standard.governance + memory_skill_register docstring (also closes #1331 via snapshot re-bless) by @alphaonedev in #1338
  • docs(#1171): add Opus 4.7 v2 Phase-1 report — curator-LLM-restored re-run, verdict SHIP by @alphaonedev in #1323
  • fix(cli, TEST-5 TEST-6): curator tests env discipline + tokio runtime drop safety by @alphaonedev in #1346
  • fix(atomisation, ARCH-5): add MAX_ATOMISATION_DEPTH recursion cap by @alphaonedev in #1351
  • fix(storage, QUAL-3): reject u64->u32 truncation on governance metadata by @alphaonedev in #1350
  • fix(governance, ARCH-1): PostgresStore pre-write governance hook parity with SQLite path by @alphaonedev in #1347
  • fix(handlers, PERF-1): wrap rusqlite I/O in spawn_blocking to unblock tokio workers by @alphaonedev in #1348
  • fix(recall, PERF-2): release DB mutex across HNSW search + batch decorate_memory by @alphaonedev in #1349
  • test(clippy, QUAL-1): backtick SQLite in governance_pre_write_postgres_parity doc by @alphaonedev in #1352
  • docs(DOC-1 DOC-2 DOC-3): README schema version + CHANGELOG v0.7.0 + CLAUDE.md env-var table by @alphaonedev in #1353
  • test(ARCH-4): §2.6 bias-displacement substrate-level invariant pins by @alphaonedev in #1354
  • feat(cli, ARCH-3): add CLI parity for 5 MCP tools previously CLI-less by @alphaonedev in #1357
  • fix(subscriptions, PERF-3): shared dispatch pool for webhook fan-out by @alphaonedev in #1355
  • refactor(handlers, ARCH-2): route get_links visibility filter via SAL trait by @alphaonedev in #1356
  • feat(cli, ARCH-3): close every remaining MCP/CLI parity deferral (16 v by @alphaonedev in #1358
  • fix(governance): close FX-C5 substrate pre-write hook bypass on supers by @alphaonedev in #1359
  • fix(tests, FX-C6): integration curator env discipline + tokio runtime by @alphaonedev in #1360
  • fix: MED/LOW batch — 30 v2-review findings closed (FX-C4 batch1+2) by @alphaonedev in #1361
  • fix(llm, PERF-9): OllamaClient async client (FX-C1, rebased) by @alphaonedev in #1363
  • fix(store, ARCH-2): all 21 SAL trait methods + 15 handler routings (FX-C2 final) by @alphaonedev in #1364
  • fix(llm, FX-D1): OllamaClient bridge — no panic on current-thread tokio by @alphaonedev in #1365
  • fix(qual, FX-D2): bump QUAL-10 module-size ceilings for postgres.rs + llm.rs by @alphaonedev in #1366
  • fix(FX-E1): cascade #[cfg(feature=sal)] gate + HNSW PERF-7 sr3 pin by @alphaonedev in #1368
  • fix(FX-F1): coverage closure for daemon_runtime + store/mod + hermetic #1053 + env-lock unification by @alphaonedev in #1369
  • fix(tests, #1370): make SEC-2 fail-closed test hermetic on dev hosts by @alphaonedev in #1371
  • ci(infra, #1373): free disk before release-build on ubuntu-latest Check by @alphaonedev in #1376
  • fix(tests, #1372): normalize CRLF → LF in arch_14_route_count_invariant by @alphaonedev in #1375
  • docs(claude-md, #1334): correct CLI subcommand cfg-gate framing by @alphaonedev in #1377
  • docs(strategy): add CoALA prior-art citation (Sumers et al. 2024) by @alphaonedev in #1380
  • docs(release-gate): 2026-05-28 ship campaign dossier + Opus 4.7 v3 AI NHI assessment by @alphaonedev in #1386
  • feat(#1389): L1–L4 layered auto-capture — close #1388 systemic failure mode by @alphaonedev in #1397
  • test(postgres): per-test schema isolation for 4 lan-parity-shared-container failures by @alphaonedev in #1382
  • docs(release-gate, #1197 #1198): 100% v0.7.0 docs + GitHub Pages drift remediation (rebased from #1379) by @alphaonedev in #1406
  • feat(config): config-driven postgres pool sizing (AI_MEMORY_PG_POOL_*) by @alphaonedev in #1489
  • refactor(config): remove Gemma-only LlmModel enum; agnostic tier llm_model gate (#1490) by @alphaonedev in #1491
  • docs(landing): no-GPU "any LLM" autonomous backend callout (#1460) by @alphaonedev in #1493
  • refactor(#1434): SSOT named-consts for genuinely-duplicated literals (scanner-B) by @alphaonedev in #1494
  • test(governance): relax forensic-SINK exact-count asserts to tolerant lower bounds (#1495) by @alphaonedev in #1496
  • coverage: add fragile-floor canary + audit paper-thin pins (#1424) by @alphaonedev in #1497
  • ci: add hung-test watchdog to impact-aware test step (#1492) by @alphaonedev in #1498
  • ci: make #1492 hung-test watchdog portable (fix macOS/Windows regression) by @alphaonedev in #1499
  • ci: gate #1492 hung-test watchdog to Linux runners only by @alphaonedev in #1500
  • fix(test): hermetic offline embedder in integration suite — fixes #1501 cold-download hang by @alphaonedev in #1502
  • fix(test)+ci: kill PublicSchemaLock advisory-lock leak that cancelled CI run 26998232157 by @alphaonedev in #1503
  • test(hnsw): harden two coverage-runner flakes via deterministic assertions (#1504) by @alphaonedev in #1505
  • test(storage): restore storage/mod.rs coverage floor to >=94% by @alphaonedev in #1506
  • test(governance): bound enforce CLI/MCP subprocess waits with a deadline (#1522) by @alphaonedev in #1525
  • fix(embeddings): wire sectioned [embeddings] config into daemon build_embedder (#1521) by @alphaonedev in #1524
  • feat(reference-configs): EC-1 three compute-archetype config.toml + decision tree (#1526) by @alphaonedev in #1527
  • docs(enterprise): 100% TOML coverage + PG18.4/AGE1.7.0/pgvector0.8.2 version pins by @alphaonedev in #1529
  • docs(batman): fix stale Form-7 v0.8.0 drift + resolved keygen/enable wart by @alphaonedev in #1530
  • v0.7.0: #1531 Tier-0 security hardening + test-flake hardening (11 commits) by @alphaonedev in #1532
  • fix(embeddings): apply nomic-embed-text-v1.5 asymmetric task prefixes (#1520) by @alphaonedev in #1523
  • feat: recursive learning + improvement frameworks on postgres (SAL coverage) + do-1461 reference architecture (#1546) by @alphaonedev in #1551

Full Changelog: v0.6.4...v0.7.0