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.
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.
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.
0.8.3 adds 11 new migration tests that exercise the exact failure modes:
ThoughtType variants round-trip through V1→V2→V3 migrationThoughtRelationKind variants survive cross-version deserializationThoughtRole variants are preserved across schema boundariesThese tests run on every CI build. No future schema change should ship without covering mixed-version chains.
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.
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