v3.10.33 β CI/router/ONNX bug cluster
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 stepname("Guard 2 β smoke: generate ...") β YAML parser treatedsmoke: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:
--versiontriggered 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 defaultnpxand 30 s MCP stdio timeouts. - Fix: short-circuit
--version/-Vin both@claude-flow/cli/bin/cli.jsandruflo/bin/ruflo.jsbefore any heavy import β read version straight frompackage.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 toconsole.log(stdout) with messages likeLoading model: ...,Downloading: ...,π Initializing N worker threads.... That corrupts the MCP JSON-RPC stdio framer; strict clients like Codex never seeinitializecomplete. - Fix:
log-filters.tsnow redirects all known embedder progress prefixes fromconsole.logβconsole.error. Filter installed in bothbin/cli.js(covers MCP stdio path) andsrc/log-filters.ts(CLI path). - Verified end-to-end:
echo '{"jsonrpc":"2.0",...}' | npx ruflonow 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/structurematched inside unrelated words:decision/infrastructure/address/addendum. Confidence was a hardcoded0.8despite the matcher being a static keyword table, not a learned classifier. - Fix: token-list schema with
\bboundaries 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). ConfirmedsignatureValid=trueon a clean checkout. Operational fix belongs in the external scheduled runner's config (mustnpm cibefore invoking verify.mjs).
Out of scope
#2259 β memory store/list contradictory persistence surfaces
- Architectural fix in
memory-bridge.tsdispatch; tracked separately.
CI regression guards (so this can't happen again)
scripts/smoke-workflows-yaml.mjsβ parses every.github/workflows/*.ymland fails the build on any YAML syntax error. Direct guard against the #2267 silent-fail mode.scripts/smoke-router-regex.mjsβ renders the router fromhelpers-generator.ts::generateAgentRouter, asserts all 11 mis-route cases pass, confidence isn't 0.8, and\banchors are still in the source.- New
static-regression-guardsjob runs both smokes early inv3-ci.yml(no install/build β justjs-yaml + tsx).
Install
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.