For: github.com/modeled-information-format/MIF (issue → ADR → spec PR)
From: MNEMOS / Charon (Jason Perlow)
Status: Proposal for discussion — feedback welcome from @zircote and the community before any spec PR.
Summary
MNEMOS has been aligning its Memory Portability Format (MPF) to MIF rather than
competing with it. MIF defines the single memory unit (.memory.md / JSON-LD,
conformance levels 1–3). MPF independently grew the layer above the unit: a
corpus envelope for moving many memories — and documents — between systems.
We propose MPF be re-expressed as a MIF Container Profile: a transport
envelope around MIF memory objects, owned by MIF, so MNEMOS and any other tool
share one substrate. MNEMOS will adopt the merged format as canonical and
contribute its converter suite.
Layering
| Layer |
Owner |
What |
| Memory unit |
MIF core (today) |
one memory, JSON-LD, levels 1–3 |
| Container Profile |
proposed MIF addition |
records[] envelope: bundles many units + documents + corpus metadata |
The envelope (records[] with a kind discriminator)
kind: "memory" → payload is a MIF memory (validated against the MIF
schema; conformance levels apply unchanged).
kind: "document" → payload is an unmodified DoclingDocument (so source
documents travel alongside the memories derived from them).
kind: "fact" / "event" → re-expressed as MIF memories carrying a new
constrained ontology term memoryCategory (Fact | Event | …) — not a
parallel schema. (MPF v0.2 had these as first-class kinds; folding them into
MIF memories avoids schema duplication. Back-compat: importers map old
fact/event records to memoryCategory.)
Corpus-level fields the envelope adds (MIF unit doesn't carry these)
provenance (W3C-PROV), editChain / supersedes, compressionManifest,
federationCursor. The Container Profile is orthogonal to conformance levels
— a level-1 corpus and a level-3 corpus are both valid envelopes.
Converters (the "share converters" path)
Propose a sibling repo modeled-information-format/mif-converters holding:
- Vendor adapters → MIF:
mempalace (already merged, level-1), mem0,
letta, cognee, graphiti. Each documents its level mapping + lossiness.
- Charon import/export — reference REST
/import + /export over the
Container Profile.
- Docling import adapters — ingest documents →
kind: document records.
Keeps the spec repo lean; the spec only references the converters.
Migration / non-disruption
- No fork: MIF stays the unit authority; MPF becomes a profile of MIF.
- No schema duplication: fact/event fold into MIF memories.
- Charon keeps reading MPF v0.2 (auto-upgrades to the Container Profile).
- Authorship respected: issue → ADR → spec PR, gated on @zircote's agreement.
Proposed sequence
- This document as a MIF issue for discussion.
- On agreement: ADR ("Container Profile") + spec PR (new section,
corpus fields, memoryCategory term, example *.corpus.json).
- Stand up
mif-converters with the 5 adapters + Charon + docling.
- Charon emits the merged format; MPF-v0.2 back-compat import retained.
For: github.com/modeled-information-format/MIF (issue → ADR → spec PR)
From: MNEMOS / Charon (Jason Perlow)
Status: Proposal for discussion — feedback welcome from @zircote and the community before any spec PR.
Summary
MNEMOS has been aligning its Memory Portability Format (MPF) to MIF rather than
competing with it. MIF defines the single memory unit (
.memory.md/ JSON-LD,conformance levels 1–3). MPF independently grew the layer above the unit: a
corpus envelope for moving many memories — and documents — between systems.
We propose MPF be re-expressed as a MIF Container Profile: a transport
envelope around MIF memory objects, owned by MIF, so MNEMOS and any other tool
share one substrate. MNEMOS will adopt the merged format as canonical and
contribute its converter suite.
Layering
records[]envelope: bundles many units + documents + corpus metadataThe envelope (
records[]with akinddiscriminator)kind: "memory"→ payload is a MIF memory (validated against the MIFschema; conformance levels apply unchanged).
kind: "document"→ payload is an unmodified DoclingDocument (so sourcedocuments travel alongside the memories derived from them).
kind: "fact"/"event"→ re-expressed as MIF memories carrying a newconstrained ontology term
memoryCategory(Fact|Event| …) — not aparallel schema. (MPF v0.2 had these as first-class kinds; folding them into
MIF memories avoids schema duplication. Back-compat: importers map old
fact/event records to
memoryCategory.)Corpus-level fields the envelope adds (MIF unit doesn't carry these)
provenance(W3C-PROV),editChain/supersedes,compressionManifest,federationCursor. The Container Profile is orthogonal to conformance levels— a level-1 corpus and a level-3 corpus are both valid envelopes.
Converters (the "share converters" path)
Propose a sibling repo
modeled-information-format/mif-convertersholding:mempalace(already merged, level-1),mem0,letta,cognee,graphiti. Each documents its level mapping + lossiness./import+/exportover theContainer Profile.
kind: documentrecords.Keeps the spec repo lean; the spec only references the converters.
Migration / non-disruption
Proposed sequence
corpus fields,
memoryCategoryterm, example*.corpus.json).mif-converterswith the 5 adapters + Charon + docling.