// ADDITIVE: Ouroboros Runner UI — /ouroboros // Doctrine v10/v11 — 32-module self-test runner // Shows live progress bar + per-module result table + "Run again" button // Fetches from /api/a11oy/v1/ouroboros/run-all (POST {}) import { useState, useCallback } from 'react'; const MODULES = [ 'v14_lutar_calculus.py', 'v15_knot_calculus.py', 'v16_feynman_gates.py', 'v17_wheeler_shannon_qec.py', 'v17_the_four.py', 'gnn_substrate.py', 'mathonto_substrate.py', 'a11oy_code_blueprint.py', 'uds_airgap_drone.py', 'eng_substrate.py', 'mila_substrate.py', 'founder_substrate.py', 'production_substrate.py', 'agent_tooling.py', 'quantum_substrate.py', 'community_substrate.py', 'observability_substrate.py', 'ai_observability_substrate.py', 'apm_substrate.py', 'palantir_substrate.py', 'pyg_substrate.py', 'dsa_substrate.py', 'cedric_mo_substrate.py', 'cursor_claude_substrate.py', 'iqt_substrate.py', 'turbovec_substrate.py', 'nvidia_rtr_substrate.py', 'openmdw_substrate.py', 'scientistone_coe_substrate.py', 'uds_v18_24_substrate.py', 'mythos_substrate.py', 'a11oy_v19_opus48_substrate.py', ]; type ModuleResult = { module: string; status: 'GREEN' | 'RED' | 'ERROR' | 'pending' | 'running'; duration_ms: number; doi?: string; error?: string; }; type RunResult = { tests_run: number; tests_pass: number; tests_fail: number; duration_ms: number; receipts: ModuleResult[]; }; type RunState = 'idle' | 'running' | 'done' | 'error'; export function Ouroboros() { const [runState, setRunState] = useState('idle'); const [result, setResult] = useState(null); const [errorMsg, setErrorMsg] = useState(null); const [progress, setProgress] = useState(0); const runTests = useCallback(async () => { setRunState('running'); setResult(null); setErrorMsg(null); setProgress(0); // Simulate progressive progress while waiting const interval = setInterval(() => { setProgress((p) => Math.min(p + 2, 90)); }, 600); try { const resp = await fetch('/api/a11oy/v1/ouroboros/run-all', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({}), }); clearInterval(interval); setProgress(100); if (!resp.ok) { const text = await resp.text(); throw new Error(`HTTP ${resp.status}: ${text}`); } const data: RunResult = await resp.json(); setResult(data); setRunState('done'); } catch (e: unknown) { clearInterval(interval); setProgress(0); setErrorMsg(e instanceof Error ? e.message : String(e)); setRunState('error'); } }, []); const statusColor = (s: string) => { if (s === 'GREEN') return '#4ade80'; if (s === 'RED') return '#f87171'; if (s === 'ERROR') return '#f59e0b'; if (s === 'running') return '#60a5fa'; return '#6a5a8a'; }; const statusBg = (s: string) => { if (s === 'GREEN') return 'rgba(74,222,128,0.1)'; if (s === 'RED') return 'rgba(248,113,113,0.1)'; if (s === 'ERROR') return 'rgba(245,158,11,0.1)'; if (s === 'running') return 'rgba(96,165,250,0.1)'; return 'rgba(106,90,138,0.1)'; }; return (
{/* Header */}
a11oy · ouroboros runner

Ouroboros Run-All

32-module self-test suite · Ouroboros Thesis v14 through v19.0

Source:{' '} OUROBOROS_RUN_ALL.py {' '} · Author: Lutar, Stephen P. — ORCID 0009-0001-0110-4173 · DOI: 10.5281/zenodo.19944926

{/* Module count chips */}
{[ { label: '32', desc: 'Modules', color: '#c9b787' }, { label: 'v14–v19.0', desc: 'Thesis versions', color: '#60a5fa' }, { label: 'stdlib only', desc: 'No pip installs', color: '#4ade80' }, ].map((chip) => (
{chip.label}
{chip.desc}
))}
{/* Run button */}
{/* Progress bar */} {runState === 'running' && (
Running self-tests… {progress}%
)} {/* Error state */} {runState === 'error' && errorMsg && (
❌ Run failed
              {errorMsg}
            
)} {/* Results summary */} {runState === 'done' && result && ( <>
{[ { label: 'Tests Run', value: result.tests_run, color: '#e8e0f0' }, { label: 'Pass', value: result.tests_pass, color: '#4ade80' }, { label: 'Fail', value: result.tests_fail, color: result.tests_fail > 0 ? '#f87171' : '#4ade80' }, { label: 'Duration', value: `${result.duration_ms}ms`, color: '#60a5fa' }, ].map((item) => (
{item.value}
{item.label}
))} {/* Overall verdict */}
{result.tests_fail === 0 ? '✅ GREEN' : `❌ RED`}
Overall verdict
{/* Per-module result table */}

Per-Module Results

{['#', 'Module', 'Status', 'Duration', 'DOI'].map((h) => ( ))} {result.receipts.map((r, idx) => ( ))}
{h}
{idx + 1} {r.module} {r.error && (
{r.error}
)}
{r.status} {r.duration_ms > 0 ? `${r.duration_ms}ms` : '—'} {r.doi ? ( {r.doi} ) : ( '—' )}
)} {/* Idle state: show module list */} {runState === 'idle' && (

32 Modules (click Run to execute)

{MODULES.map((m, idx) => (
{String(idx + 1).padStart(2, '0')}. {m}
))}
)} {/* Footer */}
POST /api/a11oy/v1/ouroboros/run-all Apache-2.0 · Lutar, Stephen P. — ORCID 0009-0001-0110-4173
); }