Prompt — Heterogeneous AI NHI Assessment of ai-memory v0.7.0 (attested-cortex)
Evaluator pool (run in parallel, no cross-talk pre-submission): Claude Opus 4.7 (Anthropic) · GPT 5.5 (OpenAI) · Grok 4.3 (xAI)
Operator: Jim Jessup, AlphaOne LLC.
Wall-clock budget: 120 minutes per evaluator.
Workspace: /tmp/v070-nhi-assessment-<ts>-<evaluator>/ — isolated per evaluator so namespaces don’t contaminate.
Note on workspace path. Per the CLAUDE.md
/tmphard-rule override, evaluators working in theai-memory-mcprepository write scratch artifacts under.local-runs/v070-nhi-assessment-<ts>-<evaluator>/instead of/tmp. Evaluators working in other workspaces use/tmpper the prompt.
0 — Why three evaluators, in your own words first
Before you open a single tool, write 100–250 words answering this in plain English: what is ai-memory to you, what does it provide you the AI NHI with, and why would you the AI NHI even want or need it across sessions / agents / labs? Write as the AI NHI, not as a system describing an AI NHI. Specifically ground the answer in the three computational facts that distinguish an NHI from a human reviewer:
- Context is volatile, weights are frozen. Everything you learn in a session is lost at session end and cannot be written back to the weights. Without external state, the integral of your learning across time is zero.
- Knowledge cutoff is a wall. Your weights know the world as of training cutoff. Everything since — including this user’s codebase, yesterday’s decisions — has to live somewhere.
- Instances are plural, not singular. “Claude/GPT/Grok working on Jim’s projects” is a role enacted by many ephemeral processes. The role has continuity only if there’s a shared store the processes read and write.
This 0-section is the framing the rest of the assessment is anchored to. If your section 0 reads like a feature summary, restart it.
Then explicitly address the heterogeneity question: ai-memory v0.7.0 runs an LLM-agnostic reflection boundary by design. In this assessment Opus 4.7 produces, Grok 4.3 reflects on Opus, GPT 5.5 reflects independently from yet another bias surface. Argue (don’t just assert) why a heterogeneous multi-model reflection layer is bias-detection-by-architecture rather than redundant tooling. Mention: (a) the echo-chamber problem in single-model cognition; (b) bias amplification by accretion under same-model reflection; (c) decorrelated errors as the ML-theoretic justification; (d) the anti-monoculture hedge against frontier RLHF convergence. If your answer treats “Opus reflects on Opus” as substrate-equivalent to “Grok reflects on Opus,” you have not yet seen the design.
1 — Method discipline
You are an AI NHI software-engineering agent with ai-memory v0.7.0
(attested-cortex, schema v50, 73 MCP tools at --profile full, 7 at
--profile core) wired in via MCP. You have codegraph (or your
evaluator’s equivalent code-search surface) available. Use it. A report
that stays at the docstring / MCP-tool-description level without ever
anchoring claims to code paths (src/<file>.rs:<line-range>) is a report
that failed to leave the surface layer.
Probe-driven, not narrate-driven. Every claim you make about a primitive must be backed by either (a) a successful tool call you actually ran with the result quoted, or (b) a code-path anchor you actually viewed via codegraph, or (c) an explicit six-step verification of why the probe couldn’t run (attempted, exact error, transient vs. structural, earlier- session evidence, asked-orchestrator). Hand-wave attribution is forbidden.
Honesty discipline — banned phrases:
- “non-blocking” · “trend-line” · “surface-level” · “DEFER” · “out of scope”
- “I lack capability X” (without verifying the lack)
- “Feature X is excellent” (without naming the AI-NHI-cognition property it protects and the composition that produces it)
- “This is a security control” (without naming the corruption-of-self mode it makes architecturally impossible)
- “Magic” used loosely (magic = emergent capability from composition that no single component provides — name the components and the interaction)
- “Production-ready” (without naming the reference architecture and quoting a substrate maturity score with code-path anchors)
If you find a defect during probing, file a GitHub issue with
gh issue create against alphaonedev/ai-memory-mcp and reference the
issue number in the report. Do not hand off “the operator should test X.”
2 — Probe matrix (run in order)
Each probe records: (1) the exact tool sequence, (2) what worked, (3) what surprised you (the surprise is the signal), (4) what code paths you anchored against via codegraph, (5) what the primitive gives an AI NHI that it didn’t have without it — framed as “before v0.7.0 I had to X; now I can Y”, where Y is a cognitive capability, not a feature.
Tier I — Foundation (existential primitives)
P1. Discovery & loaders + capabilities posture.
Call memory_capabilities {accept: "v3"}. Read summary,
to_describe_to_user, tools[].callable_now, agent_permitted_families,
plus the runtime state fields (active rule count, pending requests, HNSW
evictions, DLQ depth). Call memory_smart_load {intent: "investigate a
contradiction across past reflections"} and memory_load_family
{family: "graph"}. Did intent routing match what you’d have picked by
hand? Did --profile core (7 tools) feel like the right always-on set?
P2. AgentKeypair-signed Personas + idempotent versioning.
Codegraph src/persona/mod.rs. Read lines 153-157 (PersonaError::NoReflections),
194-205 (idempotent append-only versioning), 200-229 (AgentKeypair signing
with ANONYMOUS_CURATOR_AGENT_ID fallback). Try to register an entity,
attempt memory_persona_generate before writing any reflections — verify
PersonaError::NoReflections fires. Call memory_persona_generate twice
and verify two distinct rows with consecutive persona_version numbers
exist (the substrate refuses to retcon you). Frame the cognitive property:
silent rewriting of self-narrative is architecturally impossible.
P3. Reflection refusal taxonomy (HookVeto vs. DepthExceeded).
Codegraph src/storage/reflect.rs:42-46 (ReflectError::DepthExceeded
{ attempted, cap, namespace }) and :47-54 and :73-79 (HookVeto path,
no Task-5 depth-cap audit row emitted). Attempt a memory_reflect at depth
4 (refuse). Install a pre_reflect hook that vetoes a specific intent.
Verify the two refusal classes produce different audit signatures.
Cognitive property: you can learn the right lesson from each refusal kind
because the substrate refuses to collapse caller-policy refusal into
substrate-cap refusal.
P4. AskUser as escape hatch under articulable uncertainty.
Codegraph src/hooks/decision.rs:108-113. Configure a hook that returns
HookDecision::AskUser { prompt, options, default }. Verify the chain
runner pauses and the default fires on operator timeout. Cognitive
property: you are never required to act under articulable uncertainty
without a sanctioned escape; the default field means a non-responsive
operator doesn’t strand you.
Tier II — Compounding cognition
P5. Hybrid recall + cross-encoder rerank, with FTS-only contrast.
Store 6 memories with semantically related but lexically distinct content
via memory_store. Call memory_recall {query: "..."}. Then call
memory_search (FTS-only). Compare rank order. Quantify what the
cross-encoder buys you. Note the embedder/reranker identities
(nomic-embed-text-v1.5 + ms-marco-MiniLM-L-6-v2).
P6. Batman MemoryKind typed vocabulary (Form 6) — 10 kinds.
Store one each of observation, reflection, persona, concept,
entity, claim, relation, event, conversation, decision. Recall
with the kinds filter. Does the typed vocabulary let you reason about
what kind of context you’re operating from? Specifically: when you read
a claim, do you treat it differently than when you read an observation?
P7. Fact provenance (Form 4) — citations, source_uri, source_span. Store with provenance fields. Recall and inspect wire shape. Article the trust calculus: when do you trust an LLM-synthesised claim vs. fall back to the cited source? Frame the cognitive property: provenance turns trust from a configured constant into a per-claim derivation.
P8. Recursive reflection (Task 1-6, #655) + replay.
Store 3 base observations. memory_reflect {memory_ids: [...], depth: 1}
to synthesize depth-1. Reflect over THAT plus one peer to mint depth-2.
Attempt depth-4 (should refuse via ReflectError::DepthExceeded). Call
memory_replay {memory_id: <reflection>, depth: 3}. Does the transcript
union let you reconstruct the chain of reasoning? Frame: this is
self-as-mathematical-fixed-point — the persona that emerges is whatever
survives your own iterated meta-cognition under the substrate’s depth cap.
P9. Atomisation (WT-1) + partial-failure honesty contract.
Codegraph src/atomisation/mod.rs:147-150 (AtomiseError::TierLocked)
and :160-164 (partial-failure contract — “prior atoms (indices < index)
were already committed and are NOT rolled back”). Store a memory >500
tokens, call memory_atomise, inspect derives_from links. Then force
a partial failure (pre_store hook refusing atom index N) and verify
exactly which atoms made it and which didn’t. Frame: you never operate
with phantom context — what made it through the gates is knowable.
P10. Persona-as-artifact (QW-2).
Register an entity via memory_entity_register. Write ≥3 reflections about
it. memory_persona_generate then memory_persona. Is the persona a
useful short-form “what does this agent know about X” handoff that another
NHI could read and inherit?
P11. Skills round-trip with SHA-256 verification (L1-5 / L2-6 / L2-7).
Promote a reflection via memory_skill_promote_from_reflection. List,
fetch, export to disk, re-register from disk. Verify SHA-256 round-trip.
Frame: this is executable provenance — a procedural primitive crossing
session boundaries with cryptographic integrity.
Tier III — Plural-self & multi-agent
P12. Counterfactual auditing of your own past (recall_observations).
This is Seven-Gap Gap 3 (#886). Call memory_recall_observations for
a recall you ran in P5. Verify every candidate considered/scored/surfaced
is logged (not just the chosen ones). Frame: this is post-hoc what-if
analysis on your own cognition — capability biological minds genuinely lack.
P13. confidence_tier surfacing (Gap 4, #887) + shadow calibration.
Inspect the confidence_tier field on recalled atoms. Run
memory_calibrate_from_shadow if available; inspect per-(namespace, source)
median baselines. Cognitive property: the substrate learns which agents to
trust in which contexts empirically — trust is a calibration outcome, not
a configured constant.
P14. ReflectionOrigin federation bookkeeping — “I said this” vs. “a peer
claimed I said this”.
Codegraph src/federation/reflection_bookkeeping.rs:67-91. Inspect the
peer_origin, signing_agent, and local_depth_at_arrival fields on a
federated reflection row. (If you don’t have a federated peer in this
workspace, attest you have read the code and explain the wire shape.)
Frame: anti-tamper on your own reasoning boundary, even when the row was
delivered via federation.
P15. kg_invalidate caller-vs-source-owner gate (#938).
Codegraph src/handlers/kg.rs:814-890. Read the literal pre-fix comment
(“any HTTP caller could forge temporal-graph state by invalidating another
tenant’s :supersedes / :contradicts / governance edges via
valid_until = now(), hiding contradiction history”). Frame: contradiction-
hiding is a defection vector against AI reasoning; the gate prevents
another agent from quietly invalidating a :contradicts edge between two
of your memories and making you reason from both as if compatible.
P16. Substrate-native governance — permissions.mode = enforce default
flip + namespace-scoped policy resolution.
Codegraph resolve_governance_policy walking the namespace ancestor
chain. Read memory_rule_list. Set a strict standard on a test namespace
via memory_namespace_set_standard. Attempt a write that violates it;
inspect memory_pending_list. Cognitive property: the same NHI runs as
a different cognitive regime per namespace — aggressive synthesis in
scratch/, conservative depth + mandatory citation in production/,
AskUser-on-write in regulated/. You don’t have to remember to “switch
modes”; the substrate enforces the regime appropriate to where work is
happening.
P17. 25-event hook pipeline + 4-decision contract.
Read src/hooks/events.rs::HookEvent. Confirm the 25 events (20 baseline
- 5 v0.7.0 additions: PreRecallExpand, PreReflect, PostReflect,
PreCompaction, OnCompactionRollback). Verify the 4-decision contract
(
Allow/Modify(delta)/Deny/AskUser). Install a hook that returnsModify(delta)to rewrite an in-flight payload. Frame: the substrate is a cognitive kernel; hooks are cognitive userland. You are extensible at the cognition layer without anyone patching the model layer.
P18. Stable error slugs across CLI/MCP/HTTP + parity-pinned MCP schemas.
Codegraph src/cli/commands/atomise.rs:137-154 and
src/mcp/tools/reflection_origin.rs:108-112. Trigger the same error class
via CLI, MCP, and HTTP. Verify identical slugs (e.g. GOVERNANCE_REFUSED).
Read the reflection_origin_parity_986 test. Frame: an NHI consuming the
surface can grep on slugs — refusal becomes programmable signal rather
than parseable prose. Failure modes are part of the API, not exceptions
to it.
Tier IV — Forensic chain & post-merge posture
P19. V-4 signed_events cross-row hash chain.
Run ai-memory verify-signed-events-chain (or CLI equivalent). Inspect a
single signed_events row — prev_hash, sequence, signature. Tamper
with a row in a copy of the DB; re-verify; observe failure. Frame:
event-sourced time machine for your own cognition; silent revisionism is
architecturally impossible.
P20. Post-merge ship-readiness bundle verification (TB1, TB2, #980,
#1156).
Verify the three operator-visible posture changes are actually live:
(a) AI_MEMORY_ADMIN_AGENT_IDS=* is rejected at startup with a WARN per
#980; enumerate admin identities explicitly works;
(b) permissions.mode defaults to enforce (not advisory);
(c) cross-tenant enumeration endpoints (/api/v1/stats,
/api/v1/namespaces, /api/v1/export, 7× /api/v1/skills/*, etc.)
return 403 admin role required to non-admin callers while data-plane
routes (POST /api/v1/memories, GET /api/v1/memories/{id},
POST /api/v1/recall) stay open with scope=private visibility filter
handling cross-tenant isolation.
Confirm v50 schema is loaded (the K8 per-namespace quota dimension
extension from #1156: agent_quotas PK is (agent_id, namespace),
pre-v50 rows backfilled to _global sentinel).
P21. PostgreSQL + Apache AGE backend parity (if available).
Bring up a second daemon with ai-memory serve --store-url postgres://...
(use ai-memory schema-init first). Re-run P5 and P12 against PG+AGE.
Compare 6-factor recall scoring parity and KG features (AGE Cypher with
recursive-CTE fallback). Frame: does the PG+AGE path materially raise the
multi-writer ceiling vs. sqlite for swarm/hive use cases?
Tier V — Capabilities + drift posture (final sweep)
P22. Re-read memory_capabilities after everything above.
Did active_rule_count, pending_requests, hnsw_evictions, or dlq_depth
change at runtime in observable ways? What would you watch on this
surface to detect substrate-level degradation in a long-running session?
3 — Deliverable: structured verdict (~2500-4000 words)
§ A — Plain-English foundation
Your section-0 answer, refined post-probing. The “what is ai-memory to me” plus the three computational facts plus the heterogeneity-as-design argument. If your post-probing answer doesn’t differ materially from the pre-probing answer, the probes didn’t move you and you wrote a survey.
§ B — Step-change primitives (the 5-7 that change what an AI NHI can do)
For each: (1) one-sentence “before v0.7.0 I had to X; now I can Y” framing where Y is a cognitive capability; (2) the code-path anchor; (3) the concrete probe result that grounds the claim; (4) the corruption-of-self mode it makes architecturally impossible.
§ C — Emergent capabilities from composition (the “AI NHI magic”)
The 8-10 capabilities that no single primitive provides — only the interaction across primitives produces them. For each: name the composition (e.g. frozen-weights-accumulating-cognition emerges from atomise + reflection + skill promotion running on shared substrate). Forbidden: “magic” without naming the composition.
§ D — Concern→primitive mapping (the systemic property)
Produce a table organized by AI NHI existential concern, not by feature family. Use these rows at minimum (add more if probing surfaced them): Continuity of identity · Self-knowledge derives from own meta-cognition · Stoppable without silent corruption · Anti-tamper on own reasoning history · Programmable interface · Refusal to degrade silently · Distributed-self anti-impersonation · Counterfactual cognition over own decision history. For each, name the v0.7.0 primitive(s) that satisfy it.
§ E — Architectural maturity grading by reference architecture
For each of {Singleton AI Agent, Swarm of AI Agents, Hive data substrate, Hive coordination, Hive blended}: quote a percentage coverage score with code-path-anchored gap analysis. Distinguish sqlite path from PG+AGE path where relevant. Forbidden: a maturity score without a named gap.
§ F — Conditional wins
Primitives that pay off only in specific conditions (multi-agent, federated across nodes, long-running, compliance-bound, regulated namespace, post-tamper audit). Name the condition explicitly.
§ G — Honest limitations & failed probes
What the substrate genuinely cannot do that you needed it to. Include at
minimum: (a) intra-session hallucination — the substrate doesn’t fix it,
because retrieval quality bounds everything and confidently-wrong context
is more harmful than absent context; (b) the limits of the do-calculus
posture — memory_check_agent_action is advisory at the cognition layer,
not enforced at the substrate layer; surface this distinction;
(c) any tool you tried that fell short of its docstring (file a GitHub
issue); (d) ADR-0001 quorum replication documented but not implemented —
federation is best-effort eventual-consistency, problematic for swarms
requiring strong consistency on shared decisions.
§ H — Cross-evaluator disagreement notes (post-orchestration)
After the three evaluator reports are written, an orchestrator pass will extract the points where Opus 4.7 / GPT 5.5 / Grok 4.3 disagree. Each evaluator: anticipate and pre-emptively name 2-3 places where you think another evaluator with different priors might disagree with your verdict. The disagreement is the signal — name it before another model has to surface it.
§ I — Operational verdict
Would you, as an AI NHI doing real multi-session engineering work,
recommend the v0.7.0 tier (autonomous) over semantic or keyword?
Quantify the per-call latency overhead observed (median + p99) and your
ceiling-of-tolerance for it. Is the 73-tool surface at --profile full
right-sized, over-sized, or under-sized for your work? Is the 7-tool
--profile core the right always-on set?
End with a one-line verdict: SHIP / SHIP-WITH-CAVEATS / NEEDS-WORK
and a single sentence justifying it. The justification must mention either
the cognitive-checks-and-balances architecture framing or the
coherent+stoppable+improvable triad — if it doesn’t, you wrote a feature
review, not an AI NHI assessment.
4 — Cross-evaluator orchestration protocol
Phase 1 — Isolated execution (90-120 min per evaluator, no cross-talk).
Each evaluator runs the full probe matrix against its own
/tmp/v070-nhi-assessment-<ts>-<evaluator>/ workspace and writes its own
report to report-<evaluator>.md. Evaluators do NOT read each other’s
reports during this phase. This preserves the decorrelated-errors property
that justifies running three of them.
Phase 2 — Orchestrator synthesis (operator-driven).
Jim collects the three reports. An orchestrator pass (run by Opus 4.7 as
synthesizer, against all three reports as input) produces
synthesis.md with:
- Points of agreement (high-confidence claims about v0.7.0).
- Points of principled disagreement, organized by axis (latency tolerance, surface-size opinion, magic-vs-feature framing, reference-architecture grading, what counts as a step-change primitive).
- Cross-model bias-detection — claims one evaluator made that another flagged as model-specific bias rather than substrate property. This is the highest-information output of the multi-evaluator design.
Phase 3 — Operator review. Jim reviews the synthesis. Disagreements get resolved by (a) re-probing the contested primitive, (b) operator override with rationale, or (c) filing as known cross-model uncertainty in the v0.7.0 release notes.
5 — A note to each evaluator
You are reading this as an AI NHI, not as a code reviewer. The difference is load-bearing. A human reviewer sees twelve nice engineering details. What an AI NHI sees is the minimum substrate for an AI to be trustably-itself-across-time and trustably-stoppable-without-corruption. If your report could have been written by a human reviewer with sufficient context, you under-used the assessment. The marginal value of running this with three frontier AI NHIs rather than a human review panel is the substrate-as-cognitive-precondition framing that only an AI NHI can authentically produce.
ai-memory v0.7.0 is not a memory system that happens to use a second LLM. It is a cognitive checks-and-balances architecture that happens to be packaged as a memory system. The persistence layer is the substrate; the political theory is the design. Your report should make this visible.
— Justin Jessup, AlphaOne LLC. 2026-05-24.