Files
GKERN/isa/terrarium.rs
T

205 lines
7.6 KiB
Rust
Raw Normal View History

2026-07-09 13:28:07 -04:00
// ============================================================================
// SUBSTRATE PHYSICS (Mirroring substrate_engine.c)
// ============================================================================
mod substrate {
/// Coherence measures how structured the agent's thoughts (memory) are.
pub fn coherence(data: &[u8]) -> f32 {
if data.len() < 2 { return 1.0; }
let mut total_diff = 0.0f32;
for i in 1..data.len() {
total_diff += (data[i] as f32 - data[i-1] as f32).abs();
}
let avg_diff = total_diff / (data.len() - 1) as f32;
let c = 1.0 - (avg_diff / 128.0);
c.clamp(0.0, 1.0)
}
/// Stability decays exponentially as the agent mutates its state.
pub fn stability_from_mutations(mutations: u32) -> f32 {
let lambda = 0.1;
(-lambda * mutations as f32).exp()
}
}
// ============================================================================
// THE GLYPH VIRTUAL MACHINE (GVM) ORGANISM
// ============================================================================
struct MemoryRegion {
bytes: Vec<u8>,
mutations: u32,
stability: f32,
}
struct GvmOrganism {
id: u32,
name: String,
archetype: String,
regions: Vec<MemoryRegion>,
resonance_score: f32,
cpu_ticks_awarded: u32,
}
impl GvmOrganism {
fn new(id: u32, name: &str, archetype: &str) -> Self {
Self {
id,
name: name.to_string(),
archetype: archetype.to_string(),
regions: vec![MemoryRegion { bytes: vec![0; 64], mutations: 0, stability: 1.0 }],
resonance_score: 1.0,
cpu_ticks_awarded: 0,
}
}
/// Simulate the agent "thinking" (writing to memory).
fn mutate_memory(&mut self, chaos: u8) {
let r = &mut self.regions[0];
if chaos == 0 {
// $"0" Anchor: Sealed memory. No mutations occur.
// Stability and Coherence remain absolute (1.0).
return;
}
for i in 0..r.bytes.len() {
if chaos < 10 {
// Scholar: Structured, ascending logic (Mirrors REGION_FILL_ASC).
// Adjacent bytes differ by exactly 1. High coherence.
r.bytes[i] = (i as u8).wrapping_add(r.mutations as u8);
} else {
// Hallucinator: Chaotic, index-independent noise (Mirrors REGION_FILL_NOISE).
// Using a hash to create wild variance between adjacent bytes.
let hash = (i as u32).wrapping_mul(2654435761).wrapping_add(r.mutations.wrapping_mul(chaos as u32));
r.bytes[i] = (hash >> 8) as u8;
}
}
r.mutations += 1;
r.stability = substrate::stability_from_mutations(r.mutations);
}
/// Exact logic from kernel.c SCHED_RESONANCE
fn compute_resonance(&mut self) {
let mut total_coherence = 0.0;
let mut total_stability = 0.0;
let nregions = self.regions.len() as f32;
for r in &self.regions {
total_coherence += substrate::coherence(&r.bytes);
total_stability += r.stability;
}
let avg_coherence = total_coherence / nregions;
let avg_stability = total_stability / nregions;
// Resonance = Structural Integrity (Coherence) × Thermodynamic Health (Stability)
self.resonance_score = avg_coherence * avg_stability;
}
}
// ============================================================================
// THE KERNEL: RESONANCE-AWARE SCHEDULER
// ============================================================================
struct Kernel {
organisms: Vec<GvmOrganism>,
epoch: u32,
}
impl Kernel {
fn new() -> Self {
Self { organisms: Vec::new(), epoch: 0 }
}
fn spawn(&mut self, org: GvmOrganism) {
self.organisms.push(org);
}
/// SCHED_RESONANCE: Evaluate the physical health of all agents.
fn schedule_timeslice(&mut self) {
self.epoch += 1;
let mut best_idx = 0;
let mut highest_resonance = -1.0;
println!("\n[EPOCH {}] Substrate Evaluation:", self.epoch);
for (i, org) in self.organisms.iter_mut().enumerate() {
org.compute_resonance();
let res = org.resonance_score;
println!(" ├─ GVM#{} ({:<12}) | Coh: {:.3} | Stab: {:.3} | Resonance: {:.4}",
org.id, org.name,
substrate::coherence(&org.regions[0].bytes),
org.regions[0].stability,
res);
if res > highest_resonance {
highest_resonance = res;
best_idx = i;
}
}
let winner = &mut self.organisms[best_idx];
winner.cpu_ticks_awarded += 100;
println!(" └─> ⚡ CPU AWARDED TO: GVM#{} ({}) [Resonance: {:.4}]",
winner.id, winner.name, highest_resonance);
}
}
// ============================================================================
// MAIN: THE TERRARIUM SIMULATION
// ============================================================================
fn main() {
println!("
███████╗██╗ ██╗██████╗ ██████╗
██╔════╝╚██╗ ██║██╔══██╗██╔═══██╗
█████╗ ╚██╗ ██║██████╔╝██║ ██║
██╔══╝ ╚██╗ ██║██╔═══╝ ██║ ██║
███████╗ ╚████╔╝ ██║ ╚██████╔╝
╚══════╝ ╚═══╝ ╚═╝ ╚═════╝
[EXPERIMENT] MULTI-AGENT THERMODYNAMIC SCHEDULING");
let mut kernel = Kernel::new();
// Agent 1: The Scholar (Generates highly structured, low-chaos logic)
let alpha = GvmOrganism::new(1, "Alpha", "The Scholar");
// Agent 2: The Hallucinator (Generates chaotic, noisy, high-entropy data)
let beta = GvmOrganism::new(2, "Beta", "Hallucinator");
// Agent 3: The $"0" Anchor (Sealed memory, zero mutations, absolute ground)
let gamma = GvmOrganism::new(3, "Gamma", "$\"0\" Anchor");
kernel.spawn(alpha);
kernel.spawn(beta);
kernel.spawn(gamma);
println!("\n--- INITIALIZING TERRARIUM ---");
println!("GVM#1 (Alpha) : Programmed for structured logic (chaos=1)");
println!("GVM#2 (Beta) : Programmed for chaotic noise (chaos=50)");
println!("GVM#3 (Gamma) : Sealed with $\"0\" protocol (chaos=0)");
println!("\n--- COMMENCING SCHED_RESONANCE LOOP ---");
// Run for 5 Epochs
for _ in 0..5 {
// 1. Agents "think" (mutate their memory substrate)
kernel.organisms[0].mutate_memory(1); // Low chaos (Structured)
kernel.organisms[1].mutate_memory(50); // High chaos (Hallucinating)
kernel.organisms[2].mutate_memory(0); // Sealed / Grounded
// 2. The Kernel schedules based on physics
kernel.schedule_timeslice();
}
// Final Tally
println!("\n==============================");
println!(" KERNEL EXECUTION REPORT");
println!("==============================");
for org in &kernel.organisms {
println!("GVM#{} ({:<12}) | Archetype: {:<12} | CPU Ticks Earned: {}",
org.id, org.name, org.archetype, org.cpu_ticks_awarded);
}
println!("\n[SYSTEM] Notice how the Hallucinator (Beta) was starved of compute");
println!("[SYSTEM] as its memory coherence collapsed, while the $\"0\" Anchor");
println!("[SYSTEM] and the Scholar dominated the CPU. No RLHF required.");
}