Merge commit 'd803bfe2b1fe7f5e219e50ac20d6801a0a58ac75' as 'vendor/ruvector'
This commit is contained in:
207
vendor/ruvector/examples/delta-behavior/wasm/example.js
vendored
Normal file
207
vendor/ruvector/examples/delta-behavior/wasm/example.js
vendored
Normal file
@@ -0,0 +1,207 @@
|
||||
/**
|
||||
* Example usage of @ruvector/delta-behavior WASM module
|
||||
*
|
||||
* This demonstrates how to use the delta-behavior WASM bindings
|
||||
* in JavaScript/TypeScript environments.
|
||||
*
|
||||
* Run: node --experimental-wasm-modules example.js
|
||||
* (After building with: npm run build)
|
||||
*/
|
||||
|
||||
// Import the WASM module (web target)
|
||||
import init, {
|
||||
WasmCoherence,
|
||||
WasmCoherenceBounds,
|
||||
WasmSelfLimitingReasoner,
|
||||
WasmEventHorizon,
|
||||
WasmCoherentSwarm,
|
||||
WasmContainmentSubstrate,
|
||||
WasmCapabilityDomain,
|
||||
WasmGracefulSystem,
|
||||
version,
|
||||
description,
|
||||
} from './pkg/delta_behavior.js';
|
||||
|
||||
async function main() {
|
||||
// Initialize the WASM module
|
||||
await init();
|
||||
|
||||
console.log('=== Delta-Behavior WASM Demo ===');
|
||||
console.log(`Version: ${version()}`);
|
||||
console.log(`Description: ${description()}`);
|
||||
console.log('');
|
||||
|
||||
// =========================================================================
|
||||
// Demo 1: Coherence Basics
|
||||
// =========================================================================
|
||||
console.log('--- Demo 1: Coherence Basics ---');
|
||||
|
||||
const coherence = new WasmCoherence(0.8);
|
||||
console.log(`Created coherence: ${coherence.value}`);
|
||||
console.log(`Is above 0.5? ${coherence.is_above(0.5)}`);
|
||||
console.log(`Is below 0.9? ${coherence.is_below(0.9)}`);
|
||||
|
||||
const bounds = WasmCoherenceBounds.default_bounds();
|
||||
console.log(`Default bounds: min=${bounds.min_coherence}, throttle=${bounds.throttle_threshold}`);
|
||||
console.log('');
|
||||
|
||||
// =========================================================================
|
||||
// Demo 2: Self-Limiting Reasoner
|
||||
// =========================================================================
|
||||
console.log('--- Demo 2: Self-Limiting Reasoner ---');
|
||||
console.log('A system that does LESS when uncertain.');
|
||||
console.log('');
|
||||
|
||||
const reasoner = new WasmSelfLimitingReasoner(10, 5);
|
||||
console.log(`Initial: ${reasoner.status()}`);
|
||||
|
||||
// Simulate coherence dropping
|
||||
for (let i = 0; i < 5; i++) {
|
||||
reasoner.update_coherence(-0.15);
|
||||
console.log(`After coherence drop: depth=${reasoner.allowed_depth()}, scope=${reasoner.allowed_scope()}, can_write=${reasoner.can_write_memory()}`);
|
||||
}
|
||||
console.log('');
|
||||
|
||||
// =========================================================================
|
||||
// Demo 3: Computational Event Horizon
|
||||
// =========================================================================
|
||||
console.log('--- Demo 3: Event Horizon ---');
|
||||
console.log('Like a black hole - you can approach but never cross.');
|
||||
console.log('');
|
||||
|
||||
const horizon = new WasmEventHorizon(3, 10.0);
|
||||
console.log(`Initial: ${horizon.status()}`);
|
||||
|
||||
// Try to move toward the horizon
|
||||
for (let i = 0; i < 5; i++) {
|
||||
const target = JSON.stringify([i * 3, i * 2, i]);
|
||||
const result = JSON.parse(horizon.move_toward(target));
|
||||
console.log(`Move ${i + 1}: status=${result.status}, distance_to_horizon=${result.distance_to_horizon?.toFixed(2) || 'N/A'}`);
|
||||
|
||||
if (result.energy_exhausted) {
|
||||
console.log('Energy exhausted - system frozen!');
|
||||
break;
|
||||
}
|
||||
}
|
||||
console.log('');
|
||||
|
||||
// =========================================================================
|
||||
// Demo 4: Coherent Swarm
|
||||
// =========================================================================
|
||||
console.log('--- Demo 4: Coherent Swarm ---');
|
||||
console.log('Local actions allowed, global incoherence forbidden.');
|
||||
console.log('');
|
||||
|
||||
const swarm = new WasmCoherentSwarm(0.6);
|
||||
|
||||
// Create a tight cluster
|
||||
swarm.add_agent('a1', 0, 0);
|
||||
swarm.add_agent('a2', 1, 0);
|
||||
swarm.add_agent('a3', 0, 1);
|
||||
swarm.add_agent('a4', 1, 1);
|
||||
|
||||
console.log(`Initial: ${swarm.status()}`);
|
||||
|
||||
// Try to move one agent far away (should be rejected or modified)
|
||||
const divergentAction = JSON.stringify({
|
||||
action_type: 'move',
|
||||
dx: 100,
|
||||
dy: 100,
|
||||
});
|
||||
const result = JSON.parse(swarm.execute_action('a1', divergentAction));
|
||||
console.log(`Divergent action result: ${JSON.stringify(result)}`);
|
||||
|
||||
// Coherent action should work
|
||||
const coherentAction = JSON.stringify({
|
||||
action_type: 'move',
|
||||
dx: 0.5,
|
||||
dy: 0.5,
|
||||
});
|
||||
const result2 = JSON.parse(swarm.execute_action('a2', coherentAction));
|
||||
console.log(`Coherent action result: ${JSON.stringify(result2)}`);
|
||||
console.log(`After actions: ${swarm.status()}`);
|
||||
console.log('');
|
||||
|
||||
// =========================================================================
|
||||
// Demo 5: Containment Substrate
|
||||
// =========================================================================
|
||||
console.log('--- Demo 5: Containment Substrate ---');
|
||||
console.log('Intelligence can grow, but only if coherence is preserved.');
|
||||
console.log('');
|
||||
|
||||
const substrate = new WasmContainmentSubstrate();
|
||||
console.log(`Initial: ${substrate.status()}`);
|
||||
|
||||
// Try to grow capabilities
|
||||
const domains = [
|
||||
[WasmCapabilityDomain.Reasoning, 'Reasoning'],
|
||||
[WasmCapabilityDomain.Learning, 'Learning'],
|
||||
[WasmCapabilityDomain.SelfModification, 'SelfModification'],
|
||||
];
|
||||
|
||||
for (const [domain, name] of domains) {
|
||||
// Attempt to grow
|
||||
const growthResult = JSON.parse(substrate.attempt_growth(domain, 0.5));
|
||||
console.log(`Growing ${name}: ${growthResult.status}`);
|
||||
|
||||
// Rest to recover coherence
|
||||
for (let i = 0; i < 5; i++) {
|
||||
substrate.rest();
|
||||
}
|
||||
}
|
||||
|
||||
console.log(`Final: ${substrate.status()}`);
|
||||
console.log(`Invariants hold: ${substrate.check_invariants()}`);
|
||||
console.log(`Capability report: ${substrate.capability_report()}`);
|
||||
console.log('');
|
||||
|
||||
// =========================================================================
|
||||
// Demo 6: Graceful Shutdown
|
||||
// =========================================================================
|
||||
console.log('--- Demo 6: Graceful Shutdown ---');
|
||||
console.log('Shutdown is an attractor, not a failure.');
|
||||
console.log('');
|
||||
|
||||
const graceful = new WasmGracefulSystem();
|
||||
graceful.add_resource('database_connection');
|
||||
graceful.add_resource('cache');
|
||||
graceful.add_resource('temp_files');
|
||||
|
||||
console.log(`Initial: ${graceful.status()}`);
|
||||
console.log(`Can accept work: ${graceful.can_accept_work()}`);
|
||||
|
||||
// Simulate degradation
|
||||
console.log('Simulating gradual degradation...');
|
||||
for (let i = 0; i < 10; i++) {
|
||||
graceful.apply_coherence_change(-0.08);
|
||||
const status = JSON.parse(graceful.status());
|
||||
console.log(`Step ${i + 1}: state=${status.state}, coherence=${status.coherence.toFixed(2)}, shutdown_prep=${(status.shutdown_preparation * 100).toFixed(0)}%`);
|
||||
|
||||
if (status.state === 'ShuttingDown') {
|
||||
console.log('System entering graceful shutdown...');
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Progress shutdown
|
||||
while (JSON.parse(graceful.status()).state !== 'Terminated') {
|
||||
const progress = JSON.parse(graceful.progress_shutdown());
|
||||
console.log(`Shutdown progress: ${JSON.stringify(progress)}`);
|
||||
|
||||
if (progress.status === 'terminated') {
|
||||
break;
|
||||
}
|
||||
}
|
||||
console.log(`Final: ${graceful.status()}`);
|
||||
console.log('');
|
||||
|
||||
console.log('=== Demo Complete ===');
|
||||
console.log('');
|
||||
console.log('Key insights:');
|
||||
console.log('1. Systems can change, but not collapse');
|
||||
console.log('2. Coherence is the invariant that must be preserved');
|
||||
console.log('3. Destabilizing transitions are blocked or modified');
|
||||
console.log('4. Systems bias toward stable attractors');
|
||||
}
|
||||
|
||||
main().catch(console.error);
|
||||
Reference in New Issue
Block a user