From 6805c95fbb6d0259a5af7c0c3f2bc93c3d6d7d6b Mon Sep 17 00:00:00 2001 From: James Date: Tue, 18 Aug 2026 11:31:48 -0700 Subject: [PATCH] Crosswalk the W3C memory interop scope onto the evidence profile The AI Agent Memory Interoperability Community Group is chartered to specify portable agent memory. Its published scope covers cell shape, identity binding, encryption envelopes, audit anchors, sharing contracts, cryptographic erasure, and crosswalks to regulatory and protocol ecosystems. Two distinctions this directory already carries sit inside "portable memory" and are named by none of those areas: derivation three validly signed cells derived from one observation are three sources to any consumer that does not carry `derived_from`. Nothing is forged; the count is wrong. search coverage a query that reached 1 of 26 partitions and found nothing transports as "not found" without `search.coverage`. The crosswalk maps each scope area to the profile field that carries it and to the failure that becomes unobservable when the field is absent, with an existing fixture on every row. The left column quotes the group's own scope page rather than field names, because the group has published a scope and not a specification. There is no vocabulary to map onto yet. A crosswalk whose left column was imagined would assert a correspondence it never checked -- the failure these fixtures exist to catch -- so the document says which it is and what should replace it. Read from https://www.w3.org/groups/cg/ai-agent-memory-interop/ on 18 Aug 2026. No new fixtures: the two cases were already here. Nothing is sent anywhere by this commit, and Minority Prophet is named only as where the cases were found. Co-Authored-By: Claude Opus 5 (1M context) --- .../memory-evidence-profile-v0.1/README.md | 4 + .../W3C-MEMORY-CROSSWALK.md | 75 +++++++++++++++++++ 2 files changed, 79 insertions(+) create mode 100644 interop/memory-evidence-profile-v0.1/W3C-MEMORY-CROSSWALK.md diff --git a/interop/memory-evidence-profile-v0.1/README.md b/interop/memory-evidence-profile-v0.1/README.md index 590e403..e06841b 100644 --- a/interop/memory-evidence-profile-v0.1/README.md +++ b/interop/memory-evidence-profile-v0.1/README.md @@ -37,6 +37,10 @@ The validator uses only Python's standard library. It validates examples from negative fixtures. A conforming producer may add vendor fields outside the `evidence_profile` object, but must not reinterpret fields inside it. +`W3C-MEMORY-CROSSWALK.md` maps the published scope of the W3C AI Agent Memory +Interoperability Community Group onto these fields, and names the failure that +becomes unobservable when one is absent. It is a crosswalk, not a proposal. + Consumers decide whether an authentication method, controller assertion, clock, revocation source, or conclusion method is acceptable. Invalid, expired, revoked, replayed, incompletely searched, or insufficiently diff --git a/interop/memory-evidence-profile-v0.1/W3C-MEMORY-CROSSWALK.md b/interop/memory-evidence-profile-v0.1/W3C-MEMORY-CROSSWALK.md new file mode 100644 index 0000000..0e41f58 --- /dev/null +++ b/interop/memory-evidence-profile-v0.1/W3C-MEMORY-CROSSWALK.md @@ -0,0 +1,75 @@ +# Crosswalk: W3C AI Agent Memory Interoperability scope → Memory Evidence Profile v0.1 + +A crosswalk, not a proposal. It maps the published scope of the W3C **AI Agent +Memory Interoperability Community Group** onto the fields this profile already +carries, and names the failure that becomes unobservable when a field is +absent. Every row ends in a fixture that can be run. + +Source for the left column: , +read 18 August 2026. Shortname `ai-agent-memory-interop`. + +## What the left column is, and is not + +The group has published a **scope**, not a specification. There is no field +vocabulary to map onto yet. So the left column quotes scope areas from the +group's own page; it does not invent field names and then map to them. + +That distinction is the whole point of this directory. A crosswalk whose left +column was imagined would be a table asserting a correspondence it never +checked — the failure the fixtures below exist to catch. When the group +publishes field names, this document should be rewritten against them and the +scope-area version discarded. + +## The crosswalk + +| W3C scope area | Profile field | Failure if the distinction is absent | Fixture | +|---|---|---|---| +| Memory cell shape (encrypted unit with canonical metadata) | `binding.memory_object_digest`, `binding.proposition_digest` | A cell is canonical, intact and portable while carrying no statement of *which proposition* it is evidence for. The consumer supplies the link, and no transport records that it did. | `opaque-memory-cell.json` | +| Identity binding (post-quantum signatures, ML-DSA-65 / FIPS-204) | `claims[].root_authentication`, `claims[].derived_from` | A signature authenticates a *declaration*, not an observation. Three validly signed cells derived from one observation present as three signed sources. Stronger signatures do not change this. | `copied-consensus.json` | +| Encryption envelope semantics (per-cell DEK, wallet-derived KEK, rotation) | *(no mapping)* | Orthogonal. This profile takes no position on envelope semantics and should not be read as proposing one. | — | +| Audit anchor properties (public-chain receipts; verifiability without trusting the operator) | `verifiers[]` (asserted controller) | An anchor proves a cell existed at a time. It does not establish that the parties attesting to it are independently controlled. Verifiers under common recorded control still read as plural. | `shared-control-verifier.json` | +| Sharing contracts (temporary, permanent, syndicate; revocation semantics) | `lifecycle` (freshness, nonce, revocation) | Revoked or stale evidence is reused after the sharing contract that justified it has lapsed, and the reuse is invisible downstream. | `adversarial-cases.json` | +| Cryptographic erasure (DEK destruction, tombstone, blacklist; GDPR Art. 17) | `search.coverage`, `lifecycle` | Erasure changes what a later search can reach. Absence observed after erasure is indistinguishable from absence in the world, unless coverage is carried. | `incomplete-search.json` | +| Crosswalks to regulatory and protocol ecosystems (NIST AI RMF, ISO/IEC 42001, ISO/IEC 27001, EU AI Act, MCP, AAIF) | — | This document is an instance of that scope item. | — | + +## Two distinctions the published scope does not yet name + +Both are inside "portable memory" and neither is covered by shape, identity +binding, encryption, anchors, sharing, or erasure. Each is stated as a +falsifiable property with a fixture attached. + +**1. Derivation — copies must not become roots.** +A claim with no `derived_from` is a *declared root*. `derived_from` makes copies +and transformations collapse back to the root they came from. Without it, a +transport that faithfully moves three authentic cells delivers three apparent +sources for one observation. Nothing was forged; the count is simply wrong. +→ `copied-consensus.json` + +**2. Search coverage — partial search cannot support absence.** +`search` records the scope searched and the coverage achieved. Without it, a +query that reached 1 of 26 partitions and found nothing is transported as "not +found", and a consumer reads absence of evidence as evidence of absence. +→ `incomplete-search.json` + +## Running the fixtures + +```sh +python3 interop/memory-evidence-profile-v0.1/validate.py +``` + +Python standard library only, no install, no network, no dependency on any +Minority Prophet component. The fixtures are JSON. A consumer with their own +memory representation can map their fields onto the profile and run the same +cases against it — the point is the cases, not this schema. + +Minority Prophet is named here only as where these cases were found. It is not +a required dependency and nothing here proposes adopting its schema. + +## The question this asks + +> Should a portable memory format preserve enough information for a consumer to +> distinguish these two cases — three copies of one observation from three +> observations, and a partial search from an exhaustive one? + +A "no, that belongs in a companion profile" is a useful answer. So is "yes, open +an issue." The cases are given away either way.