Skip to content

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

Terminal window
python scripts/migrate_0_1_to_1_0.py <old-bundle> <new-bundle>
python scripts/okf_validate.py <new-bundle> # should print PASS

What changed (and why)

0.1.0-draft1.0.0Why
Legacy .memory-infixed markdown files*.md filesThe OKF concept ID is the path minus .md; a .memory infix would leak into the ID.
Relationships as body wiki-links [[slug]] onlyAuthoritative 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 slugid MUST be a UUIDStable, location-independent identity (§4.3). Slugs are preserved as aliases.
Memory-specific framing in the core specMoved to profiles/ai-memory/The core is now a general knowledge model; memory is a profile (Invariant 6).
*.memory.json committed beside sourceJSON-LD is a derived projection (regenerate with mif_convert.py)Markdown is canonical (Invariant 2).
Temporal model framed as a cognitive curveSame math, reframed as validity windows & freshnessAnswers 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:

  1. Strips the .memory infix so each concept file ends in .md.
  2. Ensures id is a UUID — a non-UUID slug is rehashed to a deterministic UUIDv5 and the original slug is kept as an alias.
  3. Converts each ## Relationships wiki-link (- supersedes [[target-slug]]) into an OKF-legible markdown link (- supersedes [Target Slug](/target-slug.md)) and synthesizes the authoritative frontmatter relationships[] array to match.
  4. Normalizes timestamps to ISO 8601 (...Z).

It does not migrate *.memory.json files — regenerate the JSON-LD projection from the canonical markdown instead:

Terminal window
python scripts/mif_convert.py emit-jsonld <new-bundle> --out-dir jsonld

Manual 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.py and 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.

Need Help?