Skip to content

Upgrade GitHub Actions to latest versions#209

Open
salmanmkc wants to merge 1906 commits intoruvnet:mainfrom
salmanmkc:upgrade-github-actions-node24-general
Open

Upgrade GitHub Actions to latest versions#209
salmanmkc wants to merge 1906 commits intoruvnet:mainfrom
salmanmkc:upgrade-github-actions-node24-general

Conversation

@salmanmkc
Copy link
Copy Markdown

Summary

Upgrade GitHub Actions to their latest versions for improved features, bug fixes, and security updates.

Changes

Action Old Version(s) New Version Release Files
actions-rust-lang/setup-rust-toolchain v1 v1.15.2 Release postgres-extension-ci.yml, ruvector-postgres-ci.yml
benchmark-action/github-action-benchmark v1 v1.20.7 Release benchmarks.yml, postgres-extension-ci.yml, ruvector-postgres-ci.yml
codecov/codecov-action v4 v5 Release agentic-synth-ci.yml
docker/build-push-action v5 v6 Release docker-publish.yml, postgres-extension-ci.yml, ruvector-postgres-ci.yml
google-github-actions/auth v2 v3 Release edge-net-models.yml
google-github-actions/setup-gcloud v2 v3 Release edge-net-models.yml
peter-evans/create-or-update-comment v4 v5 Release edge-net-models.yml
peter-evans/dockerhub-description v4 v5 Release docker-publish.yml
softprops/action-gh-release v1 v2 Release publish-all.yml, release.yml

Why upgrade?

Keeping GitHub Actions up to date ensures:

  • Security: Latest security patches and fixes
  • Features: Access to new functionality and improvements
  • Compatibility: Better support for current GitHub features
  • Performance: Optimizations and efficiency improvements

⚠️ Breaking Changes

  • codecov/codecov-action (v4 → v5): Major version upgrade — review the release notes for breaking changes
    • ⚠️ Input file was removed — if your workflow uses it, the step may fail
    • ⚠️ Input plugin was removed — if your workflow uses it, the step may fail
  • softprops/action-gh-release (v1 → v2): Major version upgrade — review the release notes for breaking changes
  • docker/build-push-action (v5 → v6): Major version upgrade — review the release notes for breaking changes
  • google-github-actions/auth (v2 → v3): Major version upgrade — review the release notes for breaking changes
    • ⚠️ Input retries was removed — if your workflow uses it, the step may fail
    • ⚠️ Input backoff was removed — if your workflow uses it, the step may fail
    • ⚠️ Input backoff_limit was removed — if your workflow uses it, the step may fail
  • google-github-actions/setup-gcloud (v2 → v3): Major version upgrade — review the release notes for breaking changes
    • ⚠️ Input skip_tool_cache was removed — if your workflow uses it, the step may fail
  • peter-evans/create-or-update-comment (v4 → v5): Major version upgrade — review the release notes for breaking changes
  • peter-evans/dockerhub-description (v4 → v5): Major version upgrade — review the release notes for breaking changes

Security Note

Actions that were previously pinned to commit SHAs remain pinned to SHAs (updated to the latest release SHA) to maintain the security benefits of immutable references.

Testing

These changes only affect CI/CD workflow configurations and should not impact application functionality. The workflows should be tested by running them on a branch before merging.

claude and others added 30 commits February 15, 2026 22:31
…ing PolicyKernel

Generator hardening:
- Rewrite puzzle generator with difficulty-based posterior targeting (30-365 day ranges)
- Remove InMonth/DayRange over-constraining from low difficulties
- DayOfWeek constraint (difficulty 3+) creates 7x cost surface for solver optimization
- Distractor injection at difficulty 5+ (redundant constraints that don't narrow search)
- target_posterior() scales 300→20 across difficulty 1→10

Solver PolicyKernel:
- Add skip_weekday: Option<Weekday> to TemporalSolver
- Weekday skipping advances by 7 days instead of 1 when DayOfWeek constraint detected
- Wire into AdaptiveSolver for compiler/router modes (B and C)
- Mode A (baseline) scans linearly, Mode B/C skip to matching weekdays

Correctness:
- Relax correctness check: "every expected solution found" (not "only expected found")
- Wide posteriors have many valid dates; only target inclusion matters
- Integration test step budget increased to 400 for wider ranges

Ablation results:
- Mode A: 195.96 cost/solve (full linear scan)
- Mode B: 68.80 cost/solve (65% reduction via weekday skipping)
- Mode C: 68.80 cost/solve (65% reduction, same as B)
- B beats A on cost: PASS (65% > 15% threshold)
- Compiler false-hit rate: PASS (<5%)
- 81 tests passing (61 unit + 20 integration)

https://claude.ai/code/session_01RnwD4x5cbpB7FPvoyYQz8G
All modes now share the same solver capabilities. What differs is
the policy mechanism that decides *when* to use them:

- Mode A: fixed heuristic (posterior_range + distractor_count)
- Mode B: compiler-suggested skip_mode from constraint signatures
- Mode C: learned PolicyKernel (contextual bandit over skip modes)

Key changes:

PolicyKernel (temporal.rs):
- SkipMode enum: None | Weekday | Hybrid
- fixed_policy(): if DayOfWeek AND range>30 AND no distractors → Weekday
- compiled_policy(): uses CompiledSolveConfig.compiled_skip_mode
- learned_policy(): epsilon-greedy over per-context SkipModeStats
- EarlyCommitPenalty: tracks solved-but-wrong from aggressive skipping
- Hybrid mode: weekday skip + ±7 day refinement pass for safety

DifficultyVector (timepuzzles.rs):
- Replaces single-axis difficulty with (range_size, posterior_target,
  distractor_rate, noise_rate, ambiguity_count)
- Flipped relationship: higher difficulty = wider range + more ambiguity
  (not tighter posterior)
- Distractor DayOfWeek (difficulty 6+): DayOfWeek present but paired
  with wider Between that makes unconditional skipping risky

Ablation fairness (acceptance_test.rs):
- Removed feature gating: skip_weekday no longer forbidden for Mode A
- All modes access same solver knobs, differ only by policy
- AblationResult tracks PolicyKernel metrics (early_commit_rate, etc)
- Comparison print shows policy differences explicitly

81 tests passing (61 lib + 20 integration).

https://claude.ai/code/session_01RnwD4x5cbpB7FPvoyYQz8G
All modes now share the same solver capabilities. What differs is
the policy mechanism that decides *when* to use them:

- Mode A: fixed heuristic (posterior_range + distractor_count)
- Mode B: compiler-suggested skip_mode from constraint signatures
- Mode C: learned PolicyKernel (contextual bandit over skip modes)

Key changes:

PolicyKernel (temporal.rs):
- SkipMode enum: None | Weekday | Hybrid
- fixed_policy(): if DayOfWeek AND range>30 AND no distractors → Weekday
- compiled_policy(): uses CompiledSolveConfig.compiled_skip_mode
- learned_policy(): epsilon-greedy over per-context SkipModeStats
- EarlyCommitPenalty: tracks solved-but-wrong from aggressive skipping
- Hybrid mode: weekday skip + ±7 day refinement pass for safety

DifficultyVector (timepuzzles.rs):
- Replaces single-axis difficulty with (range_size, posterior_target,
  distractor_rate, noise_rate, ambiguity_count)
- Flipped relationship: higher difficulty = wider range + more ambiguity
  (not tighter posterior)
- Distractor DayOfWeek (difficulty 6+): DayOfWeek present but paired
  with wider Between that makes unconditional skipping risky

Ablation fairness (acceptance_test.rs):
- Removed feature gating: skip_weekday no longer forbidden for Mode A
- All modes access same solver knobs, differ only by policy
- AblationResult tracks PolicyKernel metrics (early_commit_rate, etc)
- Comparison print shows policy differences explicitly

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
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
…path, constraint propagation

Replace epsilon-greedy with two-signal Thompson Sampling (safety Beta
posterior + cost EMA) for Mode C learned policy. Score = safety_sample
- lambda * cost_ema provides principled exploration-exploitation.

Add speculative dual-path for Mode C only: when Beta variance > 0.02
and top-2 arms within delta 0.15, run both arms (60/40 budget split)
to resolve uncertainty faster while keeping Mode A/B ablation clean.

Add constraint propagation pre-pass as PolicyKernel-controlled mode
(Off/Light/Full, defaults to Off). Light handles InMonth+DayOfMonth
direct solves; Full adds DayOfWeek pruning for ranges ≤60 days.
PrepassMetrics tracks pruned_candidates, prepass_steps, scan_steps_saved.

Beta sampling via Marsaglia-Tsang Gamma method + Box-Muller normal.

https://claude.ai/code/session_01RnwD4x5cbpB7FPvoyYQz8G
…path, constraint propagation

Replace epsilon-greedy with two-signal Thompson Sampling (safety Beta
posterior + cost EMA) for Mode C learned policy. Score = safety_sample
- lambda * cost_ema provides principled exploration-exploitation.

Add speculative dual-path for Mode C only: when Beta variance > 0.02
and top-2 arms within delta 0.15, run both arms (60/40 budget split)
to resolve uncertainty faster while keeping Mode A/B ablation clean.

Add constraint propagation pre-pass as PolicyKernel-controlled mode
(Off/Light/Full, defaults to Off). Light handles InMonth+DayOfMonth
direct solves; Full adds DayOfWeek pruning for ranges ≤60 days.
PrepassMetrics tracks pruned_candidates, prepass_steps, scan_steps_saved.

Beta sampling via Marsaglia-Tsang Gamma method + Box-Muller normal.

https://claude.ai/code/session_01RnwD4x5cbpB7FPvoyYQz8G
…chain

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
…chain

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
…6 witness chain

Replace standalone SHA-256 chain with rvf-crypto SHAKE-256, add native .rvf
binary output (WITNESS_SEG + META_SEG), and wire witness verification into
rvf-wasm microkernel.

Key changes:
- Feature-gate ed25519 in rvf-crypto for WASM compatibility (sha3 no_std)
- Rewrite WitnessChainBuilder to use shake256_256 + parallel rvf_crypto::WitnessEntry
- Add export_rvf_binary() with WITNESS_SEG (0x0A) + META_SEG (0x07) segments
- Add rvf_witness_verify/rvf_witness_count exports to rvf-wasm
- Add verify-rvf subcommand to acceptance-rvf CLI
- Write ADR-037 documenting architecture and AGI benchmark integration
- Update rvf-crypto, rvf-wasm, and rvf READMEs

86 tests pass (66 lib + 20 integration). rvf-crypto 49 tests pass.

https://claude.ai/code/session_01RnwD4x5cbpB7FPvoyYQz8G
…6 witness chain

Replace standalone SHA-256 chain with rvf-crypto SHAKE-256, add native .rvf
binary output (WITNESS_SEG + META_SEG), and wire witness verification into
rvf-wasm microkernel.

Key changes:
- Feature-gate ed25519 in rvf-crypto for WASM compatibility (sha3 no_std)
- Rewrite WitnessChainBuilder to use shake256_256 + parallel rvf_crypto::WitnessEntry
- Add export_rvf_binary() with WITNESS_SEG (0x0A) + META_SEG (0x07) segments
- Add rvf_witness_verify/rvf_witness_count exports to rvf-wasm
- Add verify-rvf subcommand to acceptance-rvf CLI
- Write ADR-037 documenting architecture and AGI benchmark integration
- Update rvf-crypto, rvf-wasm, and rvf READMEs

86 tests pass (66 lib + 20 integration). rvf-crypto 49 tests pass.

https://claude.ai/code/session_01RnwD4x5cbpB7FPvoyYQz8G
…tion

Plans the integration path for .rvf acceptance test verification into
the npm ecosystem:

- npx ruvector rvf verify-witness <file.rvf> (N-API + WASM fallback)
- npx rvlite verify-witness <file.rvf> (WASM via cli-rvf.ts)
- rvlite SDK verifyWitnessChain() for browser-side verification
- MCP tool rvf_verify_witness for Claude Code agents
- 5-phase implementation plan, each independently shippable

Bridges the rvf_witness_verify WASM export (ADR-037) to end users
without requiring the Rust toolchain.

https://claude.ai/code/session_01RnwD4x5cbpB7FPvoyYQz8G
…tion

Plans the integration path for .rvf acceptance test verification into
the npm ecosystem:

- npx ruvector rvf verify-witness <file.rvf> (N-API + WASM fallback)
- npx rvlite verify-witness <file.rvf> (WASM via cli-rvf.ts)
- rvlite SDK verifyWitnessChain() for browser-side verification
- MCP tool rvf_verify_witness for Claude Code agents
- 5-phase implementation plan, each independently shippable

Bridges the rvf_witness_verify WASM export (ADR-037) to end users
without requiring the Rust toolchain.

https://claude.ai/code/session_01RnwD4x5cbpB7FPvoyYQz8G
Compiles the complete three-loop adaptive solver to wasm32-unknown-unknown
(160 KB, no_std + alloc). Preserves all AGI capabilities:

- Thompson Sampling two-signal model (safety Beta + cost EMA)
- 18 context buckets with per-arm bandit stats
- Speculative dual-path execution
- KnowledgeCompiler with signature-based pattern cache
- Three-loop architecture (fast/medium/slow)
- SHAKE-256 witness chain via rvf-crypto

12 WASM exports: create/destroy/train/acceptance/result/policy/witness.
Handle-based API supports 8 concurrent solver instances.

ADR-039 documents the integration architecture.
Benchmark binary validates WASM against native solver.

https://claude.ai/code/session_01RnwD4x5cbpB7FPvoyYQz8G
Compiles the complete three-loop adaptive solver to wasm32-unknown-unknown
(160 KB, no_std + alloc). Preserves all AGI capabilities:

- Thompson Sampling two-signal model (safety Beta + cost EMA)
- 18 context buckets with per-arm bandit stats
- Speculative dual-path execution
- KnowledgeCompiler with signature-based pattern cache
- Three-loop architecture (fast/medium/slow)
- SHAKE-256 witness chain via rvf-crypto

12 WASM exports: create/destroy/train/acceptance/result/policy/witness.
Handle-based API supports 8 concurrent solver instances.

ADR-039 documents the integration architecture.
Benchmark binary validates WASM against native solver.

https://claude.ai/code/session_01RnwD4x5cbpB7FPvoyYQz8G
…SM bindings

Implements a complete cross-domain transfer learning system proving that
kernels trained on Domain 1 can improve Domain 2 faster than training
Domain 2 alone — demonstrating true generalization.

Core engine (ruvector-domain-expansion):
- Three specialized domains: Rust program synthesis, structured planning,
  tool orchestration — each with task generation, evaluation, and 64-dim
  shared embedding space
- Meta Thompson Sampling with Beta-posterior priors across domains and
  contextual bandits (difficulty_tier × category buckets)
- Population-based PolicyKernel search: evolutionary optimization with
  elite selection (top 25%), mutation, crossover over 8 tunable knobs
- Speculative dual-path execution triggered by posterior variance
- Cost curve compression tracking + acceleration scoreboard verifying
  progressive generalization (target: 95% accuracy, ≤0.01 cost)
- Cross-domain transfer protocol with dampened prior initialization
  (sqrt scaling) and non-regression verification

WASM bindings (ruvector-domain-expansion-wasm):
- WasmDomainExpansionEngine, WasmThompsonEngine, WasmPopulationSearch,
  WasmScoreboard — full JS interop via serde-wasm-bindgen
- Optimized for edge: opt-level "z", LTO, panic=abort, strip

49 tests passing, 8 Criterion benchmarks (Thompson select: 266ns,
embedding: 2.86µs, population evolve: 7.4µs, cost curve AUC: 768ns).

https://claude.ai/code/session_01RnwD4x5cbpB7FPvoyYQz8G
…SM bindings

Implements a complete cross-domain transfer learning system proving that
kernels trained on Domain 1 can improve Domain 2 faster than training
Domain 2 alone — demonstrating true generalization.

Core engine (ruvector-domain-expansion):
- Three specialized domains: Rust program synthesis, structured planning,
  tool orchestration — each with task generation, evaluation, and 64-dim
  shared embedding space
- Meta Thompson Sampling with Beta-posterior priors across domains and
  contextual bandits (difficulty_tier × category buckets)
- Population-based PolicyKernel search: evolutionary optimization with
  elite selection (top 25%), mutation, crossover over 8 tunable knobs
- Speculative dual-path execution triggered by posterior variance
- Cost curve compression tracking + acceleration scoreboard verifying
  progressive generalization (target: 95% accuracy, ≤0.01 cost)
- Cross-domain transfer protocol with dampened prior initialization
  (sqrt scaling) and non-regression verification

WASM bindings (ruvector-domain-expansion-wasm):
- WasmDomainExpansionEngine, WasmThompsonEngine, WasmPopulationSearch,
  WasmScoreboard — full JS interop via serde-wasm-bindgen
- Optimized for edge: opt-level "z", LTO, panic=abort, strip

49 tests passing, 8 Criterion benchmarks (Thompson select: 266ns,
embedding: 2.86µs, population evolve: 7.4µs, cost curve AUC: 768ns).

https://claude.ai/code/session_01RnwD4x5cbpB7FPvoyYQz8G
…tion, witness chains, AGI packaging

Connects the domain expansion engine to the RuVector Format (RVF) wire
protocol, closing all integration gaps:

- Add SegmentType::TransferPrior (0x30), PolicyKernel (0x31), CostCurve (0x32)
  to rvf-types for domain expansion segment packaging
- Add AGI_HAS_DOMAIN_EXPANSION flag and AGI_TAG_TRANSFER_PRIOR/POLICY_KERNEL/
  COST_CURVE/COUNTEREXAMPLES TLV tags to AGI container types
- Create rvf_bridge module (feature-gated behind "rvf") with:
  - RVF segment round-trip serialization for all three core types
  - SHAKE-256 witness chain integration via rvf-crypto
  - AGI container TLV packaging and encoding/decoding
  - SolverPriorExchange bridge for rvf-solver-wasm prior transfer
  - Multi-segment file assembly for standalone domain expansion archives
- Wire-format wrappers (WireTransferPrior, WirePolicyKernel) handle
  HashMap<ContextBucket, _> → Vec<(K,V)> conversion for JSON safety
- Add RVF export methods to WASM crate (WasmRvfBridge) for browser-side
  segment serialization, witness hashing, and solver prior exchange
- 59 tests pass with rvf feature, 49 without — feature gate clean

https://claude.ai/code/session_01RnwD4x5cbpB7FPvoyYQz8G
…tion, witness chains, AGI packaging

Connects the domain expansion engine to the RuVector Format (RVF) wire
protocol, closing all integration gaps:

- Add SegmentType::TransferPrior (0x30), PolicyKernel (0x31), CostCurve (0x32)
  to rvf-types for domain expansion segment packaging
- Add AGI_HAS_DOMAIN_EXPANSION flag and AGI_TAG_TRANSFER_PRIOR/POLICY_KERNEL/
  COST_CURVE/COUNTEREXAMPLES TLV tags to AGI container types
- Create rvf_bridge module (feature-gated behind "rvf") with:
  - RVF segment round-trip serialization for all three core types
  - SHAKE-256 witness chain integration via rvf-crypto
  - AGI container TLV packaging and encoding/decoding
  - SolverPriorExchange bridge for rvf-solver-wasm prior transfer
  - Multi-segment file assembly for standalone domain expansion archives
- Wire-format wrappers (WireTransferPrior, WirePolicyKernel) handle
  HashMap<ContextBucket, _> → Vec<(K,V)> conversion for JSON safety
- Add RVF export methods to WASM crate (WasmRvfBridge) for browser-side
  segment serialization, witness hashing, and solver prior exchange
- 59 tests pass with rvf feature, 49 without — feature gate clean

https://claude.ai/code/session_01RnwD4x5cbpB7FPvoyYQz8G
- ADR-029: Add complete segment type registry (23 variants) with source references
- ADR-030: Phase 1 complete — KernelHeader (128B), EbpfHeader (64B), WasmHeader (64B),
  all enums and flag constants implemented with 32+ tests. Updated GOAP world state.
- ADR-032: Add WASM bootstrap types implementation section (WasmHeader, WasmRole,
  WasmTarget, 8 feature flags, 10 tests)
- ADR-036: Status updated to Partially Implemented. Documented AGI container
  implementation (972 lines, 24 tests) including AgiContainerHeader, ExecutionMode,
  AuthorityLevel, ResourceBudget, CoherenceThresholds, ContainerSegments, and
  22 TLV tags with domain expansion integration (0x0112-0x0115)

https://claude.ai/code/session_01RnwD4x5cbpB7FPvoyYQz8G
- ADR-029: Add complete segment type registry (23 variants) with source references
- ADR-030: Phase 1 complete — KernelHeader (128B), EbpfHeader (64B), WasmHeader (64B),
  all enums and flag constants implemented with 32+ tests. Updated GOAP world state.
- ADR-032: Add WASM bootstrap types implementation section (WasmHeader, WasmRole,
  WasmTarget, 8 feature flags, 10 tests)
- ADR-036: Status updated to Partially Implemented. Documented AGI container
  implementation (972 lines, 24 tests) including AgiContainerHeader, ExecutionMode,
  AuthorityLevel, ResourceBudget, CoherenceThresholds, ContainerSegments, and
  22 TLV tags with domain expansion integration (0x0112-0x0115)

https://claude.ai/code/session_01RnwD4x5cbpB7FPvoyYQz8G
…ng improvements

Closes five architectural gaps in the learning pipeline:

1. RegretTracker — cumulative regret tracking per context bucket.
   Measures optimality gap (O(√T) = learning, O(T) = not).
   Enables convergence detection and learning speed measurement.

2. DecayingBeta — exponential forgetting for non-stationary environments.
   Old evidence decays by configurable factor per observation.
   Effective window ≈ 1/(1-decay). Prevents calcification on stale data.

3. PlateauDetector — detects learning stalls with escalating responses:
   Continue → IncreaseExploration → TriggerTransfer → InjectDiversity → Reset.
   Compares accuracy windows and tracks consecutive plateau events.

4. ParetoFront — multi-objective optimization replacing single-scalar fitness.
   Tracks non-dominated solutions across [accuracy, -cost, robustness].
   Includes hypervolume indicator, spread metrics, and per-objective queries.

5. CuriosityBonus — UCB-style exploration bonus for under-visited contexts.
   Bonus = c * sqrt(ln(N) / n_i). Directs exploration toward novel
   bucket/arm combinations rather than relying solely on Thompson variance.

All five compose into MetaLearningEngine, wired into DomainExpansionEngine:
- record_decision() feeds regret + curiosity + decaying beta on every arm pick
- evolve_population() records kernels into Pareto front before evolution
- select_arm_curious() adds curiosity bonus to Thompson Sampling
- check_plateau() monitors cost curves for learning stalls
- meta_health() provides unified diagnostics

Performance (optimized hot paths avoid HashMap clone on existing entries):
- RegretTracker: 84ns/record (1k decisions in 84µs)
- DecayingBeta: 3ns/update
- PlateauDetector: 4.1ns/check
- ParetoFront: 67ns/insert, 146ns/hypervolume
- Full cycle: 199ns/decision (18% faster after optimization)

82 tests pass. 6 new benchmarks added.

https://claude.ai/code/session_01RnwD4x5cbpB7FPvoyYQz8G
…ng improvements

Closes five architectural gaps in the learning pipeline:

1. RegretTracker — cumulative regret tracking per context bucket.
   Measures optimality gap (O(√T) = learning, O(T) = not).
   Enables convergence detection and learning speed measurement.

2. DecayingBeta — exponential forgetting for non-stationary environments.
   Old evidence decays by configurable factor per observation.
   Effective window ≈ 1/(1-decay). Prevents calcification on stale data.

3. PlateauDetector — detects learning stalls with escalating responses:
   Continue → IncreaseExploration → TriggerTransfer → InjectDiversity → Reset.
   Compares accuracy windows and tracks consecutive plateau events.

4. ParetoFront — multi-objective optimization replacing single-scalar fitness.
   Tracks non-dominated solutions across [accuracy, -cost, robustness].
   Includes hypervolume indicator, spread metrics, and per-objective queries.

5. CuriosityBonus — UCB-style exploration bonus for under-visited contexts.
   Bonus = c * sqrt(ln(N) / n_i). Directs exploration toward novel
   bucket/arm combinations rather than relying solely on Thompson variance.

All five compose into MetaLearningEngine, wired into DomainExpansionEngine:
- record_decision() feeds regret + curiosity + decaying beta on every arm pick
- evolve_population() records kernels into Pareto front before evolution
- select_arm_curious() adds curiosity bonus to Thompson Sampling
- check_plateau() monitors cost curves for learning stalls
- meta_health() provides unified diagnostics

Performance (optimized hot paths avoid HashMap clone on existing entries):
- RegretTracker: 84ns/record (1k decisions in 84µs)
- DecayingBeta: 3ns/update
- PlateauDetector: 4.1ns/check
- ParetoFront: 67ns/insert, 146ns/hypervolume
- Full cycle: 199ns/decision (18% faster after optimization)

82 tests pass. 6 new benchmarks added.

https://claude.ai/code/session_01RnwD4x5cbpB7FPvoyYQz8G
…f-node

- rvf-launch: add missing retrieval_quality field to SearchResult
- rvf-node: add match arms for new Security/QualityBelowThreshold error variants
- rvf-node: use struct update syntax for new QueryOptions fields
- rvf-runtime: add missing domain_expansion_present field in tests

Co-Authored-By: claude-flow <ruv@ruv.net>
ruvnet and others added 27 commits February 22, 2026 16:07
The biomarker engine uses 20 SNPs (17 original + LPA rs10455872/rs3798220
+ PCSK9 rs11591147) but README was not updated to reflect the expansion.

Co-Authored-By: claude-flow <ruv@ruv.net>
  Built from commit db9c3d6

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

  🤖 Generated by GitHub Actions
NodeBackend.ingestBatch() passed string IDs directly to the N-API layer
via Number(e.id), which returns NaN for non-numeric strings (UUIDs, hex
hashes, etc.). The native Rust HNSW silently drops entries with NaN IDs,
causing silent data loss with no error signal.

Fix: Add a bidirectional string↔numeric mapping layer to NodeBackend,
following the same pattern used by HNSWLibBackend in AgentDB:
- resolveLabel(): allocates sequential i64 labels for string IDs
- query(): maps numeric labels back to original string IDs
- delete(): resolves string IDs to labels before calling native layer
- Mappings persisted to {path}.idmap.json sidecar file

Also fixes query() returning numeric labels instead of original string
IDs, and delete() silently failing for non-numeric IDs.

Bumps @ruvector/rvf from 0.1.9 → 0.2.0 (breaking fix).

Closes ruvnet/agentic-flow#114

Co-Authored-By: claude-flow <ruv@ruv.net>
fix(rvf): add string ID mapping to NodeBackend — silent data loss
  Built from commit 7d410c4

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

  🤖 Generated by GitHub Actions
Comprehensive research on algorithmic frontiers and crate synthesis for
RuVector's WASM cognitive stack. Covers pseudo-deterministic min-cut,
sublinear spectral solvers, storage-based GNN acceleration, WASM
microkernel architecture, and cross-stack integration strategy with
16-week phased roadmap.

https://claude.ai/code/session_018QKTLyCUrMUQCRDqoiyEHY
Add canonical, spectral, cold-tier, and canonical-witness feature flags
across ruvector-mincut, ruvector-coherence, ruvector-gnn, and
cognitum-gate-kernel. Create ruvector-cognitive-container crate skeleton.

Implementation agents are building the full modules in parallel.

https://claude.ai/code/session_018QKTLyCUrMUQCRDqoiyEHY
…foundations

- ruvector-mincut: canonical module with CactusGraph, CanonicalMinCut trait,
  FixedWeight, WitnessReceipt, pseudo-deterministic cut via cactus representation
  and lexicographic tie-breaking (1168 lines)
- ruvector-coherence: spectral module with CsrMatrixView, SpectralCoherenceScore,
  SpectralTracker, Fiedler estimation via inverse power method, effective resistance
  sampling, HNSW health monitoring (883 lines)
- ruvector-cognitive-container: epoch controller with phase budgeting, memory slab
  with arena allocation, error types (536 lines)

https://claude.ai/code/session_018QKTLyCUrMUQCRDqoiyEHY
- ruvector-gnn: cold_tier module with FeatureStorage (block-aligned I/O),
  HyperbatchIterator (BFS-ordered batches with prefetching),
  AdaptiveHotset (frequency-based caching with decay), ColdTierTrainer,
  and ColdTierEwc for disk-backed Fisher information (946 lines)
- ruvector-cognitive-container: witness chain with ContainerWitnessReceipt,
  hash-linked chain integrity, CoherenceDecision, VerificationResult,
  deterministic hashing (404 lines)

https://claude.ai/code/session_018QKTLyCUrMUQCRDqoiyEHY
- cognitum-gate-kernel: canonical_witness module with no_std ArenaCactus,
  FixedPointWeight, CanonicalPartition (bitset-based), CanonicalWitnessFragment,
  FNV-1a hashing, BFS spanning tree for cactus construction (912 lines)
- ruvector-mincut: canonical tests for determinism, correctness, fixed-weight
  ordering, cactus construction, witness receipts (548 lines)
- ruvector-mincut: wire canonical module into lib.rs with feature-gated
  re-exports and prelude additions
- ruvector-coherence: spectral module refinements

https://claude.ai/code/session_018QKTLyCUrMUQCRDqoiyEHY
- ruvector-cognitive-container: container.rs with CognitiveContainer,
  tick-based execution (ingest/mincut/spectral/evidence/witness phases),
  Delta processing, simplified Stoer-Wagner min-cut, spectral scoring,
  evidence accumulation, snapshot/restore (539 lines)
- ruvector-cognitive-container: lib.rs wiring all modules together
- Workspace Cargo.toml updated with new crate member
- ruvector-coherence: spectral module refinements

https://claude.ai/code/session_018QKTLyCUrMUQCRDqoiyEHY
…e stack

Spectral coherence optimizations (50ms → 5ms for 500 vertices):
- Reduce Fiedler outer iterations from 50 to 8
- Reduce inner CG iterations from 100 to 15
- Reduce effective resistance samples from 50 to 3
- Reduce resistance CG iterations from 100 to 10
- Reduce power iteration for largest eigenvalue from 50 to 10

Canonical min-cut optimizations:
- Replace O(n) Vec::contains with O(1) HashSet lookups in partition membership
- Build partition_sets once, reuse across all vertex signature computation
- Use HashMap<u16,usize> for O(1) cactus vertex lookup instead of linear scan
- Track active count explicitly instead of recounting each phase
- Use std::mem::take to avoid clone during merge

New benchmark tests for all 4 cognitive stack modules:
- canonical_bench: CactusGraph 30v = ~1ms native (ArenaCactus 64v = 3µs WASM)
- spectral_bench: SCS 500v = ~5ms (10x improvement from 50ms)
- container_bench: 100 ticks = 9µs avg (target: <200µs)
- canonical_witness_bench: 64v witness = 3µs (target: <50µs)

https://claude.ai/code/session_018QKTLyCUrMUQCRDqoiyEHY
…ncies

- Replace unsafe get_unchecked with safe bounds-checked indexing in
  Stoer-Wagner hot loop (no measurable perf impact, safer code)
- Remove unused imports (Ordering, BinaryHeap)
- Add cognitive stack crate dependencies to ruvector-bench
- Add cross-crate benchmark test for full stack

https://claude.ai/code/session_018QKTLyCUrMUQCRDqoiyEHY
- Add missing `active_pos` vec in canonical min-cut Stoer-Wagner impl
- Bump cognitum-gate-kernel to 0.1.1 for new canonical_witness module
- Fix cognitum-gate-kernel ruvector-mincut dep version (0.1.30 → 2.0)
- Add version specs to mincut-wasm and mincut-node path dependencies
- Add README and metadata to ruvector-cognitive-container for crates.io
- Relax bench thresholds for CI/debug-mode environments

Co-Authored-By: claude-flow <ruv@ruv.net>
Co-Authored-By: claude-flow <ruv@ruv.net>
…ctral coherence, and container orchestration

docs: add WASM integration research series (6 documents, 3465 lines)
…x all dep version specs

- ruvector-attention: 0.1.32 → version.workspace = true (2.0.4)
- ruvector-attention-wasm: 0.1.32 → workspace, dep 0.1.31 → 2.0
- ruvector-attention-node: 0.1.0 → workspace, dep already 2.0
- ruvector-dag: 0.1.0 → workspace, add version spec on ruvector-core dep
- ruvector-gnn-wasm: fix malformed Cargo.toml (metadata before version), add version spec
- ruvector-attention-unified-wasm: add version specs, fix category slug
- Update all consumers: ruvector-crv, ruvllm, ruvector-postgres, prime-radiant, rvdna, OSpipe

Published to crates.io:
  ruvector-attention@2.0.4, ruvector-dag@2.0.4, ruvector-tiny-dancer-core@2.0.4,
  ruvector-attention-wasm@2.0.4, ruvector-attention-node@2.0.4,
  ruvector-gnn-wasm@2.0.4, ruvector-gnn-node@2.0.4,
  ruvector-tiny-dancer-wasm@2.0.4, ruvector-tiny-dancer-node@2.0.4,
  ruvector-router-wasm@2.0.4, ruvector-router-ffi@2.0.4, ruvector-router-cli@2.0.4,
  ruvector-attention-unified-wasm@0.1.0

Co-Authored-By: claude-flow <ruv@ruv.net>
  Built from commit d2342d8

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

  🤖 Generated by GitHub Actions
…ipe, raft, replication, ruvector-wasm-unified, ruvllm, rvf, and other packages

Compiled TypeScript outputs (.d.ts, .js, .js.map, .d.ts.map) from
npm workspace builds.

Co-Authored-By: claude-flow <ruv@ruv.net>
  Built from commit f17c0d2

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

  🤖 Generated by GitHub Actions
Introduces ruvector-verified and ruvector-verified-wasm crates providing
proof-carrying vector operations with sub-microsecond overhead. Includes
ADR-045, 10 exotic application examples (weapons filter, medical diagnostics,
financial routing, agent contracts, sensor swarm, quantization proof,
verified memory, vector signatures, simulation integrity, legal forensics),
rvf-kernel-optimized example, CI workflow, and root README integration.

Co-Authored-By: claude-flow <ruv@ruv.net>
feat: formal verification with lean-agentic dependent types
  Built from commit 6a447bb

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

  🤖 Generated by GitHub Actions
Signed-off-by: Salman Muin Kayser Chishti <13schishti@gmail.com>
Copy link
Copy Markdown
Owner

@ruvnet ruvnet left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @salmanmkc. A few concerns on the version bumps:

Action versions that need verification:

  • actions/checkout@v6 — as of Feb 2026, the latest stable is v4. Does v6 exist?
  • actions/upload-artifact@v6 — latest stable is v4. Same concern.
  • actions/download-artifact@v7 — latest stable is v4.
  • actions/setup-node@v6 — latest stable is v4.
  • actions/setup-python@v6 — latest stable is v5.

If these tags don't exist on the official repos, the workflows will fail. More critically, if someone creates a fork with those tags, it becomes a supply chain attack vector — the workflow would pull code from an attacker-controlled repo.

Recommendation: Please verify each action version exists on the official GitHub Actions repos before this can be merged. If these are anticipatory bumps for future versions, they should wait until the versions are actually released.

The bumps that look correct:

  • codecov/codecov-action@v5
  • benchmark-action/github-action-benchmark@v1.20.7 (pinned to specific version — good practice)
  • docker/build-push-action@v6
  • peter-evans/dockerhub-description@v5
  • google-github-actions/auth@v3 and setup-gcloud@v3
  • actions-rust-lang/setup-rust-toolchain@v1.15.2 (pinned — good)

Could you confirm the @v6/@v7 tags exist on the actions/* repos?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants