v3.41.2

ruvnet/ruflov3.41.2Sep 10, 2026by ruvnet

Upgrading?

AI Summary

This patch release addresses three critical fixes regarding memory index protection, daemon auto-start configuration, and sibling store disclosure. It ensures that curated memory indices are no longer accidentally destroyed and that user settings for daemon auto-start are correctly honored across configuration files.

Key Highlights

  • Prevents `AutoMemoryBridge` from destroying user-curated memory indices by ensuring they are only grown or reordered, never shrunk.
  • Fixes `autoStart: false` setting by correcting file paths and key names (`claudeFlow.daemon.autoStart` vs `daemon.autostart`).
  • Implements sibling store disclosure in `retrieve`, `search`, and empty list views, making split databases visible on Windows.

New Features

  • Creation of `MEMORY.generated.md` file (side-by-side with preserved file)
  • Emission of `index:preserved` event
  • Sibling store disclosure in `retrieve`, `search`, and empty list views

Full Release Notes

Patch release. Three fixes from the issue backlog, each confirmed in source before any change and each with a regression test proven to fail without the fix.

## A curate can no longer destroy a user's memory index (#3224)

`AutoMemoryBridge.curateIndex()` rebuilt `MEMORY.md` from its own topic files and overwrote whatever was there. The `#1556` guard only skipped the write when *nothing* matched — but the bridge writes the first topic file itself, so the guard protected exactly one sync and then stopped applying. The reporter measured a hand-curated index of 75 lines and 49 links reduced to a 6-line stub.

A curate may now grow or reorder the index and never shrink it. When the generated view is smaller, the existing file is left untouched, the generated view is written beside it as `MEMORY.generated.md`, and the bridge emits `index:preserved`. The old failure was silent; a silent refusal would only be a quieter version of the same problem.

## `autoStart: false` is honoured (#3278)

Two mismatches were stacked:

| | what `init` writes | what the check read |
|---|---|---|
| file | `.claude/settings.json` | `claude-flow.config.json` |
| key | `claudeFlow.daemon.autoStart` | `daemon.autostart` |

A different file *and* a different capital S, so the setting a fresh project ships was never consulted — under a comment reading *"Opt-in only — prevents unintended token consumption (#1427, #1330)"*. Both files and both spellings are now read.

## Reads disclose the store they did not search (#3228, in part)

3.41.1 shipped the sibling-store disclosure in `memory list` alone. `retrieve`, `search` and an empty list kept returning a clean negative while the rows sat in the file they do not read — on the reported Windows install, 31,673 rows answering `found:false`.

**Still not fixed:** the Windows `0xC0000409` abort on a ~4.4 GB allocation with the native bridge enabled. That is [#2948](https://github.com/ruvnet/ruflo/issues/2948) and this release does not touch it. On Windows the split is now visible, not healed.

## Install

```
npx ruflo@3.41.2
```

Merge commit `df87b0db338a`.

Related Repositories