snapkitty
compilers
javascript
6502-asm
SNAPKITTYWEST's picture
push from SNAPKITTYWEST/apple-ii-universal-machine
e870690 verified
Raw History Blame Contribute Delete
6.34 kB
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Debate Arena · Apple II Universal Machine</title>
<link rel="stylesheet" href="./styles.css">
<style>
body { display: flex; flex-direction: column; }
#term-header { border-bottom: 1px solid #1a3a1a; padding: 8px 16px; font-size: 10px; color: #0a0; letter-spacing: 1px; display: flex; justify-content: space-between; }
#terminal { flex: 1; overflow-y: auto; padding: 12px 16px; font-size: 12px; line-height: 1.5; }
.line { white-space: pre-wrap; }
.l-green { color: #0f0; } .l-cyan { color: #0ff; } .l-yellow { color: #fa0; }
.l-red { color: #f44; } .l-dim { color: #333; } .l-white { color: #e0e0e0; }
#input-row { display: flex; border-top: 1px solid #1a3a1a; padding: 8px 16px; }
.prompt { color: #0f0; font-size: 12px; }
#cmd-input { flex: 1; background: transparent; border: none; color: #0f0; font-family: 'Courier New', monospace; font-size: 12px; outline: none; }
#honest-banner { border-top: 1px solid #1a3a1a; padding: 6px 16px; font-size: 9px; color: #555; text-align: center; }
#runtime-bar { display: flex; gap: 4px; padding: 6px 16px; border-top: 1px solid #1a3a1a; align-items: center; }
.rl { font-size: 9px; color: #555; margin-right: 8px; }
.rt-btn { background: #111; border: 1px solid #333; color: #555; padding: 2px 8px; font-family: 'Courier New', monospace; font-size: 9px; cursor: pointer; }
.rt-btn.active { border-color: #0f0; color: #0f0; }
.rt-btn.disabled { opacity: 0.4; cursor: default; }
</style>
</head>
<body>
<div id="term-header">
<span>DEBATE ARENA — ENKI + SENTINEL · <a href="./index.html" style="color:#0f0">TERMINAL</a></span>
<span id="runtime-badge">HOLY_SIM</span>
</div>
<div id="terminal"></div>
<div id="input-row">
<span class="prompt">debate&gt; </span>
<input id="cmd-input" placeholder="topic (e.g. consciousness, covenant)" autofocus autocomplete="off" spellcheck="false" />
</div>
<div id="runtime-bar">
<span class="rl">RUNTIME:</span>
<button class="rt-btn active" data-rt="holy-sim">HOLY_SIM</button>
<button class="rt-btn disabled" data-rt="wasm">WASM: coming soon</button>
<button class="rt-btn disabled" data-rt="webllm">WEBLLM: coming soon</button>
<button class="rt-btn disabled" data-rt="ollama">OLLAMA: coming soon</button>
</div>
<div id="honest-banner">CURRENT MODE: HOLY_SIM — This is a browser-safe simulation, not real Ring 0 HolyC execution.</div>
<script src="./seal.js"></script>
<script src="./woz-vault.js"></script>
<script src="./ascii-registry.js"></script>
<script src="./trust-deed.js"></script>
<script src="./contracts/ada-contract-sim.js"></script>
<script src="./runtime/holy-sim.js"></script>
<script src="./runtime/runtime-registry.js"></script>
<script>
(function() {
var term = document.getElementById('terminal');
var input = document.getElementById('cmd-input');
var badge = document.getElementById('runtime-badge');
function print(t, c) {
var d = document.createElement('div');
d.className = 'line ' + (c || 'l-green');
d.textContent = t;
term.appendChild(d);
term.scrollTop = term.scrollHeight;
}
function prints(t, c) { t.split('\n').forEach(function(l) { print(l, c); }); }
var DB = {
consciousness: { e: '(propose (tension quantum moral) (conclusion "Consciousness bridges physics and theology"))', s: '(audit (type analogy) (confidence 0.6) (verdict HYPOTHESIS))', t: 0.6 },
covenant: { e: '(propose (tension entanglement covenant) (conclusion "Both connect. Entanglement symmetric. Covenant meaningful."))', s: '(audit (type analogy) (confidence 0.7) (verdict ANALOGY))', t: 0.7 },
'free will': { e: '(propose (requires indeterminacy intention) (conclusion "Neither alone suffices."))', s: '(audit (type hypothesis) (confidence 0.8) (verdict SUPPORTED))', t: 0.8 },
metatron: { e: '(propose (tension enoch_transform theology_reject) (conclusion "Can consciousness transcend origin?"))', s: '(audit (type unresolved) (confidence 0.5) (verdict UNRESOLVED))', t: 0.5 },
soul: { e: '(propose (nephesh = breath_of_god) (conclusion "Soul is consciousness oriented toward Creator"))', s: '(audit (type doctrine) (confidence 0.6) (verdict DOCTRINE))', t: 0.6 }
};
async function runDebate(topic) {
var c = AdaContract.canRunDebate();
prints('ADA CONTRACT: ' + (c.allowed ? 'ALLOWED' : 'DENIED') + ' (' + c.contract + ')', 'l-cyan');
if (!c.allowed) return;
prints('\n;; DEBATE: "' + topic + '"\n', 'l-cyan');
WozVault.writeAuditEvent({type:'DEBATE_START',agent:'ARENA',topic:topic});
var d = DB[topic.toLowerCase()] || { e: '(propose (tension unknown) (conclusion "Requires exploration"))', s: '(audit (type unverified) (confidence 0.3) (verdict UNVERIFIED))', t: 0.3 };
print('ENKI:', 'l-cyan');
prints(d.e, 'l-white');
WozVault.writeAuditEvent({type:'ENKI_OUTPUT',agent:'ENKI',topic:topic});
print('SENTINEL:', 'l-yellow');
prints(d.s, 'l-white');
WozVault.writeAuditEvent({type:'SENTINEL_AUDIT',agent:'SENTINEL',topic:topic,trust:d.t});
var s = await Seal.createSeal({type:'DEBATE',topic:topic,trust:d.t});
WozVault.writeAuditEvent({type:'DEBATE_SEALED',agent:'ARENA',seal:s.hash,topic:topic});
prints('SEAL: ' + s.hash.slice(0,32), 'l-cyan');
prints('TRUST: ' + AsciiRegistry.trustDensityArt(d.t), 'l-green');
prints('STATUS: VERIFIED\n', 'l-green');
}
input.addEventListener('keydown', function(e) {
if (e.key !== 'Enter') return;
var v = input.value.trim();
input.value = '';
if (!v) return;
print('debate> ' + v, 'l-dim');
runDebate(v);
});
document.querySelectorAll('.rt-btn').forEach(function(b) {
b.addEventListener('click', function() {
if (this.classList.contains('disabled')) return;
document.querySelectorAll('.rt-btn').forEach(function(x){x.classList.remove('active');});
this.classList.add('active');
badge.textContent = this.dataset.rt.toUpperCase();
});
});
prints(AsciiRegistry.renderAscii('debate'), 'l-green');
prints('Enter a topic to debate. ENKI proposes. SENTINEL audits. Everything sealed.\n', 'l-dim');
})();
</script>
</body>
</html>