Releases: cluster-127/mindfry
v1.9.0
Full Changelog: v1.8.0...v1.9.0
v1.8.0 — Trauma-Aware Restart
MindFry v1.8.0 — Trauma-Aware Restart
"If you're going to fall, at least remember how."
What's New
MindFry now remembers how it was shut down and adapts its behavior on restart.
Crash Recovery
When MindFry starts, it checks for a shutdown marker:
| State | Detection | Meaning |
|---|---|---|
| Normal | Graceful marker found | Clean restart, proceed normally |
| Shock | No marker found | Unclean shutdown (kill -9, crash, power loss) |
| Coma | Marker found, >1 hour old | Prolonged downtime, system was dormant |
┌─ Initialization ───────────────────────────────────
│ 📁 Mounting Akashic Records... ✓
│ 🔍 Checking recovery state... ⚠ (SHOCK detected)
│ 🧠 Initializing Psyche Arena... ✓
└────────────────────────────────────────────────────
Warmup Enforcement
During resurrection (snapshot loading), MindFry is cognitively unavailable:
- ✅
PINGandSTATS— Always allowed - ❌ All other operations →
ErrorCode::WarmingUp
This prevents half-recovered state corruption.
Performance
All new operations are sub-microsecond:
| Operation | Time |
|---|---|
recovery_analyzer_analyze |
1.21 ns |
warmup_tracker_is_ready |
1.19 ns |
exhaustion_level_from_energy |
715 ps |
Technical Changes
New Files
src/stability/recovery.rs— RecoveryState, RecoveryAnalyzer, ShutdownMarkerbenches/stability.rs— 10 new benchmarks
Modified Files
src/bin/server.rs— Startup recovery detection, shutdown marker writesrc/protocol/handler.rs— Warmup enforcement with WarmupTrackersrc/persistence/akashic.rs—read_shutdown_marker()/write_shutdown_marker()
Tests
- 89 tests passing (+6 recovery tests)
🚀 Upgrade
[dependencies]
mindfry = "1.8.0"🔮 What's Next
- v1.9.0: RecoveryState → temperature tier mapping
- Warmup duration based on snapshot size
- Resistance decay over time
📝 Commit Summary
feat: crash recovery and warmup enforcement (v1.8.0)
- Add recovery.rs with RecoveryState (Normal/Shock/Coma) and RecoveryAnalyzer
- Detect unclean shutdown (shock) and prolonged inactivity (coma) on startup
- Write graceful shutdown marker before exit
- Add WarmupTracker to CommandHandler with Ping/Stats exemption
- Return WarmingUp error during resurrection for non-exempt ops
- Add shutdown marker read/write to AkashicStore
- Add stability benchmark (10 benchmarks, all sub-microsecond)
- 89 tests passing
Full Changelog: v1.7.0...v1.8.0
v1.7.0
Full Changelog: v1.6.2...v1.7.0
v1.6.2
Full Changelog: v1.6.1...v1.6.2
v1.6.1
Full Changelog: v1.6.0...v1.6.1
Life Has Begun! 🌱
v1.6.0
🌱 Auto-Propagation - "Life Has Begun"
When stimulate(A) is called, energy automatically propagates through bonds.
Added
- SynapseEngine Integration: Handler wires synapse.propagate() on stimulate
- StimulateFlags: Control propagation behavior
0x00(default): Auto-propagate through bonds0x01NO_PROPAGATE: Surgical mode (direct update only)
- The Domino Test: A→B→C chain verification
- A: +0.9 (direct)
- B: +0.625 (hop 1, damped)
- C: +0.250 (hop 2, damped) ✓
Technical
- Used raw pointer trick to bypass RwLockWriteGuard borrow checker limitation
- SAFETY: bonds are read-only during propagate, psyche is mutated
v1.3.0
v1.3.0 Release Notes
🧬 Phase 3: Persistence & Resurrection Protocol
MindFry now remembers who it is across restarts.
✨ Highlights
- Cortex Persistence - Mood, personality, and decision state survive server restarts
- Resurrection Protocol - Automatic restore from latest snapshot on boot
- LineageIndexer - O(1) key-to-ID lookups via sled tree
🆕 New Features
| Feature | Description |
|---|---|
| MindFry::with_store() | Attach persistent storage |
| MindFry::resurrect() | Restore state from snapshot |
| LineageIndexer | Fast key→ID lookup (insert/get/remove/rebuild) |
| Snapshot handler | Real persistence to sled |
| Restore handler | Client-triggered restore |
🔧 Changes
- Version: 0.1.0 → 1.3.0
- License: MIT → BSL-1.1
- Consciousness: Mood-coupled sensitivity (base 5.0, modifier 0.5x-1.5x)
📊 Stats
- 70 tests passing
- 0 clippy warnings (after fix)
- Kill Test verified: Server resurrected with mood=0.75 preserved
🚀 Quick Start
import { MindFry } from '@mindfry/client';
const brain = new MindFry({ port: 9527 });
await brain.connect();
// Set mood
await brain.system.setMood(0.75);
// Create data
await brain.lineage.create({ key: 'session_123', energy: 0.9 });
// Take snapshot
await brain.system.snapshot('checkpoint_1');
// Later: Restore from snapshot
await brain.system.restore('checkpoint_1');💾 Storage mounted: ./mindfry_data
🔄 Restoring from snapshot 'checkpoint_1'...
🧠 Cortex restored (mood: 0.75)
✅ Resurrection complete: 1 lineages, 0 bonds
🧬 Resurrection successful📋 Known Limitations
- QueryPattern handler (deferred)
- Event subscription (deferred)
- Physics tuning (deferred)
v1.0.0: feat: MFBP Protocol v1.0 - binary wire protocol
🦀 MAJOR: Rust Pivot
MindFry has been rewritten in Rust as a standalone Cognitive Database Engine.
Added
- mindfry-core: Complete Rust implementation
PsycheArena: 32-byte cache-aligned Lineage storage with O(1) accessStrataArena: Ring buffer Engram history per lineageBondGraph: Living bonds with Hebbian learning and decayDecayEngine: Pre-computed LUT (256×32) for O(1) decay calculation
- Benchmarks: Criterion benchmarks for decay and graph operations
- Server binary: TCP server entry point (placeholder for MFBP)
- CEREBRO Design Doc: GUI visualization specification
Changed
- Technology: TypeScript → Rust
- Architecture: Library → Database Engine
- Positioning: "Memory Graph" → "Ephemeral Graph Database"
Moved
- Original TypeScript implementation moved to
legacy/directory
Technical Decisions (Cluster 127)
| Decision | Choice |
|---|---|
| Protocol | Custom TCP Binary (MFBP) |
| Persistence | sled (Rust-native) |
| Target | Dual (Server + WASM) |
| Integration | Network (TCP) |
v0.3.0 - Mythological Architecture
Mythological Architecture
🎭 Naming
| Layer | Name | Role |
|---|---|---|
| Consciousness | Psyche 🦋 | Soul container |
| Maintenance | Morpheus 💤 | God of Dreams |
| Persistence | AkashicRecords 📜 | Eternal Memory |
✨ New
- Morpheus: Event-hinted background maintenance (prune, transfer)
- AkashicRecords: Cold storage with access score decay
- Shell layer stats in demo
📊 Metrics
| Metric | Value |
|---|---|
| ESM | 24.89 KB |
| Tests | 12/12 |
v0.2.1 Release Notes
mindfry v0.2.1 Release Notes
🚀 Highlights
High-performance consciousness-inspired memory graph with 25x memory reduction and zero idle CPU cost.
✨ Features
Core Architecture
- Uint8Array Storage - 4 bytes per memory (vs ~100 bytes with objects)
- Lazy Decay - Energy computed on-demand, no tick() needed
- Priming-based Auto-Association - Automatic bonds on
remember()
Performance Optimizations
- Decay Lookup Table - Pre-computed exp() values (32 time × 256 rates)
- Epoch-bounded TopK Cache - Only recompute when state changes
- Bond Density Cap - Max 20 bonds per node
All notable changes to this project will be documented in this file.
[0.2.1] - 2026-01-14
Added
- Decay Lookup Table: Pre-computed exp() values (32 time buckets × 256 rates)
- Epoch-bounded TopK Cache: Only recomputes when state changes
- Bond Density Cap: Max 20 bonds per node
- Performance metrics in demo (JS Heap, Store Memory, Render Time)
Changed
getEnergy()now uses LUT instead ofMath.exp()topKConscious()cached and invalidated on epoch changecreateBond()returnsnullif density cap exceeded
[0.2.0] - 2026-01-14
Added
- Uint8Array Storage: 4 bytes per memory (25x reduction)
- Priming-based Auto-Association: Automatic bonds on
remember() - MemoryStore class: Low-level typed array backend
Changed
- Lazy decay model: energy computed on-demand
recall()switched from async to sync iterator- API:
remember(id, content, energy)instead of object config
Removed
tick()method (no longer needed)- Object-based Memory/Bond primitives
[0.1.0] - 2026-01-14
Added
- Initial implementation
- Memory/Bond primitives with object storage
- Mind core with conscious/subconscious layers
- Priming propagation
- Time skip demo