v3.43.0 — search that finds the right things, and fewer silent failures
RuFlo 3.43.0: search that finds the right things, and fewer silent failures
Released 23 September 2026. Upgrade:
npx ruflo@latest --version # should print: ruflo v3.43.0The three packages ruflo, claude-flow and @claude-flow/cli are all at 3.43.0. Nothing needs to be configured: install it and the fixes are in.
The short version
- Vector search had a bug that made it return the wrong results. That's fixed.
- Several places quietly failed while reporting success. They now tell you what went wrong.
- There's a new, optional, smarter way to pick which agent handles a task. It's off unless you turn it on.
- Two Windows problems are fixed that could make memory writes fail.
1. Search now finds what you stored
RuFlo remembers things (patterns, notes, past work) and finds them again by meaning, not exact words. It does this with a vector index, which you can picture as a map where similar ideas sit close together.
The index came from a library (@ruvector/router) with a bug in how it built that map. When data came in clusters, which real data usually does, the map had no roads between the clusters. A search starting in the wrong place could never reach the right one.
We measured it inside RuFlo's own install: 3,000 items in 20 groups, 100 searches, and for each search we checked how many of the 10 correct matches came back.
| Correct matches found | |
|---|---|
| Before (router 0.1.30) | about 7 in 100 |
| After (router 0.1.31) | 100 in 100 |
This affects the agent router (hooks route) and AgentDB, which both use this index.
2. No more quiet failures
A recurring theme in this release: code that failed but said it succeeded. Each of these now reports what actually happened.
- Memories saved without their "meaning". When the embedding model couldn't run, entries were stored with no vector and no warning. Search by meaning then couldn't find them. That is why pattern search sometimes found nothing while plain search found the same entry. RuFlo now falls back to its local embedding model, and if that also fails, the result says so (
embeddingError) instead of pretending. (#3325, #3375) - Made-up learning numbers. After a task,
hooks post-taskreported learning counts even when the learning system wasn't running. It now reports the real numbers, or shows "unknown". (#3353) - Confusing crash on a missing search term. Calling memory search without a query produced an internal error message. It now says plainly: "required parameter query was omitted". The same check covers store, retrieve and delete. (#3374)
3. Picking the right agent
When you give RuFlo a task, it picks which kind of agent should do it: coder, tester, researcher, and so on.
The bug: it matched words by spelling, not meaning. "Review the latest issues" went to the tester because "latest" contains "test". "Author" looked like "auth", and "prefix" looked like "fix". It now matches whole words. (#3401, #3402)
New and optional: a smarter picker built on @ruvector/typesafe. Instead of matching keywords, it compares what your task means with what each agent is for. It can also say "I'm not sure", and when it does, RuFlo uses the normal picker.
To try it:
npm install @ruvector/typesafe
export CLAUDE_FLOW_ROUTER_TYPESAFE=1
npx ruflo hooks route --task "sync and review latest issues"
# -> researcher (instead of tester)
npx ruflo doctor --component typesafe # shows whether it's installed and onIt is off by default. If the package isn't installed, RuFlo behaves exactly as before.
4. Windows fixes
- Saving settings could fail with "permission denied" (EPERM). On Windows, antivirus or another program can briefly lock a file. RuFlo now waits a moment and retries, and it no longer leaves temporary files behind. (#3398)
- Memory writes refused after a graph update. A database connection was held open for the whole session, which blocked later memory writes. It's now closed as soon as it's idle. (#3397)
These were tested by simulating the Windows behaviour on Linux. If you're on Windows and still see either problem, please comment on the issue.
Things you might notice
- If no embedding model is available on your machine, new memories are saved without a vector instead of a low-quality one. Search by meaning won't find those entries, but exact-text search still will. This trades a misleading result for an honest one.
- The standard agent picker can still misread "latest" in some phrasings, because it compares rough word fingerprints. The optional picker in section 3 is the fix.
hooks post-taskoutput can now shownullor "unknown" where it used to show a number. That value was never real.
How this release was checked
- Each change was merged with a test that fails without the fix and passes with it.
- Before publishing, the release checks ran locally:
- test suites: codex 241, security 583, federation 640, and every other required gate passed
- signed helper files verified
- each package installed from its packed file into an empty folder
- After publishing, everything was installed fresh from npm and checked again:
- version
- memory store and search, which found the stored item at a 0.83 match score
- the missing-query error message
- pattern store and search
- task routing
doctor
- What npm is serving matches, byte for byte, what was tested.
Full list
| Change | Pull request | Issue |
|---|---|---|
| Vector search finds the right matches (router 0.1.31) | #3399 | |
Optional smarter agent picker (@ruvector/typesafe) |
#3406 | |
| Agent picker matches whole words | #3402 | #3401 |
| Honest learning numbers after a task | #3403 | #3353 |
| Clear error when the search query is missing | #3400 | #3374 |
| Memories keep their meaning-vector, or say why not | #3407 | #3325, #3375 |
| Windows: retry locked settings file | #3404 | #3398 |
| Windows: release the graph database connection | #3405 | #3397 |
| All tools correctly categorised (release check) | direct commit |
Release: https://github.com/ruvnet/ruflo/releases/tag/v3.43.0
Also published as a gist: https://gist.github.com/ruvnet/7f136fe249060a0075c2ddc5c4dad978
🤖 Generated with RuFlo