ruvector/scripts
ruv db047e0bf2 fix(sota-bench): validate every Pareto axis, and drop to two objectives
Audit of the new Pareto gate found its headline safety property was
implemented for only one of its three axes, and that when the guard did
fire it took the run down with it.

`dominates` returned out of its comparison loop on the first axis where
the candidate was worse, before `readObjective` ran on the remaining ones,
so the non-finite guard only ever inspected an axis the loop reached.
Through the real promotion rule, a candidate carrying NaN in `costPerWin`,
NaN in `p99Us`, -Infinity in `costPerWin`, or simply MISSING the `p99Us`
field -- which is the shape an older replay bundle carries -- each produced
`{promote: true, reasons: []}`. Nothing else caught it: the cost rule
compares with `>`, and `NaN > x` is false. Both existing tests put the bad
value in `primary`, the one axis where the guard worked, so they appeared
to protect the property and did not. `assertComparable` now pre-reads every
objective of every point before any comparison, in `dominates`, `frontier`
and `admitToFrontier`, and the latter validates frontier members too.

When the guard fired it threw out of the promotion rule. `@metaharness/
flywheel` calls the rule without a try/catch in both `run.js` and inside
`verifyReplayBundle`, so a bad objective aborted the generation loop in-run
and, in replay, prevented the structured `checks` output from ever being
produced. The same class of data therefore yielded either a silent
promotion or a dead run, and never "reject this candidate." The gate call
site now catches and pushes `non_finite_objective`; the pure API still
throws, which is right for a library and wrong for a gate.

THE THIRD AXIS IS REMOVED, reversing this PR's own framing. Dominance
requires "no worse on every axis", so each added axis is one more chance
for that condition to fail: a Pareto gate weakens monotonically as axes
grow, and this one was described as tightening. `p99Us` was also not
independent evidence -- it is already a factor of `costPerWin`
(`memoryMb * p99Us / qps`) and a term inside `primary`'s `darwinScore`, so
it bought no information while costing real blocking power. Concretely, a
candidate burning ten times the memory to halve tail latency is dominated
and blocked under two axes and sailed through under three. A test pins both
halves so the frontier cannot quietly become a second cost gate.

The candidate can no longer choose its own judges: the `frontier` field is
removed from the score outright rather than special-casing the empty array,
because it rode on the object the evaluator produces and a deserialized
bundle carrying `frontier: []` would have switched the gate off silently.

The manifest's declared directions are now cross-checked against the gate's
actual objectives, so a manifest can no longer declare an inverted
direction that would invert promotion the day it is wired in, and declared
bounds must be ones `normalizePolicy` can actually effect. The module now
opens by stating plainly that it is inert: `declaredObjectives()` has no
caller and schema registration happens by glob, so the schema constant was
decorative -- a research-gate test now validates the fixture through it.

All six negative checks bit before their fix. 157 of 158 harness tests pass
(one pre-existing skip), 26 research-gate tests pass.

Co-Authored-By: claude-flow <ruv@ruv.net>
Claude-Session: https://claude.ai/code/session_016QSCkKnxDjqU49NVVpWMK5
2026-08-23 10:40:47 -04:00
..
benchmark chore: reorganize scripts into subfolders 2026-01-21 23:48:37 -05:00
build feat: Update NAPI-RS bindings with new capabilities (v0.1.15) 2025-11-26 18:47:48 +00:00
ci chore: reorganize scripts into subfolders 2026-01-21 23:48:37 -05:00
deploy chore: reorganize scripts into subfolders 2026-01-21 23:48:37 -05:00
lib fix(decompiler): statement-boundary splitting — 14/14 modules now parse (was 2/17) 2026-04-03 11:50:34 +00:00
patches/hnsw_rs Add WebAssembly binary and TypeScript definitions for rvlite 2025-12-25 19:50:53 +00:00
publish fix: 9-issue cleanup batch + regression-guard CI workflow (#466) 2026-05-16 12:14:49 -04:00
research-gate fix(sota-bench): validate every Pareto axis, and drop to two objectives 2026-08-23 10:40:47 -04:00
sona-drift ci(sona): cross-implementation drift gate — parity harness, RVF fingerprints, stub tripwire (#554) 2026-06-11 22:40:27 -04:00
test chore: reorganize scripts into subfolders 2026-01-21 23:48:37 -05:00
training feat(training): source map extraction + v2 model (83.67% val accuracy) 2026-04-03 04:57:47 +00:00
validate chore: reorganize scripts into subfolders 2026-01-21 23:48:37 -05:00
adr-index.mjs fix(adr-index): harden traversal against symlinks, hostile filenames, adversarial trees (Phase-4 security review) 2026-08-20 08:39:24 -04:00
analyze-evolution.js feat: DrAgnes + Common Crawl WET + Gemini grounding agents (#282) 2026-03-23 10:12:50 -04:00
analyze-ham10000.js feat: DrAgnes + Common Crawl WET + Gemini grounding agents (#282) 2026-03-23 10:12:50 -04:00
build-solver.sh feat: Implement complete sublinear-time sparse solver crate 2026-02-20 06:49:14 +00:00
build-sonic-ct-wasm.sh feat(sonic_ct): acoustic digital human workbench — Rust/WASM USCT + R3F UI (#595) 2026-06-22 09:54:22 -04:00
check_brain_status.sh feat: add brain training and status scripts for pi.ruv.io 2026-03-16 23:14:43 -04:00
claude-code-decompile.sh feat(sse): decouple SSE to mcp.pi.ruv.io proxy + Claude Code source research 2026-04-02 23:39:56 +00:00
claude-code-rvf-corpus.sh feat(sse): decouple SSE to mcp.pi.ruv.io proxy + Claude Code source research 2026-04-02 23:39:56 +00:00
create-brainpedia.py fix: ruvector-postgres v0.3.1 — audit bug fixes, 46 SQL functions, Docker publish (#227) 2026-03-03 12:53:10 -05:00
deploy-crawl-phase1.sh feat: DrAgnes + Common Crawl WET + Gemini grounding agents (#282) 2026-03-23 10:12:50 -04:00
deploy-dragnes.sh feat(sse): decouple SSE to mcp.pi.ruv.io proxy + Claude Code source research 2026-04-02 23:39:56 +00:00
deploy-gemini-agents.sh feat: DrAgnes + Common Crawl WET + Gemini grounding agents (#282) 2026-03-23 10:12:50 -04:00
deploy-wet-job.sh feat: DrAgnes + Common Crawl WET + Gemini grounding agents (#282) 2026-03-23 10:12:50 -04:00
deploy_brain_services.sh feat(brain): ADR-130 service split — SSE proxy, worker, internal queue 2026-03-30 11:54:01 -04:00
deploy_trainer.sh feat: update ADR-093 + add deploy_trainer.sh for Cloud Run scheduling 2026-03-16 23:14:43 -04:00
discover_and_train.sh feat: discover ↔ train feedback loop with live API discovery 2026-03-16 23:16:24 -04:00
extract-ruqu-rvdna-submodules.sh ADR-257: extract ruqu + rvdna into two standalone repos (git submodules) (#579) 2026-06-17 17:33:40 -04:00
frozen-weights-check.mjs fix(frozen-weights-check): sound bias-inverted comment handling closes the whole JS-regex FN class (PR #869 3rd re-verify) 2026-08-20 09:39:15 -04:00
gemini-agents.js feat: DrAgnes + Common Crawl WET + Gemini grounding agents (#282) 2026-03-23 10:12:50 -04:00
generate-rvf-manifest.py fix: ruvector-postgres v0.3.1 — audit bug fixes, 46 SQL functions, Docker publish (#227) 2026-03-03 12:53:10 -05:00
historical-crawl-import.sh feat: DrAgnes + Common Crawl WET + Gemini grounding agents (#282) 2026-03-23 10:12:50 -04:00
publish-rvf.sh feat(rvf): RuVector Format — Universal Cognitive Container SDK (#166) 2026-02-14 13:14:49 -05:00
README.md chore: reorganize scripts into subfolders 2026-01-21 23:48:37 -05:00
rebuild-all-versions.mjs feat(decompiler): rebuild all versions — organized source/rvf separation, 100% coverage 2026-04-03 03:18:41 +00:00
run_mincut_bench.sh feat: Add min-cut gating experiment scaffolding (WIP) 2026-02-20 06:52:43 +00:00
rvagent-flywheel-evaluator.mjs feat(rvagent): Hermes-class harness architecture — research, ADRs 273-279, harness repair + review fixes (#752) 2026-08-02 12:39:59 -03:00
rvforge-parity-check.sh feat(rvforge): create command, authoring core, and Reader install/library/update (#800) 2026-08-05 12:52:27 -03:00
rvforge-parity-fixture.cjs feat(rvforge): create command, authoring core, and Reader install/library/update (#800) 2026-08-05 12:52:27 -03:00
seed-brain-all.py fix: ruvector-postgres v0.3.1 — audit bug fixes, 46 SQL functions, Docker publish (#227) 2026-03-03 12:53:10 -05:00
seed-brain.rs fix: ruvector-postgres v0.3.1 — audit bug fixes, 46 SQL functions, Docker publish (#227) 2026-03-03 12:53:10 -05:00
seed-specialized.py fix: ruvector-postgres v0.3.1 — audit bug fixes, 46 SQL functions, Docker publish (#227) 2026-03-03 12:53:10 -05:00
setup-gcs-examples.sh fix: ruvector-postgres v0.3.1 — audit bug fixes, 46 SQL functions, Docker publish (#227) 2026-03-03 12:53:10 -05:00
sift1m_hnswlib_bench.mjs perf(hnsw): 4-acc AVX-512 + parallel-insert — +9.7% build throughput (query QPS unchanged: memory-bound at 1M scale) (#619) 2026-06-28 20:45:35 -04:00
sql-audit-v3.sql fix: ruvector-postgres v0.3.2 — 100% audit pass (HNSW + hybrid fixes) (#230) 2026-03-03 13:21:48 -05:00
swarm_train_15.sh feat: 15-agent concurrent discovery swarm with 12 new data sources 2026-03-16 23:16:24 -04:00
sync-lockfile.sh style: apply rustfmt across entire codebase 2026-01-28 17:00:26 +00:00
train-lora.py fix: ruvector-postgres v0.3.1 — audit bug fixes, 46 SQL functions, Docker publish (#227) 2026-03-03 12:53:10 -05:00
train_brain.sh feat: brain trainer core module + auth fix — 56 discoveries ingested 2026-03-16 23:14:43 -04:00
training_orchestrator.sh update: training orchestrator with improved PII stripping and color output 2026-03-16 23:21:01 -04:00
upvote_memories.py fix(brain): defer sparsifier build on startup for large graphs 2026-03-24 12:29:52 +00:00
vote-boost.py fix: ruvector-postgres v0.3.1 — audit bug fixes, 46 SQL functions, Docker publish (#227) 2026-03-03 12:53:10 -05:00
wet-filter-inject.js feat: DrAgnes + Common Crawl WET + Gemini grounding agents (#282) 2026-03-23 10:12:50 -04:00
wet-full-import.sh feat: DrAgnes + Common Crawl WET + Gemini grounding agents (#282) 2026-03-23 10:12:50 -04:00
wet-job.yaml feat: DrAgnes + Common Crawl WET + Gemini grounding agents (#282) 2026-03-23 10:12:50 -04:00
wet-orchestrate.sh feat: DrAgnes + Common Crawl WET + Gemini grounding agents (#282) 2026-03-23 10:12:50 -04:00
wet-processor.sh feat: DrAgnes + Common Crawl WET + Gemini grounding agents (#282) 2026-03-23 10:12:50 -04:00
workspace-check.mjs fix(workspace): add orphan crates to workspace, add membership guard (PIR #859) 2026-08-20 08:22:28 -04:00

RuVector Automation Scripts

This directory contains automation scripts organized by purpose.

📁 Directory Structure

scripts/
├── README.md           # This file
├── benchmark/          # Performance benchmarking
├── build/              # Build utilities
├── ci/                 # CI/CD automation
├── deploy/             # Deployment scripts
├── patches/            # Patch files
├── publish/            # Package publishing
├── test/               # Testing scripts
└── validate/           # Validation & verification

🚀 Deployment

Scripts for deploying to production.

Script Description
deploy/deploy.sh Comprehensive deployment (crates.io + npm)
deploy/test-deploy.sh Test deployment without publishing
deploy/DEPLOYMENT.md Full deployment documentation
deploy/DEPLOYMENT-QUICKSTART.md Quick deployment guide

Usage:

# Full deployment
./scripts/deploy/deploy.sh

# Dry run
./scripts/deploy/deploy.sh --dry-run

# Test deployment
./scripts/deploy/test-deploy.sh

📦 Publishing

Scripts for publishing packages to registries.

Script Description
publish/publish-all.sh Publish all packages
publish/publish-crates.sh Publish Rust crates to crates.io
publish/publish-cli.sh Publish CLI package
publish/publish-router-wasm.sh Publish router WASM package
publish/check-and-publish-router-wasm.sh Check and publish router WASM

Usage:

# Set credentials first
export CRATES_API_KEY="your-crates-io-token"
export NPM_TOKEN="your-npm-token"

# Publish all
./scripts/publish/publish-all.sh

# Publish crates only
./scripts/publish/publish-crates.sh

📊 Benchmarking

Performance benchmarking scripts.

Script Description
benchmark/run_benchmarks.sh Run core benchmarks
benchmark/run_llm_benchmarks.sh Run LLM inference benchmarks

Usage:

# Run core benchmarks
./scripts/benchmark/run_benchmarks.sh

# Run LLM benchmarks
./scripts/benchmark/run_llm_benchmarks.sh

🧪 Testing

Testing and validation scripts.

Script Description
test/test-wasm.mjs Test WASM bindings
test/test-graph-cli.sh Test graph CLI commands
test/test-all-graph-commands.sh Test all graph commands
test/test-docker-package.sh Test Docker packaging

Usage:

# Test WASM
node ./scripts/test/test-wasm.mjs

# Test graph CLI
./scripts/test/test-graph-cli.sh

Validation

Package and build verification scripts.

Script Description
validate/validate-packages.sh Validate package configs
validate/validate-packages-simple.sh Simple package validation
validate/verify-paper-impl.sh Verify paper implementation
validate/verify_hnsw_build.sh Verify HNSW build

Usage:

# Validate packages
./scripts/validate/validate-packages.sh

# Verify HNSW
./scripts/validate/verify_hnsw_build.sh

🔄 CI/CD

Continuous integration scripts.

Script Description
ci/ci-sync-lockfile.sh Auto-fix lock files in CI
ci/sync-lockfile.sh Sync package-lock.json
ci/install-hooks.sh Install git hooks

Usage:

# Install git hooks (recommended)
./scripts/ci/install-hooks.sh

# Sync lockfile
./scripts/ci/sync-lockfile.sh

🛠️ Build

Build utility scripts located in build/.

🩹 Patches

Patch files for dependencies located in patches/.

🚀 Quick Start

For Development

  1. Install git hooks (recommended):

    ./scripts/ci/install-hooks.sh
    
  2. Run tests:

    ./scripts/test/test-wasm.mjs
    

For Deployment

  1. Set credentials:

    export CRATES_API_KEY="your-crates-io-token"
    export NPM_TOKEN="your-npm-token"
    
  2. Dry run first:

    ./scripts/deploy/deploy.sh --dry-run
    
  3. Deploy:

    ./scripts/deploy/deploy.sh
    

🔐 Security

Never commit credentials! Always use environment variables or .env file.

See deploy/DEPLOYMENT.md for security best practices.