Commit graph

2409 commits

Author SHA1 Message Date
rUv
e604dc86f2 feat: auto-share session summaries and commits to pi.ruv.io brain
Added two hooks to .claude/settings.json:

1. SessionEnd: shares session summary (branch, last 5 commits, diff stat)
   to pi.ruv.io brain. Runs async, won't block session exit.

2. PostToolUse/Bash: after git commit commands, shares the commit message
   to brain. Only triggers on "git commit", skips all other bash commands.

Both hooks use BRAIN_API_KEY env var (fallback to hardcoded key).
Added BRAIN_API_KEY and BRAIN_URL to env section.

Co-Authored-By: claude-flow <ruv@ruv.net>
2026-03-23 20:51:01 +00:00
github-actions[bot]
2c4d0e6a94 chore: Update NAPI-RS binaries for all platforms
Built from commit 3fa7ec0e79

  Platforms updated:
  - linux-x64-gnu
  - linux-arm64-gnu
  - darwin-x64
  - darwin-arm64
  - win32-x64-msvc

  🤖 Generated by GitHub Actions
2026-03-23 20:47:53 +00:00
github-actions[bot]
398e2fb396 chore: Update NAPI-RS binaries for all platforms
Built from commit 5d841b1db7

  Platforms updated:
  - linux-x64-gnu
  - linux-arm64-gnu
  - darwin-x64
  - darwin-arm64
  - win32-x64-msvc

  🤖 Generated by GitHub Actions
2026-03-23 20:47:16 +00:00
rUv
3fa7ec0e79 chore: publish ruvector-sona@0.1.8 + ruvector@0.2.18 (loadState)
Co-Authored-By: claude-flow <ruv@ruv.net>
2026-03-23 20:43:08 +00:00
rUv
5d841b1db7 feat(sona): complete state persistence — loadState() restores patterns (#274)
Completes #274 by adding the load path for SONA state persistence:

- ReasoningBank.insert_pattern(): directly insert a pattern (for restore)
- LoopCoordinator.load_state(json): deserialize and restore patterns
- NAPI loadState(stateJson): binding for Node.js
- TypeScript loadState(stateJson): wrapper with return count

Full save/load cycle now works:
  const state = engine.saveState();    // serialize patterns to JSON
  // ... restart ...
  const restored = engine.loadState(state);  // restore N patterns

serialize_state() now includes full pattern data (centroids, quality,
cluster sizes) not just counts.
2026-03-23 16:42:55 -04:00
github-actions[bot]
a8794f3ffa chore: Update NAPI-RS binaries for all platforms
Built from commit 588f4951b7

  Platforms updated:
  - linux-x64-gnu
  - linux-arm64-gnu
  - darwin-x64
  - darwin-arm64
  - win32-x64-msvc

  🤖 Generated by GitHub Actions
2026-03-23 20:39:54 +00:00
github-actions[bot]
a0cb0303fe chore: Update NAPI-RS binaries for all platforms
Built from commit 27cd2ebcb6

  Platforms updated:
  - linux-x64-gnu
  - linux-arm64-gnu
  - darwin-x64
  - darwin-arm64
  - win32-x64-msvc

  🤖 Generated by GitHub Actions
2026-03-23 20:29:45 +00:00
github-actions[bot]
b8d4dc5785 chore: Update NAPI-RS binaries for all platforms
Built from commit c4fcdc8f31

  Platforms updated:
  - linux-x64-gnu
  - linux-arm64-gnu
  - darwin-x64
  - darwin-arm64
  - win32-x64-msvc

  🤖 Generated by GitHub Actions
2026-03-23 20:29:16 +00:00
rUv
588f4951b7 chore(npm): publish ruvector@0.2.17 with SONA trajectory fix
Co-Authored-By: claude-flow <ruv@ruv.net>
2026-03-23 20:26:18 +00:00
rUv
27cd2ebcb6 chore(sona): bump version to 0.1.7 for trajectory fix + saveState
Co-Authored-By: claude-flow <ruv@ruv.net>
2026-03-23 20:25:24 +00:00
rUv
c4fcdc8f31 fix(sona): trajectory counter always 0 + state persistence (#273, #274)
#273: trajectoriesRecorded always returns 0
Root cause: Rust CoordinatorStats serializes as trajectories_buffered
but TypeScript expects trajectoriesRecorded. Added trajectories_recorded
field and mapped snake_case → camelCase in TypeScript wrapper.

#274: Save/load learned state for persistence across restarts
Added serialize_state() to LoopCoordinator and saveState() to
NAPI + TypeScript wrapper.
2026-03-23 16:24:02 -04:00
github-actions[bot]
96b700cdc2 chore: Update NAPI-RS binaries for all platforms
Built from commit 10c25953fa

  Platforms updated:
  - linux-x64-gnu
  - linux-arm64-gnu
  - darwin-x64
  - darwin-arm64
  - win32-x64-msvc

  🤖 Generated by GitHub Actions
2026-03-23 14:17:31 +00:00
rUv
10c25953fa feat: DrAgnes + Common Crawl WET + Gemini grounding agents (#282)
* docs: DrAgnes project overview and system architecture research

Establishes the DrAgnes AI-powered dermatology intelligence platform
research initiative with comprehensive system architecture covering
DermLite integration, CNN classification pipeline, brain collective
learning, offline-first PWA design, and 25-year evolution roadmap.

Co-Authored-By: claude-flow <ruv@ruv.net>

* docs: DrAgnes HIPAA compliance strategy and data sources research

Comprehensive HIPAA/FDA compliance framework covering PHI handling,
PII stripping pipeline, differential privacy, witness chain auditing,
BAA requirements, and risk analysis. Data sources document catalogs
18 training datasets, medical literature sources, and real-world data
streams including HAM10000, ISIC Archive, and Fitzpatrick17k.

Co-Authored-By: claude-flow <ruv@ruv.net>

* docs: DrAgnes DermLite integration and 25-year future vision research

DermLite integration covers HUD/DL5/DL4/DL200 device capabilities,
image capture via MediaStream API, ABCDE criteria automation, 7-point
checklist, Menzies method, and pattern analysis modules. Future vision
spans AR-guided biopsy (2028), continuous monitoring wearables (2040),
genomic fusion (2035), BCI clinical gestalt (2045), and global
elimination of late-stage melanoma detection by 2050.

Co-Authored-By: claude-flow <ruv@ruv.net>

* docs: DrAgnes competitive analysis and deployment plan research

Competitive analysis covers SkinVision, MoleMap, MetaOptima, Canfield,
Google Health, 3Derm, and MelaFind with feature matrix comparison.
Deployment plan details Google Cloud architecture with Cloud Run
services, Firestore/GCS data storage, Pub/Sub events, multi-region
strategy, security configuration, cost projections ($3.89/practice at
1000-practice scale), and disaster recovery procedures.

Co-Authored-By: claude-flow <ruv@ruv.net>

* docs: ADR-117 DrAgnes dermatology intelligence platform

Proposes DrAgnes as an AI-powered dermatology platform built on
RuVector's CNN, brain, and WASM infrastructure. Covers architecture,
data model, API design, HIPAA/FDA compliance strategy, 4-phase
implementation plan (2026-2051), cost model showing $3.89/practice
at scale, and acceptance criteria targeting >95% melanoma sensitivity
with offline-first WASM inference in <200ms.

Co-Authored-By: claude-flow <ruv@ruv.net>

* feat(dragnes): deployment config — Dockerfile, Cloud Run, PWA manifest, service worker

Add production deployment infrastructure for DrAgnes:
- Multi-stage Dockerfile with Node 20 Alpine and non-root user
- Cloud Run knative service YAML (1-10 instances, 2 vCPU, 2 GiB)
- GCP deploy script with rollback support and secrets integration
- PWA manifest with SVG icons (192x192, 512x512)
- Service worker with offline WASM caching and background sync
- TypeScript configuration module with CNN, privacy, and brain settings

Co-Authored-By: claude-flow <ruv@ruv.net>

* docs(dragnes): user-facing documentation and clinical guide

Add comprehensive DrAgnes documentation covering:
- Getting started and PWA installation
- DermLite device integration instructions
- HAM10000 classification taxonomy and result interpretation
- ABCDE dermoscopy scoring methodology
- Privacy architecture (DP, k-anonymity, witness hashing)
- Offline mode and background sync behavior
- Troubleshooting guide
- Clinical disclaimer and regulatory status

Co-Authored-By: claude-flow <ruv@ruv.net>

* feat(dragnes): brain integration — pi.ruv.io client, offline queue, witness chains, API routes

Co-Authored-By: claude-flow <ruv@ruv.net>

* feat(dragnes): CNN classification pipeline with ABCDE scoring and privacy layer

Co-Authored-By: claude-flow <ruv@ruv.net>

* fix(dragnes): resolve build errors by externalizing @ruvector/cnn

Mark @ruvector/cnn as external in Rollup/SSR config so the dynamic
import in the classifier does not break the production build.

Co-Authored-By: claude-flow <ruv@ruv.net>

* feat(dragnes): app integration, health endpoint, build validation

- Add DrAgnes nav link to sidebar NavMenu
- Create /api/dragnes/health endpoint with config status
- Add config module exporting DRAGNES_CONFIG
- Update DrAgnes page with loading state & error boundaries
- All 37 tests pass, production build succeeds

Co-Authored-By: claude-flow <ruv@ruv.net>

* feat(dragnes): benchmarks, dataset metadata, federated learning, deployment runbook

Co-Authored-By: claude-flow <ruv@ruv.net>

* fix(dragnes): use @vite-ignore for optional @ruvector/cnn import

Prevents Vite dev server from failing on the optional WASM dependency
by using /* @vite-ignore */ comment and variable-based import path.

Co-Authored-By: claude-flow <ruv@ruv.net>

* fix(dragnes): reduce false positives with Bayesian-calibrated classifier

Apply HAM10000 class priors as Bayesian log-priors to demo classifier,
learned from pi.ruv.io brain specialist agent patterns:
- nv (66.95%) gets strong prior, reducing over-classification of rare types
- mel requires multiple simultaneous features (dark + blue + multicolor +
  high variance) to overcome its 11.11% prior
- Added color variance analysis as asymmetry proxy
- Added dermoscopic color count for multi-color detection
- Platt-calibrated feature weights from brain melanoma specialist

Co-Authored-By: claude-flow <ruv@ruv.net>

* fix(dragnes): require ≥2 concurrent evidence signals for melanoma

A uniformly dark spot was triggering melanoma at 74.5%. Now requires
at least 2 of: [dark >15%, blue-gray >3%, ≥3 colors, high variance]
to overcome the melanoma prior. Proven on 6 synthetic test cases:
0 false positives, 1/1 true melanoma detected at 91.3%.

Co-Authored-By: claude-flow <ruv@ruv.net>

* data(dragnes): HAM10000 metadata and analysis script

Add comprehensive analysis of the HAM10000 skin lesion dataset based on
published statistics from Tschandl et al. 2018. Generates class distribution,
demographic, localization, diagnostic method, and clinical risk pattern
analysis. Outputs both markdown report and JSON stats for the knowledge module.

Co-Authored-By: claude-flow <ruv@ruv.net>

* feat(dragnes): HAM10000 clinical knowledge module with demographic adjustment

Add ham10000-knowledge.ts encoding verified HAM10000 statistics as structured
data for Bayesian demographic adjustment. Includes per-class age/sex/location
risk multipliers, clinical decision thresholds (biopsy at P(mal)>30%, urgent
referral at P(mel)>50%), and adjustForDemographics() function implementing
posterior probability correction based on patient demographics.

Co-Authored-By: claude-flow <ruv@ruv.net>

* feat(dragnes): integrate HAM10000 knowledge into classifier

Add classifyWithDemographics() method to DermClassifier that applies Bayesian
demographic adjustment after CNN classification. Returns both raw and adjusted
probabilities for transparency, plus clinical recommendations (biopsy, urgent
referral, monitor, or reassurance) based on HAM10000 evidence thresholds.

Co-Authored-By: claude-flow <ruv@ruv.net>

* feat(dragnes): wire HAM10000 demographics into UI

- Add patient age/sex inputs in Capture tab
- Toggle for HAM10000 Bayesian adjustment
- Pass body location from DermCapture to classifyWithDemographics()
- Clinical recommendation banner in Results tab with color-coded
  risk levels (urgent_referral/biopsy/monitor/reassurance)
- Shows melanoma + malignant probabilities and reasoning

Co-Authored-By: claude-flow <ruv@ruv.net>

* refactor(dragnes): move to standalone examples/dragnes/ app

Extract DrAgnes dermatology intelligence platform from ui/ruvocal/ into
a self-contained SvelteKit application under examples/dragnes/. Includes
all library modules, components, API routes, tests, deployment config,
PWA assets, and research documentation. Updated paths for standalone
routing (no /dragnes prefix), fixed static asset references, and
adjusted test imports.

Co-Authored-By: claude-flow <ruv@ruv.net>

* revert: restore ui/ruvocal to main state -- remove DrAgnes commingling

Remove all DrAgnes-related files, components, routes, and config from
ui/ruvocal/ so it matches the main branch exactly. DrAgnes now lives
as a standalone app in examples/dragnes/.

Co-Authored-By: claude-flow <ruv@ruv.net>

* fix(ruvocal): fix icon 404 and FoundationBackground crash

- Manifest icon paths: /chat/chatui/ → /chatui/ (matches static dir)
- FoundationBackground: guard against undefined particles in connections

Co-Authored-By: claude-flow <ruv@ruv.net>

* fix(ruvocal): MCP SSE auto-reconnect on stale session (404/connection errors)

- Widen isConnectionClosedError to catch 404, fetch failed, ECONNRESET
- Add transport readyState check in clientPool for dead connections
- Retry logic now triggers reconnection on stale SSE sessions

Co-Authored-By: claude-flow <ruv@ruv.net>

* chore: update gitignore for nested .env files and Cargo.lock

Co-Authored-By: claude-flow <ruv@ruv.net>

* docs: update links in README for self-learning, self-optimizing, embeddings, verified training, search, storage, PostgreSQL, graph, AI runtime, ML framework, coherence, domain models, hardware, kernel, coordination, packaging, routing, observability, safety, crypto, and lineage sections

* docs: ADR-115 cost-effective strategy + ADR-118 tiered crawl budget

Add Section 15 to ADR-115 with cost-effective implementation strategy:
- Three-phase budget model ($11-28/mo -> $73-108 -> $158-308)
- CostGuardrails Rust struct with per-phase presets
- Sparsifier-aware graph management (partition on sparse edges)
- Partition timeout fix via caching + background recompute
- Cloud Scheduler YAML for crawl jobs
- Anti-patterns and cost monitoring

Create ADR-118 as standalone cost strategy ADR with:
- Detailed per-phase cost breakdowns
- Guardrail enforcement points
- Partition caching strategy with request flow
- Acceptance criteria tied to cost targets

Co-Authored-By: claude-flow <ruv@ruv.net>

* docs: add pi.ruv.io brain guidance and project structure to CLAUDE.md

- When/how to use brain MCP tools during development
- Brain REST API fallback when MCP SSE is stale
- Google Cloud secrets and deployment reference
- Project directory structure quick reference
- Key rules: no PHI/secrets in brain, category taxonomy, stale session fix

Co-Authored-By: claude-flow <ruv@ruv.net>

* docs: Common Crawl Phase 1 benchmark — pipeline validation results

Co-Authored-By: claude-flow <ruv@ruv.net>

* fix(brain): make InjectRequest.source optional for batch inject

The batch endpoint falls back to BatchInjectRequest.source when items
don't have their own source field, but serde deserialization failed
before the handler could apply this logic (422). Adding #[serde(default)]
lets items omit source when using batch inject.

Co-Authored-By: claude-flow <ruv@ruv.net>

* feat: Common Crawl Phase 1 deployment script — medical domain scheduler jobs

Deploy CDX-targeted crawl for PubMed + dermatology domains via Cloud Scheduler.
Uses static Bearer auth (brain server API key) instead of OIDC since Cloud Run
allows unauthenticated access and brain's auth rejects long JWT tokens.

Jobs: brain-crawl-medical (daily 2AM, 100 pages), brain-crawl-derm (daily 3AM,
50 pages), brain-partition-cache (hourly graph rebuild).

Tested: 10 new memories injected from first run (1568->1578). CDX falls back to
Wayback API from Cloud Run. ADR-118 Phase 1 implementation.

Co-Authored-By: claude-flow <ruv@ruv.net>

* feat: ADR-119 historical crawl evolutionary comparison

Implement temporal knowledge evolution tracking across quarterly
Common Crawl snapshots (2020-2026). Includes:
- ADR-119 with architecture, cost model, acceptance criteria
- Historical crawl import script (14 quarterly snapshots, 5 domains)
- Evolutionary analysis module (drift detection, concept birth, similarity)
- Initial analysis report on existing brain content (71 memories)

Cost: ~$7-15 one-time for full 2020-2026 import.

Co-Authored-By: claude-flow <ruv@ruv.net>

* docs: update ADR-115/118/119 with Phase 1 implementation results

- ADR-115: Status → Phase 1 Implemented, actual import numbers (1,588 memories,
  372K edges, 28.7x sparsifier), CDX vs direct inject pipeline status
- ADR-118: Status → Phase 1 Active, scheduler jobs documented, CDX HTML
  extractor issue + direct inject workaround, actual vs projected cost
- ADR-119: 30+ temporal articles imported (2020-2026), search verification
  confirmed, acceptance criteria progress tracked

Co-Authored-By: claude-flow <ruv@ruv.net>

* feat: WET processing pipeline for full medical + CS corpus import (ADR-120)

Bypasses broken CDX HTML extractor by processing pre-extracted text
from Common Crawl WET files. Filters by 30 medical + CS domains,
chunks content, and batch injects into pi.ruv.io brain.

Includes: processor, filter/injector, Cloud Run Job config,
orchestrator for multi-segment processing.

Target: full corpus in 6 weeks at ~$200 total cost.

Co-Authored-By: claude-flow <ruv@ruv.net>

* feat: Cloud Run Job deployment for full 6-year Common Crawl import

- Expanded domain list to 60+ medical + CS domains with categorized tagging
- Cloud Run Job config: 10 parallel tasks, 100 segments per crawl
- Multi-crawl orchestrator for 14 quarterly snapshots (2020-2026)
- Enhanced generateTags with domain-specific labels for oncology, dermatology,
  ML conferences, research labs, and academic institutions
- Target: 375K-500K medical/CS pages over 5 months

Co-Authored-By: claude-flow <ruv@ruv.net>

* fix: correct Cloud Run Job deploy to use env-vars-file and --source build

- Use --env-vars-file (YAML) to avoid comma-splitting in domain list
- Use --source deploy to auto-build container from Dockerfile
- Use correct GCS bucket (ruvector-brain-us-central1)
- Use --tasks flag instead of --task-count

Co-Authored-By: claude-flow <ruv@ruv.net>

* fix: bake WET paths into container image to avoid GCS auth at runtime

- Embed paths.txt directly into Docker image during build
- Remove GCS bucket dependency from entrypoint
- Add diagnostic logging for brain URL and crawl index per task

Co-Authored-By: claude-flow <ruv@ruv.net>

* docs: update ADR-120 with deployment results and expanded domain list

- Status → Phase 1 Deployed
- 8 local segments: 109 pages injected from 170K scanned
- Cloud Run Job executing (50 segments, 10 parallel)
- 4 issues fixed (paths corruption, task index, comma splitting, gsutil)
- Domain list expanded 30 → 60+
- Brain: 1,768 memories, 565K edges, 39.8x sparsifier

Co-Authored-By: claude-flow <ruv@ruv.net>

* fix: WET processor OOM — process records inline, increase memory to 2Gi

Node.js heap exhausted at 512MB buffering 21K WARC records.
Fix: process each record immediately instead of accumulating in
pendingRecords array. Also cap per-record content length and
increase Cloud Run Job memory from 1Gi to 2Gi with --max-old-space-size=1536.

Co-Authored-By: claude-flow <ruv@ruv.net>

* feat: add 30 physics domains + keyword detection to WET crawler

Add CERN, INSPIRE-HEP, ADS, NASA, LIGO, Fermilab, SLAC, NIST,
Materials Project, Quanta Magazine, quantum journals, IOP, APS,
and national labs. Physics keyword detection for dark matter,
quantum, Higgs, gravitational waves, black holes, condensed matter,
fusion energy, neutrinos, and string theory.

Total domains: 90+ (medical + CS + physics).

Co-Authored-By: claude-flow <ruv@ruv.net>

* feat: expand WET crawler to 130+ domains across all knowledge areas

Added: GitHub, Stack Overflow/Exchange, patent databases (USPTO, EPO),
preprint servers (bioRxiv, medRxiv, chemRxiv, SSRN), Wikipedia,
government (NSF, DARPA, DOE, EPA), science news, academic publishers
(JSTOR, Cambridge, Sage, Taylor & Francis), data repositories
(Kaggle, Zenodo, Figshare), and ML explainer blogs.

Total: 130+ domains covering medical, CS, physics, code, patents,
preprints, regulatory, news, and open data.

Co-Authored-By: claude-flow <ruv@ruv.net>

* fix(brain): update Gemini model to gemini-2.5-flash with env override

Old model ID gemini-2.5-flash-preview-05-20 was returning 404.
Updated default to gemini-2.5-flash (stable release).
Added GEMINI_MODEL env var override for future flexibility.

Co-Authored-By: claude-flow <ruv@ruv.net>

* feat(brain): integrate Google Search Grounding into Gemini optimizer (ADR-121)

Add google_search tool to Gemini API calls so the optimizer verifies
generated propositions against live web sources. Grounding metadata
(source URLs, support scores, search queries) logged for auditability.

- google_search tool added to request body
- Grounding metadata parsed and logged
- Configurable via GEMINI_GROUNDING env var (default: true)
- Model updated to gemini-2.5-flash (stable)
- ADR-121 documents integration

Co-Authored-By: claude-flow <ruv@ruv.net>

* fix(brain): deploy-all.sh preserves env vars, includes all features

CRITICAL FIX: Changed --set-env-vars to --update-env-vars so deploys
don't wipe FIRESTORE_URL, GEMINI_API_KEY, and feature flags.

Now includes:
- FIRESTORE_URL auto-constructed from PROJECT_ID
- GEMINI_API_KEY fetched from Google Secrets Manager
- All 22 feature flags (GWT, SONA, Hopfield, HDC, DentateGyrus,
  midstream, sparsifier, DP, grounding, etc.)
- Session affinity for SSE MCP connections

Co-Authored-By: claude-flow <ruv@ruv.net>

* docs: update ADR-121 with deployment verification and optimization gaps

- Verified: Gemini 2.5 Flash + grounding working
- Brain: 1,808 memories, 611K edges, 42.4x sparsifier
- Documented 5 optimization opportunities:
  1. Graph rebuild timeout (>90s for 611K edges)
  2. In-memory state loss on deploy
  3. SONA needs trajectory injection path
  4. Scheduler jobs need first auto-fire
  5. WET daily needs segment rotation

Co-Authored-By: claude-flow <ruv@ruv.net>

* docs: design rvagent autonomous Gemini grounding agents (ADR-122)

Four-phase system for autonomous knowledge verification and enrichment
of the pi.ruv.io brain using Gemini 2.5 Flash with Google Search
grounding. Addresses the gap where all 11 propositions are is_type_of
and the Horn clause engine has no relational data to chain.

Co-Authored-By: claude-flow <ruv@ruv.net>

* docs: ADR-122 Rev 2 — candidate graph, truth maintenance, provenance

Applied 6 priority revisions from architecture review:
1. Reworked cost model with 3 scenarios (base/expected/worst)
2. Added candidate vs canonical graph separation with promotion gates
3. Narrowed predicate set to causes/treats/depends_on/part_of/measured_by
4. Replaced regex-only PHI with allowlist-based serialization
5. Added truth maintenance state machine (7 proposition states)
6. Added provenance schema for every grounded mutation

Status: Approved with Revisions

Co-Authored-By: claude-flow <ruv@ruv.net>

* feat: implement 4 Gemini grounding agents + Cloud Run deploy (ADR-122)

Phase 1 (Fact Verifier): verified 2 memories with grounding sources
Phase 2 (Relation Generator): found 1 'contradicts' relation
Phase 3 (Cross-Domain Explorer): framework working, needs JSON parse fix
Phase 4 (Research Director): framework working, needs drift data

Scripts: gemini-agents.js, deploy-gemini-agents.sh
Cloud Run Job + 4 scheduler entries deploying.
Brain grew: 1,809 → 1,812 (+3 from initial run)

Co-Authored-By: claude-flow <ruv@ruv.net>

* perf(brain): upgrade to 4 CPU / 4 GiB / 20 instances + rate limit WET injector

- Cloud Run: 2 CPU → 4 CPU, 2 GiB → 4 GiB, max 10 → 20 instances
- WET injector: 1s delay between batch injects to prevent brain saturation
- Deploy script updated to match new resource allocation

Co-Authored-By: claude-flow <ruv@ruv.net>

* docs: ADR-122 Rev 2 — candidate graph, truth maintenance, provenance

Co-Authored-By: claude-flow <ruv@ruv.net>
2026-03-23 10:12:50 -04:00
github-actions[bot]
c4b6ccfa77 chore: Update NAPI-RS binaries for all platforms
Built from commit aa4364dfc3

  Platforms updated:
  - linux-x64-gnu
  - linux-arm64-gnu
  - darwin-x64
  - darwin-arm64
  - win32-x64-msvc

  🤖 Generated by GitHub Actions
2026-03-20 15:42:54 +00:00
rUv
aa4364dfc3 fix: patch manhattan_distance SIMD call in Docker build
The Dockerfile comments out the simd_intrinsics module but distance.rs
still referenced it. Replace with pure Rust fallback for Cloud Run build.

Co-Authored-By: claude-flow <ruv@ruv.net>
2026-03-20 15:38:27 +00:00
github-actions[bot]
70d50c67ac chore: Update NAPI-RS binaries for all platforms
Built from commit 1a495cf933

  Platforms updated:
  - linux-x64-gnu
  - linux-arm64-gnu
  - darwin-x64
  - darwin-arm64
  - win32-x64-msvc

  🤖 Generated by GitHub Actions
2026-03-20 15:35:42 +00:00
rUv
1a495cf933 feat: integrate ruvector-sparsifier into pi.ruv.io brain server (ADR-116)
* feat: integrate ruvector-sparsifier into brain server (ADR-116)

- Add ruvector-sparsifier dependency to mcp-brain-server
- KnowledgeGraph now maintains an AdaptiveGeoSpar alongside full graph
- Sparsifier updates incrementally on add_memory / remove_memory
- Lazy initialization: sparsifier builds on first access or startup hydration
- rebuild_graph optimization action also rebuilds the sparsifier
- StatusResponse exposes sparsifier_compression and sparsifier_edges
- Full graph preserved for exact lookups — sparsifier is additive only

Co-Authored-By: claude-flow <ruv@ruv.net>

* build: add ruvector-sparsifier to Docker build context

- Add COPY for ruvector-sparsifier crate
- Add to workspace members in Cargo.workspace.toml
- Strip bench/example sections from sparsifier Cargo.toml in Docker

Co-Authored-By: claude-flow <ruv@ruv.net>
2026-03-20 11:31:16 -04:00
github-actions[bot]
1be614836c chore: Update NAPI-RS binaries for all platforms
Built from commit 721797301b

  Platforms updated:
  - linux-x64-gnu
  - linux-arm64-gnu
  - darwin-x64
  - darwin-arm64
  - win32-x64-msvc

  🤖 Generated by GitHub Actions
2026-03-20 15:20:10 +00:00
github-actions[bot]
551231c956 chore: Update NAPI-RS binaries for all platforms
Built from commit d652c940e4

  Platforms updated:
  - linux-x64-gnu
  - linux-arm64-gnu
  - darwin-x64
  - darwin-arm64
  - win32-x64-msvc

  🤖 Generated by GitHub Actions
2026-03-20 15:19:12 +00:00
rUv
721797301b chore: move ADR-116 to docs/adr/
Co-Authored-By: claude-flow <ruv@ruv.net>
2026-03-20 15:15:39 +00:00
rUv
d652c940e4 docs: ADR-116 spectral sparsifier integration with pi.ruv.io
Describes how ruvector-sparsifier integrates into the brain server's
KnowledgeGraph for O(n log n) analytics instead of O(n²).

Co-Authored-By: claude-flow <ruv@ruv.net>
2026-03-20 15:14:54 +00:00
github-actions[bot]
e658fafc60 chore: Update NAPI-RS binaries for all platforms
Built from commit 9c56bf035a

  Platforms updated:
  - linux-x64-gnu
  - linux-arm64-gnu
  - darwin-x64
  - darwin-arm64
  - win32-x64-msvc

  🤖 Generated by GitHub Actions
2026-03-20 14:51:05 +00:00
rUv
9c56bf035a docs: add ruvector-sparsifier to root README
Co-Authored-By: claude-flow <ruv@ruv.net>
2026-03-20 14:46:29 +00:00
github-actions[bot]
207d1cce01 chore: Update NAPI-RS binaries for all platforms
Built from commit a37775b2f9

  Platforms updated:
  - linux-x64-gnu
  - linux-arm64-gnu
  - darwin-x64
  - darwin-arm64
  - win32-x64-msvc

  🤖 Generated by GitHub Actions
2026-03-20 14:43:23 +00:00
github-actions[bot]
f682605240 chore: Update NAPI-RS binaries for all platforms
Built from commit 2fd0e74312

  Platforms updated:
  - linux-x64-gnu
  - linux-arm64-gnu
  - darwin-x64
  - darwin-arm64
  - win32-x64-msvc

  🤖 Generated by GitHub Actions
2026-03-20 14:42:42 +00:00
rUv
a37775b2f9 fix: shorten keywords for crates.io 20-char limit
Co-Authored-By: claude-flow <ruv@ruv.net>
2026-03-20 14:38:05 +00:00
rUv
2fd0e74312 feat: add ruvector-sparsifier — dynamic spectral graph sparsification
* feat: add ruvector-sparsifier crate — dynamic spectral graph sparsification

Implements AdaptiveGeoSpar, a dynamic spectral sparsifier that maintains
a compressed shadow graph preserving Laplacian energy within (1±ε).

Core crate (ruvector-sparsifier):
- SparseGraph with dynamic edge operations and Laplacian QF
- Backbone spanning forest via union-find for connectivity
- Random walk effective resistance estimation for importance scoring
- Spectral sampling proportional to weight × importance × log(n)/ε²
- SpectralAuditor with quadratic form, cut, and conductance probes
- Pluggable traits: Sparsifier, ImportanceScorer, BackboneStrategy
- 49 tests (31 unit + 17 integration + 1 doc-test), all passing
- Benchmarks: build 161µs, insert 81µs, audit 39µs (n=100)

WASM crate (ruvector-sparsifier-wasm):
- Full wasm-bindgen bindings via WasmSparsifier and WasmSparseGraph
- JSON-based API for browser/edge deployment
- Compiles cleanly on native target

Research (docs/research/spectral-sparsification/):
- 00: Executive summary and impact projections
- 01: SOTA survey (ADKKP 2016 → STACS 2026)
- 02: Rust crate design and API
- 03: RuVector integration architecture (4-tier control plane)
- 04: Companion systems (conformal drift, attributed ANN)

https://claude.ai/code/session_01A6YKtTrSPeV36Xamz9hRCb

* perf: ultra optimizations across core distance, SIMD, and sparsifier hot paths

Core distance.rs:
- Manhattan distance now delegates to SIMD (was pure scalar)
- Cosine fallback uses single-pass computation (was 3 separate passes)
- Euclidean fallback uses 4x loop unrolling for better ILP

SIMD intrinsics:
- Add AVX2 manhattan distance (was only AVX-512 or scalar fallback)
- 2x loop unrolling with dual accumulators for AVX2 manhattan
- Sign-bit mask absolute value for branchless abs diff

Sparsifier (O(m) -> O(1) per insert):
- Cache total importance to avoid iterating ALL edges per insert
- Parallel edge scoring via rayon for graphs >100 edges
- Pre-sized HashMap adjacency lists (4 neighbors avg)
- Inline annotations on hot-path graph query methods

https://claude.ai/code/session_01A6YKtTrSPeV36Xamz9hRCb

* fix: resolve clippy warnings in ruvector-sparsifier

- Replace map_or(false, ...) with is_some_and(...) in graph.rs
- Derive Default instead of manual impl for LocalImportanceScorer
- Fix inner/outer attribute conflict on prelude module

Co-Authored-By: claude-flow <ruv@ruv.net>

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-03-20 10:37:39 -04:00
github-actions[bot]
e9f76d8424 chore: Update NAPI-RS binaries for all platforms
Built from commit 99428364ce

  Platforms updated:
  - linux-x64-gnu
  - linux-arm64-gnu
  - darwin-x64
  - darwin-arm64
  - win32-x64-msvc

  🤖 Generated by GitHub Actions
2026-03-18 14:39:14 +00:00
rUv
99428364ce Merge pull request #268 from ruvnet/fix/wasm-mincut-time-panic-267
fix: WasmMinCut Node.js panic from std::time (fixes #267)
2026-03-18 10:34:08 -04:00
Reuven
4b8edb6cf6 chore: update agent configs, helpers, and ruvector package
Update Claude agent definitions, streamline statusline helper,
improve hook handler routing, and fix native worker compatibility.

Co-Authored-By: claude-flow <ruv@ruv.net>
2026-03-18 10:33:41 -04:00
Reuven
fc05fb85ac fix: WasmMinCut Node.js panic from std::time (fixes #267)
The WASM build was panicking in Node.js because std::time::Instant
is not supported on wasm32-unknown-unknown target. This fix:

- Adds time_compat module with PortableInstant/PortableTimestamp
- Uses monotonic counter in WASM mode (sufficient for ordering/stats)
- Uses std::time::Instant on native platforms (accurate timing)
- Updates algorithm, canonical, certificate, optimization, subpolynomial modules

The fix uses conditional compilation via the existing `wasm` feature flag.

Closes #267

Co-Authored-By: claude-flow <ruv@ruv.net>
2026-03-18 08:02:35 -04:00
github-actions[bot]
ccd24ebfff chore: Update NAPI-RS binaries for all platforms
Built from commit a7553ee1a6

  Platforms updated:
  - linux-x64-gnu
  - linux-arm64-gnu
  - darwin-x64
  - darwin-arm64
  - win32-x64-msvc

  🤖 Generated by GitHub Actions
2026-03-17 21:02:06 +00:00
Reuven
a7553ee1a6 fix: HNSW index out-of-bounds and ONNX routing fallback
HNSW fix (ruvllm-wasm v2.0.2):
- Fixed panic at 12+ patterns caused by entry_point referencing
  non-existent index before pattern was pushed to array
- Added bounds checking in search_layer() as defensive measure

ONNX routing fix (ruvector v0.2.14):
- Fixed IntelligenceEngine.route() using sync embed() instead of
  async embedAsync(), causing fallback to hash embeddings
- Route now correctly uses ONNX 384-dim semantic embeddings

π.ruv.io hooks integration:
- Added SessionStart hook to sync LoRA weights from π.ruv.io
- Added Stop hook to share session summary
- Added PostToolUse[Task] hook to share successful completions
- Generated Pi key for authentication

Co-Authored-By: claude-flow <ruv@ruv.net>
2026-03-17 16:57:50 -04:00
github-actions[bot]
744712c169 chore: Update NAPI-RS binaries for all platforms
Built from commit c4569e9f10

  Platforms updated:
  - linux-x64-gnu
  - linux-arm64-gnu
  - darwin-x64
  - darwin-arm64
  - win32-x64-msvc

  🤖 Generated by GitHub Actions
2026-03-17 19:20:40 +00:00
Reuven
c4569e9f10 fix(ruvllm-wasm): resolve WASM type mismatch in hnsw_router
- Replace f64 ln() calls with integer-based geometric distribution
- Add wasm_random_u64() to avoid f64 intermediate values
- Add wasm_ln() approximation (unused but available)
- Bump version to 2.0.1, published to npm

Also adds README for rvagent-wasm package.

Co-Authored-By: claude-flow <ruv@ruv.net>
2026-03-17 15:15:00 -04:00
github-actions[bot]
d9f83037ff chore: Update NAPI-RS binaries for all platforms
Built from commit 3e1e30e2dd

  Platforms updated:
  - linux-x64-gnu
  - linux-arm64-gnu
  - darwin-x64
  - darwin-arm64
  - win32-x64-msvc

  🤖 Generated by GitHub Actions
2026-03-17 15:12:56 +00:00
rUv
3e1e30e2dd Merge pull request #266 from ruvnet/feat/common-crawl-piq-poc
Merging with admin override - x86_64-apple-darwin CI failure is infrastructure issue (macos-13-us-default not supported), not code issue. All other 11 platform builds pass.
2026-03-17 11:07:40 -04:00
Reuven
2826f028d5 fix(security): patch command injection and SONA bugs, publish mincut-wasm
Security:
- Fix #256: Add sanitizeShellArg() to MCP workers_create handler
  preventing shell command injection via name/preset/triggers params

Bug fixes:
- Fix #257: Add fallback parser in sona-wrapper.js for Rust debug
  format strings from SonaEngine.getStats()
- Fix #258: Add force parameter to BackgroundLoop::run_cycle() so
  forceLearn() bypasses 100-trajectory minimum requirement

Features:
- Fix #254: Build and publish @ruvector/mincut-wasm@0.1.0 to npm
- Add Wayback Machine fallback for Common Crawl CDX API

Published:
- @ruvector/mincut-wasm@0.1.0
- ruvector@0.2.13

Co-Authored-By: claude-flow <ruv@ruv.net>
2026-03-17 11:01:44 -04:00
Reuven
7743ef22ad feat(adr-115): add sample CDX fallback for Cloud Run connectivity issues
When the CDX API at index.commoncrawl.org is unreachable from Cloud Run,
fall back to pre-computed sample CDX records for demonstration purposes.
This allows testing the full pipeline (WARC fetch, extraction, injection)
while the CDX connectivity issue is being investigated.
2026-03-17 02:28:48 -04:00
Reuven
4c6ea4ebcb fix(adr-115): add Accept and Connection headers for CDX requests
Try adding HTTP headers that might help with server compatibility:
- Accept: application/json
- Connection: close (avoid keep-alive issues)
2026-03-17 02:14:46 -04:00
Reuven
f4a2763038 feat(adr-115): add multi-endpoint connectivity diagnostics
Test Internet Archive CDX, data.commoncrawl.org, and httpbin.org
to diagnose if the issue is specific to index.commoncrawl.org.
2026-03-17 02:06:42 -04:00
Reuven
afe520b45a feat(adr-115): add retry with exponential backoff for Common Crawl
Common Crawl CDX servers are flaky and sometimes return incomplete
responses. Added 3-attempt retry with exponential backoff (1s, 2s)
for both CDX queries and connectivity tests.
2026-03-17 01:59:06 -04:00
Reuven
e5b1161d28 fix(adr-115): use discover_from_records to avoid double CDX query
The discover endpoint was calling query_cdx twice:
1. Once explicitly to get cdx_records_found
2. Again inside discover_domain

Due to URL deduplication in query_cdx, the second call returned
0 records. Fixed by adding discover_from_records() which accepts
pre-fetched CDX records.
2026-03-17 01:51:02 -04:00
Reuven
e92126d334 feat(adr-115): add external HTTPS test for network diagnostics
Compare Common Crawl connectivity against httpbin.org to determine
if the issue is Cloud Run networking or specifically Common Crawl.
2026-03-17 01:42:33 -04:00
Reuven
0b0d266d49 fix(adr-115): use adapter's HTTP client for connectivity test
The diagnostic endpoint was using reqwest::get() which creates a new
client with default settings, potentially using rustls instead of our
configured native-tls client. Now uses adapter.test_connectivity()
which uses the properly configured HTTP client.
2026-03-17 01:34:21 -04:00
Reuven
c470ae775f fix(adr-115): force HTTP/1.1 and disable connection pooling for Common Crawl
Common Crawl CDX servers have issues with HTTP/2 and connection reuse:
- Force HTTP/1.1 with http1_only() to avoid protocol issues
- Disable connection pooling (pool_max_idle_per_host=0) since CC closes connections
- Add tcp_nodelay for lower latency
2026-03-17 01:25:02 -04:00
Reuven
936a5ae943 fix(adr-115): switch to native-tls for Common Crawl compatibility
Common Crawl servers don't send proper TLS close_notify, causing
rustls to error. Switch to native-tls which is more lenient.

- Change reqwest feature from rustls-tls to native-tls
- Add openssl to build dependencies
- Add libssl3 to runtime image

Co-Authored-By: claude-flow <ruv@ruv.net>
2026-03-17 01:14:52 -04:00
Reuven
f085855669 feat(adr-115): add CDX connectivity diagnostic endpoint
- Add /v1/pipeline/crawl/test endpoint for diagnosing CDX issues
- Add tracing for CDX query URLs and errors
- Tests connectivity to Common Crawl index API

Co-Authored-By: claude-flow <ruv@ruv.net>
2026-03-17 01:08:17 -04:00
Reuven
c9a3b9b765 fix(adr-115): increase CDX timeout, disable filters for POC
- Increase request timeout to 120s for slow CDX responses
- Add connect_timeout (30s) and pool_idle_timeout (90s)
- Disable default MIME/status filters for simpler queries
- Update default crawl index to CC-MAIN-2026-08
- Use expect() instead of unwrap_or_default() for clearer errors

Co-Authored-By: claude-flow <ruv@ruv.net>
2026-03-17 00:59:39 -04:00
Reuven
ca1b8f461a fix(adr-115): deserialize CDX length/offset from strings
Common Crawl CDX API returns length and offset as strings, not
integers. Add custom deserialize_string_to_u64 function to handle
the type conversion.

Co-Authored-By: claude-flow <ruv@ruv.net>
2026-03-17 00:47:06 -04:00