Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
8baf5ac
docs(research): rvagent Hermes-class harness architecture with metaha…
claude Aug 1, 2026
0f63c04
feat(rvagent): send tool schemas to the model; fix agent loop correct…
claude Aug 1, 2026
084a30e
refactor(rvagent): unify type systems and wire async middleware pipel…
claude Aug 1, 2026
113bf40
docs(rvagent): align docs with implementation reality (P0.5)
claude Aug 1, 2026
29e1805
fix(rvagent): security hardening of the Phase 0 agent loop
claude Aug 1, 2026
848cbae
feat(rvagent): P0 exit gate — e2e tool-calling test + workspace path …
claude Aug 1, 2026
d9bb214
docs(research): 2026 SOTA landscape sweep and roadmap corrections
claude Aug 1, 2026
e709e1a
feat(rvagent): loop detection — refuse tool calls that repeat without…
claude Aug 1, 2026
dcc907b
docs(adr): ADR-273..277 — SOTA findings as decision records
claude Aug 1, 2026
d7e55b1
feat(rvagent): observation masking + tool output caps (ADR-274, ADR-273)
claude Aug 1, 2026
89d894b
docs(adr): ADR-278 — adopt metaharness flywheel; shift self-learning …
claude Aug 1, 2026
9d11dbc
feat(rvagent): environment bootstrap + compaction invariants (ADR-273…
claude Aug 1, 2026
e00f083
chore(rvagent): record tempfile dev-dependency in Cargo.lock
claude Aug 1, 2026
2ca91c5
feat(rvagent): verify-after-write + addressable recall (ADR-273, ADR-…
claude Aug 1, 2026
db411ee
feat(rvagent): demote summarization to opt-in fallback (ADR-274)
claude Aug 1, 2026
bf84186
fix(rvagent): add enable_summarization to bench PipelineConfig initia…
claude Aug 1, 2026
7c148f3
docs(adr): resolve the Phase 4 exit gate (ADR-277 §7)
claude Aug 1, 2026
d64155b
feat(rvagent): diagnose failed edits instead of reporting "not found"…
claude Aug 1, 2026
3c5ed9c
feat(rvagent): policy genome and flywheel score axes (ADR-278)
claude Aug 2, 2026
18d10a1
feat(rvagent): subagent boundary — isolated context in, String out (A…
claude Aug 2, 2026
23ad04e
feat(rvagent): flywheel Evaluator seam (ADR-278)
claude Aug 2, 2026
a2eeca0
docs(adr): ADR-279 — no C in the core, and the 2026 SOTA program
claude Aug 2, 2026
65ba193
perf(ruvector-core): PDX vertical layout — implemented, benchmarked, …
claude Aug 2, 2026
5f28cc0
style: cargo fmt --all to fix Rustfmt CI failure
ruvnet Aug 2, 2026
c206291
fix(rvagent): close review blockers — symlink/hard-link write escapes…
ruvnet Aug 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions crates/ruvector-core/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -317,3 +317,7 @@ overly_complex_bool_expr = { level = "allow", priority = 1 }
zombie_processes = { level = "allow", priority = 1 }
repeat_vec_with_capacity = { level = "allow", priority = 1 }
missing_transmute_annotations = { level = "allow", priority = 1 }

[[bench]]
name = "pdx_vs_rowmajor"
harness = false
59 changes: 59 additions & 0 deletions crates/ruvector-core/benches/pdx_vs_rowmajor.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
//! Row-major batch distance vs PDX vertical layout (ADR-279 §5.1).
//!
//! Both compute the same thing over the same data. The only difference is
//! memory layout and whether a horizontal reduction happens per vector.

use criterion::{black_box, criterion_group, criterion_main, BenchmarkId, Criterion, Throughput};
use ruvector_core::pdx::PdxIndex;
use ruvector_core::simd_intrinsics::batch_euclidean;

fn corpus(n: usize, dim: usize) -> Vec<Vec<f32>> {
(0..n)
.map(|i| {
(0..dim)
.map(|d| ((i * 31 + d * 17) % 101) as f32 / 101.0)
.collect()
})
.collect()
}

fn bench(c: &mut Criterion) {
// 1536 is the OpenAI embedding width; 768 covers most sentence encoders.
// (n, dim) pairs: the first three are cache-resident, the rest stream.
for (n, dim) in [
(256usize, 768usize),
(512, 768),
(1024, 768),
(4096, 768),
(4096, 1536),
] {
let vecs = corpus(n, dim);
let refs: Vec<&[f32]> = vecs.iter().map(|v| v.as_slice()).collect();
let query: Vec<f32> = (0..dim).map(|d| (d % 7) as f32 / 7.0).collect();

let index = PdxIndex::from_rows(&refs);
let mut out = vec![0.0f32; n];

let mut group = c.benchmark_group(format!("batch_euclidean_{n}x{dim}"));
// Bytes of vector data scanned per query — makes the two comparable
// in bandwidth terms rather than just wall time.
group.throughput(Throughput::Bytes((n * dim * 4) as u64));

group.bench_function(BenchmarkId::new("row_major", dim), |b| {
b.iter(|| {
batch_euclidean(black_box(&query), black_box(&refs), black_box(&mut out));
})
});

group.bench_function(BenchmarkId::new("pdx_vertical", dim), |b| {
b.iter(|| {
index.euclidean_sq_into(black_box(&query), black_box(&mut out));
})
});

group.finish();
}
}

criterion_group!(benches, bench);
criterion_main!(benches);
1 change: 1 addition & 0 deletions crates/ruvector-core/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ pub mod distance;
pub mod embeddings;
pub mod error;
pub mod index;
pub mod pdx;
pub mod quantization;

// Storage backends - conditional compilation based on features
Expand Down
Loading
Loading