# Reported issues for ai-memory

Pod holds 24 of 1,821 problems reported by people outside the maintainer team. Issues filed by the project's own owners, members and collaborators are excluded entirely — a maintainer's release checklist is not a warning to a prospective user.

Back to [ai-memory](/mcp/ai-memory).

## Most discussed

### 🎯 ai-memory v1.0.0 — GLOBAL DEVELOPMENT EPIC (orchestration + tracking; 100% autonomous AI NHI; GA cut authorized)

## Authority

Operator grant 2026-07-09 (ai-memory `f9a0f397`, verbatim in the memory): **AI NHI 100% approved to make all decisions and run the entire v1.0.0 development epic, 100% autonomous via loop/goal — including temp admin-lift merges to main and triggering the CI release for the GA cut.** Decision protocol: any decision point → **2 waves × 5 adversarial agents** → converge → move forward. Loop driver SSOT: [`docs/v1.0.0/AI-NHI-V1.0.0-DEVELOPMENT-EPIC-PROMPT.md`](../blob/main/docs/v1.0.0/

[Read the thread](https://github.com/alphaonedev/ai-memory-mcp/issues/1940) · 2026-07-09 · open · 36 comments

### v0.7.0 grand-slam execution log — Option B (L0.7-first) selected 2026-05-13

## Purpose

Operational execution log + decision record for the v0.7.0 grand-slam delivery. Complements META #687 (long-lived master tracker) with a session-aware timeline. Updated as each phase ships.

---

## Decision (2026-05-13): Option B — L0.7-first sequencing

After a full-spectrum audit (issues × git × ai-memory) AI NHI selected Option B over A (L1-first per memory `39b47c4f`) and C (hybrid).

### Rationale (3 forces)

1. **Procurement-grade discipline is load-bearing.** ROADMAP2 §11 mak

[Read the thread](https://github.com/alphaonedev/ai-memory-mcp/issues/688) · 2026-05-13 · closed · 31 comments

### 🎯 v0.8.0 — Distributed Coordination Substrate — global tracking / orchestration EPIC

# 🎯 v0.8.0 — Distributed Coordination Substrate — global tracking / orchestration EPIC

**Scope.** ALL v0.8.0 work per ROADMAP §11.4 (Distributed Coordination Substrate) + §22 (Policy-Engine audit-trail closeout) + §5 (decorrelation enforcement, COMMITTED v0.8/v0.9). Unlike v0.7.1 (which **hardened** v0.7.0), v0.8.0 **expands** the §2-property surface: federation across organizational trust boundaries + the Pillar-4 connection-scaling substrate that lets a hive scale past the single-backbone con

[Read the thread](https://github.com/alphaonedev/ai-memory-mcp/issues/1709) · 2026-06-15 · closed · 24 comments

### v0.7.0 fix campaign — close all 47 review findings (2026-05-13)

## Purpose
Close all 47 findings from the 6-agent full-spectrum review (#689) **inside v0.7.0**. Operator directive 2026-05-13: 100% fix, no v0.7.1 deferral.

Source META verdict: ai-memory `5ad05a11` (`_v070_grand_slam/review/meta`).

## Parallel agent assignments

Each agent works in own worktree under \`/Users/fate/v07/fix-<slug>\` branched off the appropriate base, writes verdict memory, comments on this issue, single feat-style commit. Worktrees consolidate into \`feat/v0.7.0-fix-campaign\`

[Read the thread](https://github.com/alphaonedev/ai-memory-mcp/issues/690) · 2026-05-13 · closed · 21 comments

### Phase 1 Task 1.1: Schema Migration — Add metadata JSON column

**Branch:** `feature/schema-metadata`
**Track:** A (Schema & Agent Identity)
**Milestone:** v0.6.0
**Depends on:** None — CRITICAL PATH, unblocks all other Phase 1 tasks

Add `metadata TEXT NOT NULL DEFAULT '{}'` column to memories table. Preserve through all CRUD operations. Schema migration for existing databases. See [docs/PHASE-1.md](https://github.com/alphaonedev/ai-memory-mcp/blob/main/docs/PHASE-1.md) Task 1.1 for full specification.

**PR Checklist:**
- [ ] Branch from `develop`
- [ ] `c

[Read the thread](https://github.com/alphaonedev/ai-memory-mcp/issues/147) · 2026-04-14 · closed · 16 comments

### API-backed embeddings facility: allow [embeddings].backend=openai-compatible/openrouter so CPU-only nodes need no Ollama (wire support already exists)

**Parent:** #1588 (dogfood eval). Filed at operator request (2026-06-11): "we have the OpenRouter backend llm Gemma 4 26B — should we have API facility for the smaller llm also?"

**Current state (v0.7.0 @ 361f6163):**
- **LLM**: fully provider-agnostic post-#1067 (15 API vendor aliases) — a CPU-only node needs no local inference for expand/auto-tag/contradiction/consolidate. ✅
- **Embeddings**: local-only. `EmbeddingModel` enum = `MiniLmL6V2` (in-process candle, 384-dim) | `NomicEmbedV15` (requ

[Read the thread](https://github.com/alphaonedev/ai-memory-mcp/issues/1598) · 2026-06-11 · closed · 11 comments

### Feature Request: customized expiry dates per tier

First off, thanks for this MCP server - it's exactly what I've been looking for.

I've noticed that the mid-tier memories have a very short TTL. I'd like to be able to customize this. Any chance of this happening, or would it break too many other things? (I know I can set the expiry date individually for a given memory, but I'd like to ensure that mid-tier lasts at least an academic semester.)

Also - have you given any thought to archiving memories before they're deleted from the memory store?

[Read the thread](https://github.com/alphaonedev/ai-memory-mcp/issues/128) · 2026-04-11 · closed · external user · 10 comments

### 🎯 v0.9.0 — Development EPIC — global tracking / orchestration

**Umbrella tracking issue for the v0.9.0 development line.** Milestone: `v0.9`.

v0.8.1 (`hardened-patch`, #1821) shipped GA as a defect-closure + security-hardening patch. A post-GA **3×7 adversarial audit** of v0.8.1 against its CHANGELOG (21 claim-verifiers + triage, codegraph-driven) returned **MATCHES_WITH_MINOR_GAPS**: 18/21 claims fully supported, **0 refuted**, no fabricated or falsely-claimed security fix. Every one of the 9 security findings (#1843–#1851) ships real, correct, both-back

[Read the thread](https://github.com/alphaonedev/ai-memory-mcp/issues/1853) · 2026-06-29 · closed · 9 comments

## Most recent

### [v1.0.0 GA · #3266 MVG] Per-lineage token/cost accounting — the "$50k on the screen"

**Decision (operator, #3266 scope):** MVG-in-GA. MVG piece 2 of 3.

**Goal:** per-lineage + per-namespace token/cost accounting so a runaway cascade shows a dollar figure, not a discovery. Feeds `memory_swarm_rewind`'s cost report.

**Build-on:** `derives_from` lineage DAG; recall/write funnels; `budget_tokens` (input budget only — NOT metering).
**Net-new (fully):** counters on write + recall tied to a lineage; a cost model; a per-namespace rollup table. No `tokens_spent`/`cost_usd`/meter exist

[Read the thread](https://github.com/alphaonedev/ai-memory-mcp/issues/3323) · 2026-08-31 · closed · 1 comment

### [v1.0.0 GA · #3266 MVG] memory_swarm_rewind — one-command intercept + rewind of a memory cascade

**Decision (operator, #3266 scope):** MVG-in-GA. This is MVG piece 1 of 3.

**Goal:** one atomic, resumable operation `memory_swarm_rewind --to <checkpoint|claim-id>` that intercepts and unwinds a cascade without data loss.

**Build-on (already ships):** `memory_kg_invalidate` + `handle_dependents_of_invalidated` / `db::transitive_suspects` (cycle-safe, depth-bounded downstream walk); `Checkpoint` + witness dual-head whose resolution wire already carries a `rollback` object (v2) (`src/governance

[Read the thread](https://github.com/alphaonedev/ai-memory-mcp/issues/3322) · 2026-08-31 · open · 0 comments

### Cross-backend parity: tombstoned-root OWNER keeps conserved lineage on sqlite (200) but not pg (404) — get_lineage

## Finding (surfaced during #3303 coverage work)

The #3270 total lineage-authz gate has a **cross-backend behavior divergence** for a tombstoned root's OWNER requesting its own conserved lineage:

- **sqlite lane** (`get_lineage`): reads UNFILTERED via `db::get_any`, so the owner of a tombstoned root **keeps access** to its conserved lineage → **200**. This is the #3270 stated intent (comment: "the owner keeps access to their own tombstoned root's conserved lineage").
- **pg lane** (`PostgresSt

[Read the thread](https://github.com/alphaonedev/ai-memory-mcp/issues/3305) · 2026-08-27 · open · 2 comments

### Per-Module Coverage red: handlers/links.rs 77.98% < 79% floor — #3270 authz HTTP-lineage-gate branches need handler-level tests

**Severity: MEDIUM (required-check red — Per-Module Coverage). Regression from the #3270/#3271 authz merge (6e5a6157). CONFIRMED.**

`Per-Module Coverage Thresholds` is red on release/v1.0.0 (tip 9f73b857): `FAIL: handlers/links.rs measured 77.98% < threshold 79%`. The playbook: thresholds rise across releases, never fall; lowering one needs explicit operator approval in the PR — so the fix is to ADD coverage, not lower the floor.

**Root cause:** the #3270 fix made the HTTP lineage route in `sr

[Read the thread](https://github.com/alphaonedev/ai-memory-mcp/issues/3303) · 2026-08-27 · closed · 1 comment

### Certified pg+AGE cells red: store_parity_gaps.rs AI_MEMORY_ENCRYPT_AT_REST env-leak panics 22 seed helpers (#2905 class; unmasked by the D1 fix)

**Severity: HIGH (cert-lane blocker, test isolation #2905 class). Surfaced 2026-08-27 by the D1 fix (336a21b5). CONFIRMED.**

The "Certified pg+AGE cells" required check is red on release/v1.0.0: 22 postgres_side tests in \`tests/store_parity_gaps.rs\` panic at the seed helper (\`store_parity_gaps.rs:118\`) with *"seed memory: at-rest encryption enabled but memory has no agent_id to key encryption to (fail-closed)"*.

**Root cause:** the encryption tests in the same binary (\`store_parity_gaps.r

[Read the thread](https://github.com/alphaonedev/ai-memory-mcp/issues/3300) · 2026-08-27 · closed · 1 comment

### fed-receive MEMORY metadata still bypassable by the *_b64 subtree carve-out (#3269 sibling; memory funnel's carve-out is load-bearing for attestation JWTs)

**Severity: MEDIUM (security, follow-up to #3269). Found by the #3269 fixer, CONFIRMED.**

The #3269 fix closed the key-name carve-out bypass on the coordination receive path (Signal.body / Checkpoint.condition / Checkpoint.metadata) by screening those with the name carve-out disabled. The **same `{"x_b64": {subtree}}` object-subtree bypass still exists for MEMORY metadata** on the receive funnel (`insert_if_newer` / `merge_inbound` / postgres `screen_storage_memory` → `redact_memory_for_storage

[Read the thread](https://github.com/alphaonedev/ai-memory-mcp/issues/3299) · 2026-08-27 · closed · 1 comment

### pg archive_by_ids bypass lane counts phantom archives; sqlite probe masks DB error (unwrap_or false); FOR UPDATE caller-order deadlock (#3243)

**Severity: LOW-MEDIUM (correctness on the bypass lane). PR #3243 (A2/A5/A6). CONFIRMED (latent).**
Three archive/authz correctness issues in the pg adapter, latent today (the sole prod caller uses for_agent per-id):
- **A2:** `archive_by_ids` counts a nonexistent id as archived on the `bypass_visibility` (admin/CLI) lane — assert_caller_owns returns Ok immediately under bypass, moved+=1 runs with no rows_affected check — contradicting the trait contract added in the SAME PR ("an id with no live

[Read the thread](https://github.com/alphaonedev/ai-memory-mcp/issues/3296) · 2026-08-27 · closed · 1 comment

### Untested security fixes: #3173 synthesis candidate-pool owner filter (primary mechanism) and #3246 unreadable-corpus gate have no real coverage

**Severity: MEDIUM (test coverage of a security fix). PR #3239 (B6) + #3251 (B2). CONFIRMED.**
Two security/integrity fixes whose PRIMARY mechanism is untested:
- **#3173 (B6):** the synthesis candidate-pool owner filter (src/mcp/tools/store/mod.rs:628-650) is the actual cross-owner protection, and NO test covers it — both integration tests call run_store with llm:None so synthesis_eligible is false and the filter never runs; the tested mutate-site checks are unreachable by construction (validat

[Read the thread](https://github.com/alphaonedev/ai-memory-mcp/issues/3295) · 2026-08-27 · open · 0 comments

### store::Filter needs #[non_exhaustive] + ..Default literals — a new field broke four test literals during the D1 gate (#3252/#3240)

**Severity: MEDIUM (API stability — hit live during the D1 gate). PRs #3252 (B-4) + #3240 D1. CONFIRMED.**
`store::Filter` is a public struct that keeps gaining fields (`source_uri` in #3252, `skip_access_ledger` in the #3240 D1 fix) but is not `#[non_exhaustive]` and its consumers use positional struct literals. Fable hit this LIVE completing the D1 gate: adding `skip_access_ledger` broke four test literals with E0063 (`missing field`), which had to be patched one by one. Any future field break

[Read the thread](https://github.com/alphaonedev/ai-memory-mcp/issues/3294) · 2026-08-27 · closed · 1 comment

### Governance divergence + undocumented breaking change: Approve arm (pg auto-allows owner) and MCP update/capture_turn deny on Owner-governed ns (#3237)

**Severity: MEDIUM (governance divergence + undocumented breaking change). PR #3237 (M6/M7). CONFIRMED.**
Two sqlite↔pg governance divergences the "sqlite matches postgres" PR left/introduced:
- **M6:** `GovernanceLevel::Approve` — sqlite queues Pending unconditionally; postgres AUTO-ALLOWS the namespace-standard owner (owner_to_compare bypass, src/store/postgres.rs:28804-28812). Same call, opposite verdict. Left unfixed and unmentioned.
- **M7:** #3176 changed `evaluate_level` Store⇒ns_owner, s

[Read the thread](https://github.com/alphaonedev/ai-memory-mcp/issues/3292) · 2026-08-27 · closed · 1 comment

### memory_links.created_at is caller-supplied after #3178 but absent from SignableLink — unattested timestamp on a self-signed edge (#3237)

**Severity: MEDIUM (unattested audit field). PR #3237 (M4). CONFIRMED.**
#3178 makes `memory_links.created_at` caller-supplied on the SAL surface, but `created_at` is NOT in the SignableLink pre-image (six fields: src_id/dst_id/relation/observed_by/valid_from/valid_until). Pre-#3178 the sqlite funnel forced created_at=now (substrate-attested); it is now a caller/peer-chosen unattested column on a self-signed edge, indistinguishable to an auditor from a substrate stamp. Reachable via consolidate_

[Read the thread](https://github.com/alphaonedev/ai-memory-mcp/issues/3291) · 2026-08-27 · closed · 1 comment

### asi-hard cert-peer-binding cluster: empty-string=>Enforce, inert-without-map but docs claim ENFORCES, CLAUDE.md 'never bricks' false, infallible parse (#3236)

**Severity: MEDIUM (cluster). PR #3236 (A1/A2/A3/A5). CONFIRMED. asi-hard cert-peer-binding.**
The asi-hard knob-pin work is sound (all 5 knobs really pinned, count SSOT honest, meets_floor delegates to the live grammar, fail-closed+loud), but the cert-peer-binding pin has four coupled defects:
- **A1:** empty-string `AI_MEMORY_FED_CERT_PEER_BINDING=` resolves to Enforce (parse "" hits the `_ => Enforce` arm, src/tls.rs:483-491); the PR's own test only covers MISSING. A bare env assignment (comm

[Read the thread](https://github.com/alphaonedev/ai-memory-mcp/issues/3289) · 2026-08-27 · closed · 1 comment

### pg admin export is unbounded and fully buffered — needs paging/streaming and a machine-readable skipped count (#3240)

**Severity: MEDIUM (unbounded resource). PR #3240 (F6). CONFIRMED.**
pg admin export (`postgres_parity.rs:114-188` + `handlers/admin.rs:700-729`) is correct (the keyset walk + #1724 collation are right, and #3174's uncapping fixes the old silent 1000-row clamp) but materializes the whole corpus as Vec<Memory> and serializes it into one JSON body — no ceiling, no streaming, no resume cursor, on a multi-million-row target = OOM/daemon-kill. The undecryptable `skipped` count is WARNed to logs only 

[Read the thread](https://github.com/alphaonedev/ai-memory-mcp/issues/3288) · 2026-08-27 · open · 0 comments

### Concurrent deletes contend on signed_events.sequence UNIQUE with no retry; run_gc unbounded FOR UPDATE + serial in-tx chain appends starve writers (#3240/#3253)

**Severity: MEDIUM (delete/federation availability). PRs #3240 (F5) + #3253 (C-5) — related. CONFIRMED mechanism / PLAUSIBLE severity.**
Two coupled contention issues from adding delete to the signed-events chain writer set and from unbounded gc:
- Every delete appends the signed-events chain via a non-locking head read (`SELECT ... ORDER BY sequence DESC LIMIT 1`, no FOR UPDATE) against a UNIQUE `sequence` index under READ COMMITTED. Concurrent deletes (a federation deletions[] burst, one tx pe

[Read the thread](https://github.com/alphaonedev/ai-memory-mcp/issues/3287) · 2026-08-27 · open · 0 comments

### Eviction funnel leaves federation_push_dlq / transcript_line_dedup remanence that #3192 purges on delete (both backends) (#3240/#3253)

**Severity: MEDIUM (crypto-erase remanence, both backends). PRs #3240 (F4) + #3253 (C-4) — same defect. CONFIRMED.**
The eviction funnel leaves federation_push_dlq cleartext + transcript_line_dedup content-hash remanence that #3192 purges on hand-delete. pg now has THREE tombstone+erase primitives: delete (`pg_tombstone_and_erase_in_tx`, purges), evict (`postgres_parity::evict_tombstone_and_erase_in_tx` #3177, does not), forget. On sqlite the purge lives in delete_inner not the shared tombstone_

[Read the thread](https://github.com/alphaonedev/ai-memory-mcp/issues/3286) · 2026-08-27 · closed · 1 comment

### forget_tombstones is written on every delete with no reaper/retention — unbounded growth; needs a retention design (not just a reap) (#3253)

**Severity: MEDIUM (scale). PR #3253 (C-3). CONFIRMED.**
`forget_tombstones` is now written on EVERY delete (MCP/HTTP/CLI delete, consolidate source, synthesis dedup, inbound deletions[]) — previously only forget+eviction — and is never reaped (no gc/size_gc/migration prunes it; grep finds only test cleanup). Unbounded monotonic growth of a PK-indexed table that every insert_if_newer/apply_remote_memory probes. Note: naive reaping RE-OPENS resurrection (an expiring tombstone lets LWW win again),

[Read the thread](https://github.com/alphaonedev/ai-memory-mcp/issues/3285) · 2026-08-27 · open · 0 comments

The remaining reports are on [the project's issue tracker](https://github.com/alphaonedev/ai-memory-mcp/issues).
