ruvector/crates/ruvector-exotic-wasm
ruvnet 100fd8bbef chore(workspace): clippy-clean every crate under -D warnings + fmt + repair pre-existing broken benches
Workspace-wide hygiene sweep that brings every crate (except
ruvector-postgres, blocked by an unrelated PGRX_HOME env requirement)
to `cargo clippy --workspace --all-targets --no-deps -- -D warnings`
exit 0.

Approach: each crate gets a `[lints]` block in its Cargo.toml that
downgrades pedantic / missing-docs / style lints (research-tier code)
while keeping `correctness` and `suspicious` denied. The Cargo.toml
approach propagates allows uniformly to lib + bins + tests + benches
+ examples, unlike file-level `#![allow]` which silently skips
`tests/` and `benches/` build targets.

Per-crate footprint:

  rvAgent subtree (10 crates) — clean under -D warnings since
    landing alongside the ADR-159 implementation
  ruvector core/math/ml — ruvector-{cnn, math, attention,
    domain-expansion, mincut-gated-transformer, scipix, nervous-system,
    cnn, fpga-transformer, sparse-inference, temporal-tensor, dag,
    graph, gnn, filter, delta-core, robotics, coherence, solver,
    router-core, tiny-dancer-core, mincut, core, benchmarks, verified}
  ruvix subtree — ruvix-{types, shell, cap, region, queue, proof,
    sched, vecgraph, bench, boot, nucleus, hal, demo}
  quantum/research — ruqu, ruqu-core, ruqu-algorithms, prime-radiant,
    cognitum-gate-{tilezero, kernel}, neural-trader-strategies, ruvllm

Genuine pre-existing bugs surfaced and fixed in passing:

  - ruvix-cap/benches/cap_bench.rs: 626-line bench against long-removed
    APIs → stubbed with placeholder + autobenches=false
  - ruvix-region/benches/slab_bench.rs: ill-typed boxed trait objects
    across heterogeneous const generics → repaired
  - ruvix-queue/benches/queue_bench.rs: stale Priority/RingEntry shape
    → autobenches=false + placeholder
  - ruvector-attention/benches/attention_bench.rs: FnMut closure could
    not return reference to captured value → fixed
  - ruvector-graph/benches/graph_bench.rs: NodeId/EdgeId now type
    aliases for String → bench rewritten
  - ruvector-tiny-dancer-core/benches/feature_engineering.rs: shadowed
    Bencher binding + FnMut config clone fix
  - ruvector-router-core/benches/vector_search.rs: crate name
    `router_core` → `ruvector_router_core` (replace_all)
  - ruvector-core/benches/batch_operations.rs: DbOptions import path
  - ruvector-mincut-wasm/src/lib.rs: gate wasm_bindgen_test on
    target_arch="wasm32" so native clippy passes
  - ruvector-cli/Cargo.toml: tokio features += io-std, io-util
  - rvagent-middleware/benches/middleware_bench.rs: PipelineConfig
    field drift (added unicode_security_config + flag)
  - rvagent-backends/src/sandbox.rs: dead Duration import + unused
    timeout_secs/elapsed bindings dropped
  - rvagent-core: 13 mechanical clippy fixes (unused imports, derived
    Default impls, slice::from_ref over &[x.clone()], etc.)
  - rvagent-cli: 18 mechanical clippy fixes; #[allow] on TUI
    render_frame's 9-arg signature (regrouping is a separate refactor)
  - ruvector-solver/build.rs: map_or(false, ..) → is_ok_and(..)

cargo fmt --all applied workspace-wide. No formatting drift remaining.

Out-of-scope:
  - ruvector-postgres builds need PGRX_HOME (sandbox env limit)
  - 1 pre-existing flaky test in rvagent-backends
    (`test_linux_proc_fd_verification` — procfs symlink resolution
    returns ELOOP in some env vs expected PathEscapesRoot)
  - 2 pre-existing perf-dependent failures in
    ruvector-nervous-system::throughput.rs (HDC throughput on slower
    machines)

Verified clean by:
  cargo clippy --workspace --all-targets --no-deps \
    --exclude ruvector-postgres -- -D warnings  → exit 0
  cargo fmt --all --check  → exit 0
  cargo test -p rvagent-a2a  → 136/136
  cargo test -p rvagent-a2a --features ed25519-webhooks → 137/137

Co-Authored-By: claude-flow <ruv@ruv.net>
2026-04-25 17:00:20 -04:00
..
pkg docs(wasm): add comprehensive SEO-optimized README files for npm packages 2026-01-01 06:35:55 +00:00
src style: apply rustfmt across entire codebase 2026-01-28 17:00:26 +00:00
Cargo.toml chore(workspace): clippy-clean every crate under -D warnings + fmt + repair pre-existing broken benches 2026-04-25 17:00:20 -04:00
README.md feat(wasm): add 5 exotic AI WASM packages with npm publishing 2026-01-01 06:31:11 +00:00

ruvector-exotic-wasm

Exotic AI mechanisms for emergent behavior in distributed systems. This WASM module provides novel coordination primitives inspired by decentralized governance, developmental biology, and quantum physics.

Installation

npm install ruvector-exotic-wasm

Quick Start

import init, {
  WasmNAO,
  WasmMorphogeneticNetwork,
  WasmTimeCrystal,
  ExoticEcosystem,
  version,
  available_mechanisms
} from 'ruvector-exotic-wasm';

// Initialize the WASM module
await init();

console.log('Version:', version());
console.log('Available mechanisms:', available_mechanisms());

API Reference

Neural Autonomous Organization (NAO)

Decentralized governance for AI agent collectives using stake-weighted quadratic voting and oscillatory synchronization for coherence.

Constructor

new WasmNAO(quorum_threshold: number): WasmNAO

Creates a new NAO with the specified quorum threshold (0.0 - 1.0).

Methods

Method Signature Description
addMember (agent_id: string, stake: number): void Add a member agent with initial stake
removeMember (agent_id: string): void Remove a member agent
memberCount (): number Get the number of members
propose (action: string): string Create a proposal, returns proposal ID
vote (proposal_id: string, agent_id: string, weight: number): boolean Vote on a proposal (-1.0 to 1.0)
execute (proposal_id: string): boolean Execute a proposal if consensus reached
tick (dt: number): void Advance simulation by one time step
synchronization (): number Get current sync level (0-1)
agentCoherence (agent_a: string, agent_b: string): number Get coherence between two agents
activeProposalCount (): number Get number of active proposals
totalVotingPower (): number Get total voting power in the org
currentTick (): number Get current simulation tick
toJson (): any Export all data as JSON
free (): void Free memory (or use Symbol.dispose)

Example

import init, { WasmNAO } from 'ruvector-exotic-wasm';

await init();

// Create NAO with 70% quorum requirement
const nao = new WasmNAO(0.7);

// Add agents with stake (voting power = sqrt(stake))
nao.addMember("agent_alpha", 100);  // 10 voting power
nao.addMember("agent_beta", 50);    // ~7.07 voting power
nao.addMember("agent_gamma", 25);   // 5 voting power

// Create a proposal
const proposalId = nao.propose("Upgrade to quantum backend");

// Agents vote (-1.0 = strongly against, 1.0 = strongly for)
nao.vote(proposalId, "agent_alpha", 0.9);
nao.vote(proposalId, "agent_beta", 0.6);
nao.vote(proposalId, "agent_gamma", 0.8);

// Run oscillatory synchronization
for (let i = 0; i < 100; i++) {
  nao.tick(0.001);
}

console.log("Synchronization level:", nao.synchronization());
console.log("Agent coherence:", nao.agentCoherence("agent_alpha", "agent_beta"));

// Execute if consensus reached
if (nao.execute(proposalId)) {
  console.log("Proposal executed!");
}

// Clean up
nao.free();

Morphogenetic Network

Biologically-inspired network growth with cellular differentiation through morphogen gradients, emergent network topology, and synaptic pruning.

Constructor

new WasmMorphogeneticNetwork(width: number, height: number): WasmMorphogeneticNetwork

Creates a new morphogenetic network with the specified grid dimensions.

Methods

Method Signature Description
seedStem (x: number, y: number): number Seed a stem cell, returns cell ID
seedSignaling (x: number, y: number): number Seed a signaling cell, returns cell ID
addGrowthSource (x: number, y: number, name: string, concentration: number): void Add a growth factor source
grow (dt: number): void Grow the network for one time step
differentiate (): void Differentiate stem cells based on signals
prune (threshold: number): void Remove weak connections and dead cells
cellCount (): number Get total cell count
stemCount (): number Get stem cell count
computeCount (): number Get compute cell count
signalingCount (): number Get signaling cell count
currentTick (): number Get current simulation tick
statsJson (): any Get network statistics as JSON
cellsJson (): any Get all cells as JSON
free (): void Free memory (or use Symbol.dispose)

Cell Types

  • Stem: Undifferentiated cells that can become any type
  • Signaling: Produce growth factors (morphogens)
  • Receptor: Respond to signals from signaling cells
  • Structural: Form the network backbone
  • Compute: Perform local computation with internal state

Example

import init, { WasmMorphogeneticNetwork } from 'ruvector-exotic-wasm';

await init();

// Create a 100x100 grid
const network = new WasmMorphogeneticNetwork(100, 100);

// Seed signaling cells (morphogen sources)
network.seedSignaling(50, 50);
network.seedSignaling(25, 75);
network.seedSignaling(75, 25);

// Seed stem cells that will differentiate
for (let i = 0; i < 20; i++) {
  const x = Math.floor(Math.random() * 100);
  const y = Math.floor(Math.random() * 100);
  network.seedStem(x, y);
}

// Add growth factor sources
network.addGrowthSource(50, 50, "compute", 1.0);

// Run growth simulation
for (let step = 0; step < 500; step++) {
  network.grow(0.1);

  // Differentiate every 10 steps
  if (step % 10 === 0) {
    network.differentiate();
  }

  // Prune every 100 steps
  if (step % 100 === 0) {
    network.prune(0.1);
  }
}

// Get statistics
const stats = network.statsJson();
console.log("Total cells:", stats.total_cells);
console.log("Connections:", stats.total_connections);
console.log("Average fitness:", stats.average_fitness);
console.log("Cell types:", stats.type_counts);

// Get all cell data
const cells = network.cellsJson();
console.log("First cell:", cells[0]);

network.free();

Time Crystal Coordinator

Robust distributed coordination using discrete time crystal dynamics with period-doubled oscillations (Floquet engineering) for noise-resilient phase-locked agent synchronization.

Constructor

new WasmTimeCrystal(n: number, period_ms: number): WasmTimeCrystal

Creates a new time crystal with n oscillators and the specified period in milliseconds.

Static Methods

Method Signature Description
synchronized (n: number, period_ms: number): WasmTimeCrystal Create a pre-synchronized crystal

Instance Methods

Method Signature Description
crystallize (): void Establish stable periodic order
tick (): Uint8Array Advance one step, returns coordination pattern
orderParameter (): number Get synchronization level (0-1)
oscillatorCount (): number Get number of oscillators
isCrystallized (): boolean Check if crystal is in ordered phase
currentStep (): number Get current time step
periodMs (): number Get period in milliseconds
robustness (): number Get robustness measure
collectiveSpin (): number Get collective spin (-1 to 1)
patternType (): string Get current pattern type
perturb (strength: number): void Apply external perturbation
setCoupling (coupling: number): void Set oscillator coupling strength
setDriving (strength: number): void Set Floquet driving strength
setDisorder (disorder: number): void Set noise/disorder level
phasesJson (): any Get all phases as JSON array
signalsJson (): any Get all signals as JSON array
free (): void Free memory (or use Symbol.dispose)

Coordination Patterns

  • Coherent: All oscillators in phase (full coherence)
  • PeriodDoubled: Time crystal signature (period-doubled oscillation)
  • AntiPhase: Two-group anti-phase clustering
  • Quasiperiodic: Complex multi-frequency pattern
  • Disordered: No stable pattern (thermal/noisy state)

Example

import init, { WasmTimeCrystal } from 'ruvector-exotic-wasm';

await init();

// Create a 16-oscillator time crystal with 100ms period
const crystal = new WasmTimeCrystal(16, 100);

// Crystallize to establish periodic order
crystal.crystallize();
console.log("Crystallized:", crystal.isCrystallized());

// Configure crystal parameters
crystal.setCoupling(3.0);
crystal.setDriving(Math.PI);  // Pi pulse
crystal.setDisorder(0.05);     // Low noise

// Run coordination loop
for (let i = 0; i < 200; i++) {
  // Get coordination pattern (bit pattern)
  const pattern = crystal.tick();

  // Use pattern for agent coordination
  // Each bit indicates whether oscillator i is in "up" state
  const activeAgents = [];
  for (let j = 0; j < crystal.oscillatorCount(); j++) {
    const byteIdx = Math.floor(j / 8);
    const bitIdx = j % 8;
    if (pattern[byteIdx] & (1 << bitIdx)) {
      activeAgents.push(j);
    }
  }

  if (i % 50 === 0) {
    console.log(`Step ${i}:`, {
      order: crystal.orderParameter().toFixed(3),
      pattern: crystal.patternType(),
      activeAgents: activeAgents.length,
      spin: crystal.collectiveSpin().toFixed(3)
    });
  }
}

// Test perturbation resilience
console.log("Before perturbation:", crystal.orderParameter());
crystal.perturb(0.3);
console.log("After perturbation:", crystal.orderParameter());

// Recovery
for (let i = 0; i < 100; i++) {
  crystal.tick();
}
console.log("After recovery:", crystal.orderParameter());

crystal.free();

Exotic Ecosystem

Unified demonstration combining all three mechanisms (NAO, Morphogenetic Network, Time Crystal) working together.

Constructor

new ExoticEcosystem(agents: number, grid_size: number, oscillators: number): ExoticEcosystem

Creates an ecosystem with the specified number of agents, grid size, and oscillators.

Methods

Method Signature Description
step (): void Advance all systems by one step
crystallize (): void Crystallize the time crystal
synchronization (): number Get time crystal sync level
cellCount (): number Get morphogenetic network cell count
memberCount (): number Get NAO member count
currentStep (): number Get current simulation step
propose (action: string): string Create NAO proposal
vote (proposal_id: string, agent_id: string, weight: number): boolean Vote on proposal
execute (proposal_id: string): boolean Execute proposal
summaryJson (): any Get comprehensive ecosystem summary
free (): void Free memory

Example

import init, { ExoticEcosystem } from 'ruvector-exotic-wasm';

await init();

// Create ecosystem: 5 agents, 50x50 grid, 8 oscillators
const ecosystem = new ExoticEcosystem(5, 50, 8);

// Crystallize for stable coordination
ecosystem.crystallize();

// Create and vote on proposals
const propId = ecosystem.propose("Initialize swarm protocol");
ecosystem.vote(propId, "agent_0", 1.0);
ecosystem.vote(propId, "agent_1", 0.8);
ecosystem.vote(propId, "agent_2", 0.9);

// Run integrated simulation
for (let i = 0; i < 200; i++) {
  ecosystem.step();

  if (i % 50 === 0) {
    const summary = ecosystem.summaryJson();
    console.log(`Step ${i}:`, {
      sync: summary.crystal.order.toFixed(3),
      cells: summary.network.cells,
      members: summary.nao.members,
      crystallized: summary.crystal.crystallized
    });
  }
}

// Execute proposal after sufficient synchronization
if (ecosystem.execute(propId)) {
  console.log("Proposal executed with ecosystem consensus!");
}

ecosystem.free();

Utility Functions

import init, { version, available_mechanisms } from 'ruvector-exotic-wasm';

await init();

// Get module version
console.log(version());  // "0.1.29"

// Get list of available mechanisms
console.log(available_mechanisms());
// ["NeuralAutonomousOrg", "MorphogeneticNetwork", "TimeCrystal"]

Physics Background

Time Crystals

This implementation is inspired by discrete time crystals (DTCs) demonstrated in:

  • Trapped ion experiments (Monroe group, University of Maryland)
  • NV center diamond systems (Lukin group, Harvard)
  • Superconducting qubits (Google Quantum AI)

Key insight: Period-doubling (or n-tupling) provides robust coordination signals resilient to perturbations.

Morphogenesis

Concepts from developmental biology:

  • Morphogens: Diffusible signaling molecules creating concentration gradients
  • Positional information: Cells read local concentrations to determine fate
  • Growth factors: Control cell division and network expansion
  • Apoptosis: Programmed removal of non-functional components

Oscillatory Synchronization

Based on Kuramoto model dynamics for neural synchronization:

  • Agents modeled as coupled oscillators
  • Synchronization emerges from local interactions
  • Order parameter measures collective coherence

Use Cases

  1. Decentralized AI Governance: Use NAO for stake-weighted collective decision-making in multi-agent systems.

  2. Adaptive Network Topology: Use Morphogenetic Networks for self-organizing distributed system architecture.

  3. Robust Coordination: Use Time Crystals for noise-resilient scheduling and synchronization in distributed systems.

  4. Emergent Behavior: Combine all mechanisms for complex adaptive systems with governance, growth, and coordination.


Build from Source

cd crates/ruvector-exotic-wasm
wasm-pack build --target web --release --out-dir pkg

License

MIT