ai-memory-mcp

ai-memory v0.7.0 — AI NHI Dogfood Test + In-Campaign Fix Batch (2026-05-18)

What this is

The post-Gap-7 dogfood pass against the v0.7.0 release-candidate binary. The full provenance stack (Gaps 1 through 7, schema v44 through v47) had landed earlier the same day; the dogfood is the AI NHI sitting in front of the live system and exercising the provenance write + read paths via raw MCP wire calls, against a fresh sqlite DB, with SQL-level verification of every persisted side effect.

The dogfood surfaced 4 real production defects that the prior Track A NHI campaign and the requirements-coverage audit had both missed. All four are filed; three are closed in v0.7.0 with retest evidence; one is filed and open as a Track C parity blocker that will land in the next agent dispatch.

This campaign was executed per the prime directive pm-v3 (memory cd8ede94-3376-4837-b570-9d975290ae08, namespace global/policies) — verify-before-claiming, no-operator-handoffs, no deferral to a later release, no banned framings.

Verdict at a glance

SHIP-READY for v0.7.0 sqlite path. Track C (postgres + Apache AGE) is parity-gapped on schema v44-v47 + 6 SAL methods; issue #894 is filed and open for the next agent dispatch.

Test count: every dogfood probe that ran returned the expected wire shape and SQL state after the in-campaign fix batch. All 4 cargo gates are green on the post-fix binary (39aa158f9 for the wire-schema + handler fix; 19b08543c for the Gap 5 docstring fix).

How this directory is organised

File Audience Purpose
README.md All readers Campaign index (this file)
audience-non-technical.md End users / curious observers Plain-English version
audience-c-level.md Executive / PM / decision-maker Verdict + risk + cost + roadmap
audience-engineer.md SME engineers + architects Deep-dive: every finding, every commit, every reproduction step
findings.md All readers Flat enumerated list of every anomaly the dogfood surfaced

The 4 dogfood findings

  1. #892memory_store MCP wire schema omitted the source_uri property AND the store handler at /Users/fate/v07/v07-fixes/src/mcp/tools/store/validation.rs:224 hard-coded source_uri: None, dropping any caller-supplied URI on the floor. CLOSED in commit 39aa158f9 with end-to-end SQL proof that doc:dogfood-2026-05-19-verify now persists through the full MCP path.
  2. #893memory_update MCP wire schema omitted expected_version and edit_source (the request-handler code already read them, so the gap was wire-schema-only — but an NHI could not discover the parameters via tools/list). source_uri update was also exposed. CLOSED in the same commit 39aa158f9.
  3. #895 — Gap 5 (#888) SupersedeResult docstring drift: the docstrings on SupersedeResult and the supersede sequence step 4 promised a memory_links row with relation supersedes was written; the implementation correctly skips it (the foreign-key constraint target_id REFERENCES memories(id) would reject pointing at an archived id). Lineage is preserved via archived_memories.archive_reason='superseded' and new_memory.metadata.superseded_id. CLOSED in commit 19b08543c with a doc-only fix that restates the actual two-mechanism lineage; relaxing the FK or adding a parallel archive_links table remains a deeper design choice tracked under the same issue body.
  4. #894 — Postgres + Apache AGE store missing schema-v44-v47 migrations (Gap 1 version column, Gap 2 source_uri upgrade path, Gap 3 recall_observations table, Gap 5 edit_source column) + 6 SAL methods + AGE Cypher snippets for the superseded edge. FILED + OPEN. Approximately 600 LOC of postgres + AGE code. Scheduled for the next agent dispatch. Track C cross-store parity stays gapped until this lands.

Code commits this campaign (branch local/install-815-816)

SHA Scope
913a2ffb0 test(#886): MCP recall_observations tool param-branch coverage — pre-dogfood baseline
39aa158f9 fix(#892,#893): expose Gap 1/2/5 params via MCP wire schemas + thread source_uri through the store validation path
19b08543c docs(#895): fix Gap 5 SupersedeResult docstring drift

All three commits are on local/install-815-816. The pre-dogfood SHA is 913a2ffb0; the post-dogfood HEAD is 19b08543c.

All 4 gates GREEN on the post-fix binary

Gate Result
cargo fmt --check GREEN
cargo clippy --release --all-targets -- -D warnings -D clippy::all -D clippy::pedantic GREEN
cargo audit GREEN
AI_MEMORY_NO_CONFIG=1 cargo test --release (targeted dogfood-related tests) GREEN

Token budget impact

The schema additions for #892 + #893 added wire-schema text to two tools. To stay under the 10,000-token verbose ceiling, the schema-fix commit trimmed docstring prose on on_conflict, force, source, kind, session_id, session_default, budget_tokens, and depth. Net result:

Metric Pre-fix Post-fix Ceiling
full_profile_total_tokens (verbose) 10,196 9,998 10,000

The 9,998 sits 2 tokens under the ceiling. The CI guard at tests/token_budget_guard.rs continues to enforce the cap forward.

Phase log location

All artifacts live under /Users/fate/v07/v07-fixes/.local-runs/dogfood-2026-05-18/:

File Purpose
probe_source_uri.sh End-to-end probe used to surface #892 (single-shot source_uri round-trip)
phase_b_revalidate.sh Full Phase B retest script (5 Gap probes with raw MCP wire + SQL verification)
phase_b_v2.log Phase B v2 retest output, captured post-#892/#893 fix
phase_b_v2.db Fresh sqlite DB used for the v2 retest
post-schema-fix.db DB from the probe_source_uri.sh round-trip

Lessons learned

  1. Wire-schema gaps are invisible to handler tests. The expected_version + edit_source handler code at the request-parsing layer worked end-to-end in unit tests because the tests constructed the request structs directly. The wire-schema omission was only discoverable by an NHI driving the surface via raw tools/list + tools/call. The dogfood pass caught it because the test method was end-to-end raw MCP, not handler-direct.
  2. Docstring drift is a real defect. Gap 5’s SupersedeResult docstring claimed a memory_links row was written; the impl had correctly chosen not to write it (FK constraint). The drift sat in the codebase from #888 land until the dogfood retest tried to assert on the empty memory_links table. Per pm-v3, docstring drift between code behavior and prose is a real defect and is fixed in the same release — not deferred.
  3. SQL-level verification is non-optional. Three of the four findings were detectable only by checking the actual sqlite row state after the MCP call returned OK. A response-body assertion alone would have passed for #892 (the response carried no source_uri field; the absence of an SQL row was the giveaway).
  4. Cross-store parity gaps stay visible. The sqlite path is the reference implementation; the postgres + AGE path lags because the migrations and SAL methods are written separately. #894 captures the gap so Track C can close it before any cross-node integration claim is made.

Reproducibility contract

  1. Pinned binary at write time — git SHA 19b08543c on branch local/install-815-816 in worktree /Users/fate/v07/v07-fixes/. The wire-schema fix is at 39aa158f9; the doc-drift fix is at 19b08543c.
  2. Binary location/Users/fate/v07/v07-fixes/.cargo-shared-target/release/ai-memory (release build).
  3. Test DB/Users/fate/v07/v07-fixes/.local-runs/dogfood-2026-05-18/phase_b_v2.db (fresh; auto-migrated to schema v47 on first MCP open).
  4. Modelsnomic-ai/nomic-embed-text-v1.5 (768-dim embedder), cross-encoder/ms-marco-MiniLM-L-6-v2 (reranker), gemma4:e4b (LLM via Ollama). Tier semantic was sufficient for the dogfood probes (no LLM-dependent surfaces tested).
  5. Authoring agentai:claude-code@FROSTYi.local:pid-1060 (Claude Opus 4.7, 1M context).
  6. MCP client identity used in probesdf-pb-v2 (Phase B v2 retest).

Hard rules during the campaign

Per the prime directive pm-v3 (canonical memory cd8ede94-3376-4837-b570-9d975290ae08) and the testing-loop addendum:

Memory namespace convention

Item Namespace Title pattern
Dogfood phase results ai-memory/v0.7.0-dogfood-2026-05-18 Dogfood-{Gap-N}-{result}
Verdict ai-memory/v0.7.0-dogfood-2026-05-18 Dogfood ship-readiness verdict 2026-05-18
Prime directive pm-v3 global/policies memory cd8ede94-3376-4837-b570-9d975290ae08
Orchestrator safeguards _v070_orchestrator_safeguards memory a1cc142d-053a-49ab-83bd-1a99992fa93e
Strategic tracking _v070_strategic_tracking lane index f970d6f6-7bde-4d6b-9a53-500734961e04

Provenance

Item Value
Campaign date 2026-05-18 (evening dogfood; post-Gap-7 + post-Track-A)
Operator justin@alpha-one.mobi
Authoring agent Claude Opus 4.7 (1M context)
Authority Autonomous execution under pm-v3 (verify-before-claiming + no-operator-handoffs + fix-all-in-current-release)
Prior campaign /Users/fate/v07/v07-fixes/docs/v0.7.0/test-campaign-2026-05-18/ (Track A NHI re-run + in-campaign fix batch)
Binary at write time SHA 19b08543c on branch local/install-815-816

Drafted by Claude Opus 4.7 (1M context).