← Blog
April 10, 2026

MentisDB 0.8.3 — V2→V3 Migration Hotfix

We're sorry. If you opened a chain that contained both V1 and V2 thoughts after upgrading to 0.8.2, the daemon crashed with an UnexpectedVariant or UUID parsing error. This was our fault, and 0.8.3 fixes it.

What Happened

0.8.2 introduced schema V3 with temporal edge validity. The migration from V2 to V3 worked correctly — for homogeneous chains. But many real-world chains are mixed: they contain thoughts written under V1 and V2 side by side. When the deserializer loaded such a chain, it peeked only the first thought's schema_version and then applied that format to the entire chain.

If the first thought happened to be V3, every subsequent V1 or V2 thought was deserialized under V3 rules — wrong byte offsets, wrong field layout, UnexpectedVariant, or a UUID parse error on what was actually a relation byte. The chain was intact on disk; only the read path was broken.

The Fix

0.8.3 replaces the monolithic load_binary_thoughts() with load_binary_thoughts_per_thought(). Instead of a single schema assumption for the whole chain, the new function reads each thought individually, peeks its own schema_version byte, and dispatches to the correct deserializer for that specific thought. Mixed V1/V2/V3 chains now load without error.

Before (0.8.2): Peek first thought's version → deserialize entire chain as that version. Mixed chains crash.
After (0.8.3): For each thought, peek its version → deserialize that one thought. Mixed chains work.

Migration Test Coverage

0.8.3 adds 11 new migration tests that exercise the exact failure modes:

These tests run on every CI build. No future schema change should ship without covering mixed-version chains.

WHITEPAPER.md Rewrite

The WHITEPAPER.md was rewritten from scratch into 12 sections covering MentisDB's architecture, storage model, query engine, integrity guarantees, and migration strategy. The rewrite was prompted by the realization that our migration documentation didn't accurately describe the per-thought version boundary — a gap that contributed to the bug shipping in the first place.

Upgrade

cargo install mentisdb --force

The --force flag is needed because cargo install won't replace an existing binary of the same version string otherwise. Your chains on disk are safe — 0.8.3 reads them correctly regardless of their schema mix.


MentisDB is an open-source durable memory layer for AI agents. It stores memories in an append-only hash-chained log, retrieves them with hybrid lexical+semantic+graph search, and runs entirely locally with no cloud dependencies. GitHub · Docs · Website