v3.10.9
ruvnet/ruflov3.10.9May 29, 2026by ruvnet
AI Summary
Completes the intelligence-audit punch-list with per-task bandit learning and honest labeling. Fixes genuinely-fixable items and documents honest ceilings for the rest.
Key Highlights
- Per-task bandit priors (ADR-142) keyed by complexity bucket (low/med/high)
- EWC++ honesty: F_i clarified as heuristic embedding-importance proxy
- HNSW backend label: ruvector-native vs ruvector-stub-search-disabled
- MicroLoRA applyUpdates() signature bug fixed
- Honest ceilings documented (WASM HNSW, MicroLoRA apply)
New Features
- Per-task bandit priors with complexity bucket routing
- EWC++ F_i clarification
- HNSW backend visibility
- MicroLoRA signature fix
Full Release Notes
## Ruflo v3.10.9 — per-task bandit learning + honest intelligence labeling Completes the intelligence-audit punch-list (`docs/reviews/intelligence-system-audit-2026-05-29.md`): fixes the genuinely-fixable items and documents honest ceilings for the rest — without fabricating any signals. ### Fixed - **Per-task bandit priors (ADR-142)** — model-routing Beta priors are now keyed by complexity bucket (low/med/high) instead of global-per-model. Failures on one task type no longer suppress a model for all task types (the "8 Haiku failures suppress Haiku everywhere" defect). Backward-compatible schema migration (v1 flat → seed all buckets, `version:2`); proven by a per-bucket isolation test + a migration test. - **EWC++ honesty** — clarifies `F_i` is a heuristic embedding-importance proxy (`embedding_i²`), not true gradient-curvature Fisher. - **HNSW backend label** — `ruvector-native` vs `ruvector-stub-search-disabled`; `isWasm()===true` means the broken stub (search returns `[]`), not acceleration, so a regression is now visible. - **MicroLoRA** — fixed the genuine `applyUpdates()` signature bug (passed a `Float32Array` where the WASM runtime wants a scalar learning rate). ### Honest ceilings (NOT fixable in-repo — documented, not faked) - **WASM-accelerated HNSW**: no WASM HNSW build exists in the stack; native NAPI is already fastest (~1.9–6.5× at N=20k); "150×–12,500×" is unreachable here. - **WASM MicroLoRA `apply()`**: empirically still inert after the flush (Δ=0 after 200 adapts). We deliberately do **not** synthesize a gradient from the scalar quality to fake adaptation — that would be a fabricated signal (the same class as the Flash `Math.random` metric the audit removed). All three packages published at 3.10.9 (`latest`/`alpha`/`v3alpha` in lockstep). CI: 29/29 green. This closes the intelligence punch-list — every item is now fixed, shipped, or documented with an honest reason it's deferred. 🤖 Generated with [RuFlo](https://github.com/ruvnet/ruflo)