{
  "source_file": "0930",
  "source_platform": "Dev.to",
  "author": "Edward Izgorodin",
  "title_listed": "Your Agent Memory Records When. Four Older Fields Already Solved Who.",
  "keywords": "",
  "domain": "大模型算法",
  "content_type": "深度技术解析",
  "is_paid_flag": "否",
  "url": "https://dev.to/izgorodin/your-agent-memory-records-when-four-older-fields-already-solved-who-4gmk",
  "publish_date": "2026-09-02",
  "corpus_stage": "",
  "notes": "",
  "id": "e21be1c4296b",
  "collected_at": "2026-10-02T14:03:21",
  "title": "Your Agent Memory Records When. Four Older Fields Already Solved Who. - DEV Community",
  "body_markdown": "A memory system can preserve every relevant timestamp and still lose the information needed to judge a claim.\nThe gap stays invisible while one process owns every write. \"The system learned this\" and \"someone asserted this\" look like the same sentence. They stop being the same sentence the moment several agents, accounts, or documents write into one shared store. At that point a contradiction is not a temporal event. It is a conflict between assertions, and no clock can adjudicate it.\nWhat follows is the part I find uncomfortable: four mature bodies of work already named the missing piece, the oldest of them in 1979, and none of the agent-memory systems I have read adopts any of them explicitly.\nBi-temporal memory answers when, not who\nThe good version of temporal memory splits time in two. Valid time asks when a claim held in the world. Transaction time asks when the store came to hold it. Both are needed to reconstruct change, and most systems do not even ship the second one.\nNow take a record:\nAlice lives in Berlin.\nA bi-temporal store can say when Alice lived in Berlin and when the system learned it. But the learning event had a source. An agent extracted the claim, or a user stated it, or a document supplied it. The timestamp keeps that event's place in time and drops the identity behind it.\nWith one writer, the omission is easy to miss, because the sole writer is implicitly responsible for everything. Shared memory removes the shortcut.\nSuppose one writer stores\nAlice lives in Berlin\n, and another later stores\nAlice lives in London\n. The later timestamp establishes sequence. It does not establish truth. The second writer may have newer evidence. It may also have copied an outdated document, misread a message, or written under the wrong account context. The first writer may be an authoritative system of record.\nRecency answers \"which assertion arrived last?\" Conflict resolution needs a different question: whose assertion should the system accept, and why?\nWhich gives the compact form of the problem.\nBi-temporality is a degenerate provenance model. It preserves the\nwhen\nof an assertion event and discards the\nwho\n.\n\"Degenerate\" is doing real work in that sentence: a transaction timestamp keeps exactly one coordinate of the assertion event, and drops the responsible party, the supporting evidence, and the derivation chain needed to evaluate it.\nWhat a shipped implementation actually keeps\nThis is not a thought experiment. Zep and Graphiti resolve temporally overlapping contradictions by closing the older edge's validity window (\narXiv:2501.13956\n).\nCredit where it is due: that graph does keep extraction provenance. Edges and their source episodes hold bidirectional indices, which is more than most.\nBut the invalidated edge records only a temporal boundary. Nothing in it says whose assertion won the conflict, or on what grounds. It is an operational answer without an epistemic explanation, and it is one of the better ones in the field.\nFour fields that already named the missing piece\nNone of these has to be adopted wholesale. The point is narrower and, to me, more damning: each one already makes first-class the thing agent memory keeps discarding.\nW3C PROV-O, Recommendation dated 30 April 2013.\nIt defines three core classes:\nprov:Entity\n,\nprov:Activity\n, and\nprov:Agent\n, where an agent is something that\nbears responsibility\nfor an activity or entity. Responsibility is a primitive modelling concept, not an annotation added afterwards. The lesson for agent memory is modest and specific: represent responsibility instead of inferring it from write order.\nNanopublications.\nA nanopublication is a publishable knowledge unit composed of three named graphs: assertion, provenance, and publication information. Provenance is structural rather than optional, because the smallest publishable unit contains all three, so the assertion cannot travel alone. Agent memory inverts this. The fact is the unit, and source context is metadata, if it is kept at all.\nAGM belief revision\n(Alchourrón, Gärdenfors and Makinson,\nJournal of Symbolic Logic\n, 1985). Three operations on a belief set: expansion, contraction, revision, under rationality postulates. Contraction forces a choice about which belief to surrender, and the postulates constrain that choice. Any memory system that invalidates a claim on contradiction is already doing belief revision. Without an explicit policy, \"newer wins\" is not a decision. It is an accidental rule with no record of what was surrendered or why.\nTruth maintenance systems.\nDoyle introduced justification-based TMS in 1979. De Kleer's assumption-based variant followed in 1986, tracing contradictions back through the justification network instead of recomputing from scratch. A belief survives only while at least one justification stays valid. That justification slot records why a statement is believed and what supports it, which is exactly where an agent-memory source belongs: the writer, the evidence, the dependency chain.\n\"Invalidate on observed contradiction\" without that slot is truth maintenance with the justifications removed.\nTaken together the four make the design choice plain. A memory record should not contain only a proposition and its clocks.\nIt should retain the assertion event that put the proposition there.\nWhat to record at write time\nA shared-memory write should attach a typed source link to each assertion. At minimum: the writing agent's identity, the account or principal context, a document pointer or other evidence reference, and the derivation method.\nassertion\n:\n\"\nAlice\nlives\nin\nLondon\"\nsource\n:\nagent\n:\n\"\nresearch-agent\"\nprincipal\n:\n\"\naccount-context\"\nevidence\n:\n\"\ndocument-reference\"\nderivation\n:\n\"\nextracted-from-source\"\ndecision\n:\nstatus\n:\n\"\nactive\"\nreason\n:\n\"\naccepted\nunder\nsource\npolicy\"\nEnter fullscreen mode\nExit fullscreen mode\nThe field names are implementation choices. The persistence rule is not.\nSource context must survive conflict resolution.\nWhen a later assertion wins, keep the losing one, its author, its evidence, and the reason it lost. That single rule converts a silent overwrite into an auditable decision, and it lets a later review reverse the call without excavating context that no longer exists.\nIdentity and authority are two different systems\nThis is the distinction that took me longest to hold steady, and it is the one that makes the rest tractable.\nIdentity is stored evidence about who wrote. Authority is the decision about whose claim should prevail.\nThey fail differently. A system without identity cannot attribute an assertion at all, so no policy can run, however good the policy is. A system with identity but no authority rules can attribute both sides of a contradiction and still cannot explain which one it accepted.\nThe useful consequence is that they can be built in that order. Recording who wrote does not require agreement on a universal authority ranking, and it is the prerequisite for any ranking arriving later. What the memory layer owes a future policy is not the policy. It is enough preserved information for one to operate.\nThe part I do not have\nI am not going to pretend the second half is solved. Deciding whose assertion outranks whose, across agents that were never designed together, under accounts with different trust levels, is an open problem and I have not seen a convincing shipped answer to it.\nWhat is not open is the first half. The prior art runs from thirteen to forty-seven years old, it is well documented, and it says the same thing four different ways: keep the asserter.\nLosing it is a choice, not a constraint.\nDisclosure: I work on\nMnemoverse\n, a memory engine for AI agents connected over MCP, so weigh the argument accordingly. Every source above is linked and dated, and the longer version with the full citations is on the\noriginal page\n.",
  "metadata": {
    "title": "Your Agent Memory Records When. Four Older Fields Already Solved Who. - DEV Community",
    "description": "A memory system can preserve every relevant timestamp and still lose the information needed to judge... Tagged with ai, agents, architecture, llm.",
    "keywords": "ai, agents, architecture, llm, software, coding, development, engineering, inclusive, community",
    "author": null,
    "og:type": "article",
    "og:url": "https://dev.to/izgorodin/your-agent-memory-records-when-four-older-fields-already-solved-who-4gmk",
    "og:title": "Your Agent Memory Records When. Four Older Fields Already Solved Who.",
    "og:description": "A memory system can preserve every relevant timestamp and still lose the information needed to judge...",
    "og:site_name": "DEV Community",
    "og:image": "https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpc07c6hsnxmkzdpjw25y.png",
    "twitter:site": "@thepracticaldev",
    "twitter:creator": "@",
    "twitter:title": "Your Agent Memory Records When. Four Older Fields Already Solved Who.",
    "twitter:description": "A memory system can preserve every relevant timestamp and still lose the information needed to judge...",
    "twitter:card": "summary_large_image",
    "twitter:widgets:new-embed-design": "on",
    "twitter:image:src": "https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpc07c6hsnxmkzdpjw25y.png"
  },
  "paywall": {
    "listed_paid": false,
    "detected": false,
    "marker": "",
    "public_only": false,
    "policy": "付费/会员内容只保留页面公开可见部分，不绕过付费墙"
  },
  "crawl": {
    "success": true,
    "status_code": 200,
    "error": ""
  },
  "code_blocks": [
    {
      "file": "attachments/e21be1c4296b/code/body-000.txt",
      "chars": 241,
      "language": "text"
    }
  ],
  "images": [],
  "audio": [],
  "videos": [],
  "links": [
    {
      "href": "https://arxiv.org/abs/2501.13956",
      "label": "arXiv:2501.13956",
      "type": "a"
    },
    {
      "href": "https://mnemoverse.com/",
      "label": "Mnemoverse",
      "type": "a"
    },
    {
      "href": "https://mnemoverse.com/docs/library/provenance-in-agent-memory",
      "label": "original page",
      "type": "a"
    }
  ],
  "repair_version": 2,
  "repaired_at": "2026-10-14T10:49:30Z",
  "source_url": "https://dev.to/izgorodin/your-agent-memory-records-when-four-older-fields-already-solved-who-4gmk",
  "papers": [
    {
      "status": "ok",
      "url": "https://arxiv.org/pdf/2501.13956",
      "bytes": 148771,
      "reused": false,
      "local_path": "papers/repair/b5fdc752b618e57cd473.pdf"
    }
  ],
  "actual_video_files": [],
  "body_chars": 7858,
  "expected_body_images": 0,
  "discovery_status": "ok",
  "delivery_status": "ok",
  "missing_reason": "",
  "raw_html": "attachments/e21be1c4296b/pages/source.html",
  "local_html": "attachments/e21be1c4296b/pages/article.html",
  "body_base_path": "attachments/e21be1c4296b/pages/",
  "body_markdown_path": "attachments/e21be1c4296b/pages/article.md"
}