v3.10.6
ruvnet/ruflov3.10.6May 29, 2026by ruvnet
AI Summary
Memory, routing and statusline bug-fix release addressing five reproducible bugs reported by external contributors. Each verified and covered by regression tests.
Key Highlights
- #2219: Silent write loss on Node 24/26 - better-sqlite3 override to >=12.8.0
- #2226: Pattern store/search agreement - unified backend
- #2222: route feedback persistence - explicit saveModel() after feedback
- #2215: flashAttention state consistency - unified probe
New Features
- better-sqlite3 version override for Node 24/26 support
- Pattern store/search unified backend
- Route feedback persistence with explicit saveModel()
- Global version detection from process.execPath
- Unified flashAttention probing
Full Release Notes
## Ruflo v3.10.6 β memory, routing & statusline bug-fix release Five reproducible bugs reported by external contributors (**@pacphi**, **@casparml**, **@HF-teamdev**), each verified against source and covered by a regression test. Thanks to all three for the detailed, well-traced reports. ### π΄ #2219 β Silent write loss on Node 24/26 `agentdb` declares `better-sqlite3` as an **optional** dependency at `^11.8.1`, which has no prebuilt binary for Node 24/25/26. On those runtimes the optional native build fails *silently* (optional deps never error), and AgentDB drops to a non-persistent backend β stores appear to succeed but never land on disk. **Fix:** override `better-sqlite3` β `>=12.8.0` (ships Node 20β26 prebuilds) in **both** the root umbrella and the `ruflo` wrapper (root overrides don't propagate to the published wrapper β the #2112 lesson). A new CI guard (`audit-better-sqlite3-override.mjs`) keeps the override pinned so this can't regress. > If you installed globally on Node 24/26 before this release: `npm i -g ruflo@latest` restores the native backend. ### π΄ #2226 β `agentdb_pattern-store` / `agentdb_pattern-search` never agreed The store and search MCP tools hit **disjoint backends**, so a stored pattern was never returned by search. Two paths fixed: - **Controller present:** `bridgeSearchPatterns` now reads `LocalReasoningBank.findSimilar`/`getAll` β the same backend the store writes to. - **Controller absent (the common case):** the `memory-store-fallback` search now hydrates each entry's content via `getEntry` before matching β `listEntries` returns metadata only (see #2014), so the substring scan previously matched nothing. ### π #2222 β `route feedback` was a no-op Feedback applied the Q-learner update in memory, but the CLI process exits before the `autoSaveInterval` flush fires, so route-learning never persisted across invocations. **Fix:** explicit awaited `router.saveModel()` after feedback. ### π‘ #2221 β Statusline showed `RuFlo V3.6` on global installs `getPkgVersion()` never probed the global npm root, so `npm i -g ruflo` fell back to the hard-coded default version. **Fix:** derive the global `node_modules` dir from `process.execPath` (no npm spawn β statusline renders often); covers nvm/mise and Windows layouts. ### π‘ #2215 β `flashAttention` reported contradictory state `system_info` emitted a hard-coded `flashAttention: false` while `hooks_intelligence` reported the live probe. **Fix:** `system_info` now runs the same `getFlashAttention()` probe as the authoritative path, so the two tools can't disagree. --- ### Verification - New regression suite `bug-cluster-2219-2226.test.ts` β 5/5 (incl. end-to-end storeβsearch roundtrip) - Statusline drift guard β 8/8 (regenerated `.cjs` byte-identical to generator) - `tsc` clean; CI **29/29 green** including the new better-sqlite3 override guard ### Install ```bash npm i -g ruflo@latest # or @3.10.6 npx ruflo@latest --version # β 3.10.6 ``` All three packages (`@claude-flow/cli`, `claude-flow`, `ruflo`) published at 3.10.6 with `latest`/`alpha`/`v3alpha` in lockstep. π€ Generated with [RuFlo](https://github.com/ruvnet/ruflo)