Update all references from 17 SNPs to 20 SNPs reflecting the
addition of LPA rs10455872/rs3798220 and PCSK9 rs11591147.
Document new gene-biomarker correlations (LPA→Lp(a), PCSK9→LDL)
in synthetic population section. Update module table line counts.
https://claude.ai/code/session_014FpaYVohmyLH5dcBZTgmSY
Add PCSK9 R46L loss-of-function variant (NEJM 2006: OR 0.77 CHD,
0.40 MI) as a protective cardiovascular SNP with negative weights.
Include PCSK9→LDL-C biomarker correlation (15-21% lower LDL in
carriers). Refactor gene-biomarker correlations from match to
additive if-chain so multiple gene effects can stack on the same
biomarker (e.g., APOE raises LDL while PCSK9 R46L lowers it).
Panel expanded to 20 SNPs.
https://claude.ai/code/session_014FpaYVohmyLH5dcBZTgmSY
Add rs10455872 (OR 1.6-1.75/allele CHD) and rs3798220 (OR 1.49-1.54/allele)
from 2024 LPA meta-analyses. Include Lp(a) biomarker reference (0-75 nmol/L)
and gene-biomarker correlation in population model. Separate NUM_ONEHOT_SNPS
(17) from NUM_SNPS (19) to preserve 64-dim vector layout with LPA encoded
in summary dimension 63.
https://claude.ai/code/session_014FpaYVohmyLH5dcBZTgmSY
Structural improvements from deep code review:
- Consolidate 5 parallel arrays (SNP_WEIGHTS, HOM_REF, HOM_ALT, HET,
ALLELE_FREQS) into single SnpDef struct array — eliminates entire class
of parallel-array misalignment bugs
- Cache category_meta() with LazyLock — avoids per-call Vec allocation
(critical in generate_synthetic_population hot path)
- Hoist Normal::new out of inner loop in generate_readings — pre-compute
distributions per biomarker instead of per-step*per-biomarker
- Add clinically meaningful lower bounds: LDL normal_low 0→50 mg/dL
(critical_low 25), Triglycerides normal_low 0→35 mg/dL (critical_low 20)
- Optimize RingBuffer::clear from O(capacity) to O(1) — head/len reset
is sufficient since push overwrites before read
- Use NUM_SNPS const for vector encoding bounds instead of magic number 51
All 172 tests pass, zero clippy warnings for rvdna.
https://claude.ai/code/session_014FpaYVohmyLH5dcBZTgmSY
- Add Health Biomarker Engine section to rvDNA README with usage examples
for composite risk scoring, streaming processing, and synthetic populations
- Add biomarker.rs and biomarker_stream.rs to Modules table
- Update test count from 102 to 172 (added biomarker tests)
- Add biomarker benchmark results to Speed table
- Add Welford, CUSUM, and PRS to Published Algorithms table
- Update root README Genomics & Health capabilities (49 → 51 features)
- Add health biomarker engine and streaming biomarkers to root feature table
- Update rvDNA details section with risk scoring and streaming capabilities
https://claude.ai/code/session_014FpaYVohmyLH5dcBZTgmSY
Evidence-based refinements from peer-reviewed clinical research:
- TP53 rs1042522 (Pro72Arg): hom_ref 0.10→0.00 — CC/Pro/Pro is not
independently risk-associated; prior non-zero baseline was unjustified
- BRCA2 rs11571833 (K3326X): het 0.25→0.20 — aligned with iCOGS
meta-analysis OR 1.28 for breast cancer (Meeks et al., JNCI 2016,
76,637 cases / 83,796 controls)
- NQO1 rs1800566 (Pro187Ser): het 0.20→0.15, hom_alt 0.45→0.30 —
aligned with comprehensive meta-analysis OR 1.18 for TT vs CC
(Lajin & Alachkar, Br J Cancer 2013, 92 studies, 21,178 cases);
larger 2022 meta-analysis (43,736 cases) found no overall association
Validated unchanged weights against SOTA evidence:
- APOE rs429358: OR 3-4x het, 8-15x hom (Belloy JAMA Neurology 2023)
- SLCO1B1 rs4363657: OR 4.5/allele, 16.9 hom (SEARCH/NEJM; CPIC 2022)
- COMT×OPRM1 interaction: confirmed p=0.037 (orthopedic trauma study)
All 48 tests pass (33 unit + 15 integration).
https://claude.ai/code/session_014FpaYVohmyLH5dcBZTgmSY
- Run cargo fmt --all to fix formatting in 362 files across the entire workspace
- Add PGDG repository for PostgreSQL 17 in CI test-all-features and benchmark jobs
- Add missing rvf dependency crates to standalone Dockerfile for domain-expansion
- Add sona-learning and domain-expansion features to standalone Dockerfile build
- Create npu.rs stub for ruvector-sparse-inference (fixes rustfmt resolution error)
Co-Authored-By: claude-flow <ruv@ruv.net>
Include the generated 2.1 MB .rvf binary artifact in repo alongside
the v2.0 optimized example (22 capabilities, zero warnings, Paranoid
policy, audited queries, COW branching, SSN/encoding detection).
Co-Authored-By: claude-flow <ruv@ruv.net>
- Remove duplicate workspace members (solver/solver-wasm/solver-node)
- Add ruvector-attn-mincut to workspace members
- Switch ruvector-solver and ruvector-solver-wasm to workspace version/metadata
- Add version pin on ruvector-solver dep for solver-wasm and solver-node
- Remove stale version pins in examples/dna and examples/prime-radiant
- Fix unused assignment and unused mut warnings in neumann.rs
- Remove publish = false from ruvector-profiler, add keywords/categories
- Bump @ruvector/rvf-solver to 0.1.4
- Add Publishing section to CLAUDE.md
Published to crates.io: ruvector-solver, ruvector-solver-wasm,
ruvector-solver-node, ruvector-coherence, ruvector-attn-mincut,
ruvector-profiler (all v2.0.3)
Published to npm: @ruvector/rvf-solver v0.1.4
Co-Authored-By: claude-flow <ruv@ruv.net>
DNA crate (rvdna):
- Add ruvector-solver dependency with forward-push feature
- New kmer_pagerank module: KmerGraphRanker uses Forward Push PPR to
rank sequences by structural centrality in k-mer overlap graphs
- New solver_bench benchmark suite with 3 groups:
A) Localized relevance via Forward Push PPR (20-200x speedup)
B) Laplacian solve for denoising via Neumann/CG (10-80x speedup)
C) Cohort-scale label propagation via CG solver
- README: add DNA Solver Benchmarks section with dataset citations
(GIAB, NA12878, 1000 Genomes), graph construction docs, benchmark
tables, and reproducibility instructions
Quantum crate (prime-radiant-category):
- Add ruvector-solver dependency with neumann/cg features
- SparseMatrix: replace O(nnz) COO Vec with O(1) HashMap entries,
add to_csr_f64() and spmv_f64() using solver CsrMatrix
- ComplexMatrix: add Jacobi eigenvalue algorithm for real-symmetric
matrices (much more stable than power iteration + deflation),
add to_csr_real() and is_real_valued() helper methods
- DensityMatrix: add SpectralDecomposition cache, purity_fast() via
Frobenius norm O(n²) vs O(n³), static eigenvalue helpers
- SimplicialComplex: add graph_laplacian_csr() for spectral analysis
- SolverBackedOperator: sparse quantum operator using CsrMatrix SpMV
for 40-60 effective qubit scaling (vs ~33 with dense matrices)
- New quantum_solver_bench: SpMV scaling, eigenvalue convergence,
memory scaling benchmarks from 10 to 30 qubits
All 362 tests pass (81 quantum + 102 DNA + 179 solver).
https://claude.ai/code/session_01TiqLbr2DaNAntQHaVeLfiR
- solver_benchmark.rs: Store benchmark results in RVF for analysis
- Updated solver_witness.rs with refinements
- Updated examples/rvf/Cargo.toml with 3 new [[example]] entries
- Updated examples/rvf/src/lib.rs with new example documentation
- Refined AGI sublinear optimization review
https://claude.ai/code/session_01TiqLbr2DaNAntQHaVeLfiR
- All 10 ADR-STS documents updated from Proposed to Accepted
- Added implementation status sections reflecting delivered solver crate
- Updated SOTA research analysis to v3.0 with implementation realization
- Updated optimization guide to v2.0 with realized optimizations
- Updated executive summary, performance, algorithm, and testing docs
- Added solver_witness.rs RVF example
https://claude.ai/code/session_01TiqLbr2DaNAntQHaVeLfiR
Add self-contained acceptance test artifact that external developers can
run offline and reproduce identical graded outcomes:
- SHA-256-linked witness chain: every puzzle decision (skip_mode,
context_bucket, steps, correct) hashed into a tamper-evident chain.
Changing any single bit invalidates everything downstream.
- Deterministic replay: frozen seeds → identical puzzles → identical
solve paths → identical chain_root_hash. Two runs with the same
config produce the same hash, proven by test.
- JSON manifest: config, per-mode scorecards (A/B/C), all six ablation
assertions with measured values, full witness chain, chain root hash.
- Verifier: re-runs with same config, recomputes chain, compares root
hash. Mismatch means non-identical outcomes.
- CLI binary: `acceptance-rvf generate -o manifest.json` to produce,
`acceptance-rvf verify -i manifest.json` to verify.
66 lib tests + 20 integration tests pass.
https://claude.ai/code/session_01RnwD4x5cbpB7FPvoyYQz8G
Add self-contained acceptance test artifact that external developers can
run offline and reproduce identical graded outcomes:
- SHA-256-linked witness chain: every puzzle decision (skip_mode,
context_bucket, steps, correct) hashed into a tamper-evident chain.
Changing any single bit invalidates everything downstream.
- Deterministic replay: frozen seeds → identical puzzles → identical
solve paths → identical chain_root_hash. Two runs with the same
config produce the same hash, proven by test.
- JSON manifest: config, per-mode scorecards (A/B/C), all six ablation
assertions with measured values, full witness chain, chain root hash.
- Verifier: re-runs with same config, recomputes chain, compares root
hash. Mismatch means non-identical outcomes.
- CLI binary: `acceptance-rvf generate -o manifest.json` to produce,
`acceptance-rvf verify -i manifest.json` to verify.
66 lib tests + 20 integration tests pass.
https://claude.ai/code/session_01RnwD4x5cbpB7FPvoyYQz8G
Fixed policy sign flip (Mode A):
risk_score = R - 30*D (was R + 30*D)
Distractors now reduce effective range, making Mode A conservative
under distractors. This is the defensible control arm: a rational
fixed agent should be more cautious when distractors are present.
Mode C must learn to outperform this baseline.
EarlyCommitPenalty wired into bandit reward:
SkipModeStats now tracks early_commit_penalty_sum per arm.
reward() includes robustness_penalty = 0.2 * avg_penalty.
This means Mode C can actually learn to avoid early wrong commits
in distractor-heavy contexts. Previously the penalty was only
printed, not optimized.
Context buckets expanded to 18:
3 range (small/medium/large) × 3 distractor (clean/some/heavy)
× 2 noise (clean/noisy) = 18 buckets.
Previous: 4 range × 2 distractor = 8 (too coarse for bandit).
Noise flag now flows through AdaptiveSolver.noisy_hint.
New ablation assertion:
c_penalty_better_than_b: Mode C EarlyCommitPenalty must be ≤90%
of Mode B penalty. Proves robustness improvement is explicit,
not just noise_accuracy-based.
Acceptance test noise plumbing:
solver.noisy_hint set to true for noisy puzzles in both training
and holdout evaluation. Context buckets now correctly distinguish
clean vs noisy conditions.
81 tests passing (61 lib + 20 integration).
https://claude.ai/code/session_01RnwD4x5cbpB7FPvoyYQz8G
Fixed policy sign flip (Mode A):
risk_score = R - 30*D (was R + 30*D)
Distractors now reduce effective range, making Mode A conservative
under distractors. This is the defensible control arm: a rational
fixed agent should be more cautious when distractors are present.
Mode C must learn to outperform this baseline.
EarlyCommitPenalty wired into bandit reward:
SkipModeStats now tracks early_commit_penalty_sum per arm.
reward() includes robustness_penalty = 0.2 * avg_penalty.
This means Mode C can actually learn to avoid early wrong commits
in distractor-heavy contexts. Previously the penalty was only
printed, not optimized.
Context buckets expanded to 18:
3 range (small/medium/large) × 3 distractor (clean/some/heavy)
× 2 noise (clean/noisy) = 18 buckets.
Previous: 4 range × 2 distractor = 8 (too coarse for bandit).
Noise flag now flows through AdaptiveSolver.noisy_hint.
New ablation assertion:
c_penalty_better_than_b: Mode C EarlyCommitPenalty must be ≤90%
of Mode B penalty. Proves robustness improvement is explicit,
not just noise_accuracy-based.
Acceptance test noise plumbing:
solver.noisy_hint set to true for noisy puzzles in both training
and holdout evaluation. Context buckets now correctly distinguish
clean vs noisy conditions.
81 tests passing (61 lib + 20 integration).
https://claude.ai/code/session_01RnwD4x5cbpB7FPvoyYQz8G
PolicyKernel refinements:
- Fixed policy (Mode A): risk_score = R + k*D, k=30, T=140
Fixed constants (not learned) — Mode A is the control arm.
One distractor raises perceived risk by ~30 range-days.
Weekday only when range is large AND distractor-free.
- Normalized EarlyCommitPenalty: (remaining/initial) * scale
Committing at 5% scan = cheap (0.05), at 90% = expensive (0.90).
Only charged on wrong commits.
- Hybrid minimum evidence: stop_after_first disabled in Hybrid mode
so solver checks all matching weekdays before committing.
Witness log:
- SolutionAttempt now carries skip_mode and context_bucket strings
- record_attempt_witnessed() for full policy audit trail
- Every trajectory records which skip mode was chosen and why
Observability:
- Puzzle tags now include distractor_count and has_dow (deterministic)
- count_distractors() made public for generator to tag puzzles
Ablation assertions (two new):
- a_skip_nonzero: Mode A uses skip at least sometimes (proves not hobbled)
- c_multi_mode: Mode C uses different skip modes across contexts (proves learning)
- Skip-mode distribution table printed per context bucket for Mode C
posterior_target monotonicity verified: 2→4→8→12→18→25→35→50→70→100
(never shrinks with difficulty)
81 tests passing (61 lib + 20 integration).
https://claude.ai/code/session_01RnwD4x5cbpB7FPvoyYQz8G
PolicyKernel refinements:
- Fixed policy (Mode A): risk_score = R + k*D, k=30, T=140
Fixed constants (not learned) — Mode A is the control arm.
One distractor raises perceived risk by ~30 range-days.
Weekday only when range is large AND distractor-free.
- Normalized EarlyCommitPenalty: (remaining/initial) * scale
Committing at 5% scan = cheap (0.05), at 90% = expensive (0.90).
Only charged on wrong commits.
- Hybrid minimum evidence: stop_after_first disabled in Hybrid mode
so solver checks all matching weekdays before committing.
Witness log:
- SolutionAttempt now carries skip_mode and context_bucket strings
- record_attempt_witnessed() for full policy audit trail
- Every trajectory records which skip mode was chosen and why
Observability:
- Puzzle tags now include distractor_count and has_dow (deterministic)
- count_distractors() made public for generator to tag puzzles
Ablation assertions (two new):
- a_skip_nonzero: Mode A uses skip at least sometimes (proves not hobbled)
- c_multi_mode: Mode C uses different skip modes across contexts (proves learning)
- Skip-mode distribution table printed per context bucket for Mode C
posterior_target monotonicity verified: 2→4→8→12→18→25→35→50→70→100
(never shrinks with difficulty)
81 tests passing (61 lib + 20 integration).
https://claude.ai/code/session_01RnwD4x5cbpB7FPvoyYQz8G