# ruflo v3.38.3 — v3.38.3 — hooks intelligence --train actually trains - Product: ruflo (https://whatsnew.fyi/product/ruflo) - Vendor: ruflo - Date: 2026-08-12 - Version: v3.38.3 - Original notes: https://github.com/ruvnet/ruflo/releases/tag/v3.38.3 - Permalink: https://whatsnew.fyi/product/ruflo/releases/v3.38.3 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **fixed** — Fixed `ruflo hooks intelligence --train` to actually train instead of exiting with a success dashboard without making changes - **fixed** — Fixed `hooks_intelligence` handler to read and act on the `--train` flag by calling `distillLearning()` and reporting actual training results - **changed** — Changed `--status` to immediately reflect real training passes with current timestamp instead of showing stale aged values ##### 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)