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.
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 · 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)
- Procurement-grade discipline is load-bearing. ROADMAP2 §11 mak
Read the thread · 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 · 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-
Read the thread · 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 Task 1.1 for full specification.
PR Checklist:
- Branch from
develop - `c
Read the thread · 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.
EmbeddingModelenum =MiniLmL6V2(in-process candle, 384-dim) |NomicEmbedV15(requ
Read the thread · 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 · 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 · 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 · 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 · 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 viadb::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 · 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 · 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 · 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 · 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_idscounts a nonexistent id as archived on thebypass_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 · 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 · 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 · 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_levelStore⇒ns_owner, s
Read the thread · 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 · 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_ => Enforcearm, src/tls.rs:483-491); the PR's own test only covers MISSING. A bare env assignment (comm
Read the thread · 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 Vecskipped count is WARNed to logs only
Read the thread · 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 UNIQUEsequenceindex under READ COMMITTED. Concurrent deletes (a federation deletions[] burst, one tx pe
Read the thread · 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 · 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 · 2026-08-27 · open · 0 comments
The remaining reports are on the project's issue tracker.