v3/docs/adr/ADR-086-ruvllm-native-intelligence-backend.md
The claude-flow intelligence pipeline (ReasoningBank, EWC++, LoRA, SONA, cosine similarity) is implemented in pure JavaScript using Float32Array operations. @ruvector/[email protected] is installed and provides structured ML components.
| Component | ruvllm Status | Keep JS? | Rationale |
|---|---|---|---|
cosineSimilarity | Works but same speed as JS (38ms vs 36ms / 100k) | Yes | No perf gain |
ReasoningBank.store/getByType | Works | Partial | Use for type-based storage, keep JS HNSW for search |
ReasoningBank.findSimilar | Broken (returns 0 always) | Yes | ruvllm bug |
EwcManager.computePenalty | Returns NaN | Yes | ruvllm bug |
LoraAdapter.forward | Works but same speed, different output dims | Yes | API mismatch |
SonaCoordinator | Works: trajectory recording + background loop | Use | Real learning pipeline |
ContrastiveTrainer | Works: triplet training, epoch tracking | Use | Agent embedding learning |
TrainingPipeline | Works: checkpoint save/load, LoRA training | Use | Model training infrastructure |
SessionManager | Works: session create/export/import | Use | Session coordination |
A well-structured JS library with SIMD support flag. NOT native Rust/NAPI for most operations. Value is in the coordination framework, not raw speed.
@ruvector/ruvllm exports CJS only (dist/cjs/index.js). ESM await import() fails due to broken ESM export path. Resolution: use createRequire(import.meta.url) pattern (same as diskann-backend.ts, ruvector-training.ts).
Selectively integrate @ruvector/ruvllm as the intelligence coordinator, not a wholesale replacement:
SonaCoordinator — Trajectory-based learning pipeline in intelligence.tsContrastiveTrainer — Agent embedding improvement in sona-optimizer.tsTrainingPipeline — LoRA training with checkpoints in lora-adapter.tsReasoningBank (store/getByType) — Type-based pattern storage alongside JS HNSWfindSimilar broken, our HNSW workscreateRequire):cli/src/memory/intelligence.ts — loadRuvllmCoordinator() lazily loads SonaCoordinator, eagerly loaded during initializeIntelligence(). Trajectories forwarded via recordTrajectory(). Background learning via runBackgroundLearning(). Stats expose _ruvllmBackend and _ruvllmTrajectories.cli/src/memory/sona-optimizer.ts — loadContrastiveTrainer() lazily loads ContrastiveTrainer, eagerly loaded during SONAOptimizer.initialize(). Exposes trainAgentEmbeddings() and _contrastiveTrainer in stats.cli/src/ruvector/lora-adapter.ts — loadTrainingPipeline() lazily loads TrainingPipeline. initBackend() for eager loading. saveCheckpoint()/loadCheckpoint() with ruvllm primary + JSON fallback. Stats expose _trainingBackend.cli/src/commands/neural.ts (status) — Three new rows in status table: ruvllm Coordinator, Contrastive Trainer, Training Pipeline.cli/src/commands/neural.ts (train) — Auto-saves LoRA checkpoint after training completes via adapter.saveCheckpoint().cli/src/commands/neural.ts (optimize) — Triggers runBackgroundLearning() during optimization pass.cli/src/mcp-tools/hooks-tools.ts (intelligence) — Three new components in hooks_intelligence response: ruvllmCoordinator, contrastiveTrainer, trainingPipeline. Added to implementationStatus.working.cli/src/mcp-tools/hooks-tools.ts (intelligence stats) — New ruvllm stats object with coordinator/contrastiveTrainer/trainingBackend status.cli/src/mcp-tools/hooks-tools.ts (trajectory-end) — Calls runBackgroundLearning() after trajectory end for automatic learning.cli/src/mcp-tools/ruvllm-tools.ts (ruvllm_status) — Returns both WASM and native CJS backend status: { wasm: {...}, native: {...} }._backend reporting for all components via CLI and MCPneural status, hooks intelligence, and ruvllm_statusfindSimilar bug means we can't use it for search — mitigated by keeping JS HNSWNaN bug means we can't use it for consolidation — mitigated by keeping JS EWC++createRequire bridge — standard pattern in codebase__tests__/ruvllm-integration.test.ts — 11 tests covering all 3 backends, CJS import pattern, and graceful degradation__tests__/ruvllm-tools.test.ts — Updated status test for { wasm, native, graph } response shape__tests__/graph-backend.test.ts — 9 tests for graph-node backend (ADR-087)@ruvector/graph-node native graph database backend (companion integration)@ruvector packages evaluated but not integrated: @ruvector/gnn (NAPI broken), @ruvector/rvf (backend missing)