Memori report verification

Type: agentic-system-analyses/types/agentic-system-verification.md

Verification

The five submitted members support publication of a bounded client-and-artifact account. They do not establish a complete hosted memory loop, successful operation, or improved future performance. I read all supplied reports, their types, reconciliation, empty correction-answer files and the structural report. The structural report contains none; there is no structural failure to route. No prior verdict or analyst validation result was used as semantic evidence.

I rechecked the checkout HEAD against boundary. All source inspection below concerns SRC-1 at that revision and supplies implementation or attributed design/reporting evidence, not target execution. I reviewed every declaration, annotation, source anchor, conclusion status and containment relation, and all eight supersessions. The following groups record the consequential dispositions.

Invocation and completion. Independent traces through SRC-1 examples/sqlite/main.py, memori/llm/clients/direct.py, memori/llm/invoke/invoke.py, memori/llm/invoke/iterator.py, the two injection pipelines, memori/llm/pipelines/post_invoke.py, memori/memory/_manager.py and memori/memory/_writer.py support RT-RTE-python-invocation and RT-RTE-stream-exhaustion. Recall precedes inference; synchronous persistence can fail after inference; generic iterator exhaustion persists without invoking the augmentation-dispatching function. The example waits only after its later queries. Those passages support wiring, not successful cross-turn fact availability. Saved original OpenAI methods also defeat universal mediation. Other stream implementations are not silently assigned the generic iterator's behavior.

Admission and retained parts. I traced SRC-1 memori/memory/augmentation/augmentations/memori/_augmentation.py, memori/memory/_struct.py, the augmentation manager, registry and database writer, and core/src/augmentation/pipeline.rs, core/src/lib.rs and core/src/runtime/worker.rs. RT-RTE-augmentation-admission and RT-RTE-augmentation-extension correctly separate software admission, application-selected executable extensions and opaque service proposals. Queue acceptance, drain, logged failure and durable writes are different events. The worker's send-before-increment ordering supports the stated accounting caution, not an observed race.

The memory and epistemic object declarations were checked against parser mappings and SRC-1 memori/storage/drivers/sqlite/_driver.py: role/content history; fact text; embeddings; repetition/recency and mention links; mutable summaries; graph relations; and process attributes have distinct representations and consumers. MEM-OBJ-entity-fact correctly retains native mock and raw-content fallback alternatives. Python summary reuse does not generalize to Rust's summary: None. Duplicate fact admission changes metadata, not fact meaning. Graph/process storage does not prove an independent model-facing reader. Hosted resume fields in MEM-OBJ-agent-memory remain advertised/output-contract material, not an inspected private-store ontology.

Selection, authority and withdrawal. SRC-1 memori/search/_core.py, core/src/retrieval/pipeline.rs, core/src/search/api.rs, memori/memory/recall.py and the injection pipelines support MEM-RTE-fact-selection and EPI-RTE-recall-selection. Candidate limits, weighted relevance, thresholding and summary attachment do not constitute truth evaluation or a whole-request token ceiling. RT-OBJ-recall-context and RT-BAP-recalled-context identify transient delivered text and its model-input channel, not enforced compliance. SQLite deletion and the public API support both withdrawal records' preserve-conversations finding. Neither establishes complete forgetting, cancellation of concurrent augmentation or revocation of delivered context. A local session-rebinding qualification remains below.

Alternate SDK and host routes. SRC-1 memori-ts/src/memori.ts, its recall/persistence/augmentation engines and memori-ts/src/integrations/base.ts support RT-RTE-typescript-hooks, including executable BYODB persistence despite the contrary comment, caught failures, separate history selection, and cloud-only trace/summary submission. Hermes provider source supports intentional tool recall, empty prefetch, current-turn trace assembly and background capture with bounded joining. OpenClaw registration, handler, sanitizer, feedback and compaction source support RT-RTE-openclaw-hooks, EPI-RTE-capture-cleanup and RT-BAP-host-memory-guidance. The fence-truncation counterexample follows from the actual consumer-side cleanup. It is not evidence of an observed false extracted memory. Tool grants, project selectors, requested instruction priority and host obedience remain separate.

I read the complete Claude skill and CLI and followed recall validation, stdout delivery, turn POST, collector POST and both error branches. RT-RTE-claude-skill, RT-CLM-ambient-lifecycle and the workflow account preserve the decisive distinction: collector failure can still return success. Task execution and final user delivery belong to the foreground host. The shipped MCP skill instead requests intentional recall and durable-only submission; RT-RTE-mcp-guidance appropriately retains claimed design and uninspected implementation. Feedback dispatch in both lenses is transport, not an established correction consumer.

Checks, claims and models. I independently decoded and read both benchmark notebooks, including retrieval, answering, judging, metrics, saving and token analysis; their cells contain no execution outputs. MEM-RTE-benchmark-reload and the four epistemic benchmark functions preserve external preaugmented-data provenance, separate answer/judge calls, null-label exclusions and report-only consequences. The INCORRECT substring counterexample is supported. The full-context token calculation is not a full-context answer experiment. README and augmentation/results documentation support the attribution of EPI-CLM-structured-memory, EPI-CLM-benchmark-warrant and EPI-CLM-agent-learning, including the inconsistent Zep reduction figures. Neither reported outcomes nor client storage warrant the proposed extraction mechanism or causal improvement. Native embedding loading, TEI requests, provider calls and notebook model construction support the separate runtime and epistemic component fixity assessments: no immutable model identity or provider-internal training conclusion is inferred from a model name.

The epistemic function records correctly distinguish structural triple checks, deterministic rendering, scheduling and retention from evidence-consuming truth acceptance. Their implemented ledger statuses coexist with uninspected operation. No evidenced-absence declarations were submitted; scoped search conclusions are not treated as system-complete negatives. Learning, reflection, theory criticism, autonomy and self-improvement are not collapsed into one verdict.

Relations and reconciliation. The five augmentation-function Part of: relations, both Python selection relations and OpenClaw cleanup containment match their concrete endpoints. The reconciliation supersessions identify the same fact, graph, summary, attribute and vector referents and the same selection, withdrawal and feedback operations without replacing analyst-owned assessments. Broader conversation/trace objects and benchmark containers legitimately coexist with narrower parts. I checked the apparent service-versus-native, ambient-versus-durable, open-traffic-versus-benchmark and retention-versus-acceptance conflicts: their scopes differ as reconciliation states. No unresolved cross-report conflict needs routing, and no supersession supplies missing observation or warrant.

Omission search and stopping decision. The frozen tree and producer/consumer dependencies guided three challenges beyond quotation checking: whether alternate streams invalidate the ordinary completion account; whether local/native alternatives eliminate service dependence; and whether shipped evaluators or feedback implement a production improvement gate. I searched the shipped examples, integration and SDK surfaces and core storage/update paths. SRC-1 examples/sqlite/rust_core_main.py supplies an additional native caller, not a successful run; core/src/storage/manager.rs supplies additional fallback dispatch, not uniform adapter behavior. Neither contradicts the reports' deliberately partial inventories. The decoded evaluator has a real scoring consumer but no inspected installation of its reports into production memory. Feedback terminates at a service boundary. Further wrapper/adapter enumeration is unlikely to change these bounded conclusions; it could refine route comparisons, which remain incomplete. Search stops without claiming repository-wide absence of other evaluators, consumers or update mechanisms.

One local qualification concerns session rebinding. SRC-1 memori/__init__.py distinguishes cache-resetting new_session from set_session; the latter only assigns the session identifier:

def set_session(self, session_id: Any) -> "Memori":
    """Set an explicit session identifier on the current instance."""
    self.config.session_id = session_id
    return self

--- memori/__init__.py

SRC-1 memori/llm/pipelines/conversation_injection.py resolves a conversation only when its cache is empty, then reads the cached conversation. Thus a session setter alone does not establish immediate replay rebinding on an already-used instance. This limits a local control description; the reports do not emit an isolation guarantee or comparison value dependent on it.

Blockers

none

Limits

  • Session-selection wording in RT-RTE-python-invocation and EPI-RTE-recall-selection must not be read as a guarantee that set_session immediately changes replayed history on an already-used Python instance. The setter does not clear the conversation cache, and replay uses that cache. Withhold cache-safe session switching and session-isolation conclusions; the traced capture/recall wiring remains supported.
  • The partial inventories in MEM-OBJ-knowledge-graph, MEM-OBJ-process-attribute and MEM-RTE-fact-selection do not settle independent graph/process read-back or uniform adapter/framework behavior. Withhold complete consumer inventories and all-path retrieval, transaction and withdrawal comparisons. The inspected fact/summary consumer and SQLite-specific maintenance findings remain supported.
  • MEM-RTE-benchmark-reload and EPI-CLM-benchmark-warrant cannot establish reproduced numerical performance or extraction-component effects: initial memories, datasets and model artifacts are external, and no frozen benchmark run or independent component intervention was supplied. The implemented bounded evaluator and the attributed public claims remain supported; their outcomes must not be promoted to causal production-memory benefit.