OpenEmpiric (OEM) v0.97.1 focuses on hardening the local-first project memory runtime, addressing critical audit findings, resolving race conditions, and introducing diagnostic tools to guarantee stability for downstream developer agents.
What's New in v0.97.1
1. Hardened FileLock & Error Propagation
- Atomic Serialization: Replaced lock verification with atomic lock file creation (
os.O_CREAT | os.O_EXCL) containing JSON metadata (PID, Hostname, Timestamp, Owner UUID). - Stale Lock Recovery: Implemented local liveness checks (
os.kill) and age-based timeouts to safely recover from crashed or orphaned lock contexts automatically. - Fail-Fast Error Routing: Propagated
LockTimeoutErrorup through the state, materialization, indexing, and session commit layers. Lock contention now returns clear errors rather than silently reporting success.
2. Collision-Proof Concept ID Allocator
- Dynamic Sequence Scanning: Removed fragile registry-length counters. Candidate concept IDs are allocated by scanning the highest numeric IDs across the JSON registry,
.oem/wiki/directory stems, and active in-flight reserved IDs. - No Overwriting: Avoids overwriting existing wiki files or duplicating IDs under concurrent execution via thread-safe/process-safe transaction locks.
3. Safe Import Environment
- Zero Eager Mutation: Removed import-time clobbering of sensitive global environment variables (e.g.,
CUDA_VISIBLE_DEVICES,TOKENIZERS_PARALLELISM). - Scoped Entrypoints: Applied process-wide fallbacks only at executable boundaries (
oem.cli.mainandoem.server) to prevent host process corruption.
4. Non-Silent, Bounded session-end
- Phase Timings: Introduced a
PhaseTimerand progress reporting to give visible feedback during reflection, materialization, and indexing. - Safe Index Budgets: Enabled bounded indexing (
--index-budget-seconds) with checks placed at database write boundaries to prevent corrupted SQLite transactions. - Manual Indexing: Added the
oem indexcommand to manually rebuild derived search databases when indexing is deferred.
5. Self-Ingestion Safeguards & Cleanup Command
- Self-Ingestion Prevention: OEM-generated reports and wikis now automatically inject metadata tags to exclude them from being re-ingested as fresh conversation evidence.
oem cleanCommand: Introduced a utility supporting--dry-runand--apply(with automated backups) to detect and remove duplicate events, self-ingestion files, and legacy harness paths.
Summary of Changes
- Files modified: 39 updated.
- Test coverage: 306 automated tests passing (including 68 newly added targeted regression suites).
- Stability: Resolved all silent timeouts and race conditions on the
Instagram-Reelsproject.