Files
resonance-engine/experiments/full_analytics.ps1
T

322 lines
14 KiB
PowerShell

# full_analytics.ps1
# Complete crash analytics for probe_256_final.exe
# Captures cycles, errors, patterns, and analyzes crash at ~1112
$logFile = "crash_analytics_$(Get-Date -Format 'yyyyMMdd_HHmmss').log"
$csvFile = "cycles_$(Get-Date -Format 'yyyyMMdd_HHmmss').csv"
$errorFile = "errors_$(Get-Date -Format 'yyyyMMdd_HHmmss').log"
# Initialize data structures
$cycles = @()
$errors = @()
$patterns = @()
$startTime = Get-Date
# ANSI colors
$Red = "`e[31m"
$Green = "`e[32m"
$Yellow = "`e[33m"
$Blue = "`e[34m"
$Magenta = "`e[35m"
$Cyan = "`e[36m"
$Reset = "`e[0m"
function Log-Message {
param($Message, $Color = $Reset, [switch]$Important)
$timestamp = Get-Date -Format "HH:mm:ss.fff"
$logEntry = "[$timestamp] $Message"
if ($Important) {
Write-Host "$Color`n════════════════════════════════════════════════════════════════`n" -NoNewline
Write-Host "$Color$logEntry$Reset" -NoNewline
Write-Host "$Color`n════════════════════════════════════════════════════════════════`n$Reset"
} else {
Write-Host "$Color$logEntry$Reset"
}
Add-Content -Path $logFile -Value $logEntry
}
function Parse-Cycle {
param($Line)
# Full pattern: " 1112 | 0:30:01 | 1.2500 | 8.958159e-08 | [1.00030,1.00030] | 4.782e-12 | 13 | 6.08 | 65561.88 | SILENT"
$pattern = '^\s*(\d+)\s*\|\s*(\d+:\d+:\d+)\s*\|\s*([\d\.]+)\s*\|\s*([\d\.e\+\-]+)\s*\|\s*\[([\d\.]+),([\d\.]+)\]\s*\|\s*([\d\.e\+\-]+)\s*\|\s*(\d+)\s*\|\s*([\d\.]+)\s*\|\s*([\d\.]+)\s*\|\s*(\w+)'
if ($Line -match $pattern) {
return [PSCustomObject]@{
Cycle = [int]$Matches[1]
Time = $Matches[2]
Omega = [float]$Matches[3]
Enstrophy = $Matches[4]
RhoMin = [float]$Matches[5]
RhoMax = [float]$Matches[6]
Power = $Matches[7]
Guardians = [int]$Matches[8]
Mass = [float]$Matches[9]
MTotal = [float]$Matches[10]
Probe = $Matches[11]
Timestamp = Get-Date
RawLine = $Line
}
}
return $null
}
function Detect-Patterns {
param($Cycle)
$detected = @()
# SILENT probe patterns
if ($Cycle.Probe -eq "SILENT") {
if ([math]::Abs($Cycle.Omega - 1.25) -lt 0.001) {
$detected += "OMEGA_LOCKED_1.25"
}
if ($Cycle.Omega -lt 0.6 -or $Cycle.Omega -gt 1.95) {
$detected += "OMEGA_OUT_OF_RANGE"
}
}
# Guardian patterns
if ($cycles.Count -gt 1) {
$prev = $cycles[-1]
if ($Cycle.Guardians -ne $prev.Guardians) {
$detected += "GUARDIAN_COUNT_CHANGED"
}
if ($Cycle.Mass - $prev.Mass -gt 10) {
$detected += "MASS_SPIKE"
}
}
# Power patterns
if ($Cycle.Power -match 'e' -and [double]$Cycle.Power -gt 1e-5) {
$detected += "POWER_SPIKE"
}
# Density patterns
if ($Cycle.RhoMax - $Cycle.RhoMin -gt 0.1) {
$detected += "DENSITY_GRADIENT_HIGH"
}
return $detected
}
function Show-Status {
Clear-Host
Write-Host "$Cyan╔══════════════════════════════════════════════════════════════╗$Reset"
Write-Host "$Cyan║ FULL CRASH ANALYTICS - LIVE ║$Reset"
Write-Host "$Cyan╠══════════════════════════════════════════════════════════════╣$Reset"
$runtime = (Get-Date) - $startTime
$runtimeStr = "{0:hh\:mm\:ss}" -f $runtime
if ($cycles.Count -gt 0) {
$latest = $cycles[-1]
Write-Host "$Green║ CYCLE: $($latest.Cycle.ToString().PadLeft(4)) | TIME: $runtimeStr | PROBE: $($latest.Probe.PadRight(6))$Reset"
Write-Host "$Green║ OMEGA: $($latest.Omega.ToString("F4").PadLeft(6)) | GUARDIANS: $($latest.Guardians.ToString().PadLeft(2)) | MASS: $($latest.Mass.ToString("F2").PadLeft(6))$Reset"
# Crash zone warning
if ($latest.Cycle -ge 1100 -and $latest.Cycle -le 1199) {
Write-Host "$Red║ ⚠️ CRASH ZONE: SILENT probe (omega locked 1.25) ║$Reset"
Write-Host "$Red║ Expected crash: cycle ~1112 ║$Reset"
} elseif ($latest.Cycle -lt 1100) {
$remaining = 1100 - $latest.Cycle
Write-Host "$Yellow║ Cycles to crash zone: $remaining$Reset"
} else {
Write-Host "$Green║ ✅ PASSED CRASH ZONE ║$Reset"
}
} else {
Write-Host "$Yellow║ Waiting for first cycle... ║$Reset"
}
Write-Host "$Cyan╠══════════════════════════════════════════════════════════════╣$Reset"
# Recent patterns
if ($patterns.Count -gt 0) {
Write-Host "$Magenta║ RECENT PATTERNS: ║$Reset"
$recent = $patterns | Select-Object -Last 3
foreach ($p in $recent) {
Write-Host "$Magenta║ • $($p.PadRight(54))$Reset"
}
}
# Error count
if ($errors.Count -gt 0) {
Write-Host "$Red║ ERRORS: $($errors.Count) detected ║$Reset"
}
Write-Host "$Cyan╚══════════════════════════════════════════════════════════════╝$Reset"
}
function Analyze-Crash {
param($ExitCode, $LastCycle)
Log-Message "════════════════════════════════════════════════════════════════" -Color $Red -Important
Log-Message "💥 CRASH ANALYSIS COMPLETE" -Color $Red -Important
Log-Message "════════════════════════════════════════════════════════════════" -Color $Red -Important
$runtime = (Get-Date) - $startTime
$runtimeStr = "{0:hh\:mm\:ss}" -f $runtime
Log-Message "Runtime: $runtimeStr" -Color $Yellow
Log-Message "Last cycle: $LastCycle" -Color $Yellow
Log-Message "Exit code: $ExitCode" -Color $Yellow
if ($cycles.Count -gt 0) {
$lastProbe = $cycles[-1].Probe
Log-Message "Last probe: $lastProbe" -Color $Yellow
}
# SILENT probe crash analysis
if ($ExitCode -eq 1 -and $LastCycle -ge 1100 -and $LastCycle -le 1199) {
Log-Message "🔍 CONFIRMED: SILENT PROBE CRASH" -Color $Red
Log-Message " Crash at cycle $LastCycle (12 cycles into SILENT probe)" -Color $Yellow
Log-Message " Omega locked at 1.25 for 100 cycles (1100-1199)" -Color $Yellow
Log-Message "`n📊 PRE-CRASH ANALYSIS:" -Color $Cyan
# Last 5 cycles before crash
$lastCycles = $cycles | Where-Object { $_.Cycle -ge $LastCycle - 5 } | Select-Object -Last 10
foreach ($c in $lastCycles) {
Log-Message " Cycle $($c.Cycle): Omega=$($c.Omega) Guardians=$($c.Guardians) Mass=$($c.Mass)" -Color $Yellow
}
# Omega analysis
$silentCycles = $cycles | Where-Object { $_.Probe -eq "SILENT" }
if ($silentCycles.Count -gt 0) {
$omegaAvg = ($silentCycles | Measure-Object -Property Omega -Average).Average
$omegaMin = ($silentCycles | Measure-Object -Property Omega -Minimum).Minimum
$omegaMax = ($silentCycles | Measure-Object -Property Omega -Maximum).Maximum
Log-Message "`n📈 OMEGA DURING SILENT PROBE:" -Color $Cyan
Log-Message " Average: $($omegaAvg.ToString("F4"))" -Color $Yellow
Log-Message " Range: $($omegaMin.ToString("F4")) to $($omegaMax.ToString("F4"))" -Color $Yellow
Log-Message " Target: 1.2500 (locked)" -Color $Yellow
}
Log-Message "`n🔧 ROOT CAUSE HYPOTHESES:" -Color $Red
Log-Message " 1. Numerical instability at exact omega=1.25" -Color $Yellow
Log-Message " 2. GPU memory corruption after 100 cycles of fixed omega" -Color $Yellow
Log-Message " 3. CUDA kernel divergence with constant parameters" -Color $Yellow
Log-Message " 4. Buffer overflow in VRM silence logic" -Color $Yellow
Log-Message "`n🛠️ RECOMMENDED FIXES:" -Color $Green
Log-Message " 1. Remove omega locking in SILENT probe" -Color $Yellow
Log-Message " 2. Add small noise to omega (1.25 ± 0.001)" -Color $Yellow
Log-Message " 3. Skip SILENT probe entirely" -Color $Yellow
Log-Message " 4. Use fractal_habit_256.exe (no probes)" -Color $Yellow
} elseif ($ExitCode -eq 0) {
Log-Message "✅ CLEAN EXIT - NO CRASH" -Color $Green
Log-Message " Program completed all 1700 cycles successfully" -Color $Yellow
}
# Save all data
$cycles | Export-Csv -Path $csvFile -NoTypeInformation
$errors | Out-File -FilePath $errorFile
Log-Message "`n📁 DATA SAVED:" -Color $Cyan
Log-Message " Cycle data: $csvFile" -Color $Yellow
Log-Message " Error log: $errorFile" -Color $Yellow
Log-Message " Full log: $logFile" -Color $Yellow
}
# Main execution
Log-Message "════════════════════════════════════════════════════════════════" -Color $Cyan -Important
Log-Message "🚀 FULL CRASH ANALYTICS STARTING" -Color $Cyan -Important
Log-Message "Monitoring: probe_256_final.exe" -Color $Cyan
Log-Message "Target: Capture crash at cycle ~1112 (SILENT probe)" -Color $Cyan
Log-Message "Data files: $csvFile, $errorFile, $logFile" -Color $Cyan
Log-Message "════════════════════════════════════════════════════════════════" -Color $Cyan -Important
# Start process
$processInfo = New-Object System.Diagnostics.ProcessStartInfo
$processInfo.FileName = ".\probe_256_final.exe"
$processInfo.RedirectStandardOutput = $true
$processInfo.RedirectStandardError = $true
$processInfo.UseShellExecute = $false
$processInfo.CreateNoWindow = $true
$process = New-Object System.Diagnostics.Process
$process.StartInfo = $processInfo
try {
$process.Start() | Out-Null
Log-Message "Process started (PID: $($process.Id))" -Color $Green
$stdout = $process.StandardOutput
$stderr = $process.StandardError
# Initial status
Show-Status
# Monitor loop
while (!$process.HasExited) {
# Read stdout
if (!$stdout.EndOfStream) {
$line = $stdout.ReadLine()
# Parse cycle
$cycle = Parse-Cycle $line
if ($cycle) {
$cycles += $cycle
# Detect patterns
$detected = Detect-Patterns $cycle
if ($detected.Count -gt 0) {
foreach ($pattern in $detected) {
$patterns += "$pattern at cycle $($cycle.Cycle)"
Log-Message "Pattern: $pattern at cycle $($cycle.Cycle)" -Color $Magenta
}
}
# Update status every 10 cycles
if ($cycle.Cycle % 10 -eq 0) {
Show-Status
}
# Special warnings
if ($cycle.Cycle -ge 1100 -and $cycle.Cycle -le 1199 -and $cycle.Probe -eq "SILENT") {
Log-Message "🚨 CRASH ZONE: Cycle $($cycle.Cycle) | Omega locked at $($cycle.Omega)" -Color $Red
}
}
# Check for errors in output
if ($line -match 'error|Error|ERROR|exception|Exception|EXCEPTION|fatal|Fatal|FATAL|segmentation|Segmentation|access violation|Access violation|cudaError|CUDA error|nvmlError|NVML error') {
$errors += $line
Log-Message "🔴 ERROR in output: $line" -Color $Red
}
}
# Read stderr
if (!$stderr.EndOfStream) {
$errorLine = $stderr.ReadLine()
$errors += $errorLine
Log-Message "🔴 STDERR: $errorLine" -Color $Red
}
Start-Sleep -Milliseconds 10
}
# Process exited
$exitCode = $process.ExitCode
$lastCycle = if ($cycles.Count -gt 0) { $cycles[-1].Cycle } else { 0 }
Show-Status
Analyze-Crash -ExitCode $exitCode -LastCycle $lastCycle
} catch {
Log-Message "❌ ERROR: $_" -Color $Red
} finally {
if ($process -and !$process.HasExited) {
$process.Kill()
}
}
Log-Message "════════════════════════════════════════════════════════════════" -Color $Cyan -Important
Log-Message "ANALYTICS COMPLETE" -Color $Cyan -Important
Log-Message "════════════════════════════════════════════════════════════════" -Color $Cyan -Important