Repository navigation
mind v6.2.9 — independent re-audit closes the stale-decision races
An independent re-audit of the v6.2.8 hardening release: one line-by-line auditor over the whole file, one differential regression hunter that first reproduced v6.2.7's defects to validate the 6.2.8 fixes, one claims-and-channels auditor, plus a full maintainer read of every file. Every headline number of 6.2.8 reproduced exactly before this release changed anything (213/213 tests, fuzz 420/420, recall@1/@5 = 1.00, multilang 24/24, discrimination 12/12, soak 15/15 & 0/256 & 7/8, mutation 39% = 47/120, published sha256 verified from the live tag).
Fixes — each reproduced red with a regression test before the change:
- The last stale-decision races are closed. The merge keeps a per-node disk-freshness baseline (
last_accessed/access_countas of our last disk read) and re-validates stale decisions against the current disk copy inside the lock: a dream computed on a stale view can no longer prune a memory another process confirmed meanwhile (the GRACE_DAYS promise now holds under concurrency), a stale decayed weight no longermin()s down a fresh confirm, and persisting a duplicate-remember confidence upgrade no longer whole-copies stale counters over a concurrent confirm — confidence merges max-wins as its own field, the way counters merge as deltas. - The contradiction scan flags without clobbering: an existing user link between a conflicting pair keeps its relation and earned weight.
recall --atnormalizes compact and tz-aware forms before the lexicographic compare —--at 20260101returned wrong-era results on Python 3.11+.- A hand-deleted END guard no longer costs user content: export leaves the damaged file untouched and reports it, instead of silently truncating everything after BEGIN.
- One duplicate-remember boost number (BOOST_PER_ACCESS) on every path.
- Prune events journal after the save, and only for prunes that actually landed.
Verification on this release: 220/220 tests, CI 9/9 on the tagged commit (Linux/macOS/Windows × 3.9/3.12/3.14), fuzz 420/420, recall@1 = recall@5 = 1.00 at 100 and 1,000 nodes, multilang 24/24, discrimination 12/12, 180-day soak 15/15 core & 0/256 stale & 7/8 hot slots, dream determinism PASS, mutation kill rate 42% (50/120) re-measured on the final file.
sha256(mind.py) = 6dda66fcdb4352fb215f0f285d356e4a110617ff7714f3bdd1d96ab85f766663