You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
After exhaustive testing of every top-level subcommand in ruvector@0.2.23, the core data plane is non-functional. Failures cluster into 3 root causes, all in scope of the existing release-hygiene tracker (#399, #400, #401):
A. VectorDB API drift — CLI calls methods that no longer exist on @ruvector/core's native binding.
B. GNN / attention N-API binding errors — typed-array marshalling broken across all GNN ops.
CLI-parser, help text, info/status commands, and a few utility commands (decompile, mcp tools, llm embed, identity, brain) are all healthy — so the CLI shell is fine, the binding integration is what's broken.
A. VectorDB API drift — entire CRUD lifecycle blocked
The CLI assumes a VectorDB API surface (insertBatch, on-disk persistence) that doesn't match what @ruvector/core@0.1.31 actually ships.
A1. create claims success but writes no file
$ ruvector create -d 4 ./test.db
- Creating database...
✔ Database created: ./test.db
Dimension: 4
Metric: cosine
Implementation: native (@ruvector/core)
$ ls test.db
ls: cannot access 'test.db': No such file or directory # <-- nothing on disk
The "✔" success line is printed but no file is created. Every downstream read/write then fails with ENOENT.
A2. insert calls a missing method
$ ruvector insert ./test.db ./vecs.json
✖ Failed to insert vectors
db.insertBatch is not a function
db.insertBatch doesn't exist on the current VectorDB binding. Same root cause causes:
ruvector benchmark → db.insertBatch is not a function (same as above)
A3. stats / search / export / import are all blocked
All fail with ENOENT because create doesn't actually persist. So even before hitting any API drift, the file simply isn't there. After one round-trip, the entire VectorDB CLI workflow is unusable.
Likely fix
Audit the CLI handlers in bin/cli.js against the current @ruvector/core surface. Either:
Wire the CLI to whatever the actual method names are now (add, addBatch, etc.), or
Restore insertBatch / persistence on @ruvector/core if it was an unintentional regression.
B. GNN + attention N-API errors — every operation crashes
Every meaningful op in the gnn and attention subsystems crashes:
$ ruvector gnn layer -i 8 -h 16 --test
✔ GNN Layer created
- Running test forward pass...
✖ Failed to create GNN layer
Get TypedArray info failed
$ ruvector gnn search -q "[0.1,0.2,0.3,0.4]" -c ./cands.json -k 2
✖ Failed to run search
Get TypedArray info failed
$ ruvector gnn compress -f ./cands.json
✖ Failed to compress embeddings
Get TypedArray info failed
$ ruvector attention compute -q "[0.1,0.2,0.3,0.4]" -k ./cands.json
✖ Failed to compute attention
Failed to convert napi value Undefined into rust type\`u32\`
Get TypedArray info failed is napi-rs's error when a value passed across the FFI boundary isn't actually a typed array. The CLI is likely passing plain number[] arrays where the Rust binding expects Float32Array / Float64Array. The attention compute failure (Undefined into u32) is the same shape — a missing/malformed scalar arg.
Same root cause as ruvector demo --gnn (see #400).
Likely fix
In the gnn and attention handlers, convert JS arrays to Float32Array (or whatever dtype the binding expects) before crossing the FFI boundary. Add explicit shape/dtype validation up front so the user gets a friendlier error than `Get TypedArray info failed`.
So the entire `embed` and `rvf` subsystems are blocked for the same reason as `doctor` was in #399 — the build artifact under `dist/` is missing from the published tarball. `prepublishOnly` runs `tsc`, so either the build is failing silently or the `files` allowlist isn't matching.
This extends #399 from a doctor-only false negative into "5+ subsystems blocked."
D. What works (so the picture isn't all bleak)
These commands run cleanly with sensible output:
All 33 ` --help` invocations (CLI parser is fine).
Combining suggestions across #399, #400, #401, and this issue:
Smoke test every top-level command on a fresh global install:
` --help` exits 0 (already passes).
Safe info subcommand of each grouped command exits 0 (would have caught `embed text`, `rvf status`, `optimize` failures).
Round-trip CRUD test: `create → insert → stats → search → export → import` against a tiny fixture. Would have caught the `create` no-file regression and the `insertBatch` API drift in one stroke.
GNN/attention shape test: one fixture forward pass per binding. Would have caught the typed-array marshalling regression.
Summary
After exhaustive testing of every top-level subcommand in
ruvector@0.2.23, the core data plane is non-functional. Failures cluster into 3 root causes, all in scope of the existing release-hygiene tracker (#399, #400, #401):VectorDBAPI drift — CLI calls methods that no longer exist on@ruvector/core's native binding.dist/paths — beyond ruvector@0.2.23: published tarball missing dist/ —ruvector doctorfalsely reports 'Native binding failed to load' #399, the CLI also requiresdist/core/onnx-embedder.jsanddist/core/rvf-wrapper.js.CLI-parser, help text, info/status commands, and a few utility commands (decompile, mcp tools, llm embed, identity, brain) are all healthy — so the CLI shell is fine, the binding integration is what's broken.
A.
VectorDBAPI drift — entire CRUD lifecycle blockedThe CLI assumes a
VectorDBAPI surface (insertBatch, on-disk persistence) that doesn't match what@ruvector/core@0.1.31actually ships.A1.
createclaims success but writes no fileThe "✔" success line is printed but no file is created. Every downstream read/write then fails with
ENOENT.A2.
insertcalls a missing methoddb.insertBatchdoesn't exist on the currentVectorDBbinding. Same root cause causes:ruvector demo --basic→db.insert is not a function(related — different method, same drift, see ruvector@0.2.23:ruvector demois broken across all 4 modes (2 crash, 2 are stubs) #400)ruvector benchmark→db.insertBatch is not a function(same as above)A3.
stats/search/export/importare all blockedAll fail with
ENOENTbecausecreatedoesn't actually persist. So even before hitting any API drift, the file simply isn't there. After one round-trip, the entire VectorDB CLI workflow is unusable.Likely fix
Audit the CLI handlers in
bin/cli.jsagainst the current@ruvector/coresurface. Either:add,addBatch, etc.), orinsertBatch/ persistence on@ruvector/coreif it was an unintentional regression.B. GNN + attention N-API errors — every operation crashes
Every meaningful op in the
gnnandattentionsubsystems crashes:Get TypedArray info failedisnapi-rs's error when a value passed across the FFI boundary isn't actually a typed array. The CLI is likely passing plainnumber[]arrays where the Rust binding expectsFloat32Array/Float64Array. Theattention computefailure (Undefined into u32) is the same shape — a missing/malformed scalar arg.Same root cause as
ruvector demo --gnn(see #400).Likely fix
In the
gnnandattentionhandlers, convert JS arrays toFloat32Array(or whatever dtype the binding expects) before crossing the FFI boundary. Add explicit shape/dtype validation up front so the user gets a friendlier error than `Get TypedArray info failed`.C. More missing `dist/` paths (extends #399)
In addition to the missing top-level `dist/index.js` reported in #399, the CLI also requires:
So the entire `embed` and `rvf` subsystems are blocked for the same reason as `doctor` was in #399 — the build artifact under `dist/` is missing from the published tarball. `prepublishOnly` runs `tsc`, so either the build is failing silently or the `files` allowlist isn't matching.
This extends #399 from a doctor-only false negative into "5+ subsystems blocked."
D. What works (so the picture isn't all bleak)
These commands run cleanly with sensible output:
ruvector doctorfalsely reports 'Native binding failed to load' #399 shim).Suggested CI / release gate
Combining suggestions across #399, #400, #401, and this issue:
ruvector doctorfalsely reports 'Native binding failed to load' #399 + this issue's section C + ruvector@0.2.23:optimizecommand crashes (missingsrc/optimizer/from tarball) +routerreferences wrong package name #401).Environment
Related
ruvector doctorfalsely reports 'Native binding failed to load' #399 — `dist/index.js` missing (doctor false negative). Section C of this issue extends the scope to `dist/core/onnx-embedder.js` + `dist/core/rvf-wrapper.js`.ruvector demois broken across all 4 modes (2 crash, 2 are stubs) #400 — `ruvector demo` broken across all 4 modes. The `--basic` and `--gnn` failures share root causes A and B respectively in this issue.optimizecommand crashes (missingsrc/optimizer/from tarball) +routerreferences wrong package name #401 — `optimize` crashes (missing `src/optimizer/`); `router` references wrong package name. Same release-hygiene class.