Filesystem storage now enforces single-writer, many-reader semantics. A second writer on the same data directory throws at init time with the holder's PID, hostname, and heartbeat — replacing the previous silent stale-reads failure mode. - New: `Brainy.openReadOnly()` — coexists with a live writer, every mutation throws clearly. - New: writer lock at `<rootDir>/locks/_writer.lock` with 10s heartbeat and stale-detection (PID liveness + heartbeat freshness). - New: cross-process flush-request RPC (filesystem-based, no signals) so inspectors can force fresh state on demand. - New: `brain.stats()`, `brain.explain(findParams)`, `brain.health()` for operator-facing introspection. - New: `brainy inspect` CLI with 13 subcommands (stats, find, get, relations, explain, health, sample, fields, dump, watch, backup, repair, diff), all read-only by default. - Same-PID re-opens allowed with a warning (preserves test "simulate restart" patterns). - Storage instances passed directly via `storage: new MemoryStorage()` are now honoured instead of silently falling through to the filesystem auto-detect path. Brainy + Cortex compose under this model — the lock covers both because they share `rootDir`, Cortex segments are immutable mmap files, and MANIFEST updates use atomic-rename. |
||
|---|---|---|
| .. | ||
| aggregation.md | ||
| distributed-system.md | ||
| enterprise-for-everyone.md | ||
| framework-integration.md | ||
| import-anything.md | ||
| import-flow.md | ||
| import-progress-examples.md | ||
| import-progress-implementation.md | ||
| import-quick-reference.md | ||
| inspection.md | ||
| installation.md | ||
| migrating-to-v4.md | ||
| MIGRATING_TO_V5.11.md | ||
| migration-3.36.0.md | ||
| model-loading.md | ||
| natural-language.md | ||
| neural-api.md | ||
| nextjs-integration.md | ||
| quick-start.md | ||
| schema-migrations.md | ||
| standard-import-progress.md | ||
| storage-adapters.md | ||
| streaming-imports.md | ||
| vue-integration.md | ||