From b19e13dc2a090fdf7e1a441dbaf9ab7186a7ddf8 Mon Sep 17 00:00:00 2001 From: Henrik Pettersen Date: Mon, 6 Jul 2026 19:25:47 +0100 Subject: [PATCH 1/7] fix: add missing FULL_HINTS entries (agentdb, rulake, daa, qudag) FULL_HINTS only recorded ruflo, but the shipped v0.5.0-dev bundle's kb/*.passages.jsonl already contains substantial full-body source indexing for agentdb (159 entries), rulake (80), daa (198), and qudag (401) -- proving these were built with --full at some point, even though nothing recorded it. Without a hint, the first time self-update.mjs ever rebuilds one of these repos (the moment it actually drifts), it silently downgrades that content from full source bodies to doc-comment-only snippets. agentdb/rulake reduce to one clean prefix each (src/, crates/ respectively -- every full-body path in the shipped bundle falls under them). daa/qudag are genuinely scattered multi-crate workspaces with no single clean prefix, so their entries are the exhaustive, empirically-derived minimal prefix set extracted directly from kb/{daa,qudag}.passages.jsonl -- reconstructed from evidence, not the original build command (which isn't recorded anywhere), so please correct if the authoritative list differs. Fixes #4 --- scripts/self-update.mjs | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/scripts/self-update.mjs b/scripts/self-update.mjs index b7e776e..3b24204 100644 --- a/scripts/self-update.mjs +++ b/scripts/self-update.mjs @@ -26,7 +26,28 @@ const MODEL_CACHE = process.env.KB_MODEL_CACHE || path.join(ROOT, 'kb', 'models- const KNOWN_CLONES = JSON.parse(process.env.RUVNET_KNOWN_CLONES || '{}'); const CLONE_DIR = path.join(ROOT, 'clones'); // --full source-dir hints per repo (extend as repos onboard; default = whole tree, docs+manifests+lead-comments) -const FULL_HINTS = { ruflo: 'v3/@claude-flow,v3/mcp,ruflo/src' }; +// +// The four entries below (agentdb/rulake/daa/qudag) close a real gap: the shipped v0.5.0-dev +// bundle's kb/*.passages.jsonl already contains substantial full-body source indexing for these +// repos (agentdb 159, rulake 80, daa 198, qudag 401 "Source ... (full body):" entries), but none +// of them were recorded here. Without a hint, the FIRST time self-update.mjs ever rebuilds one of +// these repos (the moment it actually drifts), it silently downgrades that content from full +// source bodies to doc-comment-only snippets -- the exact regression this fixes pre-emptively. +// +// agentdb/rulake: every full-body path falls under a single clean top-level dir, so one prefix +// covers all of it. daa/qudag are genuinely scattered multi-crate workspaces (no single clean +// prefix); the lists below are the exhaustive, empirically-derived minimal prefix set that +// reproduces every full-body path currently in the shipped bundle -- extracted directly from +// kb/{daa,qudag}.passages.jsonl, not guessed. The original build command that produced these +// isn't recorded anywhere, so these are reconstructed from evidence rather than confirmed against +// original intent -- please correct if the authoritative list differs. +const FULL_HINTS = { + ruflo: 'v3/@claude-flow,v3/mcp,ruflo/src', + agentdb: 'src', + rulake: 'crates', + daa: 'crates/daa-ai,crates/daa-chain,crates/daa-economy,crates/daa-rules,daa-ai/src,daa-chain/src,daa-cli/src,daa-compute/benches,daa-compute/build.rs,daa-compute/src,daa-compute/tests,daa-economy/src,daa-mcp/src,daa-orchestrator/daa-napi,daa-orchestrator/src,daa-orchestrator/tests,daa-rules/src,daa-sdk/crates,examples/agents,examples/basic-crypto.ts,examples/decentralized-task-scheduler.ts,examples/federated-learning.ts,examples/full-stack-agent.ts,examples/orchestrator.ts,examples/performance-benchmark.ts,prime-rust/crates,prime-rust/prime-napi,prime-rust/tests,src/main.rs,src/security', + qudag: 'benchmarks/benches,benchmarks/cli,benchmarks/dark_addressing,benchmarks/lib.rs,benchmarks/optimized_benchmarks.rs,benchmarks/src,cli-standalone/src,cli-standalone/tests,core/crypto,core/dag,core/health.rs,core/monitoring,core/network,core/optimized,core/protocol,core/swarm,core/vault,examples/bitchat,examples/crypto,examples/dark_addressing_example.rs,examples/dht_discovery_example.rs,examples/nat_traversal_example.rs,examples/onion_routing_example.rs,examples/peer_management_example.rs,examples/persistence_example.rs,examples/shadow_address_example.rs,examples/traffic_obfuscation_example.rs,qudag-exchange/cli,qudag-exchange/core,qudag-exchange/crates,qudag-exchange/src,qudag-exchange/test_core_fee_model.rs,qudag-exchange/test_fee_model.rs,qudag-exchange/tests,qudag-mcp/benches,qudag-mcp/examples,qudag-mcp/src,qudag-mcp/tests,qudag-testnet/configs,qudag-wasm/final-test.mjs,qudag-wasm/simple-test.mjs,qudag-wasm/src,qudag-wasm/test-nodejs.mjs,qudag-wasm/test-setup.ts,qudag-wasm/vitest.config.ts,qudag-wasm/vitest.workspace.ts,qudag-wasm/working-features-test.mjs,tools/cli,tools/simulator,tools/swarm-test,vault-standalone/examples,vault-standalone/src,vault-standalone/tests', +}; const tiers = JSON.parse(fs.readFileSync(path.join(ROOT, 'data/registry.tiers.json'), 'utf8')); const manifest = fs.existsSync(path.join(ROOT, 'data/manifest.json')) From aee7577b1cfa11cec0080f82b89ae4861782be81 Mon Sep 17 00:00:00 2001 From: Henrik Pettersen Date: Mon, 6 Jul 2026 20:01:58 +0100 Subject: [PATCH 2/7] fix: expand FULL_HINTS to all 14 repos with full-body content (was 5) The initial fix only covered agentdb/rulake/daa/qudag (found by auditing the shipped bundle). A full audit across every repo in the bundle found 9 more with the same gap: ruvector (1302 full-body entries -- the largest), ruv-fann (340), agentic-flow (300), agent-harness-generator (201), safla (133), ruview (116), open-claude-code (69), ruv-dev (22), agenticow (20). Confirmed this isn't hypothetical: rebuilding agent-harness-generator via self-update.mjs --apply (before this fix) actually took it from 201 full-body entries to 0 in this session. Most of these repos' full-body paths span nearly every crate/package in the repo, which strongly suggests the original bulk build simply used --full over the whole tree for T0-T2 tier repos, rather than a hand-curated subset per repo. Noted this observation in the comment in case a tier-based default is preferred over an ever-growing enumerated list -- did not implement that here since it changes forge-build.mjs's core matching semantics, which felt like a bigger change to propose without your input on the design, especially mid-way through an active security-hardening pass on this repo. Fixes #4 --- scripts/self-update.mjs | 48 +++++++++++++++++++++++++---------------- 1 file changed, 30 insertions(+), 18 deletions(-) diff --git a/scripts/self-update.mjs b/scripts/self-update.mjs index 3b24204..2c59ab6 100644 --- a/scripts/self-update.mjs +++ b/scripts/self-update.mjs @@ -27,26 +27,38 @@ const KNOWN_CLONES = JSON.parse(process.env.RUVNET_KNOWN_CLONES || '{}'); const CLONE_DIR = path.join(ROOT, 'clones'); // --full source-dir hints per repo (extend as repos onboard; default = whole tree, docs+manifests+lead-comments) // -// The four entries below (agentdb/rulake/daa/qudag) close a real gap: the shipped v0.5.0-dev -// bundle's kb/*.passages.jsonl already contains substantial full-body source indexing for these -// repos (agentdb 159, rulake 80, daa 198, qudag 401 "Source ... (full body):" entries), but none -// of them were recorded here. Without a hint, the FIRST time self-update.mjs ever rebuilds one of -// these repos (the moment it actually drifts), it silently downgrades that content from full -// source bodies to doc-comment-only snippets -- the exact regression this fixes pre-emptively. +// The shipped v0.5.0-dev bundle's kb/*.passages.jsonl already contains substantial full-body +// source indexing for 14 repos, but only ruflo was ever recorded here. Without a hint, the FIRST +// time self-update.mjs ever rebuilds one of the other 13 (the moment any of them actually +// drifts), it silently downgrades that content from full source bodies to doc-comment-only +// snippets. Confirmed this happens in practice: rebuilding agent-harness-generator via +// self-update.mjs --apply (before this fix) took it from 201 full-body entries to 0. // -// agentdb/rulake: every full-body path falls under a single clean top-level dir, so one prefix -// covers all of it. daa/qudag are genuinely scattered multi-crate workspaces (no single clean -// prefix); the lists below are the exhaustive, empirically-derived minimal prefix set that -// reproduces every full-body path currently in the shipped bundle -- extracted directly from -// kb/{daa,qudag}.passages.jsonl, not guessed. The original build command that produced these -// isn't recorded anywhere, so these are reconstructed from evidence rather than confirmed against -// original intent -- please correct if the authoritative list differs. +// ruflo/agentdb/rulake have one clean top-level prefix each (or a hand-curated small set, for +// ruflo) that reproduces the existing indexing. The rest are genuinely scattered multi-crate/ +// multi-package workspaces with no single clean prefix -- most span nearly every crate/package +// in the repo, which strongly suggests the original bulk build simply used --full over the +// whole tree for these T0-T2 tier repos rather than a hand-curated subset. The lists below are +// the exhaustive, empirically-derived minimal prefix set that reproduces every full-body path +// currently in the shipped bundle -- extracted directly from each repo's own +// kb/.passages.jsonl, not guessed. The original build command isn't recorded anywhere, so +// these are reconstructed from evidence rather than confirmed against original intent -- please +// correct if the authoritative list (or a switch to a tier-based default) is preferred instead. const FULL_HINTS = { - ruflo: 'v3/@claude-flow,v3/mcp,ruflo/src', - agentdb: 'src', - rulake: 'crates', - daa: 'crates/daa-ai,crates/daa-chain,crates/daa-economy,crates/daa-rules,daa-ai/src,daa-chain/src,daa-cli/src,daa-compute/benches,daa-compute/build.rs,daa-compute/src,daa-compute/tests,daa-economy/src,daa-mcp/src,daa-orchestrator/daa-napi,daa-orchestrator/src,daa-orchestrator/tests,daa-rules/src,daa-sdk/crates,examples/agents,examples/basic-crypto.ts,examples/decentralized-task-scheduler.ts,examples/federated-learning.ts,examples/full-stack-agent.ts,examples/orchestrator.ts,examples/performance-benchmark.ts,prime-rust/crates,prime-rust/prime-napi,prime-rust/tests,src/main.rs,src/security', - qudag: 'benchmarks/benches,benchmarks/cli,benchmarks/dark_addressing,benchmarks/lib.rs,benchmarks/optimized_benchmarks.rs,benchmarks/src,cli-standalone/src,cli-standalone/tests,core/crypto,core/dag,core/health.rs,core/monitoring,core/network,core/optimized,core/protocol,core/swarm,core/vault,examples/bitchat,examples/crypto,examples/dark_addressing_example.rs,examples/dht_discovery_example.rs,examples/nat_traversal_example.rs,examples/onion_routing_example.rs,examples/peer_management_example.rs,examples/persistence_example.rs,examples/shadow_address_example.rs,examples/traffic_obfuscation_example.rs,qudag-exchange/cli,qudag-exchange/core,qudag-exchange/crates,qudag-exchange/src,qudag-exchange/test_core_fee_model.rs,qudag-exchange/test_fee_model.rs,qudag-exchange/tests,qudag-mcp/benches,qudag-mcp/examples,qudag-mcp/src,qudag-mcp/tests,qudag-testnet/configs,qudag-wasm/final-test.mjs,qudag-wasm/simple-test.mjs,qudag-wasm/src,qudag-wasm/test-nodejs.mjs,qudag-wasm/test-setup.ts,qudag-wasm/vitest.config.ts,qudag-wasm/vitest.workspace.ts,qudag-wasm/working-features-test.mjs,tools/cli,tools/simulator,tools/swarm-test,vault-standalone/examples,vault-standalone/src,vault-standalone/tests', + 'ruflo': 'v3/@claude-flow,v3/mcp,ruflo/src', + 'agentdb': 'src', + 'rulake': 'crates', + 'daa': 'crates/daa-ai,crates/daa-chain,crates/daa-economy,crates/daa-rules,daa-ai/src,daa-chain/src,daa-cli/src,daa-compute/benches,daa-compute/build.rs,daa-compute/src,daa-compute/tests,daa-economy/src,daa-mcp/src,daa-orchestrator/daa-napi,daa-orchestrator/src,daa-orchestrator/tests,daa-rules/src,daa-sdk/crates,examples/agents,examples/basic-crypto.ts,examples/decentralized-task-scheduler.ts,examples/federated-learning.ts,examples/full-stack-agent.ts,examples/orchestrator.ts,examples/performance-benchmark.ts,prime-rust/crates,prime-rust/prime-napi,prime-rust/tests,src/main.rs,src/security', + 'qudag': 'benchmarks/benches,benchmarks/cli,benchmarks/dark_addressing,benchmarks/lib.rs,benchmarks/optimized_benchmarks.rs,benchmarks/src,cli-standalone/src,cli-standalone/tests,core/crypto,core/dag,core/health.rs,core/monitoring,core/network,core/optimized,core/protocol,core/swarm,core/vault,examples/bitchat,examples/crypto,examples/dark_addressing_example.rs,examples/dht_discovery_example.rs,examples/nat_traversal_example.rs,examples/onion_routing_example.rs,examples/peer_management_example.rs,examples/persistence_example.rs,examples/shadow_address_example.rs,examples/traffic_obfuscation_example.rs,qudag-exchange/cli,qudag-exchange/core,qudag-exchange/crates,qudag-exchange/src,qudag-exchange/test_core_fee_model.rs,qudag-exchange/test_fee_model.rs,qudag-exchange/tests,qudag-mcp/benches,qudag-mcp/examples,qudag-mcp/src,qudag-mcp/tests,qudag-testnet/configs,qudag-wasm/final-test.mjs,qudag-wasm/simple-test.mjs,qudag-wasm/src,qudag-wasm/test-nodejs.mjs,qudag-wasm/test-setup.ts,qudag-wasm/tests,qudag-wasm/vitest.config.ts,qudag-wasm/vitest.workspace.ts,qudag-wasm/working-features-test.mjs,tools/cli,tools/simulator,tools/swarm-test,vault-standalone/examples,vault-standalone/src,vault-standalone/tests', + 'ruvector': 'crates/agentic-robotics-core,crates/agentic-robotics-mcp,crates/agentic-robotics-node,crates/agentic-robotics-rt,crates/cognitum-gate-kernel,crates/cognitum-gate-tilezero,crates/emergent-time,crates/emergent-time-wasm,crates/hailort-sys,crates/mcp-brain,crates/mcp-brain-server,crates/mcp-gate,crates/micro-hnsw-wasm,crates/neural-trader-coherence,crates/neural-trader-core,crates/neural-trader-replay,crates/neural-trader-wasm,crates/photonlayer-bench,crates/photonlayer-cli,crates/photonlayer-core,crates/photonlayer-ruvector,crates/photonlayer-wasm,crates/prime-radiant,crates/ruos-thermal,crates/ruvector-acorn,crates/ruvector-acorn-wasm,crates/ruvector-agent-memory,crates/ruvector-attention,crates/ruvector-attention-cli,crates/ruvector-attention-node,crates/ruvector-attention-wasm,crates/ruvector-attn-mincut,crates/ruvector-bench,crates/ruvector-bet4-ivf-bench,crates/ruvector-capgated,crates/ruvector-cli,crates/ruvector-cluster,crates/ruvector-cnn,crates/ruvector-cnn-wasm,crates/ruvector-coherence,crates/ruvector-coherence-hnsw,crates/ruvector-collections,crates/ruvector-consciousness,crates/ruvector-core,crates/ruvector-crv,crates/ruvector-dag,crates/ruvector-dag-wasm,crates/ruvector-decompiler,crates/ruvector-delta-core,crates/ruvector-delta-graph,crates/ruvector-delta-index,crates/ruvector-delta-wasm,crates/ruvector-diskann,crates/ruvector-diskann-node,crates/ruvector-dither,crates/ruvector-economy-wasm,crates/ruvector-exotic-wasm,crates/ruvector-filter,crates/ruvector-gnn,crates/ruvector-gnn-node,crates/ruvector-gnn-rerank,crates/ruvector-gnn-wasm,crates/ruvector-graph,crates/ruvector-graph-condense,crates/ruvector-graph-node,crates/ruvector-graph-wasm,crates/ruvector-hailo,crates/ruvector-hailo-cluster,crates/ruvector-hnsw-repair,crates/ruvector-hybrid,crates/ruvector-kalshi,crates/ruvector-learning-wasm,crates/ruvector-lsm-ann,crates/ruvector-math,crates/ruvector-math-wasm,crates/ruvector-matryoshka,crates/ruvector-maxsim,crates/ruvector-metrics,crates/ruvector-mincut,crates/ruvector-mincut-node,crates/ruvector-mincut-wasm,crates/ruvector-mmwave,crates/ruvector-nervous-system,crates/ruvector-node,crates/ruvector-perception,crates/ruvector-postgres,crates/ruvector-pq-search,crates/ruvector-profiler,crates/ruvector-proof-gate,crates/ruvector-rabitq,crates/ruvector-rabitq-wasm,crates/ruvector-raft,crates/ruvector-rairs,crates/ruvector-replication,crates/ruvector-robotics,crates/ruvector-router-cli,crates/ruvector-router-core,crates/ruvector-router-ffi,crates/ruvector-router-wasm,crates/ruvector-rulake,crates/ruvector-server,crates/ruvector-snapshot,crates/ruvector-solver,crates/ruvector-solver-node,crates/ruvector-solver-wasm,crates/ruvector-sota-bench,crates/ruvector-spann,crates/ruvector-sparsifier,crates/ruvector-tiny-dancer-node,crates/ruvector-verified,crates/ruvector-verified-wasm,crates/ruvector-wasm,crates/ruvix,crates/ruvllm,crates/ruvllm-cli,crates/ruvllm-wasm,crates/ruvllm_sparse_attention,crates/rvAgent,crates/rvf,crates/rvlite,crates/rvm,crates/sona,crates/sonic-ct,crates/sonic-ct-wasm,crates/thermorust,crates/timesfm', + 'ruv-fann': 'cuda-wasm/.eslintrc.js,cuda-wasm/benches,cuda-wasm/build.rs,cuda-wasm/cli,cuda-wasm/cuda-examples,cuda-wasm/demo,cuda-wasm/examples,cuda-wasm/jest.config.js,cuda-wasm/scripts,cuda-wasm/src,cuda-wasm/tests,examples/basic_usage.rs,examples/cuda_wasm_neural_integration.rs,examples/final_performance_demo.rs,examples/gpu_sweet_spot_benchmark.rs,examples/gpu_training_test.rs,examples/test_adam.rs,examples/test_gpu_detection.rs,examples/test_optimizers_simple.rs,examples/xor.rs,neuro-divergent/src,neuro-divergent/tests,opencv-rust/opencv-core,opencv-rust/opencv-sdk,opencv-rust/opencv-sys,opencv-rust/opencv-wasm,opencv-rust/tests,ruv-swarm/benches,ruv-swarm/benchmarking,ruv-swarm/crates,ruv-swarm/examples,ruv-swarm/ml-training,ruv-swarm/models,ruv-swarm/npm,ruv-swarm/test,ruv-swarm/test-simd-fix.mjs,ruv-swarm/test-wasm.js,ruv-swarm/tests,ruv-swarm/vitest.config.js,src/activation.rs,src/cascade.rs,src/connection.rs,src/errors.rs,src/integration.rs,src/io,src/layer.rs,src/lib.rs,src/memory_manager.rs,src/mock_types.rs,src/network.rs,src/network_gpu.rs,src/neuron.rs,src/simd,src/tests,src/training,src/webgpu', + 'agentic-flow': 'agentic-flow/.claude,agentic-flow/Python,agentic-flow/add_two_numbers.py,agentic-flow/app,agentic-flow/benchmark,agentic-flow/examples,agentic-flow/path,agentic-flow/scripts,agentic-flow/src,agentic-flow/tests,agentic-flow/validation,agentic-flow/vitest.config.ts,crates/agentic-flow-quic,examples/batch-query.js,examples/batch-store.js,examples/billing-example.ts,examples/cached-query.js,examples/climate-prediction,examples/connection-pool.js,examples/deepseek-direct-api.js,examples/nova-medicina,examples/perf-monitor.js,examples/quic-server-coordinator.js,examples/quic-swarm-coordination.js,examples/reasoningbank-benchmark.js,examples/reasoningbank-learning-demo.js,examples/reasoningbank-optimize.js,examples/research-swarm,examples/verification-example.ts,packages/agent-booster,packages/agentdb-onnx,packages/agentic-jujutsu,packages/agentic-llm,reasoningbank/examples,reasoningbank/tests,src/App.tsx,src/api,src/cli,src/components,src/consent,src/controller,src/controllers,src/main.tsx,src/mcp,src/middleware,src/notifications,src/pages,src/providers,src/routing,src/security,src/services,src/transport,src/types,src/utils,src/verification', + 'agent-harness-generator': 'crates/kernel,crates/kernel-napi,crates/kernel-wasm,crates/poker-darwin,crates/template-catalog,packages/aws-finops,packages/bench,packages/create-agent-harness,packages/darwin-mode,packages/harness,packages/host-claude-code,packages/host-codex,packages/host-copilot,packages/host-github-actions,packages/host-hermes,packages/host-openclaw,packages/host-opencode,packages/host-pi-dev,packages/host-rvm,packages/jujutsu,packages/kernel-js,packages/projects,packages/redblue,packages/router,packages/sdk,packages/vertical-base,packages/vertical-trading,packages/weight-eft', + 'safla': 'benchmarks/__init__.py,benchmarks/cli_benchmarks.py,benchmarks/core.py,benchmarks/database.py,benchmarks/safla_benchmarks.py,benchmarks/utils.py,examples/01_basic_setup.py,examples/02_simple_memory.py,examples/03_basic_safety.py,examples/05_delta_evaluation.py,examples/12_ai_assistant.py,examples/15_enterprise_integration.py,examples/config_examples.py,examples/hybrid_memory_demo.py,examples/mcp_auth_client.py,examples/mcp_usage,examples/safety_validation_demo.py,safla/__init__.py,safla/__main__.py,safla/api,safla/auth,safla/cli.py,safla/cli_implementations.py,safla/cli_interactive.py,safla/cli_main.py,safla/cli_manager.py,safla/core,safla/exceptions.py,safla/installer.py,safla/integrations,safla/mcp,safla/mcp_stdio_server.py,safla/middleware,safla/security,safla/utils,safla/validation,safla_mcp_enhanced.py,safla_mcp_server.py,safla_mcp_simple.py,scripts/advanced_optimization_engine.py,scripts/agent_swarm_optimizer.py,scripts/build.py,scripts/comprehensive_capability_test.py,scripts/continuous_optimization_engine.py,scripts/debug_enhanced_server.py,scripts/demo_jwt_mcp_client.py,scripts/final_capability_verification.py,scripts/final_system_test.py,scripts/gpu_optimization_benchmark.py,scripts/install.py,scripts/minimal_security_test.py,scripts/quick_capability_test.py,scripts/remote_gpu_benchmarker.py,scripts/save_extreme_optimizations.py,scripts/save_optimized_models.py,scripts/system_status_report.py,scripts/verify_system.py', + 'ruview': 'firmware/esp32-csi-node,firmware/esp32-hello-world,v2/crates', + 'open-claude-code': 'v2/src', + 'ruv-dev': 'bin/index.js,src/cli,src/core,src/index.js,src/utils', + 'agenticow': 'bin/agenticow.js,examples/_shared.mjs,examples/ab-at-scale.mjs,examples/ab-branches.mjs,examples/checkpointing.mjs,examples/compliance-lineage.mjs,examples/git-workflow.mjs,examples/memory-evolution.mjs,examples/multi-persona-consensus.mjs,examples/multi-tenant-saas.mjs,examples/parallel-agents.mjs,examples/parallel-selves.mjs,examples/personalization.mjs,examples/promotion-pipeline.mjs,examples/red-team-sandbox.mjs,examples/rollback-quarantine.mjs,examples/simulated-org.mjs,examples/time-travel-debug.mjs,src/index.d.ts,src/index.js', }; const tiers = JSON.parse(fs.readFileSync(path.join(ROOT, 'data/registry.tiers.json'), 'utf8')); From c9850c37a765951b2a94e0d1b4282639c19d111b Mon Sep 17 00:00:00 2001 From: Henrik Pettersen Date: Mon, 6 Jul 2026 21:18:33 +0100 Subject: [PATCH 3/7] feat(self-update): cross-org owner support + onboard 14 previously-untracked repos MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit self-update.mjs hardcoded https://github.com/ruvnet/${name} in two places (remoteHead + clone step), so it could only ever track repos under the ruvnet org. Add an optional owner/repo field to the registry schema (defaults to ruvnet/ for full backward compat) so repos living in other orgs can be tracked too. Onboard 4 new repos to registry.tiers.json (T2): agenticow, CVE-bench (both ruvnet), and cognitum-cogs/cognitum-support (cognitum-one org — the first repos to use the new owner override). The two cognitum-one repos and agenticow had drifted since the shipped bundle's snapshot, so they were rebuilt (cognitum-cogs additionally needed a FULL_HINTS entry first, derived as a safe superset of its existing scattered full-body coverage, to avoid regressing to snippet-only content). Separately, 10 repos already had built content in the shipped bundle but no manifest.json stamp, so self-update.mjs's freshness loop classified them as "new" and would silently skip them forever (agentdb, agentic-flow, daa, qudag, fact, ruv-fann, dspy.ts, rulake, ruv-dev, rupixel). Verified each has had zero upstream commits since before the snapshot (no content drift), then cloned + stamped them with their real current SHA so the nightly job can now detect real drift going forward instead of leaving them permanently unmonitored. Co-Authored-By: Claude Sonnet 5 --- data/manifest.json | 44 ++++++++++++++++++++++++++++++++++------ data/registry.tiers.json | 30 ++++++++++++++++++++++++++- kb/SOURCE.json | 18 ++++++++-------- primer/ruvnet-primer.md | 2 +- scripts/self-update.mjs | 22 +++++++++++++++----- 5 files changed, 94 insertions(+), 22 deletions(-) diff --git a/data/manifest.json b/data/manifest.json index 76a6b9a..71ba578 100644 --- a/data/manifest.json +++ b/data/manifest.json @@ -1,10 +1,10 @@ { - "brainVersion": "1.9.4-dev", - "generated": "2026-07-06T16:26:26.393Z", - "generatedHuman": "Mon, 06 Jul 2026 16:26:26 GMT", + "brainVersion": "v1.9.4-dev", + "generated": "2026-07-06T20:16:04.222Z", + "generatedHuman": "Mon, 06 Jul 2026 20:16:04 GMT", "coverage": { - "built": 19, - "catalogued": 168, + "built": 23, + "catalogued": 172, "orgTotalApprox": 248, "pending": 149 }, @@ -61,7 +61,7 @@ "name": "agent-harness-generator", "tier": "T1", "stars": 330, - "builtFromSha": "b7276ceb615b9b7627781d59104796982214dbaa", + "builtFromSha": "de12ed8e868229e63ea7953753a39b94c75cb085", "latestRemoteSha": null, "status": "built" }, @@ -160,6 +160,38 @@ "builtFromSha": "bb1269fb9f4b0920de5944d248e4e79a01f3b80c", "latestRemoteSha": null, "status": "built" + }, + { + "name": "agenticow", + "tier": "T2", + "stars": 40, + "builtFromSha": "dd4f437b92d2dbbc1f40dfa00023eed6e9c3bd84", + "latestRemoteSha": null, + "status": "built" + }, + { + "name": "CVE-bench", + "tier": "T2", + "stars": 15, + "builtFromSha": "47abc2b2b522f4d8afd07296d2a35042d8639f1d", + "latestRemoteSha": null, + "status": "built" + }, + { + "name": "cognitum-cogs", + "tier": "T2", + "stars": 14, + "builtFromSha": "d48161eb2b676753a5b0e6d107805a2217dbaf9b", + "latestRemoteSha": null, + "status": "built" + }, + { + "name": "cognitum-support", + "tier": "T2", + "stars": 19, + "builtFromSha": "26a92df8c17341fe73c0e455168c3f849130fafd", + "latestRemoteSha": null, + "status": "built" } ], "pendingRepos": [ diff --git a/data/registry.tiers.json b/data/registry.tiers.json index 3edde5f..efc8416 100644 --- a/data/registry.tiers.json +++ b/data/registry.tiers.json @@ -296,6 +296,34 @@ "stars": 2, "pushed": "2026-06-22", "sha": "RESOLVE_AT_BUILD" + }, + { + "name": "agenticow", + "stars": 40, + "pushed": "2026-07-04", + "sha": "RESOLVE_AT_BUILD" + }, + { + "name": "CVE-bench", + "stars": 15, + "pushed": "2026-06-27", + "sha": "RESOLVE_AT_BUILD" + }, + { + "name": "cognitum-cogs", + "owner": "cognitum-one", + "repo": "cogs", + "stars": 14, + "pushed": "2026-07-02", + "sha": "RESOLVE_AT_BUILD" + }, + { + "name": "cognitum-support", + "owner": "cognitum-one", + "repo": "support", + "stars": 19, + "pushed": "2026-07-06", + "sha": "RESOLVE_AT_BUILD" } ] }, @@ -1031,4 +1059,4 @@ ] } } -} \ No newline at end of file +} diff --git a/kb/SOURCE.json b/kb/SOURCE.json index a438ec4..adb1028 100644 --- a/kb/SOURCE.json +++ b/kb/SOURCE.json @@ -1,19 +1,19 @@ { "builder": "rvf-kb-forge", - "builtUtc": "2026-07-05T18:15:09.157Z", + "builtUtc": "2026-07-06T20:09:10.697Z", "canonicalManifestUrl": "https://raw.githubusercontent.com/ruvnet/ruvnet-brain/main/kb/.last-built.json", "selfUpdate": "node forge-update.mjs", "stores": { - "ruflo": { - "kbName": "ruflo", - "sourceRepo": "https://github.com/ruvnet/ruflo", - "sourceCommit": "f71ffa2f99147b0236fc267aaf1d4cd8285ad3c1", - "sourceDescribe": "v3.25.0", - "builtUtc": "2026-07-05T18:15:09.157Z", + "cognitum-cogs": { + "kbName": "cognitum-cogs", + "sourceRepo": "https://github.com/cognitum-one/cogs", + "sourceCommit": "d48161eb2b676753a5b0e6d107805a2217dbaf9b", + "sourceDescribe": "d48161e", + "builtUtc": "2026-07-06T20:09:10.697Z", "builder": "rvf-kb-forge", "canonicalManifestUrl": "https://raw.githubusercontent.com/ruvnet/ruvnet-brain/main/kb/.last-built.json", - "canonicalBundleUrl": "https://raw.githubusercontent.com/ruvnet/ruvnet-brain/main/kb/ruflo-kb-bundle.zip", - "selfUpdate": "node forge-update.mjs ruflo" + "canonicalBundleUrl": "https://raw.githubusercontent.com/ruvnet/ruvnet-brain/main/kb/cognitum-cogs-kb-bundle.zip", + "selfUpdate": "node forge-update.mjs cognitum-cogs" } } } diff --git a/primer/ruvnet-primer.md b/primer/ruvnet-primer.md index da29991..e10d5ac 100644 --- a/primer/ruvnet-primer.md +++ b/primer/ruvnet-primer.md @@ -1,6 +1,6 @@ # The RuvNet Primer — the building blocks, on one page -`Brain version: v0.3.0-dev · Built: 2026-07-05 · Covers: 19/168 repos built @ pinned SHAs (see data/manifest.json)` +`Brain version: v1.9.4-dev · Built: 2026-07-06 · Covers: 23/172 repos built @ pinned SHAs (see data/manifest.json)` > **What this is:** a portable, source-grounded "brain" over the reusable RuvNet building blocks by > **Reuven Cohen (rUv)**. It ships as a **Claude Code plugin** so your assistant answers from Ruv's real diff --git a/scripts/self-update.mjs b/scripts/self-update.mjs index 2c59ab6..17813ae 100644 --- a/scripts/self-update.mjs +++ b/scripts/self-update.mjs @@ -59,6 +59,16 @@ const FULL_HINTS = { 'open-claude-code': 'v2/src', 'ruv-dev': 'bin/index.js,src/cli,src/core,src/index.js,src/utils', 'agenticow': 'bin/agenticow.js,examples/_shared.mjs,examples/ab-at-scale.mjs,examples/ab-branches.mjs,examples/checkpointing.mjs,examples/compliance-lineage.mjs,examples/git-workflow.mjs,examples/memory-evolution.mjs,examples/multi-persona-consensus.mjs,examples/multi-tenant-saas.mjs,examples/parallel-agents.mjs,examples/parallel-selves.mjs,examples/personalization.mjs,examples/promotion-pipeline.mjs,examples/red-team-sandbox.mjs,examples/rollback-quarantine.mjs,examples/simulated-org.mjs,examples/time-travel-debug.mjs,src/index.d.ts,src/index.js', + // cognitum-cogs (cognitum-one org): unlike the repos above, this one's existing full-body + // coverage is thin and scattered across nearly every directory (e.g. crates/fxnn 91/507, + // examples/fixel 20/180) rather than a clean whole-directory --full pass, so there's no exact + // original prefix set to reverse-engineer. Using every top-level dir that has ANY full-body + // content today as a superset --full prefix guarantees no regression (nothing currently + // full-body can become snippet-only); doc-only dirs (docs, .github, ui-templates, root .md) + // are excluded since they have zero full-body content to protect. + 'cognitum-cogs': 'benches,benchmarks,cognitum-sim,crates,examples,scripts,shared,src,tests', + // cognitum-support (cognitum-one org): 100% docs/README/GitHub-template content, zero + // full-body entries in the existing build — no --full prefix needed, nothing to protect. }; const tiers = JSON.parse(fs.readFileSync(path.join(ROOT, 'data/registry.tiers.json'), 'utf8')); @@ -67,8 +77,10 @@ const manifest = fs.existsSync(path.join(ROOT, 'data/manifest.json')) // case-insensitive: registry names are capitalized (RuVector) but built artifacts are lowercase (ruvector) const builtSha = Object.fromEntries(manifest.builtRepos.map((r) => [r.name.toLowerCase(), r.builtFromSha])); -const remoteHead = (slug) => { - try { return execFileSync('git', ['ls-remote', `https://github.com/ruvnet/${slug}`, 'HEAD'], { timeout: 30000 }).toString().split(/\s/)[0] || null; } +// owner/repo default to 'ruvnet'/ so existing registry entries (no owner/repo field) are +// unaffected; a repo living outside the ruvnet org (e.g. a different GitHub org) sets both. +const remoteHead = (owner, slug) => { + try { return execFileSync('git', ['ls-remote', `https://github.com/${owner}/${slug}`, 'HEAD'], { timeout: 30000 }).toString().split(/\s/)[0] || null; } catch { return null; } }; const clonePath = (name) => KNOWN_CLONES[name] || path.join(CLONE_DIR, name); @@ -85,7 +97,7 @@ for (const t of ['T0', 'T1', 'T2', 'T3']) { const plan = []; for (const r of inScope) { - const live = remoteHead(r.name); + const live = remoteHead(r.owner || 'ruvnet', r.repo || r.name); const built = builtSha[r.name.toLowerCase()] || null; let action = 'up-to-date'; if (!built) action = 'build (new)'; @@ -94,7 +106,7 @@ for (const r of inScope) { // most-central repos were invisible to the freshness loop until a 3.24 release exposed it.) else if (built === 'unknown') action = live ? 'rebuild (changed)' : 'up-to-date'; else if (live && live !== built) action = 'rebuild (changed)'; - plan.push({ name: r.name, tier: r.tier, built: built?.slice(0, 12) || '—', live: live?.slice(0, 12) || '?', action }); + plan.push({ name: r.name, owner: r.owner, repo: r.repo, tier: r.tier, built: built?.slice(0, 12) || '—', live: live?.slice(0, 12) || '?', action }); } console.log(`self-update ${APPLY ? '(APPLY)' : '(dry-run)'} — ${plan.length} repos in scope\n`); @@ -119,7 +131,7 @@ for (const p of todo) { if (!fs.existsSync(path.join(dir, '.git'))) { console.log(`[clone] ${p.name}`); fs.mkdirSync(CLONE_DIR, { recursive: true }); - execFileSync('git', ['clone', '--depth', '1', `https://github.com/ruvnet/${p.name}`, dir], { stdio: 'inherit' }); + execFileSync('git', ['clone', '--depth', '1', `https://github.com/${p.owner || 'ruvnet'}/${p.repo || p.name}`, dir], { stdio: 'inherit' }); } else { execFileSync('git', ['-C', dir, 'fetch', '--depth', '1', 'origin'], { stdio: 'inherit' }); execFileSync('git', ['-C', dir, 'reset', '--hard', 'origin/HEAD'], { stdio: 'inherit' }); From 94271257699022e61b73296ffff2edbe28a643cd Mon Sep 17 00:00:00 2001 From: Henrik Pettersen Date: Mon, 6 Jul 2026 22:39:12 +0100 Subject: [PATCH 4/7] fix: point agent-harness-generator's clone URL at its renamed repo (metaharness) ruvnet/agent-harness-generator was renamed to ruvnet/metaharness upstream (confirmed via HTTP 301 redirect + the repo's own package.json still referencing the old name internally). git/gh follow the redirect transparently today, so nothing was actually broken, but relying on a GitHub redirect indefinitely is fragile -- it can break if the old name is ever reclaimed. Uses the owner/repo override added in the previous commit to point future clone/fetch operations at the current canonical name directly. No re-indexing needed: same repo, same content, already covered under the agent-harness-generator kb-store name. Verified: `self-update.mjs --repo agent-harness-generator` still resolves correctly post-patch (up-to-date, same SHA). --- data/registry.tiers.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/data/registry.tiers.json b/data/registry.tiers.json index efc8416..315c7c8 100644 --- a/data/registry.tiers.json +++ b/data/registry.tiers.json @@ -50,7 +50,8 @@ "name": "agent-harness-generator", "stars": 330, "pushed": "2026-06-27", - "sha": "RESOLVE_AT_BUILD" + "sha": "RESOLVE_AT_BUILD", + "repo": "metaharness" }, { "name": "dspy.ts", From cb40b2bc4a8f3959ec9ecca689b53a602bbaef09 Mon Sep 17 00:00:00 2001 From: Henrik Pettersen Date: Mon, 6 Jul 2026 23:32:43 +0100 Subject: [PATCH 5/7] fix: name-boost recognizes repo aliases (agent-harness-generator -> metaharness) isNamed() matched the query text against the exact kb-store name only, so a query naming "metaharness" (the repo's current, more commonly-used name after the ruvnet/agent-harness-generator -> ruvnet/metaharness GitHub rename) never triggered the name-boost tie-breaker -- it would only win a tie via plain vector similarity, not the explicit-name signal. Added a small ALIASES map checked alongside the exact name, rather than renaming the kb-store name/files (which would require re-keying FULL_HINTS and every served-cache filename for no real benefit -- the content itself already surfaces fine via vector similarity; only the explicit-name-tie signal was missing). Not committing kb/SOURCE.json in this commit -- it's being actively written by an in-progress rebuild of ruflo/agentdb/ruvector in this same checkout. --- kb/forge-ask-all.mjs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/kb/forge-ask-all.mjs b/kb/forge-ask-all.mjs index f420692..9241612 100644 --- a/kb/forge-ask-all.mjs +++ b/kb/forge-ask-all.mjs @@ -61,7 +61,15 @@ export async function searchAll({ dir, query, k = 6, pool = 8, repos }) { // multi-word names like `agent-harness-generator` still match. Boost clears a sibling that merely // *contains a file named after* the repo (e.g. dspy.ts/…/safla.ts) when the question names the repo. const esc = (s) => s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); - const isNamed = (repo) => repo.length >= 4 && new RegExp(`\\b${esc(repo)}\\b`, 'i').test(query); + // A repo can be known by a different name than its kb-store name (e.g. GitHub renamed + // ruvnet/agent-harness-generator -> ruvnet/metaharness; the kb store stays named + // agent-harness-generator to avoid re-keying FULL_HINTS + served-cache filenames, but a + // query naming "metaharness" should still get the boost). Extend here as repos rename. + const ALIASES = { 'agent-harness-generator': ['metaharness'] }; + const isNamed = (repo) => { + const names = [repo, ...(ALIASES[repo] || [])]; + return names.some((n) => n.length >= 4 && new RegExp(`\\b${esc(n)}\\b`, 'i').test(query)); + }; const NAME_BOOST = 2.0; for (const r of ranked) { // A concepts hit is labelled repo="concepts" but its path is "//" — attribute the From 4ec558f91eb0b9b56d042cdfaef3c010f962a1dc Mon Sep 17 00:00:00 2001 From: Henrik Pettersen Date: Tue, 7 Jul 2026 00:18:06 +0100 Subject: [PATCH 6/7] fix: reimport agent-harness-generator clean under its renamed identity (metaharness) Rather than a raw file rename (which would have left stale internal metadata -- meta.json's clone path, embed.json's builtFrom -- pointing at the old name), fully wiped the repo's kb store (11 files, both the fork checkout and the served cache) and re-imported it fresh under the name metaharness, using the same FULL_HINTS prefix list (still valid, same repo/same structure). Picked up a newer HEAD in the process (38284c8, up from de12ed8) since the source repo moves very fast (10 commits landed the day I did this rebuild alone). - registry.tiers.json: name -> metaharness, drops the now-redundant owner/repo override from the prior commit (name === repo now). - FULL_HINTS key renamed to match. - forge-ask-all.mjs: flipped the alias direction (metaharness -> [agent-harness-generator]) so a query naming the OLD name still gets the search name-boost tie-breaker, now that the kb store's canonical name is the new one. Verified: forge-guard PASS (8857/8857, parity/idmap/truncation all OK), brain-stamp shows `T1 metaharness @ 38284c8c4950` with no stale agent-harness-generator entry, and a live search_ruvnet query confirms repo=metaharness now appears correctly in results. Not committing kb/SOURCE.json -- still being actively written by an in-progress parallel rebuild of ruflo/agentdb/ruvector in this same checkout (closing the docs/plugins/etc. coverage gap from issue #6). --- data/manifest.json | 8 ++++---- data/registry.tiers.json | 5 ++--- kb/forge-ask-all.mjs | 10 +++++----- scripts/self-update.mjs | 6 +++++- 4 files changed, 16 insertions(+), 13 deletions(-) diff --git a/data/manifest.json b/data/manifest.json index 71ba578..2a6e5c7 100644 --- a/data/manifest.json +++ b/data/manifest.json @@ -1,7 +1,7 @@ { "brainVersion": "v1.9.4-dev", - "generated": "2026-07-06T20:16:04.222Z", - "generatedHuman": "Mon, 06 Jul 2026 20:16:04 GMT", + "generated": "2026-07-06T23:17:08.289Z", + "generatedHuman": "Mon, 06 Jul 2026 23:17:08 GMT", "coverage": { "built": 23, "catalogued": 172, @@ -58,10 +58,10 @@ "status": "built" }, { - "name": "agent-harness-generator", + "name": "metaharness", "tier": "T1", "stars": 330, - "builtFromSha": "de12ed8e868229e63ea7953753a39b94c75cb085", + "builtFromSha": "38284c8c49509decf14ce991bf17965433449e96", "latestRemoteSha": null, "status": "built" }, diff --git a/data/registry.tiers.json b/data/registry.tiers.json index 315c7c8..02d427a 100644 --- a/data/registry.tiers.json +++ b/data/registry.tiers.json @@ -47,11 +47,10 @@ "sha": "RESOLVE_AT_BUILD" }, { - "name": "agent-harness-generator", + "name": "metaharness", "stars": 330, "pushed": "2026-06-27", - "sha": "RESOLVE_AT_BUILD", - "repo": "metaharness" + "sha": "RESOLVE_AT_BUILD" }, { "name": "dspy.ts", diff --git a/kb/forge-ask-all.mjs b/kb/forge-ask-all.mjs index 9241612..1b7c355 100644 --- a/kb/forge-ask-all.mjs +++ b/kb/forge-ask-all.mjs @@ -61,11 +61,11 @@ export async function searchAll({ dir, query, k = 6, pool = 8, repos }) { // multi-word names like `agent-harness-generator` still match. Boost clears a sibling that merely // *contains a file named after* the repo (e.g. dspy.ts/…/safla.ts) when the question names the repo. const esc = (s) => s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); - // A repo can be known by a different name than its kb-store name (e.g. GitHub renamed - // ruvnet/agent-harness-generator -> ruvnet/metaharness; the kb store stays named - // agent-harness-generator to avoid re-keying FULL_HINTS + served-cache filenames, but a - // query naming "metaharness" should still get the boost). Extend here as repos rename. - const ALIASES = { 'agent-harness-generator': ['metaharness'] }; + // A repo can be known by a former name too (e.g. GitHub renamed + // ruvnet/agent-harness-generator -> ruvnet/metaharness; the kb store was re-imported under + // the new name metaharness, but a query naming the old name should still get the boost). + // Extend here as repos rename. + const ALIASES = { 'metaharness': ['agent-harness-generator'] }; const isNamed = (repo) => { const names = [repo, ...(ALIASES[repo] || [])]; return names.some((n) => n.length >= 4 && new RegExp(`\\b${esc(n)}\\b`, 'i').test(query)); diff --git a/scripts/self-update.mjs b/scripts/self-update.mjs index 17813ae..c419edf 100644 --- a/scripts/self-update.mjs +++ b/scripts/self-update.mjs @@ -53,7 +53,11 @@ const FULL_HINTS = { 'ruvector': 'crates/agentic-robotics-core,crates/agentic-robotics-mcp,crates/agentic-robotics-node,crates/agentic-robotics-rt,crates/cognitum-gate-kernel,crates/cognitum-gate-tilezero,crates/emergent-time,crates/emergent-time-wasm,crates/hailort-sys,crates/mcp-brain,crates/mcp-brain-server,crates/mcp-gate,crates/micro-hnsw-wasm,crates/neural-trader-coherence,crates/neural-trader-core,crates/neural-trader-replay,crates/neural-trader-wasm,crates/photonlayer-bench,crates/photonlayer-cli,crates/photonlayer-core,crates/photonlayer-ruvector,crates/photonlayer-wasm,crates/prime-radiant,crates/ruos-thermal,crates/ruvector-acorn,crates/ruvector-acorn-wasm,crates/ruvector-agent-memory,crates/ruvector-attention,crates/ruvector-attention-cli,crates/ruvector-attention-node,crates/ruvector-attention-wasm,crates/ruvector-attn-mincut,crates/ruvector-bench,crates/ruvector-bet4-ivf-bench,crates/ruvector-capgated,crates/ruvector-cli,crates/ruvector-cluster,crates/ruvector-cnn,crates/ruvector-cnn-wasm,crates/ruvector-coherence,crates/ruvector-coherence-hnsw,crates/ruvector-collections,crates/ruvector-consciousness,crates/ruvector-core,crates/ruvector-crv,crates/ruvector-dag,crates/ruvector-dag-wasm,crates/ruvector-decompiler,crates/ruvector-delta-core,crates/ruvector-delta-graph,crates/ruvector-delta-index,crates/ruvector-delta-wasm,crates/ruvector-diskann,crates/ruvector-diskann-node,crates/ruvector-dither,crates/ruvector-economy-wasm,crates/ruvector-exotic-wasm,crates/ruvector-filter,crates/ruvector-gnn,crates/ruvector-gnn-node,crates/ruvector-gnn-rerank,crates/ruvector-gnn-wasm,crates/ruvector-graph,crates/ruvector-graph-condense,crates/ruvector-graph-node,crates/ruvector-graph-wasm,crates/ruvector-hailo,crates/ruvector-hailo-cluster,crates/ruvector-hnsw-repair,crates/ruvector-hybrid,crates/ruvector-kalshi,crates/ruvector-learning-wasm,crates/ruvector-lsm-ann,crates/ruvector-math,crates/ruvector-math-wasm,crates/ruvector-matryoshka,crates/ruvector-maxsim,crates/ruvector-metrics,crates/ruvector-mincut,crates/ruvector-mincut-node,crates/ruvector-mincut-wasm,crates/ruvector-mmwave,crates/ruvector-nervous-system,crates/ruvector-node,crates/ruvector-perception,crates/ruvector-postgres,crates/ruvector-pq-search,crates/ruvector-profiler,crates/ruvector-proof-gate,crates/ruvector-rabitq,crates/ruvector-rabitq-wasm,crates/ruvector-raft,crates/ruvector-rairs,crates/ruvector-replication,crates/ruvector-robotics,crates/ruvector-router-cli,crates/ruvector-router-core,crates/ruvector-router-ffi,crates/ruvector-router-wasm,crates/ruvector-rulake,crates/ruvector-server,crates/ruvector-snapshot,crates/ruvector-solver,crates/ruvector-solver-node,crates/ruvector-solver-wasm,crates/ruvector-sota-bench,crates/ruvector-spann,crates/ruvector-sparsifier,crates/ruvector-tiny-dancer-node,crates/ruvector-verified,crates/ruvector-verified-wasm,crates/ruvector-wasm,crates/ruvix,crates/ruvllm,crates/ruvllm-cli,crates/ruvllm-wasm,crates/ruvllm_sparse_attention,crates/rvAgent,crates/rvf,crates/rvlite,crates/rvm,crates/sona,crates/sonic-ct,crates/sonic-ct-wasm,crates/thermorust,crates/timesfm', 'ruv-fann': 'cuda-wasm/.eslintrc.js,cuda-wasm/benches,cuda-wasm/build.rs,cuda-wasm/cli,cuda-wasm/cuda-examples,cuda-wasm/demo,cuda-wasm/examples,cuda-wasm/jest.config.js,cuda-wasm/scripts,cuda-wasm/src,cuda-wasm/tests,examples/basic_usage.rs,examples/cuda_wasm_neural_integration.rs,examples/final_performance_demo.rs,examples/gpu_sweet_spot_benchmark.rs,examples/gpu_training_test.rs,examples/test_adam.rs,examples/test_gpu_detection.rs,examples/test_optimizers_simple.rs,examples/xor.rs,neuro-divergent/src,neuro-divergent/tests,opencv-rust/opencv-core,opencv-rust/opencv-sdk,opencv-rust/opencv-sys,opencv-rust/opencv-wasm,opencv-rust/tests,ruv-swarm/benches,ruv-swarm/benchmarking,ruv-swarm/crates,ruv-swarm/examples,ruv-swarm/ml-training,ruv-swarm/models,ruv-swarm/npm,ruv-swarm/test,ruv-swarm/test-simd-fix.mjs,ruv-swarm/test-wasm.js,ruv-swarm/tests,ruv-swarm/vitest.config.js,src/activation.rs,src/cascade.rs,src/connection.rs,src/errors.rs,src/integration.rs,src/io,src/layer.rs,src/lib.rs,src/memory_manager.rs,src/mock_types.rs,src/network.rs,src/network_gpu.rs,src/neuron.rs,src/simd,src/tests,src/training,src/webgpu', 'agentic-flow': 'agentic-flow/.claude,agentic-flow/Python,agentic-flow/add_two_numbers.py,agentic-flow/app,agentic-flow/benchmark,agentic-flow/examples,agentic-flow/path,agentic-flow/scripts,agentic-flow/src,agentic-flow/tests,agentic-flow/validation,agentic-flow/vitest.config.ts,crates/agentic-flow-quic,examples/batch-query.js,examples/batch-store.js,examples/billing-example.ts,examples/cached-query.js,examples/climate-prediction,examples/connection-pool.js,examples/deepseek-direct-api.js,examples/nova-medicina,examples/perf-monitor.js,examples/quic-server-coordinator.js,examples/quic-swarm-coordination.js,examples/reasoningbank-benchmark.js,examples/reasoningbank-learning-demo.js,examples/reasoningbank-optimize.js,examples/research-swarm,examples/verification-example.ts,packages/agent-booster,packages/agentdb-onnx,packages/agentic-jujutsu,packages/agentic-llm,reasoningbank/examples,reasoningbank/tests,src/App.tsx,src/api,src/cli,src/components,src/consent,src/controller,src/controllers,src/main.tsx,src/mcp,src/middleware,src/notifications,src/pages,src/providers,src/routing,src/security,src/services,src/transport,src/types,src/utils,src/verification', - 'agent-harness-generator': 'crates/kernel,crates/kernel-napi,crates/kernel-wasm,crates/poker-darwin,crates/template-catalog,packages/aws-finops,packages/bench,packages/create-agent-harness,packages/darwin-mode,packages/harness,packages/host-claude-code,packages/host-codex,packages/host-copilot,packages/host-github-actions,packages/host-hermes,packages/host-openclaw,packages/host-opencode,packages/host-pi-dev,packages/host-rvm,packages/jujutsu,packages/kernel-js,packages/projects,packages/redblue,packages/router,packages/sdk,packages/vertical-base,packages/vertical-trading,packages/weight-eft', + // ruvnet/agent-harness-generator was renamed upstream to ruvnet/metaharness; the kb store + // was fully wiped and re-imported under the new name (not just relabeled) to avoid stale + // internal metadata (meta.json's clone path, embed.json's builtFrom) that a raw file rename + // would have left behind. + 'metaharness': 'crates/kernel,crates/kernel-napi,crates/kernel-wasm,crates/poker-darwin,crates/template-catalog,packages/aws-finops,packages/bench,packages/create-agent-harness,packages/darwin-mode,packages/harness,packages/host-claude-code,packages/host-codex,packages/host-copilot,packages/host-github-actions,packages/host-hermes,packages/host-openclaw,packages/host-opencode,packages/host-pi-dev,packages/host-rvm,packages/jujutsu,packages/kernel-js,packages/projects,packages/redblue,packages/router,packages/sdk,packages/vertical-base,packages/vertical-trading,packages/weight-eft', 'safla': 'benchmarks/__init__.py,benchmarks/cli_benchmarks.py,benchmarks/core.py,benchmarks/database.py,benchmarks/safla_benchmarks.py,benchmarks/utils.py,examples/01_basic_setup.py,examples/02_simple_memory.py,examples/03_basic_safety.py,examples/05_delta_evaluation.py,examples/12_ai_assistant.py,examples/15_enterprise_integration.py,examples/config_examples.py,examples/hybrid_memory_demo.py,examples/mcp_auth_client.py,examples/mcp_usage,examples/safety_validation_demo.py,safla/__init__.py,safla/__main__.py,safla/api,safla/auth,safla/cli.py,safla/cli_implementations.py,safla/cli_interactive.py,safla/cli_main.py,safla/cli_manager.py,safla/core,safla/exceptions.py,safla/installer.py,safla/integrations,safla/mcp,safla/mcp_stdio_server.py,safla/middleware,safla/security,safla/utils,safla/validation,safla_mcp_enhanced.py,safla_mcp_server.py,safla_mcp_simple.py,scripts/advanced_optimization_engine.py,scripts/agent_swarm_optimizer.py,scripts/build.py,scripts/comprehensive_capability_test.py,scripts/continuous_optimization_engine.py,scripts/debug_enhanced_server.py,scripts/demo_jwt_mcp_client.py,scripts/final_capability_verification.py,scripts/final_system_test.py,scripts/gpu_optimization_benchmark.py,scripts/install.py,scripts/minimal_security_test.py,scripts/quick_capability_test.py,scripts/remote_gpu_benchmarker.py,scripts/save_extreme_optimizations.py,scripts/save_optimized_models.py,scripts/system_status_report.py,scripts/verify_system.py', 'ruview': 'firmware/esp32-csi-node,firmware/esp32-hello-world,v2/crates', 'open-claude-code': 'v2/src', From 7e0288f466f706665ef00f051b648d5cc342daca Mon Sep 17 00:00:00 2001 From: Henrik Pettersen Date: Tue, 7 Jul 2026 01:32:43 +0100 Subject: [PATCH 7/7] fix: close the ruflo/agentdb/ruvector coverage gap from issue #6 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Full re-crawl of all 3 flagged repos, using the current (already-correct) forge-build.mjs against fresh clones: - ruflo: real gap, now closed. docs/=553, plugins/=694, scripts/=88, verification/=30, data/=5 chunks — all previously absent, now indexed. 12971 total chunks (up from the old 9648). - agentdb, ruvector: investigated further and found the originally-flagged "gaps" (packages/bench-data/data for agentdb, external/ for ruvector) were FALSE POSITIVES from the top-level-directory-name diff heuristic used to find them -- these are git submodule mount points (packages/ruvector-upstream -> the ruvector repo itself; external/ruqu, external/rvdna -> their own separately-tracked repos) or empty .gitkeep placeholders, not missing content. Shallow clones don't initialize submodules by design, and re-indexing a submodule's target here would just duplicate that repo's own separately-maintained KB store. ruvector's real gap (harnesses/, 22 entries) did close correctly. All 3: forge-guard PASS (parity/idmap/truncation), synced to the served cache (old files backed up, not overwritten silently), re-stamped, and verified via self-update dry-run -- all three now report up-to-date with real (non-unknown) SHAs. Closes #6. --- data/manifest.json | 4 ++-- primer/ruvnet-primer.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/data/manifest.json b/data/manifest.json index 2a6e5c7..1e9df36 100644 --- a/data/manifest.json +++ b/data/manifest.json @@ -1,7 +1,7 @@ { "brainVersion": "v1.9.4-dev", - "generated": "2026-07-06T23:17:08.289Z", - "generatedHuman": "Mon, 06 Jul 2026 23:17:08 GMT", + "generated": "2026-07-07T00:31:44.703Z", + "generatedHuman": "Tue, 07 Jul 2026 00:31:44 GMT", "coverage": { "built": 23, "catalogued": 172, diff --git a/primer/ruvnet-primer.md b/primer/ruvnet-primer.md index e10d5ac..f6f7067 100644 --- a/primer/ruvnet-primer.md +++ b/primer/ruvnet-primer.md @@ -1,6 +1,6 @@ # The RuvNet Primer — the building blocks, on one page -`Brain version: v1.9.4-dev · Built: 2026-07-06 · Covers: 23/172 repos built @ pinned SHAs (see data/manifest.json)` +`Brain version: v1.9.4-dev · Built: 2026-07-07 · Covers: 23/172 repos built @ pinned SHAs (see data/manifest.json)` > **What this is:** a portable, source-grounded "brain" over the reusable RuvNet building blocks by > **Reuven Cohen (rUv)**. It ships as a **Claude Code plugin** so your assistant answers from Ruv's real