README.md: - Fix badly stale LongMemEval numbers (badge said Hit@5 46%, table showed fabricated ~46%/~0.34/~72% figures that never matched BENCHMARKS.md's actual results of Hit@5 100% session / 84.4% turn-level, MRR 1.0/0.6597) - Remove clawhdf5-types from the Crate Map — that crate was removed in an earlier cleanup pass but the README diagram was never updated; fix the crate count (16, not 17) and stale line-of-code figures (72,087/84K -> ~92K) - Fix a dead #benchmarks badge anchor (no such heading exists) -> #performance - Document the new clawhdf5-ann `parallel` feature (had no Feature Flags entry) - Note WAL's CRC32 per-entry check, link the new tank LongMemEval/SIMD/ vector-search reproduction section, update stale test-count comment (417+ -> 1,650+) and Phase 2 roadmap blurb (LongMemEval is now done) ROADMAP.md: - Check off "Academic benchmark cross-validation" (done via the tank LongMemEval re-run) and add a new "Recently closed out" section summarizing the Tier 3-4 hardening pass (Android JNI validation, pyo3 bump, WAL CRC32, bounds-check audit + fuzz harness that found 3 real bugs, HNSW optional parallel feature, workspace.dependencies) - Update stale test count (1,546 -> 1,650+) and last-updated date CLAUDE.md: mention WAL's per-entry CRC32 check CHANGELOG.md: add Security/Performance/Architecture/Documentation entries under Unreleased summarizing all of Tiers 1-4 (this had not been touched since 2026-06-04, predating the entire hardening pass)
12 KiB
ClawhDF5 Roadmap — Agent Memory Evolution
Making clawhdf5 the defacto agentic memory solution. Single file. Pure Rust. Zero dependencies. Trusted everywhere.
Track 1: Knowledge Graph in HDF5
Status: 🟢 Phase 1 Complete
Priority: Critical
Crate: clawhdf5-agent
- 1.1 Entity storage — entities with properties, embeddings, timestamps (created_at/updated_at)
- 1.2 Relation storage — typed edges with RelationType enum (Temporal/Causal/Associative/Hierarchical/Custom), metadata, timestamps
- 1.3 Entity extraction helpers — rule-based extraction (Person, Org, Location, Date, Technology, Project) with extract_and_store_entities() integration
- 1.4 Entity resolution — fuzzy name matching (Levenshtein distance) via resolve_or_create()
- 1.5 Graph traversal queries — BFS neighbors with depth, subgraph extraction from seeds
- 1.6 Spreading activation — weighted activation propagation with configurable decay
- 1.7 Graph-aware retrieval — get_entity_context() for formatted context injection
- 1.8 Tests — comprehensive tests for all new features
Research: Graph-Native Cognitive Memory (2026), Graph-based Agent Memory survey (2026), SYNAPSE (2025)
Track 2: Memory Consolidation Engine
Status: 🟢 Phase 1 Complete
Priority: Critical
Crate: clawhdf5-agent
- 2.1 Importance scoring — surprise (novelty), correction boost, length scoring with configurable weights
- 2.2 Three-tier memory model — Working → Episodic → Semantic with bounded capacities
- 2.3 Time-decay with reactivation — exponential decay with configurable half-life, access resets timestamp
- 2.4 Bounded memory with graceful degradation — evict lowest-decay entries when over capacity
- 2.5 Consolidation cycles — promote/evict across tiers based on importance and access thresholds
- 2.6 Memory statistics — ConsolidationStats with per-tier counts, eviction/promotion tracking
- 2.7 Tests — comprehensive tests for all features
Research: CraniMem (2026), D-MEM (2026), AI Hippocampus survey (2026)
Track 3: Hybrid Retrieval Pipeline
Status: 🟢 Phase 1 Complete
Priority: High
Crate: clawhdf5-agent
- 3.1 Reciprocal Rank Fusion (RRF) — rrf_hybrid_search() with k=60 constant
- 3.2 Multi-factor re-ranking — temporal decay, source authority hierarchy, activation scores (reranker.rs)
- 3.3 Low-confidence rejection — min_score threshold, gap filtering, max_results (confidence.rs)
- 3.4 Query expansion — synonyms, acronyms, temporal rewrites, morphological variants, knowledge graph aliases + expanded_search() with RRF merge
- 3.5 Result explanation — ReRankResult with full score breakdown per factor
- 3.6 Configurable pipeline — ReRankConfig + ConfidenceConfig with tunable weights/thresholds
- 3.7 Tests + MemX-comparable benchmarks — 5 integration tests (Hit@1≥90%, search<500ms@100K, BM25<200ms@100K, hybrid<50ms@10K, compact<200ms@10K)
Research: MemX (2026), SwiftMem (2026)
Track 4: Temporal Reasoning
Status: 🟢 Phase 1 Complete
Priority: High
Crate: clawhdf5-agent
- 4.1 Temporal index — sorted timestamp index with binary search, insert/remove
- 4.2 Time-range queries — range_query, before, after, latest, earliest
- 4.3 Session DAG — parent/child linking, chain walking, time-range overlap queries
- 4.4 Temporal re-ranking — query hint enum (Latest/Earliest/Around/Between/None) with boost scoring
- 4.5 Temporal entity tracking — EntityTimeline with state change history + point-in-time reconstruction
- 4.6 Tests — comprehensive tests for all features
Research: MemX temporal gaps (≤43.6% Hit@5), MemoryArena multi-session tasks (2026)
Track 5: Memory Security & Provenance
Status: 🟢 Phase 1 Complete
Priority: Medium-High
Crate: clawhdf5-agent
- 5.1 Source attribution — MemoryProvenance with source, creator, session, FNV-1a content hash
- 5.2 Write anomaly detection — rate limiting, 15 injection patterns, source distribution analysis
- 5.3 Source isolation — per-MemorySource sub-stores preventing cross-contamination
- 5.4 Memory integrity verification — content hash comparison via verify_integrity()
- 5.5 Poisoning resistance — pattern detection for prompt injection attempts
- 5.6 Tests — comprehensive tests including adversarial patterns
Research: MemoryGraft (2025), SSGM Framework (2026)
Track 6: Multi-Modal Memory
Status: 🟢 Phase 1 Complete
Priority: Medium
Crate: clawhdf5-agent
- 6.1 Image embedding storage — ModalEmbedding with model provenance (CLIP, SigLIP, etc.)
- 6.2 Audio fingerprints — Audio modality with embedding storage
- 6.3 Multi-modal search — search_by_modality (filtered) + search_cross_modal (all embeddings)
- 6.4 Observation records — raw perception vs interpretation with confidence scoring
- 6.5 Media reference storage — MediaRef with Path/Url/Inline, MIME types, FNV-1a checksums
- 6.6 Tests — 35 comprehensive tests
Research: Neuro-Symbolic Memory (2026), RAGdb multi-modal RAG (2025)
Track 7: OpenClaw Integration
Status: 🟢 Complete
Priority: Critical (for adoption)
Crates: clawhdf5-agent, clawhdf5-napi
- 7.1 Memory backend trait — MemoryBackend with search/get/write/ingest/export/stats
- 7.2 Hybrid retrieval pipeline — ClawhdfBackend wires RRF → reranker → confidence rejection
- 7.3 Markdown import/export — MarkdownParser + MarkdownExporter with line tracking + metadata
- 7.4 memory_search tool — backed by full hybrid retrieval pipeline
- 7.5 memory_get tool — get() with path + line range support
- 7.6 Compaction integration — run_compaction() (decay + compact + WAL flush), run_consolidation() (hippocampal engine), tick_session(), flush_wal()
- 7.7 Config surface —
memory.backend = "clawhdf5"schema documented in docs/openclaw-config.md - 7.8 Documentation + migration guide — docs/migration-guide.md, docs/openclaw-integration.md (architecture, full API reference, code patterns)
Node.js bridge: clawhdf5-napi (napi-rs) → @redclaw/clawhdf5 npm package with full TypeScript types.
Track 8: Benchmarking & Validation
Status: 🟢 Complete
Priority: High
Crates: clawhdf5-agent, clawhdf5-bench
- 8.1 MemoryArena benchmark — 35 queries, 50 sessions, Hit@10=91.4%, MRR=0.547
- 8.2 LongMemEval benchmark — 500 queries, session Hit@1=100%, turn Hit@5=84.4% (beats MemX 51.6%), MRR=0.660
- 8.3 Latency benchmarks — vector search at 1K/10K/100K, hybrid/RRF, graph traversal, consolidation, temporal
- 8.4 Memory footprint — 1.7 KB/record uncompressed, 282 B compressed (6.2x ratio), 100K+ rec/s ingestion
- 8.5 Consolidation efficiency — 8.8x search speedup, 90% noise eviction, zero quality loss
- 8.6 Cross-platform benchmarks — x86 measured, ARM estimated, cross_platform.sh script
- 8.7 Published results in BENCHMARKS.md with ephemeral tier Redis comparison (70-140x faster)
Implementation Order
Phase 1: Tracks 1, 2, 3 — core memory intelligence 🟢 Complete
Phase 2: Track 4 (temporal) + Track 5 (security) 🟢 Complete
Phase 3: Track 6 (multi-modal) + Track 7 (OpenClaw integration) 🟢 Complete
Phase 4: Track 8 (benchmarking + validation) 🟢 Complete
All 8 tracks delivered. 1,650+ tests passing, zero clippy warnings.
What's Next
Verified against current repo state on 2026-08-05 (see also docs/superpowers/plans/ for the filter-codec/format-write/MPI-IO work, now shipped):
- TypeScript bridge not wired into CI —
packages/clawhdf5-node/already has a complete, working napi-rs package (package.json, tsconfig, hand-written TS wrapper matching all 21#[napi]items, Jest test suite, README); it isn't published to npm and has no committed lockfile - Publish crates to crates.io — no
publishconfig anywhere in the workspace yet - Python wheel distribution via maturin —
crates/clawhdf5-py/pyproject.tomlexists (maturin-buildable locally) but wheels aren't published anywhere chunked_read.rs/data_read.rsfull bounds-check audit + scheduled fuzz campaigns (the newfuzz_dataset_readtarget covers the two files' main entry points; a full manual audit of every indexing site is still open) — see Tier 4 below- WAL per-entry checksum landed as CRC32 (see below); a stronger per-entry format (explicit length prefix, avoiding the read-then-verify restructuring) could still be revisited if profiling shows it matters
- HNSW build parallelism is still narrow (only
prune_connections); the correctness-sensitive outer insert loop needs its own dedicated design pass before parallelizing
Recently closed out (2026-08-05, Tier 3–4 hardening pass)
- Academic benchmark cross-validation — LongMemEval reproduced against MemX on tank (Ryzen 7 7800X3D): turn-level Hit@5 84.4% vs MemX's 51.6%; recall numbers are deterministic and reproduce exactly across machines. SIMD/Parallelism and Vector Search sections also re-run and dated. See BENCHMARKS.md § Independent Validation: tank — LongMemEval & Vector Search
- Android JNI (
clawhdf5-android): validateembedding_len/query_embedding_lenagainst the handle's configuredembedding_dimbefore constructing a slice from a raw pointer clawhdf5-py: bumped pyo3/numpy 0.28 → 0.29, clearing two RUSTSEC advisories- WAL (
clawhdf5-agent): length-prefix caps (MAX_WAL_FIELD_LEN) to reject a corrupted length claim before allocating, then a full per-entry CRC32 trailer (WAL_VERSION2) so a bit-flip stops replay cleanly instead of loading corrupted data; old-format WAL files still read correctly and are migrated on next open chunked_read.rs/data_read.rs/local_heap.rsbounds-check audit: addedensure_lenoverflow guards, a recursion-depth guard against cyclic B-trees, and a fix for an unguarded compound-datatype byte-offset overrun. Added a newfuzz_dataset_readcargo-fuzz target exercising the contiguous/chunked/compact read paths — it found and we fixed 3 real crash bugs (integer-overflow panics) within the first few runsclawhdf5-ann: optionalparallelfeature (rayon) for HNSW'sprune_connectionsneighbor-distance computation[workspace.dependencies]added fortempfile/criterion/half/serde, fixing a real version skew onhalf(2 vs 2.7)
Recently closed out (2026-08-05 hardening pass)
- CI/CD pipeline —
.gitea/workflows/ci.ymlnow runsscripts/ci-test.sh(fmt, clippy, tests, no_std check) on push/PR tomain - Fixed no_std build breakage in
clawhdf5-format(missing alloc imports,AtomicU64unsupported on thumbv7em,f64::powirequiring std/libm) - Fixed version skew:
clawhdf5-py(pyproject.toml) andpackages/clawhdf5-node(package.json) were both behind the actual crate version
Recently closed out (2026-08-03 cleanup pass)
- Removed
clawhdf5-types— it was an empty 1-line stub crate; shared type definitions already live inclawhdf5-format, so CLAUDE.md and the workspace manifest were corrected instead of filling it in - Superblock v4 (page-buffer mode) read/write — the only unimplemented task from
docs/superpowers/plans/2026-06-29-format-write-extensions.md; now done (Superblock::parse_v4/serialize,FileWriter::with_page_size) - Reconciled the three
docs/superpowers/plans/*.mddocs against actual shipped code — they were pre-work plans ford6c4d4f(2026-06-30), committed to git late; checkboxes now reflect reality
Last updated: 2026-08-05