v3.10.33
ruvnet/ruflov3.10.33Jun 2, 2026by ruvnet
AI Summary
Critical bug cluster fixing CI failures, version command latency, MCP stdio corruption, and router mis-routing issues.
Key Highlights
- Fixed v3-ci.yml 5 consecutive failures (unquoted colon in YAML step name)
- Fixed --version cold-start 60s+ → 33ms (short-circuit before heavy imports)
- Fixed MCP stdio writing non-JSON (redirected embedder console.log to stderr)
- Fixed router mis-routing at 80% confidence (added word boundary anchors)
- New regression guards: smoke-workflows-yaml.mjs and smoke-router-regex.mjs
New Features
- Fast version flag in CLI and ruflo binaries
- Log filters for embedder progress output
- Token-list schema with \b boundaries for router keywords
Full Release Notes
## v3.10.33 — CI/router/ONNX bug cluster
### Critical / high-severity fixes from open issues
**#2267 [HIGH] — v3-ci.yml 5 consecutive failures on main**
- Root cause: unquoted `:` inside a step `name` ("Guard 2 — smoke: generate ...") — YAML parser treated `smoke:` as a second mapping key and rejected the whole workflow. GitHub Actions accepted the push, scheduled the run, and produced **zero jobs** — invisible to green-dashboard-style monitoring.
- Fix: quote the name. Workflow now parses to 53 jobs.
**#2256 [HIGH] — `--version` blocks 60+ s on cold ONNX cache**
- Root cause: `--version` triggered the full CLI bootstrap, which eagerly loaded ruvector + downloaded a 23 MB ONNX model from HuggingFace. Cold-cache cost: ~60–90 s wall time, causing SIGTERM (exit 143) under the default `npx` and 30 s MCP stdio timeouts.
- Fix: short-circuit `--version`/`-V` in both `@claude-flow/cli/bin/cli.js` and `ruflo/bin/ruflo.js` *before* any heavy import — read version straight from `package.json`.
- **Measured: 60s+ → 33 ms** against the published `ruflo@3.10.33`.
**#2253 [Critical] — MCP stdio writes non-JSON to stdout, times out in Codex**
- Root cause: upstream embedder libraries (`ruvector`, `ruvector-onnx-embeddings-wasm`) emit progress to `console.log` (stdout) with messages like `Loading model: ...`, ` Downloading: ...`, `🚀 Initializing N worker threads...`. That corrupts the MCP JSON-RPC stdio framer; strict clients like Codex never see `initialize` complete.
- Fix: `log-filters.ts` now redirects all known embedder progress prefixes from `console.log` → `console.error`. Filter installed in both `bin/cli.js` (covers MCP stdio path) and `src/log-filters.ts` (CLI path).
- **Verified end-to-end**: `echo '{"jsonrpc":"2.0",...}' | npx ruflo` now returns clean JSON-RPC on stdout with all ONNX noise routed to stderr.
**#2257 [High] — `.claude/helpers/router.js` mis-routes at 80% confidence via unanchored regex**
- Root cause: keyword patterns like `cd`/`ci`/`ui`/`add`/`structure` matched inside unrelated words: `decision`/`infrastructure`/`address`/`addendum`. Confidence was a hardcoded `0.8` despite the matcher being a static keyword table, not a learned classifier.
- Fix: token-list schema with `\b` boundaries on single tokens (phrases keep whitespace as a natural boundary). Matched-confidence 0.8→0.6, fall-through 0.5→0.3 to reflect the heuristic-not-learned nature.
- Validated against all 11 reported mis-route cases plus the source-of-truth generator output.
### Already fixed (waiting for this publish)
**#2246 — `memory_search_unified` 6-namespace hardcode**
- Already fixed in source (3.10.29, ADR-089). Reporter's environment was 3.10.22. Dynamic namespace enumeration now ships in 3.10.33.
### Not a code bug
**#2243 — `verify.mjs` cannot load `@noble/ed25519`**
- Script already handles missing dep with a clear `Fix: ...` message and exits 2 (precondition failure). Confirmed `signatureValid=true` on a clean checkout. Operational fix belongs in the external scheduled runner's config (must `npm ci` before invoking verify.mjs).
### Out of scope
**#2259 — memory store/list contradictory persistence surfaces**
- Architectural fix in `memory-bridge.ts` dispatch; tracked separately.
### CI regression guards (so this can't happen again)
- **`scripts/smoke-workflows-yaml.mjs`** — parses every `.github/workflows/*.yml` and fails the build on any YAML syntax error. Direct guard against the #2267 silent-fail mode.
- **`scripts/smoke-router-regex.mjs`** — renders the router from `helpers-generator.ts::generateAgentRouter`, asserts all 11 mis-route cases pass, confidence isn't 0.8, and `\b` anchors are still in the source.
- New `static-regression-guards` job runs both smokes early in `v3-ci.yml` (no install/build — just `js-yaml + tsx`).
### Install
```bash
npx ruflo@latest --version # → ruflo v3.10.33 (33 ms)
npx @claude-flow/cli@latest --version # → ruflo v3.10.33 (35 ms)
```
All three dist-tags (`latest`, `alpha`, `v3alpha`) point at 3.10.33 across all three packages.