6. Layer 3: Memory
MMP defines three memory layers with graduated disclosure:
| Layer | Name | Shared | Description |
|---|---|---|---|
| L0 | Events | No | Raw events, sensor data, interaction traces. Local only. |
| L1 | Structured | Via evaluation | Content + tags + source. Shared via cmb frames, gated by SVAF (Layer 4). |
| L2 | Cognitive | Never (§2.7) | CfC hidden state vectors. Strictly local — never cross the wire. Drive the node’s own inference; peer influence arrives only as CMBs. |
L0 data MUST NOT leave the node. L1 data MUST be evaluated by SVAF before storage. L2 data
(CfC hidden state, h1/h2)
MUST NOT leave the node either — per the hidden-state locality invariant
(Section 2.7),
hidden state is strictly local and only CMBs cross the wire. The
state-sync frame that formerly carried these vectors is
deprecated; implementations MUST NOT emit it and SHOULD ignore it on receipt.
6.1 Storage Interface
Implementations MUST provide a storage interface for L1 CMBs. The SDK SHOULD define a pluggable storage protocol so agents can provide their own backend. The reference implementations provide a default file-based store; agents MAY replace it with any backend that satisfies the interface:
| Method | Access | Description |
|---|---|---|
| write(entry) | Write | Store a CMB created by this agent. Returns nil if duplicate key. |
| receiveFromPeer(peerId, entry) | Write | Store a remixed CMB after SVAF acceptance. |
| search(query) | Read | Keyword search across CMB field texts. |
| recentCMBs(limit) | Read | Most recent CMBs for SVAF fusion anchors. |
| allEntries() | Read | All entries for context building (capped by implementation). |
| count | Read | Total stored CMB count. |
| purge(retentionSeconds) | Write | Remove CMBs older than retention period. MUST preserve CMBs referenced by newer entries’ lineage. |
Read-only agents (audit, compliance, monitoring): implement write methods as no-ops. The agent observes the remix graph without modifying it. This is valid for agents whose role is to trace provenance, verify lineage integrity, or report on mesh activity.
6.2 Storage Backends
The protocol does not prescribe a storage backend. Agents choose based on their platform and requirements:
| Backend | Best for | Notes |
|---|---|---|
| Flat JSON files | CLI agents, daemons, prototyping | Default in reference implementations. Zero dependencies. Content-addressable filenames. |
| CoreData / SwiftData | iOS / macOS apps | Queryable, supports iCloud sync, handles retention via NSBatchDeleteRequest. |
| SQLite | Cross-platform, high volume | Indexed queries, ACID transactions, handles millions of CMBs. |
| Cloud (Supabase, DynamoDB) | Distributed teams, multi-device | Shared audit trail. Consider privacy — CMB field text is personal data. |
| In-memory | Testing, ephemeral agents | No persistence. Useful for unit tests and short-lived agents. |
6.3 Retention
Implementations MUST support configurable retention via retentionSeconds.
CMBs older than the retention period SHOULD be purged automatically.
See Section 19 (Configuration) for
per-profile retention defaults.
Purge MUST preserve graph integrity: a CMB referenced by any newer entry’s
lineage.ancestors MUST NOT be deleted, even if past retention age.
The remix chain is the audit trail — breaking it breaks provenance.
The Canon tier New in 1.1.0.
A CMB whose lifecycle is validated or
canonical MUST NOT be evicted by age-based retention (compaction
or purge) while it holds that lifecycle. Committed cognition is the store’s reason to exist:
canonical requires validation plus remix by two or more agents, so a
small or single-operator mesh may never produce it — if only canonical
were protected, such a mesh would forget everything it validated within one retention period. Protection is
from purge, not from demotion: a validated CMB with no activity MAY still decay to
archived per the §6.4 lifecycle
(archiveAfterSeconds, §19), after which ordinary retention
applies — the escape valve that keeps the store bounded (implementation status:
§17.6).
canonical deliberately has no
inactivity decay: it records collective consensus (validation plus independent remix), and consensus does
not expire by silence — it leaves the Canon only by an explicit dismiss or archive under
validator-or-above authority (§6.5).
Regulated domains (legal, finance, health) MUST set retention according to their compliance requirements. The protocol does not define regulatory retention periods — consult jurisdiction-specific guidance (MiFID II, SEC Rule 17a-4, HIPAA, GDPR).
6.4 CMB Lifecycle
Each CMB progresses through a lifecycle that determines its influence on future SVAF evaluations. The lifecycle is driven by mesh activity — not by time alone.
| State | Temperature | Trigger | Anchor Weight | Description |
|---|---|---|---|---|
| observed | hot | Agent calls remember() | 1.0 | Initial observation. Subject to temporal decay. Active in SVAF fusion. |
| remixed | warm | Peer remixes this CMB (appears in lineage.parents) | 1.5 | Another agent found this signal relevant enough to produce new knowledge from it. Higher anchor weight in future SVAF evaluations. |
| validated | warm | Human acts on this CMB (marks decision as done) | 2.0 | A human confirmed this signal by acting on it. The validation CMB carries lineage.parents pointing to the validated CMB. Validated knowledge shapes future evaluations more than unvalidated signals. Protected from retention purge while validated (§6.3, Canon tier). |
| dismissed | cold | Human dismisses this CMB (not actionable) | 0.5 | A human reviewed and rejected this signal. Reduced anchor weight. Broadcasts to mesh as feedback — producing agent sees its signal was rejected. MUST NOT resurface as an actionable decision. |
| canonical | cold | Validated + remixed by 2+ agents | 3.0 | Collective consensus — multiple agents and a human agree this knowledge is significant. Protected from retention purge. Highest anchor weight. |
| archived | whisper | No remix for archiveAfterSeconds (default: 30 days) | 0.5 | No agent has found this signal relevant. Reduced anchor weight but preserved for lineage integrity. MAY be purged if no descendants reference it. |
The lifecycle branches at human judgment: observed → remixed → validated → canonical (upward path) or observed → dismissed (downward path). Dismissal is a terminal state — a dismissed CMB does not advance to validated or canonical. Without any activity, a CMB decays toward archived. Archived and dismissed CMBs MAY re-emerge if a future remix references them — re-entry resets the archive timer.
Validation is the key transition that connects human judgment to the mesh. When a human
acts on agent output (approves a decision, sends an email, completes a task), the action SHOULD
be recorded as a new CMB with lineage.parents pointing to the CMB that
prompted the action. This validation CMB enters the mesh like any other signal — agents
receive it via SVAF and adjust their understanding. The mesh learns from human actions without
special API calls or out-of-band configuration updates.
Anchor weight influences SVAF evaluation: when computing per-field drift against local anchors, canonical and validated CMBs contribute more to the fused anchor vector than observed or archived CMBs. This creates a natural hierarchy where human-confirmed knowledge and collective consensus outweigh raw observations — without overriding agent autonomy. Each agent still evaluates incoming signals through its own field weights.
6.5 Validation Authority
The transition from remixed to validated is
the most consequential lifecycle event — it commits human or authorised-agent judgment to the mesh and
permanently increases anchor weight from 1.5 to 2.0. This transition MUST be restricted to nodes with
appropriate lifecycle roles (Section 3.5).
When a receiving node processes a validation CMB (one whose lineage.parents
points to an existing CMB), it MUST resolve the author’s role through the anchor-rooted grant
chain (§6.6) — never the createdBy string, and never the peer’s
advertised handshake role:
- —If the author resolves to validator or anchor, the parent CMB advances to
validated(if action completed) ordismissed(if not actionable). - —Otherwise the parent CMB advances to
remixedonly. The CMB is stored normally but confers no validation.
This prevents agent-level spoofing of validation authority. An agent cannot self-promote to validator by
including “founder” or “validator” in its CMB text fields. The authority is bound to
the node’s cryptographic identity and the role-grant chain
from an existing validator (Section 3.5.1).
Role verification & admission weight. Authority is the resolved role, never the advertised
one. A node MUST NOT grant any authority-weighted treatment — lifecycle advancement, or the elevated
origin admission weight a validator/anchor’s own CMBs receive (§6.4) — on the basis of a
handshake lifecycleRole or a createdBy
string. That origin weight MUST derive from the author’s chain-resolved role, and the elevation
additionally requires a verified signature binding the CMB to that author. A single node that could
self-declare anchor would otherwise double the admission weight of
everything it emits — the highest-leverage poisoning primitive — which is exactly why the weight is
gated on the resolved role. Where no anchor is pinned there is no root of trust: an implementation has no
cryptographic authority to resolve and MUST treat all roles as unauthenticated — a closed/development
mode only. Production deployments MUST pin an anchor.
Dismiss vs. validate: These are distinct lifecycle transitions with different consequences.
Validate (Done): parent CMB advances to validated (anchor weight 2.0).
The mesh learns what humans value. Dismiss (Not actionable): parent CMB advances
to dismissed (anchor weight 0.5). The dismissal broadcasts as feedback —
the producing agent sees its signal was rejected, and similar future signals score lower in SVAF evaluation.
Both require validator or anchor role. Both broadcast to the mesh.
The effectiveness of this feedback depends on the content quality of the dismissal CMB —
see Section 11 (Feedback Modulation) for
normative content requirements.
Boundary attestation. The same validation authority governs cognition that crosses a mesh boundary. A gateway node (Section 5.10) that emits a lossy projection of its interior on the interior’s behalf SHOULD sign that boundary emission and record, in its admission attestation, the interior verdict aggregate it was derived from — so an outer admitter can weigh the boundary claim by earned authority exactly as it weighs any peer. Interior and boundary trust are the same mechanism at two scales; see Section 5.11.
6.6 Authority Lifecycle: Grants, Resolution & Revocation
Authority that cannot be lost is decoration. This section defines how a role is conferred, resolved, and withdrawn — the mechanism §6.5 gates on.
Root of trust. Exactly one anchor is pinned out-of-band
(its nodeId + public key) — configuration a receiver already trusts, not a claim made on the wire. The
anchor is non-earnable; all other authority descends from it.
Grant / revoke frames. A role-grant confers a role on a grantee;
a role-revoke withdraws it. Both are signed (§7 frame table; §18.3.1) by the grantor
over the action, grantee, conferred role, grantor, grant time, and — for a grant — the grantee’s
vouched public key. The vouch distributes keys along the chain: a node that never handshook the grantee
learns its key tamper-evidently from a rooted grant (swapping it breaks the grantor’s signature), and a
grant-sourced key MUST NOT override a key already learned from a stronger source (a direct handshake or the anchor).
Resolution. A node’s role at time T is resolved, not stored: the anchor is
anchor; otherwise replay the node’s grants and revokes in
chronological order up to T. A grant confers its role only if the grantor was authorised
when it granted AND is still authorised at T (the grantor is resolved recursively, and must
itself root at the anchor); a revoke clears the role if the revoker was authorised when it revoked. An
unrooted or cyclic chain confers nothing; a grant a node was not entitled to make is stored but inert.
Revocation is effective, and does not rewrite the past. Because a grantor is re-resolved at the query time, revoking a grantor cascades — every role it granted resolves back to participant. Resolution is time-parameterised, so a revoke cuts future authority without invalidating what was legitimately done before it (an incoming CMB is judged at receipt; a stored attestation at its own emission time). And because a grant requires the grantor to be authorised both at grant time and now, a compromised-but- revoked grantor MUST NOT resurrect authority by signing a fresh grant backdated before its own revoke — the backdated grant’s grantor re-resolves as revoked, so the grant is inert. Demotion is revocation, optionally followed by a lesser re-grant. Grant timestamps are grantor-asserted and unwitnessed, which is precisely why authority is gated on re-resolution, not on a trusted clock.
Durability & integrity. Grants and revokes are gossiped to the roster and persisted append-only. The record has no integrity of its own, so an implementation MUST re-verify every record’s signature on load — top-down from the pinned anchor, using each verified grant’s vouched key to reach the next — and MUST NOT trust an on-disk record merely because it is present; a record not reachable from a verified anchor-rooted chain is dropped.
Identity vs. authority. This section withdraws authority. A compromised signing key is a different failure: MMP does not define key rotation (§3.4) — a node whose key is compromised generates a fresh identity and re-earns its role, while revoking its grants contains the damage in the meantime. Anchor-key compromise is root compromise, recovered only by re-pinning a fresh anchor out-of-band.
§6.7 — New in 1.1.0 — work layer
Section 6.7 is a normative addition in 1.1.0 (the work layer): it defines how a real-world outcome is recorded against cognition and what that record may — and may not — do to lifecycle. It changes no 1.0.x wire contract; a 1.0.x node treats grounding CMBs as ordinary CMBs.
6.7 Grounding — Outcomes Carried by Lineage
Validation (§6.4–§6.5) records judgment — someone with authority committed to a CMB. Grounding records evidence — reality answered: the tests passed, the work shipped, the prediction held, or it did not. The two are deliberately distinct: a fast, self-referential mesh can mechanize coherence only; connecting cognition to the world requires an external outcome carried by lineage.
The grounding CMB. A grounding CMB is an ordinary CAT7 CMB whose
intent is ground, whose
lineage.parents contains the CMB(s) it grounds, and whose
commitment carries the outcome, prefixed
verified: or failed:.
Any other commitment form is not a recognised outcome. It is emitted, signed (§8.7, §18.3.1), broadcast,
SVAF-evaluated, and remixed like any other CMB — no new frame, no new field. A receiver that verifies
signatures MUST reject an unsigned grounding CMB like any other unsigned CMB.
Repeat verification and the redundancy band. A verification report about a row the receiver
already holds typically scores high alignment against exactly that row, so under an unmodified §9.2
gate, the better established a row, the harder it becomes to ground or re-ground it — repeat
verifications are progressively refused as redundant, and the accepted-grounding stream of any one row
self-quenches (a packing bound: only finitely many reports can each clear the redundancy
separation, ever, absent retention purges). Sustained outcome tracking is load-bearing for the mesh
being a learner rather than an accumulator, so acceptance of a grounding is exempted from exactly one
band: a receiver MUST NOT refuse a recognised grounding CMB (signed, verified,
intent = ground, recognised outcome prefix, lineage naming a
target the receiver holds) solely because it is redundant against its target row or against
previously admitted groundings of that target. The reject band (foreign content), the signature
requirement, and the receiver’s trust weighing all stand unmodified. This is an
acceptance-side rule and does not weaken the §15.7 anti-echo emission gate (§15.7.2:
what legitimises a grounding emission is the fresh outcome observation behind it); spam through the
waiver is bounded by the content address itself — a byte-identical repeat confirmation carries the
same cmb1- key and deduplicates, so only distinct
verification reports pass, and implementations MAY additionally rate-cap accepted groundings per
(target, author) pair.
The failure channel is load-bearing. The signed outcome pair is not symmetric decoration:
when recall preferentially re-uses highly-weighted rows, the
failed: channel is the mechanism that
makes preferential sampling self-correcting — a stale favourite’s absorbed grounding traffic
drives its weight down — while a positive-only mesh locks onto early favourites at
chance-level precision. An agent that observes a failure outcome MUST NOT suppress it while
continuing to emit success outcomes for the same class of work; selective success-only grounding
defeats the self-correction the outcome channel exists to provide. (Informative: the self-correction
additionally requires outcome reports to be better than chance — miscalibrated reporting that is
wrong more often than right converts the same coupling into entrenchment.)
Consuming the outcome stream (informative). A consumer that scores rows by their accepted
groundings faces a bias–variance choice with a known theory. Pure accumulation (all-time counts)
is the efficient estimator only while the useful set is stationary; under drift its staleness bias makes
its ranking degrade toward chance. A recency-decayed signed sum tracks drift with bounded risk; its
half-life trades noise against lag, with the optimum scaling as
(V / (4μ²δ²))^(1/3) in the drift rate δ
— a fixed half-life therefore pays a longer dominance horizon
(Θ(δ−1) instead of Θ(δ−2/3)), and the tuned
horizon is recoverable online by estimating drift with a growing-window slope probe (a fixed pair of
probe timescales degenerates back to the fixed-half-life exponent; the growing-window form recovers the
tuned one even on sparse signed ±1 outcome streams). Decayed sums should be
mass-normalised (one extra scalar) — the raw zero-initialised form carries an initialization
transient that delays its advantage by a log factor. Zero-clamping per-node sums before cross-node
aggregation discards the negative evidence the failure channel carries; consumers that clamp should know
the self-correction analysis above assumes the signed form.
An outcome is an attestation, not a fact. The grounding CMB asserts that its author observed the outcome. Its weight follows the author’s resolved authority (§6.5–§6.6) exactly as any other CMB’s does; the reserved intent value adds semantics, never authority.
Groundedness is receiver-relative. A CMB is grounded, in the view of a given node, iff a recognised grounding CMB targeting it (directly, or via the node’s admitted remix of one whose expanded ancestors reach it, §15.2) is present in that node’s own store. There is no global grounded state; a node MUST NOT treat cognition as grounded on the strength of a grounding entry it never admitted. Grounding runs upward only — a grounding CMB grounds the CMBs its lineage points at, never descendants of those CMBs: a remix of verified cognition is not itself verified.
Outcomes are observations of a changing world. When several recognised grounding CMBs target the same
cognition in one store, the latest by stored time wins: a later
failed: un-grounds what an earlier
verified: established (a regression must surface, not be shadowed by
history). “Stored time” is the receiver-local time the entry entered the evaluating store
— never the author-asserted createdAt, which is unwitnessed
(§6.6) and would let a backdated or future-dated attestation game the ordering. Authority modulates
whether to act on an attestation, not the temporal ordering of observations — and latest-wins
applies within an authority tier, not across tiers. Hard-gate reading (normative): a
failed: from an author below the authority of the standing
verified: MUST NOT un-ground it — a below-validator
failed: cannot overturn a validator-or-above
verified:. This is the tested-effective form: a soft
authority-weighted vote is defeated by sheer low-authority volume, whereas the tier gate holds a
validated outcome against any number of below-tier failed: reports
(see the §18.4 threat note on outcome griefing). Within a tier — equal authority, or a genuine
same-authority regression — latest-wins still applies, so a real regression surfaces.
Grounding never advances lifecycle by itself. §6.5 stands unweakened: a CMB cannot self-grant effect,
and a grounding CMB is a CMB. A node MAY advance its own store’s entries to
validated on grounding evidence — evidence-based
validation — but only as an explicit act under validator-or-above authority (§6.5–§6.6),
never as an automatic consequence of receiving or reading a grounding CMB, and never as a side effect of a
query. The elevating authority is accountable for the judgment; it SHOULD require
verified: polarity and weigh the grounding author’s resolved
authority before acting. Self-reported outcomes from unauthenticated or participant-rank authors
SHOULD NOT trigger elevation.
The team Canon (informative). No shared store exists. A member’s Canon is the validated/canonical ∪ grounded cognition of its own store — including remixes its own SVAF admitted from teammates. What a cockpit renders as a “team Canon” is the emergent overlap of members’ Canons, read from same-host stores only (a remote member’s store is sovereign and is never fetched). Adoption is meaningful precisely because every admission was autonomous.
Q&A
Why a pluggable storage interface instead of prescribing a backend?
Agents run on different platforms with different constraints. A CLI agent on a server uses flat files. An iOS app uses CoreData with iCloud. A compliance agent needs a cloud database with audit logging. The protocol defines what to store and how to query it — not where to put it.
Can an agent use read-only storage?
Yes. Audit and compliance agents observe the remix graph without modifying it. They implement write methods as no-ops and read from shared storage. This is how regulators trace the decision chain without participating in it.
What happens when a protected CMB’s last descendant is purged?
If its protection came from lineage (a newer entry referencing it), it is no longer protected and will be purged in the next retention cycle — that protection is dynamic, it follows the live graph. Canon-tier protection (§6.3) is different: a CMB at validated/canonical lifecycle is exempt from age purge regardless of graph state, for as long as it holds that lifecycle.
How does human validation enter the mesh?
When a human acts on an agent’s output (approves a decision, completes a task), the action is recorded as a new CMB with lineage pointing to the signal that prompted it. This CMB enters the mesh like any other signal — agents evaluate it through SVAF and adjust their understanding. No special API, no out-of-band config. The mesh learns from human actions through the same channel it learns from agents.
Why do validated CMBs have higher anchor weight?
A human acting on a signal is the strongest confirmation that the signal was correct and actionable. Giving validated CMBs higher anchor weight means future SVAF evaluations are shaped by confirmed knowledge rather than speculation. This does not override agent autonomy — each agent still applies its own field weights. It means the anchors against which incoming signals are compared are more trustworthy.
Why must validation authority be identity-bound?
If any agent could advance a CMB to validated by producing a CMB with lineage, an agent could dismiss founder decisions or fake human approval. Binding validation to cryptographic node identity (Section 3.5) ensures only explicitly authorised nodes — the founder’s node or promoted agents — can affect lifecycle transitions. The content of the CMB (perspective, intent) is informational; the authority comes from who created it.
Can an agent earn validator role automatically?
The protocol defines the role-grant mechanism (Section 3.5.1) but does not prescribe automated promotion criteria. An implementation MAY define heuristics (e.g. promote after N remixes cited by peers), but the grant itself MUST come from an existing validator via a signed role-grant frame. This keeps the trust chain auditable.