Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,14 @@ Modeled Information Format**, the opinionated, OKF-compliant content model that
fills OKF's deliberately empty envelope. AI memory becomes the first domain
*profile* of MIF, not its identity.

### Added (proposed)

- **[Container Profile]**: corpus envelope (`*.corpus.json`) wrapping many MIF
memory units + source `document` records for transport (issue #77). Editorial
spec section + `examples/container-profile.corpus.json`. Reference converters
(Mem0, Letta, Cognee, Graphiti, MemPalace) ship separately. PROPOSED — pending
v1.0.0 incorporation.

### Breaking Changes

- **[Format]**: Concept files use the `.md` extension only — the `.memory.md`
Expand Down
57 changes: 57 additions & 0 deletions SPECIFICATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -2173,6 +2173,63 @@ citations:

---

## Container Profile (Corpus Envelope) — PROPOSED

> **Status:** Proposed addition (see issue #77, "Adopt the MPF Corpus Envelope
> as a MIF Container Profile"). Placement is editorial — slotted here for the
> v1.0.0 review; promote/renumber into the body as fits the cut.

The preceding sections define a single **memory unit**. Many tools need to move a
*corpus* — many memories plus the source documents they derive from — as one
artifact, with corpus-level metadata the unit does not carry. The **Container
Profile** is a transport envelope *around* MIF memory units. It does not change
the unit.

### Envelope

A container is a JSON object (file extension `.corpus.json`):

```json
{
"@context": "https://mif-spec.dev/schema/context.jsonld",
"@type": "MemoryCorpus",
"mif_version": "0.1.0",
"records": [ ],
"provenance": { },
"edit_chain": [ ]
}
```

### Records

Each `records[]` entry carries a `kind` discriminator:

| `kind` | payload |
|---|---|
| `memory` | a MIF **memory unit**, validated against the MIF schema; conformance levels apply per record |
| `document` | a source document (e.g. an unmodified DoclingDocument) the memories derive from, so provenance resolves within the corpus |

`fact` and `event` are **not** separate kinds — they are MIF memories whose
proposed `memoryCategory` term is `Fact` or `Event`. This avoids a parallel
schema.

### Corpus-level fields

| field | meaning |
|---|---|
| `provenance` | W3C-PROV provenance for the corpus as a whole |
| `edit_chain` / record `supersedes` | supersession / version history across records |
| `compression_manifest` | (Level 3) which records are compressed summaries of which sources |
| `federation_cursor` | cursor for incremental / federated corpus transfer |

### Conformance

The Container Profile is **orthogonal to conformance levels**: a container may
hold Level-1 and Level-3 memories together. A container is valid when every
`memory` record is a valid MIF memory and every `document` record is a recognized
document type. Reference converters (Mem0, Letta, Cognee, Graphiti, MemPalace) and
a validator are provided separately — see issue #77.

## Changelog

### 0.1.0-draft (2026-01-26)
Expand Down
42 changes: 42 additions & 0 deletions examples/container-profile.corpus.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
{
"@context": "https://mif-spec.dev/schema/context.jsonld",
"@type": "MemoryCorpus",
"mif_version": "0.1.0",
"records": [
{
"kind": "document",
"payload": {
"schema_name": "DoclingDocument",
"version": "1.0.0",
"name": "ncp-requirements.pdf",
"texts": [{"text": "NCP GB300 NVL72 platform requirements.", "label": "text"}]
}
},
{
"kind": "memory",
"payload": {
"@context": "https://mif-spec.dev/schema/context.jsonld",
"@type": "Memory",
"@id": "urn:mif:11111111-1111-4111-8111-111111111111",
"memoryType": "semantic",
"namespace": "_semantic/requirements",
"content": "GB300 NVL72 compute nodes MUST meet NVQual and NVCert.",
"created": "2026-06-25T00:00:00Z"
}
},
{
"kind": "memory",
"memoryCategory": "Fact",
"payload": {
"@context": "https://mif-spec.dev/schema/context.jsonld",
"@type": "Memory",
"@id": "urn:mif:22222222-2222-4222-8222-222222222222",
"memoryType": "semantic",
"namespace": "_semantic/requirements",
"content": "Intra-NVL72 NCCL all-reduce baseline on GB200 is 900 GB/s+.",
"created": "2026-06-25T00:00:00Z"
}
}
],
"provenance": { "@type": "prov:Entity", "prov:wasDerivedFrom": "ncp-requirements.pdf" }
}