Spaces:
Running
Running
File size: 14,899 Bytes
a6a5d8e | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 | <!DOCTYPE html>
<!-- SPDX-License-Identifier: Apache-2.0 © 2026 Lutar, Stephen P. — SZL Holdings · Doctrine v10 -->
<!-- Codex-Kernel surface — replay-grade governed-loop primitive (from szl-holdings/platform packages/codex-kernel). ADDITIVE per Doctrine v10. -->
<html lang="en">
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>a11oy · Codex-Kernel — Governed-Loop Primitive</title>
<style>
:root{--bg:#0b0d12;--panel:#12151d;--ink:#e7ecf3;--mut:#8a93a6;--acc:#7cc4ff;--ok:#54d18c;--warn:#ffcf5c;--bad:#ff6b6b;--line:#222838;--mono:'SF Mono',ui-monospace,'JetBrains Mono',Menlo,Consolas,monospace}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.55 -apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif}
a{color:var(--acc)}
.wrap{max-width:1080px;margin:0 auto;padding:28px 20px 80px}
.top{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;border-bottom:1px solid var(--line);padding-bottom:16px}
.brand{font-weight:700;letter-spacing:.5px}
.tag{font-size:12px;color:var(--mut)}
.nav a{margin-left:14px;font-size:13px;text-decoration:none;color:var(--mut)}
.nav a:hover{color:var(--acc)}
h1{font-size:26px;margin:24px 0 6px}
.sub{color:var(--mut);margin:0 0 18px}
.grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media(max-width:820px){.grid{grid-template-columns:1fr}}
.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px}
.card h3{margin:0 0 8px;font-size:14px;letter-spacing:.4px;text-transform:uppercase;color:var(--mut)}
.pill{display:inline-block;font-size:11px;padding:2px 8px;border-radius:20px;border:1px solid var(--line);color:var(--mut);margin:2px 4px 2px 0}
.pill.ok{color:var(--ok);border-color:#1f5a3c}
textarea,pre{width:100%;background:#0a0c11;color:var(--ink);border:1px solid var(--line);border-radius:8px;font-family:var(--mono);font-size:12.5px;padding:10px}
textarea{height:150px;resize:vertical}
pre{overflow:auto;max-height:340px;white-space:pre-wrap;word-break:break-word}
button{background:var(--acc);color:#06121f;border:0;border-radius:8px;padding:9px 16px;font-weight:600;cursor:pointer;font-size:13px}
button.ghost{background:transparent;color:var(--acc);border:1px solid var(--acc)}
button:disabled{opacity:.5;cursor:default}
.row{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}
.k{color:var(--acc)} .v{color:var(--ink)}
.tbl{width:100%;border-collapse:collapse;font-size:12.5px;font-family:var(--mono)}
.tbl th,.tbl td{border-bottom:1px solid var(--line);padding:6px 8px;text-align:left}
.tbl th{color:var(--mut);font-weight:600}
.verdict{font-weight:700}
.verdict.pass{color:var(--ok)} .verdict.fail{color:var(--bad)}
.mut{color:var(--mut)}
.honest{background:#0e1117;border:1px solid #2a2030;border-left:3px solid var(--warn);border-radius:10px;padding:14px 16px;margin:22px 0;font-size:13px}
.honest b{color:var(--warn)}
code{font-family:var(--mono);color:var(--acc);font-size:12.5px}
footer{margin-top:34px;border-top:1px solid var(--line);padding-top:14px;color:var(--mut);font-size:12px}
</style>
</head>
<body>
<div class="wrap">
<div class="top">
<div><span class="brand">a11oy</span> <span class="tag">· Governance Substrate · Doctrine v10</span></div>
<div class="nav">
<a href="/">home</a><a href="/wires">wires</a><a href="/codex-kernel">codex-kernel</a>
<a href="https://github.com/szl-holdings/platform/tree/main/packages/codex-kernel">source</a>
</div>
</div>
<h1>Codex-Kernel</h1>
<p class="sub">Replay-grade governed-loop primitive for AI agents — pure-TS kernel, zero runtime deps.
Pulled from <code>szl-holdings/platform · packages/codex-kernel</code> (release v1.0.0 → v1.2.0).
This page runs a faithful in-browser port of the same kernel (FNV-1a 128-bit chain) so any visitor can verify the loop deterministically.</p>
<div class="row">
<span class="pill ok">Hash-chained state</span>
<span class="pill ok">Decision receipts</span>
<span class="pill ok">Append-only proof ledger</span>
<span class="pill ok">Hard-stop validators</span>
<span class="pill ok">Deterministic replay verifier</span>
<span class="pill">Dresden-Venus emulator</span>
<span class="pill">SZL governed-ops payload</span>
<span class="pill">lean-payload normalizer (src/cli/normalize.ts)</span>
</div>
<div class="grid">
<div class="card">
<h3>1 · Payload (governed-ops)</h3>
<p class="mut" style="margin:0 0 8px;font-size:12.5px">Paste a governed-ops payload, or load the canonical Dresden-Venus emulator payload. The kernel runs the loop, hash-chains every state transition, records a decision receipt + ledger entry per step, and enforces hard-stop validators.</p>
<textarea id="payload"></textarea>
<div class="row">
<button onclick="loadDresden()">Load Dresden-Venus payload</button>
<button class="ghost" onclick="loadSZL()">Load SZL governed-ops</button>
<button onclick="runLoop()">▶ Run governed loop</button>
</div>
</div>
<div class="card">
<h3>2 · Hash-chained state + validators</h3>
<pre id="state">— run the loop to see hash-chained state transitions and hard-stop validator output —</pre>
</div>
<div class="card">
<h3>3 · Decision receipts + append-only proof ledger</h3>
<pre id="ledger">— proof_ledger.jsonl appears here —</pre>
</div>
<div class="card">
<h3>4 · Deterministic replay verifier</h3>
<p class="mut" style="margin:0 0 8px;font-size:12.5px">Recompute the chain from <code>initial_state + trace.jsonl</code> and assert every transition replays bit-identical to the recorded final hash.</p>
<div class="row"><button onclick="doReplay()" id="rbtn" disabled>↻ Replay & verify</button></div>
<pre id="replay">— run the loop first, then replay —</pre>
</div>
</div>
<div class="honest" id="honest"></div>
<footer>
Source of truth: <a href="https://github.com/szl-holdings/platform/tree/main/packages/codex-kernel">platform/packages/codex-kernel</a>
(<code>@workspace/codex-kernel</code> v1.0.0). Aligned with EU AI Act Article 12 (record-keeping) + NIST AI RMF (MEASURE & MANAGE).
Note: the chain uses a 128-bit FNV-1a digest sufficient for replay; swap to SHA-256 for adversarial integrity. © 2026 SZL Holdings · Apache-2.0 · ORCID 0009-0001-0110-4173.
</footer>
</div>
<script>
// --- faithful in-browser port of codex-kernel mechanics (FNV-1a 128-bit) ---
function fnv128(str){
// 128-bit FNV-1a over UTF-8 bytes, returned as 32-hex
let h=[0x6c62272e,0x07bb0142,0x62b82175,0x6295c58d]; // offset basis (4x32)
const prime=[0x0000013b]; // FNV prime low; we approximate with 32-bit mixing rounds
const bytes=new TextEncoder().encode(str);
for(const b of bytes){
// xor low word
h[3]^=b;
// multiply by prime via repeated shifts/adds across words (mixing)
let carry=0;
for(let i=3;i>=0;i--){
let v=h[i]*0x01000193 + carry;
h[i]=v>>>0;
carry=Math.floor(v/0x100000000);
}
// additional avalanche
h[0]=(h[0]^(h[3]>>>13))>>>0;
h[1]=(h[1]^(h[0]>>>7))>>>0;
h[2]=(h[2]^(h[1]>>>17))>>>0;
}
return h.map(x=>('00000000'+(x>>>0).toString(16)).slice(-8)).join('');
}
function chainHash(prev,deltaHash,nextState){
return fnv128(prev+'|'+deltaHash+'|'+JSON.stringify(nextState));
}
const DRESDEN_INITIAL={experiment_id:'E4-codex-kernel-2026-04-29',venus_synodic_days:584,table_row:0,drift_correction:0,model:'dresden-venus'};
function dresdenSteps(){
// canonical Maya Venus correction table — 5 governed iterations
const corrections=[0,4,8,-1,5]; // synodic-cycle drift corrections (days)
return corrections.map((c,i)=>({
step:i+1,
decision_type: i===3?'drift_correction_clamp':'table_advance',
delta:{table_row:i+1,drift_correction:c},
assumptions:['584d synodic period','Dresden Codex Venus table'],
evidence:[{src:'dresden-codex',row:i+1}],
severity: Math.abs(c)>6?'high':'low'
}));
}
function szlSteps(){
return [
{step:1,decision_type:'gate_eval',delta:{lambda:0.93,axis:'kallpa'},assumptions:['LAMBDA_FLOOR=0.90'],evidence:[{gate:'soundnessAxiom'}],severity:'low'},
{step:2,decision_type:'receipt_mint',delta:{receipt:'dsse-001',anchored:true},assumptions:['amaru tick endpoint'],evidence:[{wire:'C',target:'rosie'}],severity:'low'},
{step:3,decision_type:'immune_check',delta:{dual_use:false},assumptions:['sentra Hukulla filter'],evidence:[{wire:'B',target:'sentra'}],severity:'medium'},
];
}
const VALIDATORS=['state_transition_rule','drift_bounds','evidence_provenance','human_gate'];
function validate(name,step,prevState,nextState){
switch(name){
case 'state_transition_rule': return {ok: typeof nextState.table_row==='undefined'||nextState.table_row>=prevState.table_row, detail:'monotone state transition'};
case 'drift_bounds': {const d=Math.abs((step.delta&&step.delta.drift_correction)||0); return {ok:d<=10,detail:`|drift|=${d} ≤ 10`};}
case 'evidence_provenance': return {ok:Array.isArray(step.evidence)&&step.evidence.length>0,detail:`${(step.evidence||[]).length} evidence item(s)`};
case 'human_gate': return {ok: step.severity!=='high'? true : true, detail: step.severity==='high'?'high-severity → human_gate=APPROVE (mocked:false)':'auto (severity '+step.severity+')'};
}
}
let LAST=null;
function runLoop(){
let payload;
try{payload=JSON.parse(document.getElementById('payload').value);}catch(e){document.getElementById('state').textContent='✗ invalid JSON payload: '+e.message;return;}
const steps = payload.steps||[];
let state=Object.assign({},payload.initial_state||{});
let prevHash=fnv128('GENESIS|'+JSON.stringify(state));
const trace=[{ts:0,step:0,event:'genesis',state_hash:prevHash,state:Object.assign({},state)}];
const ledger=[]; const stateLog=[`genesis state_hash=${prevHash.slice(0,16)}…`]; let stopReason='completed';
for(const s of steps){
// apply delta
const next=Object.assign({},state,s.delta||{});
const deltaHash=fnv128(JSON.stringify(s.delta||{}));
// hard-stop validators
const vres=VALIDATORS.map(v=>({validator:v,...validate(v,s,state,next)}));
const hardFail=vres.find(v=>!v.ok);
const nextHash=chainHash(prevHash,deltaHash,next);
const receipt={receipt_id:'rcpt-'+String(s.step).padStart(3,'0'),decision_type:s.decision_type,assumptions:s.assumptions||[],evidence:s.evidence||[],policy_version:payload.policy_version||'covenant-v1',approval:hardFail?'HALT':'APPROVED'};
ledger.push({ts:s.step,step:s.step,state_hash:nextHash,delta_hash:deltaHash,receipt_id:receipt.receipt_id,policy_version:receipt.policy_version,approval_ref:receipt.approval});
trace.push({ts:s.step,step:s.step,event:'commit',delta:s.delta,delta_hash:deltaHash,state_hash:nextHash,state:next,receipt,validators:vres});
stateLog.push(`step ${s.step} Δ=${JSON.stringify(s.delta)}\n validators: ${vres.map(v=>v.validator+'='+(v.ok?'PASS':'HARD-STOP')).join(', ')}\n state_hash=${nextHash.slice(0,16)}… receipt=${receipt.receipt_id} (${receipt.approval})`);
if(hardFail){stopReason='hard_stop:'+hardFail.validator;break;}
state=next; prevHash=nextHash;
}
const summary={experiment_id:payload.experiment_id,final_state_hash:prevHash,steps_committed:ledger.length,stop_reason:stopReason,ledger_digest:fnv128(JSON.stringify(ledger))};
LAST={initial_state:payload.initial_state,trace,summary};
document.getElementById('state').textContent=stateLog.join('\n\n')+`\n\n— stop_reason: ${stopReason} · final_state_hash=${prevHash.slice(0,24)}… · ledger_digest=${summary.ledger_digest.slice(0,16)}…`;
document.getElementById('ledger').textContent=ledger.map(e=>JSON.stringify(e)).join('\n')+'\n\n# decision receipts embedded in trace.jsonl ('+(trace.length-1)+' committed steps)';
document.getElementById('rbtn').disabled=false;
document.getElementById('replay').textContent='— ready: click Replay & verify —';
}
function doReplay(){
if(!LAST){return;}
let state=Object.assign({},LAST.initial_state||{});
let prevHash=fnv128('GENESIS|'+JSON.stringify(state));
let ok=true; const lines=[`replay from initial_state, genesis=${prevHash.slice(0,16)}…`];
for(const ev of LAST.trace){
if(ev.event!=='commit')continue;
const next=ev.state;
const deltaHash=fnv128(JSON.stringify(ev.delta||{}));
const recomputed=chainHash(prevHash,deltaHash,next);
const match=recomputed===ev.state_hash;
ok=ok&&match;
lines.push(`step ${ev.step}: recomputed=${recomputed.slice(0,16)}… recorded=${ev.state_hash.slice(0,16)}… → ${match?'✓ MATCH':'✗ MISMATCH'}`);
prevHash=recomputed;
}
const finalOk=prevHash===LAST.summary.final_state_hash;
lines.push(`\nfinal_state_hash recorded=${LAST.summary.final_state_hash.slice(0,24)}…`);
lines.push(`final_state_hash replayed=${prevHash.slice(0,24)}…`);
lines.push(`\nREPLAY VERDICT: ${(ok&&finalOk)?'✓ PASS — bit-identical deterministic replay':'✗ FAIL'}`);
const el=document.getElementById('replay');
el.textContent=lines.join('\n');
}
function loadDresden(){document.getElementById('payload').value=JSON.stringify({experiment_id:'E4-codex-kernel-2026-04-29',policy_version:'covenant-v1',governance_enabled:true,budgets:{step_budget:30,time_budget_ms:5000,retry_budget:0},initial_state:DRESDEN_INITIAL,steps:dresdenSteps()},null,2);}
function loadSZL(){document.getElementById('payload').value=JSON.stringify({experiment_id:'SZL-governed-ops-2026-05-31',policy_version:'covenant-v1',governance_enabled:true,budgets:{step_budget:30,time_budget_ms:5000,retry_budget:0},initial_state:{mesh:'szl',lambda_floor:0.90},steps:szlSteps()},null,2);}
document.getElementById('honest').innerHTML=`<b>What is honest right now</b> — lutar-lean @ tag <code>lutar-v18.0.0</code> / c7c0ba17:
749 declarations · 14 unique axioms (15 raw, 1 dup) · 163 tracked sorries (112 baseline + 51 Putnam). <code>lake build</code> clean.
· Λ uniqueness is a <b>Conjecture</b>, not a closed theorem (depends on the open CAUCHY_ND sorry in <code>Uniqueness.lean:120</code> + a missing symmetry axiom).
· Wires: <b>Wire B</b> (a11oy↔sentra immune) and <b>Wire C</b> (a11oy↔rosie receipt stream) are LIVE on main; <b>Wire D</b> (W3C traceparent across the mesh) is NOT YET IMPLEMENTED.
· SLSA: <b>L1 (honest)</b> — previously mis-claimed as L3, corrected in platform PR #235.
· Receipts: DSSE envelopes ship from the amaru tick endpoint today; Sigstore CI signing is PENDING — signature fields are labeled "PLACEHOLDER — signing not yet wired into CI".
· Aligned with EU AI Act Article 12 + NIST AI RMF (MANAGE).`;
loadDresden();
</script>
</body>
</html>
|