Skip to content

fix: #995 #984 #968 #988 + publish hardening; ruvector 0.3.3, graph-node 2.1.1 - #1014

Merged
ruvnet merged 7 commits into
mainfrom
fix/issues-1009-995-984-968-988
Sep 23, 2026
Merged

ruvnet merged 7 commits into
mainfrom
fix/issues-1009-995-984-968-988

Conversation

@ruvnet

@ruvnet ruvnet commented Sep 23, 2026

Copy link
Copy Markdown
Owner

Summary

Issue Change
#1009 Not a router-core bug. dot_product already returns -(a·b); the kge diagnostic negated the query a second time (recall@10 0.000). With the query unchanged, recall@10 = 1.000. The ignored diagnostic is now a gate (dotproduct_recall_matches_mips) and the kge docs are corrected. router-core is unchanged.
#995 mcp-server.js saves intelligence.json via temp file + rename. A corrupt store is quarantined to .corrupt-<epoch> and reported on stderr instead of silently becoming empty. The server starts with an empty store rather than refusing to start, which is deliberate for a long-lived process; the original bytes are preserved. New test/mcp-intel-durability.js.
#984 createEdge / batchInsert / createHyperedge now persist metadata, which is returned by query() and survives reopen. Internal __ keys cannot be spoofed by metadata. New Rust test.
#968 ruvllm quantize fails closed (no output file) instead of writing a 75-byte / empty GGUF. The real writer is still to do, so #968 stays open.
#988 fast-uri 3.1.7 → 3.1.8 in npm/package-lock.json. npm audit no longer flags it. Other #988 items stay open.
#1007 follow-up build-graph-node.yml had the same swallowed-publish pattern: missing binaries were skipped, catch swallowed errors, and the main publish ended in || echo. It now fails the job and verifies every package on the registry. ruvector-publish.yml gains a post-publish registry check.

Release: ruvector 0.3.3, @ruvector/graph-node 2.1.1 (graph-node platform packages are published from this branch first so the optional-deps guard can resolve them, same as 2.1.0).

Validation

🤖 Generated with claude-flow

…iagnostic (#1009)

router-core's dot_product returns -(a·b), so smallest-distance-first search is
a maximum-inner-product search. The kge diagnostic negated the query again and
so searched for the minimum inner product (recall@10 = 0.000). Passing the query
unchanged measures recall@10 = 1.000 on the same table; the ignored diagnostic
is now a gate (dotproduct_recall_matches_mips) and the module docs are corrected.

Co-Authored-By: claude-flow <ruv@ruv.net>
…ads (#995)

The MCP server kept its own Intelligence copy that #698 did not touch: save()
used a plain writeFileSync (torn reads by concurrent hook processes) and load()
swallowed parse errors into empty defaults. Save now goes through temp file +
rename; a corrupt store is renamed to .corrupt-<epoch> and reported on stderr.
Unlike the CLI the long-lived server starts empty instead of refusing to start;
the original bytes are preserved for restore. Adds test/mcp-intel-durability.js.

Co-Authored-By: claude-flow <ruv@ruv.net>
createEdge and batchInsert built edge properties from only __confidence and
__embedding, dropping the documented metadata map. Metadata is now stored as
string properties, returned by query() and kept across reopen. Internal __ keys
are inserted last so caller metadata cannot override them.

Co-Authored-By: claude-flow <ruv@ruv.net>
…UF (#968)

The command never loaded tensors: SafeTensors/PyTorch input produced a 75-byte
header declaring zero tensors and GGUF input an empty file, both reported as
success. Until a GGUF tensor writer exists, quantize validates its arguments and
errors before creating any output, pointing at llama.cpp / candle.

Co-Authored-By: claude-flow <ruv@ruv.net>
Co-Authored-By: claude-flow <ruv@ruv.net>
… on npm (#1007)

build-graph-node.yml had the same swallowed-failure pattern #1007 removed from
build-router.yml: publish-platforms.js caught publish errors and skipped missing
binaries, and the main publish ended in || echo. Missing binaries and failed
publishes now fail the job, already-published versions are skipped explicitly,
and both workflows poll the registry until every package version resolves.

Co-Authored-By: claude-flow <ruv@ruv.net>
Co-Authored-By: claude-flow <ruv@ruv.net>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant