Skip to content

Proposal: Adopt the MPF Corpus Envelope as a MIF Container Profile #77

Description

@perlowja

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

  1. This document as a MIF issue for discussion.
  2. On agreement: ADR ("Container Profile") + spec PR (new section,
    corpus fields, memoryCategory term, example *.corpus.json).
  3. Stand up mif-converters with the 5 adapters + Charon + docling.
  4. Charon emits the merged format; MPF-v0.2 back-compat import retained.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions