v3.32.21

ruvnet/ruflov3.32.21Jul 27, 2026by ruvnet

AI Summary

Fixes two defects in the `memory search` command where the `--type` flag was ignored and the `--threshold` flag was replaced by a fallback value. The update ensures search results are correctly filtered by type and thresholds are respected.

Key Highlights

  • Fixes `--type keyword|hybrid` flag to properly filter search results (keyword vs semantic vs hybrid).
  • Fixes `--threshold 0` to be respected instead of falling back to a default.
  • Ensures monotonic behavior where lower thresholds return more results.
  • Adds regression tests validating the fix.

New Features

  • Memory search type filtering
  • Threshold handling fix
  • Regression tests

Full Release Notes

Two-defect fix filed by markt-heximal in #2790.

## Fixed

**--type keyword|hybrid silently ignored**. `memory search` accepted, echoed, and then discarded the type flag — every search ran semantic. Now:
- `--type keyword` — listEntries + substring match on key+content, key hit scores 1.0, content hit 0.7
- `--type hybrid` — semantic ∪ keyword, dedup by (namespace, key), rerank

**--threshold 0 silently replaced by fallback**. Classic `0 || fallback` idiom. Fixed with nullish coalescing at 3 reporter-flagged sites (memory.ts, embeddings.ts twice) plus 4 same-class hooks.ts sites (per reporter's "worth grepping more broadly" note). Also reconciled the memory.ts declared-default (0.7) vs code-fallback (0.3) disagreement.

Reporter's diagnostic invariant now holds: **lower threshold returns ≥ results**, not fewer.

## Regression tests

**4/4** E2E via real execFileSync against bin/cli.js:
- --type keyword hits substring
- --type keyword returns 0 for absent substring
- --type hybrid ≥ semantic set
- --threshold 0 ≥ --threshold 0.01 (monotonic)

## Upgrade

```bash
npx ruflo@latest --version   # → 3.32.21
```

Closes: #2790.