A-MEM epistemic report
Type: agentic-system-analyses/types/agentic-system-epistemic-report.md
Source-and-claim boundary
The question is whether A-MEM's semantic organization produces checked knowledge or instead supplies retained content and model-generated metadata for operational use. Scope and exclusions are those of the boundary; source identity and layers are in its Source register. SRC-1 supplies implementation, doctrine/design and attributed results, but no observed run or causal experiment. This report inspected source text only; it did not execute the target.
The boundary is the shipped memory library, its Python callers, inline prompts and tests, not the enclosing task-solving agent or the separate paper-reproduction project. Accessible provider adapters establish requests, not provider reasoning, learned propositions or reliability. Provider weights, embedding-model internals and external storage implementation remain uninspected. This prevents attribution of internal inference, training, durable storage or factual checking to those components. No supplied execution evidence establishes actual generated propositions, performed evaluations, downstream reliance or improved task performance.
Consequential claims are RT-CLM-memory-organization, EPI-CLM-retrieval-accuracy, EPI-CLM-update-evolution and EPI-CLM-periodic-review. The first is an operational organization claim, not an explicit promise of evidence-consuming truth acceptance. The accuracy and performance wording nevertheless requires comparison with implemented selectors and evaluations.
Coverage
“Direct” below means direct source reading in this attempt. Supplied runtime records were compared against these reads, not treated as an inspection ceiling. All anchors use SRC-1 at the frozen revision.
| Entry point or operation | Source path | Coverage and records | Limit / conclusion prevented |
|---|---|---|---|
| Package/CLI dispatch | pyproject.toml; agentic_memory/__init__.py |
Direct packaging read and supplied boundary's empty-marker inspection; library packaging, no script entry point. | No enclosing application or CLI acceptance procedure is established. |
| Constructor and note initialization | agentic_memory/memory_system.py |
Direct complete module read; RT-RTE-note-admission. | Empty map and reset attempt do not establish restoration across sessions. |
add_note, exposed analyze_content |
agentic_memory/memory_system.py |
Direct; EPI-RTE-metadata-generation, EPI-RTE-metadata-parsing, RT-RTE-note-admission. | Standalone analysis returns candidates without retaining them. |
Exposed process_memory, evolution prompt/dispatch |
agentic_memory/memory_system.py |
Direct; EPI-RTE-evolution-judgment, EPI-RTE-evolution-disposition. | Direct processing can mutate neighbors without the add counter/consolidation continuation. |
read, update, delete, live object mutation |
agentic_memory/memory_system.py; tests/test_memory_system.py |
Direct; RT-RTE-direct-mutation. | No semantic approval; deleting a note does not retract already delivered copies or remove other notes' links. |
consolidate_memories, retriever add/delete/query |
agentic_memory/memory_system.py; agentic_memory/retrievers.py |
Direct complete retriever read; EPI-RTE-metadata-conversion, RT-RTE-neighbor-evolution. | Re-adding existing IDs is not a verified replacement/repair guarantee. |
search, search_agentic, related-memory formatters, _search_raw, _search |
agentic_memory/memory_system.py |
Direct; RT-RTE-memory-retrieval, EPI-RTE-metadata-conversion. | Distances select relevance, not truth; private _search's second dictionary iteration is not a working independent evaluator. |
| All four adapters, base empty-response helpers, wrapper | agentic_memory/llm_controller.py |
Direct complete module read; EPI-RTE-metadata-parsing, EPI-RTE-evolution-disposition; supplied runtime component records. | No registered tools, hooks or callback evaluator in these modules; providers remain opaque. |
| Memory tests, backend tests and mock utility | tests/test_memory_system.py; tests/test_llm_backends.py; tests/test_utils.py |
Direct complete reads; EPI-RTE-test-evaluation. | Source assertions are not passing results and are not wired as ingestion gates. |
| README usage, performance and maintenance guidance | README.md |
Direct complete read; claim records above. | Periodic human review is advice, not an implemented scheduler or acceptance record. |
| Remaining support and source-native maintenance documents | MERGE_PR4_SUMMARY.md; PR_REVIEW_ANALYSIS.md; tests/SGLANG_TESTS.md; requirements.txt |
Supplied boundary inspection only; these are guidance/integration reports, not additional executable entry points. | No independent operational inference from these documents. Figures remain deliberately excluded as in boundary. |
No newly discovered responsibility requires changing the boundary. The bounded negative about acceptance below concerns the directly inspected executable modules and test consumers; it does not extend to excluded hosts, provider internals or image-only claims.
Epistemic-object inventory
Fields owned by a declaring record are referenced with see, rather than redefined here.
| Object ID | Candidate truth-apt content or none | Claimed role | Evidence source ID and local anchor | Gap/limit |
|---|---|---|---|---|
| EPI-OBJ-note-content | Caller assertions, if supplied; no universal proposition format | see record | SRC-1, agentic_memory/memory_system.py |
Actual truth and author/source warrant unknown. |
| EPI-OBJ-semantic-metadata | Context summaries and semantic classifications, when interpreted as claims about the note | see record | SRC-1, agentic_memory/memory_system.py |
Particular generated propositions and semantic preservation not determinable without responses. |
| EPI-OBJ-evolution-decision | Action tokens/boolean have no independent truth claim; proposed relations can imply semantic relevance | see record | SRC-1, agentic_memory/memory_system.py |
Policy selection is not evidence that the implied relation is true. |
| EPI-OBJ-enhanced-document | Concatenated content and metadata, not an independently checked claim | see record | SRC-1, agentic_memory/retrievers.py |
Generated and imported parts are mixed without separate warrants. |
| RT-CMP-sentence-transformer | No individuated truth-apt proposition established for dense representations | see record | SRC-1, agentic_memory/retrievers.py |
Weights and embedding interpretation opaque; distances are not truth probabilities. |
| RT-CMP-openai, RT-CMP-ollama, RT-CMP-sglang, RT-CMP-open-router | Provider-internal truth-apt content not determinable | see records | SRC-1, agentic_memory/llm_controller.py |
Local operations do not train these models; exact versions are not pinned. |
Authority-route ledger
Rows are function-level overlays. Different rows may cite one container route, without merging checking, disposition and retention. No observed result is asserted. The epistemic license entries concern what the inspected route establishes, not the possible quality of a particular unobserved model output.
| Route ID | Route function | Architectural status | Object/candidate ID | Content/update relation | Transition or check target | Evaluator/condition and domain | Activation and timing | Possible or observed result | Implemented force | Epistemic authority and scope | Operational authority: behavior permitted, blocked, or changed | Behavioral-authority path: consumer, channel, force, horizon | Evidence source ID and local anchor | Claim IDs or none | Mismatch marker or none | Gap/limit |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| RT-RTE-note-admission | content transformation | implemented | EPI-OBJ-note-content | truth-apt transformation: acquisition/import | Caller content enters note | Caller supplies text; no source-truth evaluator | see record | see record | Assignment | Source warrant unknown; import is not production | Content becomes available to note processing | Python fields to model/storage; permissive, current instance | SRC-1, agentic_memory/memory_system.py |
none | none | No source verification or provenance policy established. |
| EPI-RTE-metadata-generation | content transformation | implemented | EPI-OBJ-semantic-metadata | truth-apt transformation: indeterminate | Content to keywords/context/tags | see record | see record | see record | Candidate output only | No entailed derivation or accepted conjecture established | Returns fields for later assignment | see record | SRC-1, agentic_memory/memory_system.py |
RT-CLM-memory-organization | none | Could reshape or add unsupported interpretation; actual response needed. |
| EPI-RTE-metadata-parsing | check/evidence production | implemented | EPI-OBJ-semantic-metadata | no content change | JSON text, not factual accuracy | see record | see record | see record | Parse success/fallback | Syntactic parse only; no local full schema or semantic license | Provides usable dictionary or fallback to caller | see record | SRC-1, agentic_memory/memory_system.py; agentic_memory/llm_controller.py |
none | none | Parser success cannot establish summary fidelity. |
| RT-RTE-note-admission | disposition/acceptance | implemented | EPI-OBJ-semantic-metadata | no content change | Missing/default-field assignment | Code's field predicate, not truth evaluator | see record | see record | Permissive operational admission | No evidence-consuming truth acceptance | Missing fields filled without content approval | Assignment to note, then embedding/model consumers; current instance | SRC-1, agentic_memory/memory_system.py |
none | none | Standalone malformed non-object JSON can fail downstream; continuation is not warrant. |
| EPI-RTE-evolution-judgment | check/evidence production | implemented | EPI-OBJ-evolution-decision | no content change | Whether organization should change | see record | see record | see record | Advisory until dispatch | Semantic judgment requested; no independent criterion/reference establishes truth | Suggests whether and how to mutate | see record | SRC-1, agentic_memory/memory_system.py |
RT-CLM-memory-organization | none | Request does not establish reliable compliance. |
| EPI-RTE-evolution-judgment | content transformation | implemented | EPI-OBJ-semantic-metadata | truth-apt transformation: indeterminate | Neighbor contexts/tags and implied relations | see record | see record | see record | Candidate output | No checked entailment or evidence of non-entailment for an actual output | Proposes replacements | see record | SRC-1, agentic_memory/memory_system.py |
RT-CLM-memory-organization | none | Candidate generation, not accepted ampliative production. |
| EPI-RTE-evolution-disposition | disposition/acceptance | implemented | EPI-OBJ-evolution-decision | non-truth-apt policy/content update: apply selected organization changes | Parsed decision to fixed mutation branches | see record | see record | see record | Enforcing map mutations | Authorizes writes, not truth reliance | Extends links/replaces tags and neighbor context | see record | SRC-1, agentic_memory/memory_system.py |
RT-CLM-memory-organization | none | Existing-neighbor check bounds neighbor writes, not suggested link values. |
| RT-RTE-note-admission, RT-RTE-neighbor-evolution | retention | implemented | EPI-OBJ-note-content, EPI-OBJ-semantic-metadata | no content change | Candidates to object map/vector metadata | see records | see records | see records | In-instance availability | Retention without acceptance | Enables later reads and evolution | see RT-BAP-neighbor-context, RT-BAP-caller-results | SRC-1, agentic_memory/memory_system.py; agentic_memory/retrievers.py |
none | none | Not lifecycle integration after truth acceptance; no versioned evidence graph. |
| EPI-RTE-metadata-conversion | lineage/freshness/recovery | implemented | EPI-OBJ-note-content, EPI-OBJ-semantic-metadata | truth-apt transformation: indeterminate | Metadata serialization and read conversion | see record | see record | see record | Fixed type-conversion rules | Some exact lexical lineage is degraded | Changes representation delivered to metadata consumers | see record | SRC-1, agentic_memory/retrievers.py |
EPI-CLM-retrieval-accuracy | none | Concrete counterexample below; semantic consequence depends on input. |
| RT-RTE-memory-retrieval | operational admission/selection/consumption | implemented | EPI-OBJ-enhanced-document, EPI-OBJ-note-content | no content change | ID/semantic relevance/link membership | see record | see record | see record | Ranking and data delivery | Similarity supplies no truth license | Selects caller results or evolution context | see RT-BAP-neighbor-context, RT-BAP-caller-results | SRC-1, agentic_memory/memory_system.py; agentic_memory/retrievers.py |
EPI-CLM-retrieval-accuracy | none | Map-backed and metadata-backed readers differ; delivery is not downstream compliance. |
| RT-RTE-direct-mutation | disposition/acceptance | implemented | EPI-OBJ-note-content, EPI-OBJ-semantic-metadata | truth-apt transformation: acquisition/import | Caller replacement or deletion | see record | see record | see record | Caller control; enforcing overwrite/delete | No truth acceptance; replacement source warrant unknown | Can bypass model judgment and withdraw local entry | see record | SRC-1, agentic_memory/memory_system.py |
EPI-CLM-update-evolution | M1 | Withdrawal does not revoke old outputs; updating content leaves old metadata unless supplied. |
| EPI-RTE-test-evaluation | check/evidence production | implemented | EPI-OBJ-note-content, EPI-OBJ-semantic-metadata | no content change | API equality, existence, transport and fallback behavior | see record | see record | see record | Test-runner assertions only | Can check named API properties, not general accuracy | Can fail test execution, no runtime admission consumer | see record | SRC-1, tests/test_memory_system.py; tests/test_llm_backends.py |
EPI-CLM-retrieval-accuracy | none | No supplied passing result or benchmark contrast. |
| EPI-CLM-periodic-review | check/evidence production | doctrine only | EPI-OBJ-semantic-metadata | no content change | Accuracy of generated metadata | Human review suggested, criterion/procedure unspecified | Periodic per advice | No recorded review result | Advisory | No established acceptance license | Caller may use manual update/delete independently | README to operator; advisory; unspecified horizon | SRC-1, README.md |
EPI-CLM-periodic-review | none | No implemented review gate or supplied review evidence. |
The missing truth-acceptance/lifecycle-integration route is bounded by EPI-ABS-evidence-acceptance. This does not deny operational disposition, metadata production or relation updates in the implemented rows.
System-claim versus route comparison
| Claim ID | Claimed operation or warrant | Claim source ID/anchor and evidence layer | Doctrine/design support | Implemented route IDs | Observed-run support | Causal support and design limits | Supported conclusion | Mismatch/unknown |
|---|---|---|---|---|---|---|---|---|
| RT-CLM-memory-organization | see record | SRC-1, README.md; doctrine/design, reported operation |
Inline analysis/evolution prompts | EPI-RTE-metadata-generation, EPI-RTE-evolution-judgment, EPI-RTE-evolution-disposition | None supplied | No component intervention/benchmark trace; responses unobserved | Automatic organization is wired; correctness/refinement benefit unestablished | Model judgment and storage do not establish checked knowledge. |
| EPI-CLM-retrieval-accuracy | see record | SRC-1, README.md; doctrine/design, reported operation |
Content plus metadata embedding and meaningful-link language | RT-RTE-memory-retrieval, EPI-RTE-metadata-conversion, EPI-RTE-test-evaluation | None supplied | Tests target limited structural properties; six-model statement supplies no inspectable contrast | Enhanced embedding input is implemented, superior retrieval is not demonstrated here | No warranted attribution of benefit to metadata, links or evolution. |
| EPI-CLM-update-evolution | see record | SRC-1, README.md; doctrine/design |
README says add or update triggers automatic evolution | RT-RTE-direct-mutation versus RT-RTE-note-admission | None supplied | Direct source contradiction does not require a run | Add calls analysis conditionally and processing; update only sets supplied fields and rewrites retriever entry | M1: update does not automatically regenerate metadata or call evolution. |
| EPI-CLM-periodic-review | see record | SRC-1, README.md; doctrine/design |
Best-practice instruction only | Manual possibility via RT-RTE-direct-mutation, not an automated review route | None supplied | No review records, criteria or admission linkage | Users are advised to inspect accuracy; implementation permits corrections | Advice does not establish performed review or accepted knowledge. |
Bounded conclusion
A-MEM acquires caller content with unknown source warrant and retains it alongside supplied or model-generated semantic metadata. The model can summarize/classify content and propose relations and neighbor-context replacements. The inspected prompts and dispatch establish those capabilities, not any particular entailed derivation, non-entailed conjecture or reliable response. The content/update relation of actual model-produced claims remains indeterminate without inspectable inputs/outputs and a semantic comparison (EPI-RTE-metadata-generation, EPI-RTE-evolution-judgment). No warranted premises plus checked derivation are established.
There are real operative checks, but their domains differ: JSON parsing tests syntax; evolution asks a model whether relationships merit change; dispatch gates fixed actions and existing neighbor writes; Chroma ranks query similarity; test source checks named API/transport properties. None of these, in the inspected consumers, records an evidence-consuming acceptance decision for a truth claim against a criterion, intended use and scope. Candidate retention and organizational linkage therefore precede any established epistemic acceptance; they are not lifecycle integration in the report's technical sense (EPI-ABS-evidence-acceptance). README review advice is a possible human correction route, not evidence that review happened.
The operational authority is consequential but bounded. Generated metadata enters enhanced embedding text; retained metadata enters later evolution requests; model output can authorize link/tag/context writes. Caller results are data, not a shipped answer-generation policy. These are separate authority paths with a current-instance horizon, and different representations can reach them. Metadata conversion can alter lexical content; deferred neighbor synchronization can leave map readers and later model contexts with different versions. Neither consolidation nor deletion implements warrant withdrawal for already returned values (EPI-RTE-metadata-conversion, RT-RTE-neighbor-evolution, RT-RTE-direct-mutation).
Organization changes can shape later context selection without parameter updates or a truth-acceptance route. This is implemented adaptive organization, not demonstrated learning benefit. Accessible code does not expose a retained, content-directed criticism-and-revision process for explanatory theories; opaque model reasoning is not thereby absent or present. Reflection, autonomous theory building and exercised self-improvement do not follow from the label “agentic” or the existence of automatic writes. No supplied later operation closes an exercised self-improvement causal chain. These limits coexist with the positive metadata-generation, model-decision and memory-consumption findings. Superior retrieval, improved accuracy and the attributed six-model performance result remain unsupported by inspectable run or causal evidence in this boundary; no system-wide epistemic score follows.
Shared records
Operative objects
EPI-OBJ-note-content
Label: MemoryNote content
Source-native identity: MemoryNote.content. Natural-language caller text in the Python note object and a metadata snapshot in Chroma; typed Python fields do not establish a proposition schema. Truth-apt when the caller supplies assertions, but arbitrary text is also allowed. No supplied runtime object record is a counterpart; this is the content part carried by RT-RTE-note-admission and RT-RTE-memory-retrieval, not those routes themselves. Source warrant and authorship are unknown. Evidence: SRC-1, agentic_memory/memory_system.py.
Core content and ID
self.content = content self.id = id or str(uuid.uuid4()) ---
agentic_memory/memory_system.py
EPI-OBJ-semantic-metadata
Label: MemoryNote semantic metadata
Source-native identity: keywords, context, tags, and classification fields on MemoryNote. Context text and category/tag meanings are natural-language content; lists/field names supply symbolic organization. Stored in live objects and serialized Chroma metadata. They may be caller supplied, initially generated, or overwritten by model evolution. Contexts can make claims about content's topic, arguments and purpose; tags are also operational indexing labels, not automatically propositions. No supplied object counterpart; distinct from note content and action-control fields. Evidence: SRC-1, agentic_memory/memory_system.py.
Semantic metadata
self.keywords = keywords or [] self.links = links or [] self.context = context or "General" self.category = category or "Uncategorized" self.tags = tags or [] ---
agentic_memory/memory_system.py
EPI-OBJ-evolution-decision
Label: Evolution response controls
Source-native identity: response JSON should_evolve, actions, suggested_connections and replacement arrays. Symbolic parsed fields in current call state; requested contexts/tags carry natural-language meanings separately inventoried above. The response itself is not retained as a rationale; assigned links/tags/contexts survive. Proposed connections can imply relevance but code consumes the IDs as link values, not as proof. No supplied object counterpart; the object is consumed by RT-RTE-neighbor-evolution, not a second identity for that route. Evidence: SRC-1, agentic_memory/memory_system.py; see the dispatch passage in EPI-RTE-evolution-disposition.
EPI-OBJ-enhanced-document
Label: Enhanced embedding document
Source-native identity: enhanced_document / metadata enhanced_content. Natural-language concatenation of original content with nondefault context, keywords and tags. Sent as the Chroma document and retained in metadata; dense embedding representation is separate, described by RT-CMP-sentence-transformer. This object is neither the original note alone nor model weights. No supplied object counterpart. Evidence: SRC-1, agentic_memory/retrievers.py.
Store enhanced document content for better embedding
processed_metadata['enhanced_content'] = enhanced_document ---
agentic_memory/retrievers.py
Routes
EPI-RTE-metadata-generation
Label: Semantic metadata candidate generation Part of: RT-RTE-note-admission
This is the content-generation part of the supplied admission container, not a replacement of its end-to-end identity. Endpoints: content → static natural-language analysis instructions → configured backend → response text. Python owns the call; the model proposes semantic descriptions. The instructions ask for keywords, core themes, and a context summarizing main topic, key arguments and intended purpose. No expected answer is supplied. Operating mode is open content ingestion; the trigger is missing/default metadata or a direct analysis call, not measured failure. No observed response establishes whether output is exact reshaping, entailed derivation or non-entailed conjecture. Evidence: SRC-1, agentic_memory/memory_system.py; adapter choice and model mutability: supplied runtime components.
- Immediate return: Response text passes to parsing;
analyze_contentreturns a parsed value or fallback. - Later read-back: Generated fields admitted by
add_notereach later retrieval/evolution; direct analysis alone does not retain output. - Delegated visibility: Backend receives current content and fixed metadata instructions; no prior reasoning or independent evidence is supplied.
- Selection predicate: Direct analysis invocation, or empty keywords/tags/default context during add.
- Invalidation or expiry: Unassigned response has call lifetime; admitted fields can be overwritten/deleted/reset without automatic semantic rechecking.
- Activation or effect: Requests descriptions; actual model compliance is unobserved. Assigned fields can alter embedding and later context.
- Evidence limits: No observed outputs, entailment comparison, accuracy criterion or benefit evidence.
- implementation conclusion status: wired
- operation conclusion status: uninspected
prompt = """Generate a structured analysis of the following content by: 1. Identifying the most salient keywords (focus on nouns, verbs, and key concepts) 2. Extracting core themes and contextual elements 3. Creating relevant categorical tags ---
agentic_memory/memory_system.py
EPI-RTE-metadata-parsing
Label: Metadata syntax check and fallback Part of: RT-RTE-note-admission
The syntactic check is a distinct part from generation and assignment. Endpoints: backend text → json.loads → returned value; exception → empty/default fields. Code decides parse success, not content truth; no human or answer oracle participates. Schema shape is requested from the provider but not fully locally validated. Parsed lists or scalars can pass json.loads and later fail .get; parse success alone is weaker than API compatibility. Ollama/OpenRouter/SGLang can return schema-derived empty output on provider errors, which is parseable and can install empty context rather than General. This is error continuation, not factual rejection or acceptance. Evidence: SRC-1, agentic_memory/memory_system.py, agentic_memory/llm_controller.py.
- Immediate return: Parsed response or default dictionary; downstream add may still fail on incompatible parsed types.
- Later read-back: Fallback/admitted fields may later be retrieved; no retained distinction records provider success versus empty fallback.
- Delegated visibility: Provider receives requested JSON schema; parsing is local.
- Selection predicate: Every metadata completion; exceptions trigger fallback.
- Invalidation or expiry: No expiry or review flag attached to fallback; ordinary overwrite/delete/reset applies.
- Activation or effect: Allows continuation with defaults, without certifying semantic fidelity.
- Evidence limits: No observed failure/continuation; provider schema enforcement remains external.
- implementation conclusion status: wired
- operation conclusion status: uninspected
return json.loads(response) except Exception as e: print(f"Error analyzing content: {e}") return {"keywords": [], "context": "General", "tags": []} ---
agentic_memory/memory_system.pyexcept Exception as e: # Silently fall back to empty response on error empty_response = self._generate_empty_response(response_format) return json.dumps(empty_response) ---
agentic_memory/llm_controller.py
EPI-RTE-evolution-judgment
Label: Relationship judgment and replacement proposal Part of: RT-RTE-neighbor-evolution
The judgment/generation part is distinct from dispatch. Endpoints: new note plus up to five retrieved neighbor snapshots → fixed evolution prompt → model decision and replacements. Python chooses context, the model proposes and decides should_evolve; code subsequently decides which branches execute. Target/domain: semantic relationships and category/context suitability for retrieval and organization, not a general factual-truth test. No reference answer or independent source evidence is supplied. Guidance asks for content-based tags, neighbor-order preservation and equal array lengths. Operating mode is open ingestion/direct processing, triggered by a note and available neighbors, not an evaluator-guided curriculum. Model-generated replacements may reshape or reinterpret content; particular transformation class is indeterminate without output evidence. Evidence: SRC-1, agentic_memory/memory_system.py.
- Immediate return: Completion text to parsing/dispatch;
process_memorylater returns a boolean and note. - Later read-back: Applied replacements/links, not the judgment's rationale, reach later readers; metadata snapshots can lag live objects.
- Delegated visibility: New note content/context/keywords and selected neighbor IDs/content/context/keywords/tags/timestamps go to the backend.
- Selection predicate: Populated map and nonempty neighbor text/IDs; Chroma selects the neighbors by similarity.
- Invalidation or expiry: Proposal is call-local; applied organization persists until overwritten/deleted/reset.
- Activation or effect: Requested judgment can drive fixed mutations; no actual judgment or benefit is observed.
- Evidence limits: Same model request supplies decision and replacement fields; no independent truth check or measured success criterion is established.
- implementation conclusion status: wired
- operation conclusion status: uninspected
- Should this memory be evolved? Consider its relationships with other memories. 2. What specific actions should be taken (strengthen, update_neighbor)? 2.1 If choose to strengthen the connection, which memory should it be connected to? Use the memory_id from the neighbors above. Can you give the updated tags of this memory? 2.2 If choose to update_neighbor, you can update the context and tags of these memories based on the understanding of these memories. If the context and the tags are not updated, the new context and tags should be the same as the original ones. Generate the new context and tags in the sequential order of the input neighbors. ---
agentic_memory/memory_system.py
EPI-RTE-evolution-disposition
Label: Evolution decision disposition Part of: RT-RTE-neighbor-evolution
Endpoints: parsed response → truthy should_evolve → recognized action dispatch → writes. Python owns enforcement. Model proposes and selects; code can skip unrecognized actions and nonexistent retrieved neighbor IDs, while callers can later overwrite/delete. No per-content human approval or answer oracle. This grants operational write authority, not evidence-consuming epistemic acceptance. strengthen extends links using response values without locally checking that every proposed connection is a retrieved/existing ID. update_neighbor bounds writes by retrieved IDs and array lengths, not correctness of tags/context. No semantic rejection, old-value checkpoint or transactional rollback is implemented; caught exceptions can follow partial writes. Direct process_memory is also exposed and can alter neighbors without add's consolidation continuation. Evidence: SRC-1, agentic_memory/memory_system.py.
- Immediate return:
(should_evolve, note)or(False, note)after handled failure; the flag is not a quality certificate. - Later read-back: Changed live objects reach ID reads and map-backed search; Chroma-backed evolution/search can still receive previous snapshots.
- Delegated visibility: Current response and retrieved IDs are local dispatch inputs; resulting fields may later be sent to model/storage consumers.
- Selection predicate: Truthy parsed decision, recognized action strings, and existing retrieved IDs for neighbor writes.
- Invalidation or expiry: Subsequent overwrites/delete/reset; no automatic rollback or expiry.
- Activation or effect: Extends links, replaces new-note tags and neighbor tags/context; add can increment counter and invoke consolidation.
- Evidence limits: Implementation of writes is inspected; successful synchronization, sound relationships and exercised behavior are unobserved.
- implementation conclusion status: wired
- operation conclusion status: uninspected
if should_evolve: actions = response_json["actions"] for action in actions: if action == "strengthen": suggest_connections = response_json["suggested_connections"] new_tags = response_json["tags_to_update"] note.links.extend(suggest_connections) note.tags = new_tags ---
agentic_memory/memory_system.py
EPI-RTE-metadata-conversion
Label: Metadata round-trip and consumer lineage
This is a shared transformation spanning add, update, consolidation and retrieval, not a duplicate of RT-RTE-note-admission, RT-RTE-direct-mutation or RT-RTE-memory-retrieval, and not contained in exactly one. Endpoints: note content/metadata → enhanced document plus stringified metadata → Chroma → heuristic type conversion → result dictionaries/neighbor text. Python owns conversion; Chroma supplies selected records. Evidence: SRC-1, agentic_memory/retrievers.py, agentic_memory/memory_system.py.
Concrete implementation deduction, not target execution: let a caller supply content 0012 and context 0012, with valid list keywords/tags. MemoryNote preserves those strings. Add stores content in metadata; retriever leaves scalar strings as str(value). On query return, value.replace('.', '', 1).isdigit() is true and int(value) produces 12 for both fields. search_agentic returns numeric content/context; find_related_memories interpolates 12, while map-backed search can return original 0012. Similarly, content [1,2] is decoded as a list, although the original field was text. Lists/dicts intentionally serialized as JSON can round-trip; that countercase does not rescue exact lexical preservation for arbitrary string fields. No field-specific provenance/type schema distinguishes original literal text from serialization. The semantic significance of leading zeros depends on the input domain, so this establishes degraded lexical lineage, not a universal factual error or novel conjecture.
- Immediate return: Add returns no retriever value; query returns converted result structure.
- Later read-back: Converted snapshots enter
search_agenticand neighbor prompts; map-backed reads can preserve original text. - Delegated visibility: Enhanced text and processed metadata go to Chroma/embedding dependency; selected metadata can later reach the evolution backend or caller.
- Selection predicate: Every metadata field; leading bracket/brace or numeric-string heuristic determines parsing without field identity.
- Invalidation or expiry: Explicit delete/update/reset; consolidation attempts re-add, not proven replacement of existing IDs.
- Activation or effect: Can change returned field type/lexical form and hence later model input; generated metadata also changes embedding document text.
- Evidence limits: Deduction from inspected deterministic code; no actual Chroma round-trip or downstream semantic effect observed.
- implementation conclusion status: wired
- operation conclusion status: uninspected
elif isinstance(value, dict): processed_metadata[key] = json.dumps(value) else: processed_metadata[key] = str(value) ---
agentic_memory/retrievers.pyif isinstance(value, str) and (value.startswith('[') or value.startswith('{')): metadata[key] = json.loads(value) # Convert numeric strings back to numbers elif isinstance(value, str) and value.replace('.', '', 1).isdigit(): if '.' in value: metadata[key] = float(value) else: metadata[key] = int(value) ---
agentic_memory/retrievers.py
EPI-RTE-test-evaluation
Label: Shipped structural test evaluation
Distinct from the supplied production routes: tests call those routes and use assertion oracles, but do not gate runtime admission or revise model instructions. Endpoints: authored fixture/API calls or mocked provider results → unittest assertions → runner pass/failure if invoked. Owner/decider: test author supplies expected values; Python compares them. Human participation in production remains unresolved. Domain: selected API equality, presence/type checks, backend selection, request fields and empty fallback outputs. test_memory_evolution checks non-None metadata, not the truth of its description; test metadata persistence checks equality for one same-instance round-trip, not fresh-instance restoration. Operating mode is bounded tests, not open ingestion; trigger is test invocation. The result can stop a test but no shipped consumer uses it to accept, reject or improve a candidate note. Evidence: SRC-1, tests/test_memory_system.py, tests/test_llm_backends.py, tests/test_utils.py.
- Immediate return: Assertion success/failure to test runner if invoked.
- Later read-back: inapplicable — no inspected route retains test judgments as later ingestion policy or model context.
- Delegated visibility: Memory tests can call configured OpenAI/embedding code; backend unit cases use explicit mocked responses. Mock utility supplies canned text/zero vector, not independent evidence.
- Selection predicate: Authored test cases and assertion operands.
- Invalidation or expiry: inapplicable — no retained candidate authority is granted by these assertions.
- Activation or effect: Can fail test execution; does not block a production add/update or verify semantic truth.
- Evidence limits: Test source only; no supplied passing result, independent factual answer key, representative retrieval benchmark or intervention contrast.
- implementation conclusion status: wired
- operation conclusion status: uninspected
Verify that memories have been properly evolved
for memory_id in memory_ids: memory = self.memory_system.read(memory_id) self.assertIsNotNone(memory.tags) self.assertIsNotNone(memory.context) self.assertIsNotNone(memory.keywords)---
tests/test_memory_system.py
Claims
EPI-CLM-retrieval-accuracy
Label: Enhanced retrieval and accuracy claim
Distinct narrower warrant claim within the README feature account, compared with the broad RT-CLM-memory-organization: enhanced embeddings are advertised as superior retrieval, with improved accuracy and comparative six-model results. Source: SRC-1, README.md; doctrine/design and reported operation. There is no inspectable benchmark artifact or causal comparison in supplied evidence. Linking or fluent metadata generation alone cannot support this comparative warrant.
Enhanced Embedding: Creates vector embeddings using both content and generated metadata for superior retrieval ---
README.mdDynamic memory organization with improved accuracy ---
README.mdEmpirical experiments conducted on six foundation models demonstrate superior performance compared to existing SOTA baselines. ---
README.md
EPI-CLM-update-evolution
Label: Automatic evolution on updates claim
Distinct route-trigger assertion, not a duplicate of the broad organization claim RT-CLM-memory-organization. Source: SRC-1, README.md, doctrine/design. M1: source inspection contradicts automatic evolution on update: it performs attribute assignment and delete/add retriever operations, without analyze_content or process_memory. The supplied RT-RTE-direct-mutation records that counter-route correctly; no supplied-record supersession is needed.
This happens automatically when adding or updating memories!
---
README.md
EPI-CLM-periodic-review
Label: Periodic accuracy review guidance
Distinct maintenance guidance, not an assertion of observed review or a duplicate of RT-CLM-memory-organization. Source: SRC-1, README.md, doctrine/design. Target is accuracy of generated metadata; evaluator is advised user review. No review criterion, result record or mandatory gate is specified. Manual correction is possible through the API, but advice does not establish exercised acceptance.
- Review LLM-generated metadata periodically for accuracy ---
README.md
Evidenced absences
EPI-ABS-evidence-acceptance
Label: No evidence-consuming truth acceptance route found
- implementation conclusion status: absent
Searched boundary: SRC-1 at f303dfc71e07bdc787f4bc135d4cea328ae30e99; full reads of agentic_memory/memory_system.py, agentic_memory/retrievers.py, agentic_memory/llm_controller.py, tests/test_memory_system.py, tests/test_llm_backends.py and tests/test_utils.py, with pyproject.toml dispatch inspection and README.md review guidance. Search question: does any parsed judgment, test, CRUD result, rejection/failure handler, maintenance step or retrieval output feed a recorded evidence-consuming acceptance of a truth claim against a criterion for an intended use and scope, followed by lifecycle integration? The inspected consumers instead assign fields, apply fixed actions, store/rank/return data or raise test assertions. No such acceptance/integration route was found in this boundary. Model semantic judgment, JSON checking, operational admission, manual replacement and deletion are present; they are not erased by this absence.
The minimum load-bearing assignment/dispatch passages are supplied by RT-RTE-note-admission, RT-RTE-direct-mutation, EPI-RTE-evolution-disposition and EPI-RTE-test-evaluation. Their distinct concrete consumers support the bounded negative; absence is not inferred solely from a keyword miss. Supplied runtime declares no absence counterpart. This prevents attributing accepted ampliative knowledge production or post-acceptance lifecycle integration to the inspected library; it does not judge external human review, excluded task agents or inaccessible model internals.
Behavioral-authority paths
none declared in this member; see RT-BAP-neighbor-context and RT-BAP-caller-results.