Migration
MIF v1.0.0 repositions MIF as an OKF-compliant, opinionated knowledge content
model. AI memory is now the first profile of MIF, not its identity. This
guide is the how-to for upgrading an existing 0.1.0-draft bundle. The
mechanical steps are automated by scripts/migrate_0_1_to_1_0.py (in the modeled-information-format/MIF repo).
TL;DR
python scripts/migrate_0_1_to_1_0.py <old-bundle> <new-bundle>python scripts/okf_validate.py <new-bundle> # should print PASSWhat changed (and why)
| 0.1.0-draft | 1.0.0 | Why |
|---|---|---|
Legacy .memory-infixed markdown files | *.md files | The OKF concept ID is the path minus .md; a .memory infix would leak into the ID. |
Relationships as body wiki-links [[slug]] only | Authoritative frontmatter relationships[] plus body ## Relationships markdown links [Text](/path/target.md) | OKF consumers must see every edge as a standard markdown link (Invariant 3). |
id could be a slug | id MUST be a UUID | Stable, location-independent identity (§4.3). Slugs are preserved as aliases. |
| Memory-specific framing in the core spec | Moved to profiles/ai-memory/ | The core is now a general knowledge model; memory is a profile (Invariant 6). |
*.memory.json committed beside source | JSON-LD is a derived projection (regenerate with mif_convert.py) | Markdown is canonical (Invariant 2). |
| Temporal model framed as a cognitive curve | Same math, reframed as validity windows & freshness | Answers OKF’s open “live vs stale” question; the cognitive-memory rationale lives in the AI Memory profile. |
Steps the migration script performs
For every legacy .memory-infixed markdown file in the source bundle it:
- Strips the
.memoryinfix so each concept file ends in.md. - Ensures
idis a UUID — a non-UUID slug is rehashed to a deterministic UUIDv5 and the original slug is kept as analias. - Converts each
## Relationshipswiki-link (- supersedes [[target-slug]]) into an OKF-legible markdown link (- supersedes [Target Slug](/target-slug.md)) and synthesizes the authoritative frontmatterrelationships[]array to match. - Normalizes timestamps to ISO 8601 (
...Z).
It does not migrate *.memory.json files — regenerate the JSON-LD
projection from the canonical markdown instead:
python scripts/mif_convert.py emit-jsonld <new-bundle> --out-dir jsonldManual follow-up
- Relink targets. Migrated relationship links point at
/target-slug.md. Where the target concept exists in your bundle, adjust the link to its real bundle-relative path. Broken links are tolerated (warnings), so this can be done incrementally. - Relocate memory framing. If your bundle’s prose leaned on memory
metaphors, move that narrative under your own profile and keep the core
concepts general. See
profiles/ai-memory/for the reference profile. - Regenerate examples / validate. Run
python scripts/okf_validate.pyand the schema validation in CI (.github/workflows/validate.yml) before publishing.
Coming from another memory system?
Provider-specific migration guides now live in the AI Memory profile, the first
domain profile of MIF: see
profiles/ai-memory/SPECIFICATION.md.