ruvnet / ruvnet/agentdb

AgentDB 3.0.0-alpha.17 pins RVF 0.1.x and corrupts arbitrary string IDs

Open
#13 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
TypeScript
Stars
89
Forks
15
PR merge metrics
No merged PRs in 30d

Description

Versions

  • agentdb@3.0.0-alpha.17
  • Default nested dependency: @ruvector/rvf@0.1.9
  • Verified fixed dependency: @ruvector/rvf@0.2.3
  • Node 26.4.0, macOS arm64

Reproduction

Create a SelfLearningRvfBackend with learning: false, then insert four orthogonal vectors with these IDs:

[
  'SKU-alpha',
  'SKU-beta',
  '12345',
  'e17e8d3bddb7057a1fcef6e3489b1b85',
]

Self-query each vector and inspect getStatsAsync().count.

With AgentDB's default dependency tree, only 2 of 4 vectors were stored and the alphanumeric IDs collided at native ID 0.

I repeated the test in a clean install with an npm override forcing @ruvector/rvf@0.2.3. All IDs round-tripped exactly both before close and after reopening the RVF file.

Root cause

RVF 0.1.9's Node backend converts external IDs with Number(e.id), so arbitrary strings become NaN and ultimately collide.

RuVector commit 06493337726998047d025fc2b500f5844e6d60c0 fixed this by introducing a persistent string-to-i64 label map and released the fix in RVF 0.2.x. AgentDB's dependency range ^0.1.9 cannot select it.

Expected behavior

AgentDB should preserve UUID, hex, SKU-style, and other arbitrary string IDs across insert, query, close, and reopen.

Requested fix

  • Bump AgentDB's direct @ruvector/rvf dependency to ^0.2.3 or a newer compatible release.
  • Update the lockfile.
  • Add a native close/reopen regression test using UUID/hex/alphanumeric IDs.
  • Document that the RVF file and its .idmap.json sidecar form one durability/backup unit.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start at the AgentDB package manifest and lockfile, then trace SelfLearningRvfBackend and its native RVF insert, query, and close/reopen flow. Reproduce the issue with UUID, hex, SKU-style, and numeric-looking IDs, and add the requested native regression test. Done means @ruvector/rvf is updated, IDs survive reopening, and the RVF file plus .idmap.json sidecar are documented as one backup unit.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
databases
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Clearly specified
Newbie friendliness
70/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.