v3.38.3

ruvnet/ruflov3.38.3Aug 12, 2026by ruvnet

AI Summary

Fixes `hooks intelligence --train` to execute actual training logic instead of printing a fake success message.

Key Highlights

  • `hooks intelligence --train` now calls `distillLearning` to perform actual training cycles.
  • Fixed `--status` to reflect the real age of the last training pass instead of a stale, aged value.

Full Release Notes

## Fixes

**#2940 — `ruflo hooks intelligence --train` exited 0 and printed a full success dashboard without ever training anything.** The `--train` flag was declared on the `hooks_intelligence` MCP tool's input schema but never read — the handler always returned the same read-only status snapshot, and the CLI's `--train` branch was a cosmetic 500ms sleep followed by an unconditional "Training cycle completed". `lastAdaptation` (what `--status` reports as "Last Training") never moved, so it could only ever *age* no matter how many times `--train` ran — a naive `--status` diff looked like progress in exactly the wrong direction.

Now `hooks_intelligence` calls the existing `distillLearning()` when `--train` is passed and reports what actually happened: patterns distilled (with the count), ran but found nothing new to distill (the common case — SONA already adapts incrementally per-trajectory, so a manual pass legitimately finding nothing new isn't an error), or the intelligence system being unavailable. `--status` immediately reflects a real training pass (`0s ago`) instead of showing a stale, aged value.

## Also investigated this cycle

- **#2908** (`hooks post-task --store-results` writes an entry `memory search` never finds) — root-caused precisely: `memory-bridge.ts`'s `getRegistry()` is a process-wide singleton that locks onto whichever DB path its first caller in a process supplies, and `hooks post-task` makes several bridge calls before the write in question — so a dbPath fix scoped to just that call site is silently discarded. Same class of issue as #2259, just resurfaced under different filenames on the current codebase. Did not ship a narrow fix since it doesn't actually work end-to-end (verified by trying). Full mechanism: [#2908 comment](https://github.com/ruvnet/ruflo/issues/2908#issuecomment-5270214991).
- **#2905** (`npx @claude-flow/cli@alpha --version` "hangs" on a cold cache) — reframed: it's not an infinite hang, a truly cold install completes in ~3 minutes (verified), just slow enough to look like one under a 60–90s timeout. Root-caused one concrete, narrow contributor: `@agntcy/slim-bindings`'s nine platform sub-packages are all missing `os`/`cpu` fields, so npm installs all nine on every platform instead of the one that matches. Filed upstream: [agntcy/slim#1981](https://github.com/agntcy/slim/issues/1981).

## Links

- PR: [#2988](https://github.com/ruvnet/ruflo/pull/2988)
- Previous release: [v3.38.2](https://github.com/ruvnet/ruflo/releases/tag/v3.38.2)