v3.38.14

ruvnet/ruflov3.38.14Aug 21, 2026by ruvnet

AI Summary

Fixes `memory_store` tags cache-loss issue where tags were dropped after successful writes, causing subsequent retrieves to return empty tags.

Key Highlights

  • Fixed `bridgeStoreEntry` to invalidate cache instead of storing partial entries.
  • Ensures `tags`, `access_count`, `createdAt`, and `updatedAt` are consistent after store and retrieve operations.

Full Release Notes

Follow-up patch to v3.38.13 — fixes the last of the recently-reported issues.

## Fix

**#3051** — `memory_store` accepted a `tags` array and returned `success: true`, but the very next `memory_retrieve` (or `memory_list`) came back with `tags: []`.

Root cause was in `bridgeStoreEntry`: after the DB insert (which serialized tags correctly to the `tags` column), the write-through cache set stored only a partial entry — `{ id, key, namespace, content, embedding }` — with no `tags`. The next `bridgeGetEntry` hit that cache and returned `tags: cached.tags || []` = `[]`.

Fix: replace the partial write-through with cache invalidation. Next read re-fetches the authoritative row (which correctly parses the `tags` JSON column) and repopulates the cache with the full shape. Side benefit: same defect had also caused `access_count`, `createdAt`, and `updatedAt` to be stale from the cache — invalidation fixes those too.

Proven regression test in `__tests__/memory-store-tags-cache-3051.test.ts`: pre-fix returns `tags: []`, post-fix returns the real tags.

## Install

- `npx ruflo@latest` (or `@alpha` / `@v3alpha` — all three tags aligned)

## Merged PR

Closes #3051 — [#3079](https://github.com/ruvnet/ruflo/pull/3079)

🤖 Generated with [RuFlo](https://github.com/ruvnet/ruflo)

https://claude.ai/code/session_0118jMsYhwHD5dx2vStENsEB