Spaces:
Running
Running
F4: 3D inference router + energy hologram + GRC OSCAL matrix (additive, 2D fallback, 0 CDN)
ab626bf verified | <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8"/> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"/> | |
| <title>a11oy — Proven Energy Engine · SZL Holdings</title> | |
| <meta name="description" content="Live, honest view of the agentic-GPU engine: sovereign GPU posture (NVIDIA RTX 5000 @ betterwithage), the Bekenstein-gated energy+information budget ledger (F19/TH6, proven inequality), and the off-peak power window. Energy figures are SAMPLE/ESTIMATE — no real power meter is wired. No free-energy claims."/> | |
| <link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin/> | |
| <link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet"/> | |
| <style> | |
| :root{ | |
| --ground:#0a0a0a; --panel:#0e0e0e; --panel2:#080808; --rail:#0b0b0b; | |
| --gold:#c9b787; --gold-bright:#d6c69a; | |
| --teal:#5fb3a3; --teal-soft:rgba(95,179,163,0.10); | |
| --cream:#f5f5f5; --paragraph:#9a9a9a; --muted:#888; --dim:#555; | |
| --gold-line:rgba(201,183,135,0.15); --gold-soft:rgba(201,183,135,0.04); | |
| --teal-line:rgba(95,179,163,0.22); | |
| --live:#5a8a6e; --err:#b06a5a; --warn:#c9a05f; | |
| --green:#39d98a; --yellow:#f5c451; --red:#ff6a5a; --blue:#5bc8ff; | |
| --mono:'JetBrains Mono',ui-monospace,SFMono-Regular,monospace; | |
| --display:'Space Grotesk',Georgia,serif; | |
| } | |
| *{box-sizing:border-box;} | |
| html,body{margin:0;padding:0;background:var(--ground);color:var(--cream);font-family:var(--display);-webkit-font-smoothing:antialiased;} | |
| .mono{font-family:var(--mono);} | |
| a{color:inherit;text-decoration:none;} | |
| .topbar{position:sticky;top:0;z-index:60;display:flex;align-items:center;gap:1rem;flex-wrap:wrap;padding:.5rem 1.1rem;background:rgba(10,10,10,.92);backdrop-filter:blur(10px);border-bottom:1px solid var(--gold-line);font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--gold);} | |
| .topbar .sep{color:var(--dim);} | |
| .topbar .live{display:inline-flex;align-items:center;gap:.4rem;color:var(--cream);} | |
| .live-dot{width:6px;height:6px;border-radius:50%;background:var(--live);box-shadow:0 0 6px var(--live);animation:pulse 2.2s ease-in-out infinite;} | |
| @keyframes pulse{0%,100%{opacity:1;}50%{opacity:.35;}} | |
| .switcher{margin-left:auto;display:flex;align-items:center;gap:.3rem;} | |
| .flag{padding:.22rem .55rem;border-radius:6px;border:1px solid transparent;color:var(--muted);transition:.15s;} | |
| .flag:hover{color:var(--cream);border-color:var(--gold-line);background:var(--gold-soft);} | |
| .flag.active{color:var(--ground);background:var(--gold);border-color:var(--gold);font-weight:600;} | |
| .wrap{max-width:1320px;margin:0 auto;padding:1.6rem 1.4rem 4rem;} | |
| h1{font-size:1.7rem;font-weight:600;margin:.2rem 0 .3rem;letter-spacing:-.01em;} | |
| .badge{display:inline-block;font-family:var(--mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--teal);border:1px solid var(--teal-line);background:var(--teal-soft);padding:.25rem .6rem;border-radius:5px;margin-left:.4rem;vertical-align:middle;} | |
| .lede{color:var(--paragraph);font-size:.95rem;line-height:1.65;max-width:1180px;margin:.6rem 0 1rem;} | |
| .lede b{color:var(--cream);font-weight:600;} | |
| .econ{border:1px solid var(--gold-line);background:var(--gold-soft);border-radius:8px;padding:.7rem 1rem;margin:.4rem 0 1.2rem;font-family:var(--mono);font-size:12px;color:var(--paragraph);line-height:1.7;} | |
| .econ .k{color:var(--gold);text-transform:uppercase;letter-spacing:.08em;font-size:10px;} | |
| .econ .hi{color:var(--teal);} | |
| .cards{display:grid;grid-template-columns:repeat(4,1fr);gap:.8rem;margin:0 0 1.2rem;} | |
| .card{border:1px solid var(--gold-line);background:var(--panel);border-radius:8px;padding:.85rem 1rem;} | |
| .card .lbl{font-family:var(--mono);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--dim);} | |
| .card .big{font-size:1.5rem;font-weight:600;margin:.35rem 0 .15rem;color:var(--teal);} | |
| .card .sub{font-family:var(--mono);font-size:10.5px;color:var(--muted);} | |
| .grid2{display:grid;grid-template-columns:1fr 1fr;gap:1rem;} | |
| .panel{border:1px solid var(--gold-line);background:var(--panel);border-radius:10px;padding:1rem 1.1rem;margin-bottom:1rem;} | |
| .panel h2{font-size:1.05rem;font-weight:600;margin:0 0 .2rem;display:flex;align-items:center;justify-content:space-between;} | |
| .panel h2 .meta{font-family:var(--mono);font-size:10px;color:var(--dim);text-transform:uppercase;letter-spacing:.06em;} | |
| .kv{font-family:var(--mono);font-size:12px;color:var(--paragraph);line-height:1.9;margin-top:.5rem;} | |
| .kv .k{color:var(--dim);display:inline-block;min-width:128px;} | |
| .kv .v{color:var(--cream);} | |
| .pill{display:inline-block;font-family:var(--mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;padding:.18rem .5rem;border-radius:5px;border:1px solid var(--gold-line);} | |
| .pill.green{color:var(--green);border-color:rgba(57,217,138,.4);background:rgba(57,217,138,.08);} | |
| .pill.yellow{color:var(--yellow);border-color:rgba(245,196,81,.4);background:rgba(245,196,81,.08);} | |
| .pill.red{color:var(--red);border-color:rgba(255,106,90,.4);background:rgba(255,106,90,.08);} | |
| .pill.dim{color:var(--muted);} | |
| .sample{font-family:var(--mono);font-size:9px;letter-spacing:.06em;text-transform:uppercase;color:var(--warn);border:1px solid var(--warn);border-radius:4px;padding:.05rem .3rem;margin-left:.35rem;white-space:nowrap;} | |
| .simnote{border:1px solid var(--warn);background:rgba(201,160,95,.06);border-radius:8px;padding:.7rem .9rem;margin-top:.8rem;font-family:var(--mono);font-size:11px;color:#d8c39a;line-height:1.65;} | |
| .simnote b{color:var(--warn);} | |
| .bek{margin-top:.7rem;} | |
| .bek-bar{position:relative;height:30px;border:1px solid var(--gold-line);border-radius:6px;background:#0c0c0c;overflow:hidden;} | |
| .bek-fill{position:absolute;top:0;left:0;bottom:0;background:linear-gradient(90deg,rgba(95,179,163,.55),rgba(95,179,163,.9));transition:width .4s;} | |
| .bek-fill.over{background:linear-gradient(90deg,rgba(255,106,90,.55),rgba(255,106,90,.95));} | |
| .bek-ceiling{position:absolute;top:-3px;bottom:-3px;right:0;width:2px;background:var(--gold);box-shadow:0 0 6px var(--gold);} | |
| .bek-lbl{display:flex;justify-content:space-between;font-family:var(--mono);font-size:10.5px;color:var(--muted);margin-top:.4rem;} | |
| .win{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem;margin-top:.6rem;} | |
| .win .cell{border:1px solid var(--gold-line);border-radius:7px;padding:.6rem .7rem;text-align:center;font-family:var(--mono);} | |
| .win .cell .t{font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--dim);} | |
| .win .cell .v{font-size:1.05rem;font-weight:600;margin-top:.25rem;color:var(--muted);} | |
| .win .cell.on{border-color:var(--teal-line);background:var(--teal-soft);} | |
| .win .cell.on .v{color:var(--teal);} | |
| table{width:100%;border-collapse:collapse;margin-top:.6rem;font-family:var(--mono);font-size:11px;} | |
| th,td{text-align:left;padding:.4rem .5rem;border-bottom:1px solid var(--gold-line);white-space:nowrap;} | |
| th{color:var(--dim);font-weight:500;font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;} | |
| td{color:var(--paragraph);} | |
| td.ok{color:var(--green);} | |
| td.bad{color:var(--red);} | |
| .scrollx{overflow-x:auto;} | |
| .empty{font-family:var(--mono);font-size:11.5px;color:var(--muted);border:1px dashed var(--gold-line);border-radius:8px;padding:.9rem 1rem;margin-top:.6rem;line-height:1.6;} | |
| .footnote{margin-top:1.6rem;font-family:var(--mono);font-size:10.5px;color:var(--muted);line-height:1.7;border-top:1px solid var(--gold-line);padding-top:.9rem;} | |
| .footnote b{color:var(--cream);} | |
| @media(max-width:980px){.cards{grid-template-columns:repeat(2,1fr);}.grid2{grid-template-columns:1fr;}} | |
| </style> | |
| </head> | |
| <body> | |
| <div class="topbar"> | |
| <span>SZL HOLDINGS</span><span class="sep">/</span><span>a11oy</span><span class="sep">/</span><span>PROVEN ENERGY ENGINE</span> | |
| <span class="sep">/</span><span class="live"><span class="live-dot"></span><span id="livelbl">LIVE · RT</span></span> | |
| <span class="switcher"> | |
| <a class="flag active" href="/energy">Energy</a> | |
| <a class="flag" href="/fleet-c2">Fleet C2</a> | |
| <a class="flag" href="/living-anatomy">Living Anatomy</a> | |
| <a class="flag" href="/code">Code</a> | |
| </span> | |
| </div> | |
| <div class="wrap"> | |
| <h1>Proven Energy Engine<span class="badge">honest GPU posture · Bekenstein-gated budget (F19/TH6) · SAMPLE energy</span></h1> | |
| <p class="lede">A live, <b>honest</b> view of the agentic-GPU engine. Sovereign posture is read from <b>/code/healthz</b> — <b>sovereign:true only when the local GPU actually serves</b> (NVIDIA RTX 5000 @ betterwithage, Ollama/vLLM), else router fallback. Every task receipt passes the <b>Bekenstein gate</b> — <code>shannon_bits ≤ output_bytes·8</code> (F19/TH6, a <b>proven inequality</b>, not an assertion) — and the ledger sums them. <b>Energy figures are SAMPLE/ESTIMATE</b>: no real power meter is wired, so joules are labeled, never presented as measured. <b>No free-energy / perpetual-motion claims</b>: the engine harvests WASTED energy and proves bounded information work.</p> | |
| <div class="econ"><span class="k">Why it matters:</span> sovereignty and energy efficiency are <span class="hi">measured-or-labeled, never assumed</span> — the half-state (claiming more energy or sovereignty than is real) is the only unacceptable outcome, so this surface refuses to over-claim.</div> | |
| <div class="cards"> | |
| <div class="card"><div class="lbl">Sovereign</div><div class="big" id="c_sov">—</div><div class="sub">local GPU serving?</div></div> | |
| <div class="card"><div class="lbl">Tasks gated</div><div class="big" id="c_tasks" style="color:var(--blue)">—</div><div class="sub">Bekenstein ledger</div></div> | |
| <div class="card"><div class="lbl">All within bound</div><div class="big" id="c_within" style="color:var(--green)">—</div><div class="sub">F19/TH6 gate</div></div> | |
| <div class="card"><div class="lbl">Total joules <span class="sample">sample</span></div><div class="big" id="c_joules" style="color:var(--warn)">—</div><div class="sub">estimate · not metered</div></div> | |
| </div> | |
| <div class="grid2"> | |
| <div class="panel"> | |
| <h2>(1) GPU engine status<span class="meta">/code/healthz</span></h2> | |
| <div class="kv" id="hz_kv" style="display:none"> | |
| <div><span class="k">Hardware</span><span class="v">NVIDIA RTX 5000 @ betterwithage</span></div> | |
| <div><span class="k">Sovereign</span><span class="v" id="hz_sov">—</span></div> | |
| <div><span class="k">Inference path</span><span class="v" id="hz_inf">—</span></div> | |
| <div><span class="k">Backend / mode</span><span class="v" id="hz_back">—</span></div> | |
| <div><span class="k">GPU</span><span class="v" id="hz_gpu">—</span></div> | |
| <div><span class="k">Doctrine</span><span class="v" id="hz_doc">—</span></div> | |
| <div><span class="k">Posture</span><span class="v" id="hz_posture">—</span></div> | |
| </div> | |
| <div class="empty" id="hz_empty">/code/healthz unreachable — posture cannot be confirmed. Showing no sovereignty claim (honest empty-state).</div> | |
| </div> | |
| <div class="panel"> | |
| <h2>(4) Power window<span class="meta">off-peak clock</span></h2> | |
| <div class="win" id="win"> | |
| <div class="cell" data-w="cheap"><div class="t">Cheap (off-peak)</div><div class="v">—</div></div> | |
| <div class="cell" data-w="normal"><div class="t">Normal</div><div class="v">—</div></div> | |
| <div class="cell" data-w="dear"><div class="t">Dear (peak)</div><div class="v">—</div></div> | |
| </div> | |
| <div class="simnote"><b>Client-side estimate:</b> the window (cheap / normal / dear) is computed from <b>your local clock</b> as an off-peak heuristic (cheap before 08:00 / after 20:00) — it mirrors the engine's off-peak provider but is <b>not</b> a live tariff feed. No price is claimed as metered.</div> | |
| </div> | |
| </div> | |
| <div class="panel"> | |
| <h2>(3) Bekenstein bound<span class="meta">Σ shannon_bits vs Σ (output_bytes · 8)</span></h2> | |
| <div class="bek" id="bek" style="display:none"> | |
| <div class="bek-bar"><div class="bek-fill" id="bek_fill" style="width:0%"></div><div class="bek-ceiling" title="ceiling = Σ output_bytes·8"></div></div> | |
| <div class="bek-lbl"> | |
| <span>Σ shannon_bits: <span id="bek_sh" style="color:var(--teal)">—</span></span> | |
| <span>ceiling Σ n·8: <span id="bek_ceil" style="color:var(--gold)">—</span> · <span id="bek_pct">—</span></span> | |
| </div> | |
| <div class="simnote" id="bek_note"><b>Proven inequality (F19/TH6):</b> empirical byte-entropy is always ≤ n·8, so the fill never exceeds the gold ceiling unless an upstream over-claim occurs (then it turns red). Kernel-checked in EnergyBudgetWitness.lean (0-sorry).</div> | |
| </div> | |
| <div class="empty" id="bek_empty">/v1/energy/budget unreachable — no bound to plot (honest empty-state).</div> | |
| </div> | |
| <div class="panel"> | |
| <h2>(2) Energy-budget ledger<span class="meta">/v1/energy/budget · per-task receipts</span></h2> | |
| <div class="scrollx" id="led_wrap" style="display:none"> | |
| <table> | |
| <thead><tr> | |
| <th>task_hash</th><th>bytes</th><th>shannon_bits</th><th>bekenstein n·8</th><th>within</th><th>energy_source</th><th>joules_est <span class="sample">sample</span></th><th>ts</th> | |
| </tr></thead> | |
| <tbody id="led_body"></tbody> | |
| </table> | |
| </div> | |
| <div class="empty" id="led_empty">No per-task receipts available. The in-memory ledger resets on process restart; track a task via <code>/v1/energy/budget?bytes=…</code> to populate it. Showing summary only if present.</div> | |
| <div class="simnote"><b>joules_est is SAMPLE/ESTIMATE</b> — no real power meter is wired (doctrine v11/v12). The <b>within</b> check is the real, proven F19/TH6 gate: <code>shannon_bits ≤ output_bytes·8</code>.</div> | |
| </div> | |
| <div class="panel" id="energy3d_panel"> | |
| <h2>(5) 3D Energy / GPU Hologram<span class="meta">holographic GPU blocks · live J/token · 0 CDN · 2D-fallback</span> | |
| <button class="flag" id="e3d_toggle" style="float:right;font-size:11px;cursor:pointer;">Enable 3D</button> | |
| </h2> | |
| <div class="simnote" style="margin-bottom:.6rem"> | |
| A holographic view of the sovereign-inference engine on the shared 0-CDN WebGL2 kit: the <b>GPU/serving block</b> | |
| colors by the live <code>/code/healthz</code> sovereign posture (<b>sovereign:true only on a real local-GPU probe</b>), | |
| a <b>trust sphere</b> morphs with Λ (Conjecture 1, <1.0), and the <b>J/token</b> readout is | |
| <b>MEASURED only on a live GPU power probe</b> — with no meter wired it stays an honest <b>ROADMAP/SAMPLE</b> estimate, | |
| never presented as measured. CPU/old-GPU renders the same data on a <b>2D canvas fallback</b>; the panels above are the | |
| complete non-3D experience. Patterns: vLLM/SGLang J/token, NVIDIA Dynamo, LiteLLM/RouteLLM. | |
| </div> | |
| <div class="r3d-stats mono" style="display:flex;gap:1.2rem;flex-wrap:wrap;font-size:11px;color:var(--muted);margin:.4rem 0;"> | |
| <span>J/token <span id="e3d_jtok" style="color:var(--warn)">—</span> <span id="e3d_jtok_lbl"></span></span> | |
| <span>sovereign <span id="e3d_sov" style="color:var(--cream)">—</span></span> | |
| <span>within Bekenstein <span id="e3d_within" style="color:var(--green)">—</span></span> | |
| <span id="e3d_caps" style="color:var(--dim)"></span> | |
| </div> | |
| <div id="energy3d_mount" style="width:100%;height:400px;border:1px solid var(--gold-line);border-radius:10px;background:#060606;display:none;position:relative;"></div> | |
| <div class="empty" id="e3d_off">3D is off (default). Click <b>Enable 3D</b> to render the holographic energy view on the live <code>/v1/energy/budget</code> + <code>/code/healthz</code> endpoints. The 2D panels above are always available as the fallback.</div> | |
| <div class="meta mono" style="color:var(--muted);font-size:10px;margin-top:.5rem;"> | |
| 0 runtime CDN · WebGL2 + honest 2D fallback · J/token MEASURED-or-ROADMAP (never fabricated) · sovereign:true only on live probe · Λ = Conjecture 1 (<1.0) · trust <100%. | |
| </div> | |
| </div> | |
| <div class="footnote"> | |
| <b>Honest by design.</b> Posture is <b>derived</b> from /code/healthz: GREEN only when <code>sovereign:true</code> AND <code>inference=self-hosted-gpu</code>; MAINTENANCE when reachable but on router fallback; DOWN when unreachable — sovereignty is <b>never assumed</b>. The Bekenstein gate is <b>F19 (locked-8) / TH6</b>, a machine-checked inequality (EnergyBudgetWitness.lean, 0-sorry). <b>All energy figures are SAMPLE/ESTIMATE</b> until a real meter is wired. <b>No free-energy / perpetual-motion claims.</b> Λ trust = <b>Conjecture 1</b> (machine-checked FALSE — advisory, never a theorem). Coherence governor C(t)=C₀·e^(−t/τ_c) via /v1/qbio/coherence is EXPERIMENTAL. Fonts via Google Fonts; no runtime logic/3D CDN. | |
| </div> | |
| </div> | |
| <script> | |
| const A="/api/a11oy"; | |
| const $=id=>document.getElementById(id); | |
| async function getJSON(u,opt){try{const r=await fetch(u,opt);if(!r.ok)return null;return await r.json();}catch(e){return null;}} | |
| function esc(s){return String(s==null?'':s).replace(/[&<>]/g,c=>({'&':'&','<':'<','>':'>'}[c]));} | |
| function fmt(n,d){if(n==null||isNaN(n))return '—';const x=Number(n);return d!=null?x.toFixed(d):String(x);} | |
| // (1) GPU engine status — posture DERIVED honestly (never assume sovereign) | |
| function derivePosture(hz){ | |
| if(!hz)return {cls:'red',txt:'DOWN — healthz unreachable'}; | |
| const sov=hz.sovereign===true, inf=String(hz.inference||''); | |
| if(sov && inf==='self-hosted-gpu')return {cls:'green',txt:'GREEN — sovereign GPU serving'}; | |
| return {cls:'yellow',txt:'MAINTENANCE — router fallback (not sovereign)'}; | |
| } | |
| async function loadHealthz(){ | |
| const hz=await getJSON(A+"/code/healthz"); | |
| if(!hz){ | |
| $('hz_kv').style.display='none'; $('hz_empty').style.display='block'; | |
| $('c_sov').textContent='—'; $('c_sov').style.color='var(--muted)'; | |
| $('livelbl').textContent='FALLBACK'; | |
| return; | |
| } | |
| $('hz_empty').style.display='none'; $('hz_kv').style.display='block'; | |
| const sov=hz.sovereign===true; | |
| $('hz_sov').innerHTML=`<span class="pill ${sov?'green':'yellow'}">${sov?'true':'false'}</span>`; | |
| $('hz_inf').textContent=esc(hz.inference||'—'); | |
| $('hz_back').textContent=esc((hz.backend||'—')+' / '+(hz.mode||'—')); | |
| $('hz_gpu').textContent=esc(hz.gpu!=null?(typeof hz.gpu==='object'?JSON.stringify(hz.gpu):hz.gpu):'(not reported by healthz)'); | |
| $('hz_doc').textContent=esc(hz.doctrine||'—'); | |
| const p=derivePosture(hz); | |
| $('hz_posture').innerHTML=`<span class="pill ${p.cls}">${esc(p.txt)}</span>`; | |
| $('c_sov').textContent=sov?'YES':'NO'; | |
| $('c_sov').style.color=sov?'var(--green)':'var(--yellow)'; | |
| $('livelbl').textContent=(hz.mode==='live')?'LIVE · RT':'STUB'; | |
| } | |
| // (4) power window — client-side off-peak heuristic (mirrors OffPeakProvider) | |
| function offPeakWindow(d){const h=d.getHours();return (h<8||h>=20)?'cheap':'normal';} | |
| function loadWindow(){ | |
| const now=new Date(); | |
| const w=offPeakWindow(now); | |
| const hh=String(now.getHours()).padStart(2,'0')+':'+String(now.getMinutes()).padStart(2,'0'); | |
| document.querySelectorAll('#win .cell').forEach(c=>{ | |
| const on=c.dataset.w===w; c.classList.toggle('on',on); | |
| c.querySelector('.v').textContent=on?('NOW · '+hh):'—'; | |
| }); | |
| } | |
| // (2)+(3) Bekenstein ledger + bound visual | |
| function renderBek(sumSh,sumCeil){ | |
| if(sumCeil==null||sumCeil<=0){$('bek').style.display='none';$('bek_empty').style.display='block';return;} | |
| $('bek_empty').style.display='none'; $('bek').style.display='block'; | |
| const pct=sumSh/sumCeil; const over=sumSh>sumCeil+1e-9; | |
| const f=$('bek_fill'); | |
| f.style.width=Math.min(pct,1)*100+'%'; | |
| f.classList.toggle('over',over); | |
| $('bek_sh').textContent=fmt(sumSh,1); | |
| $('bek_ceil').textContent=fmt(sumCeil,0); | |
| $('bek_pct').textContent=(pct*100).toFixed(1)+'% of ceiling'+(over?' — OVER (upstream over-claim!)':''); | |
| } | |
| function ledgerRows(b){ | |
| // accept several shapes: explicit ledger/receipts array, single receipt, else none | |
| if(Array.isArray(b.ledger))return b.ledger; | |
| if(Array.isArray(b.receipts))return b.receipts; | |
| if(b.receipt)return [b.receipt]; | |
| return []; | |
| } | |
| async function loadBudget(){ | |
| const b=await getJSON(A+"/v1/energy/budget"); | |
| if(!b){ | |
| $('led_wrap').style.display='none'; $('led_empty').style.display='block'; | |
| $('bek').style.display='none'; $('bek_empty').style.display='block'; | |
| $('c_tasks').textContent='—'; $('c_within').textContent='—'; $('c_joules').textContent='—'; | |
| return; | |
| } | |
| const rows=ledgerRows(b); | |
| // summary cards (prefer explicit summary fields; fall back to row sums) | |
| const s=b.summary||b; | |
| const tc=s.task_count!=null?s.task_count:rows.length; | |
| $('c_tasks').textContent=tc; | |
| const allWithin=(s.all_within_bound!=null)?s.all_within_bound | |
| :(rows.length?rows.every(r=>r.within_bound):null); | |
| $('c_within').textContent=allWithin==null?'—':(allWithin?'YES':'NO'); | |
| $('c_within').style.color=allWithin===false?'var(--red)':'var(--green)'; | |
| const tj=(s.total_joules_est!=null)?s.total_joules_est | |
| :rows.reduce((a,r)=>a+(Number(r.joules_est)||0),0); | |
| $('c_joules').textContent=fmt(tj,2); | |
| // bound visual | |
| const sumSh=(s.total_shannon_bits!=null)?s.total_shannon_bits | |
| :rows.reduce((a,r)=>a+(Number(r.shannon_bits)||0),0); | |
| const sumCeil=(s.total_bekenstein_bound_bits!=null)?s.total_bekenstein_bound_bits | |
| :rows.reduce((a,r)=>a+(Number(r.bekenstein_bound_bits)||0),0); | |
| renderBek(sumSh,sumCeil); | |
| // ledger table | |
| if(!rows.length){$('led_wrap').style.display='none'; $('led_empty').style.display='block'; return;} | |
| $('led_empty').style.display='none'; $('led_wrap').style.display='block'; | |
| $('led_body').innerHTML=rows.map(r=>{ | |
| const wb=r.within_bound===true; | |
| return `<tr> | |
| <td title="${esc(r.task_hash||'')}">${esc(String(r.task_hash||'—').slice(0,16))}…</td> | |
| <td>${esc(r.output_bytes??'—')}</td> | |
| <td>${fmt(r.shannon_bits,1)}</td> | |
| <td>${esc(r.bekenstein_bound_bits??'—')}</td> | |
| <td class="${wb?'ok':'bad'}">${r.within_bound==null?'—':(wb?'✓':'✗')}</td> | |
| <td>${esc(r.energy_source||'—')}</td> | |
| <td>${fmt(r.joules_est,3)}</td> | |
| <td>${esc(r.ts||'—')}</td> | |
| </tr>`; | |
| }).join(''); | |
| } | |
| async function loadAll(){loadWindow();await Promise.all([loadHealthz(),loadBudget()]);} | |
| loadAll(); | |
| setInterval(loadAll,30000); | |
| </script> | |
| <!-- F4 · 3D Energy/GPU hologram (additive). Loads the shared 0-CDN holographic kit. --> | |
| <script src="/static/shared/szl_holo3d.js"></script> | |
| <script> | |
| ; | |
| (function(){ | |
| var EA="/api/a11oy"; | |
| var mount=document.getElementById('energy3d_mount'); | |
| var offEl=document.getElementById('e3d_off'); | |
| var toggle=document.getElementById('e3d_toggle'); | |
| if(!mount||!toggle||!window.SZLHolo){ if(toggle){toggle.disabled=true;toggle.textContent='3D unavailable';} return; } | |
| var scene=null, started=false, poll=null, anim=null; | |
| var JT=document.getElementById('e3d_jtok'), JTL=document.getElementById('e3d_jtok_lbl'); | |
| var SOV=document.getElementById('e3d_sov'), WIN=document.getElementById('e3d_within'), CAP=document.getElementById('e3d_caps'); | |
| function esc3(s){return String(s==null?'':s).replace(/[&<>]/g,function(c){return {'&':'&','<':'<','>':'>'}[c];});} | |
| function getJSON(u,opt){return fetch(u,opt).then(function(r){return r.ok?r.json():null;}).catch(function(){return null;});} | |
| function applyBudget(b){ | |
| if(!b){ JT.textContent='—'; JTL.innerHTML=''; WIN.textContent='—'; return; } | |
| var lbl=String(b.joules_label||'').toLowerCase(); | |
| var ev=b.joules_evidence||{}; | |
| var measured=(lbl==='measured') && ev && Object.keys(ev).length>0; | |
| var toks=Number(b.total_output_bytes||0); | |
| var joules=Number(b.total_joules_est||0); | |
| if(measured && toks>0){ | |
| JT.textContent=(joules/toks).toFixed(4)+' J/tok'; | |
| JTL.innerHTML='<span style="color:var(--green);font-size:9px;border:1px solid var(--green);padding:1px 5px;border-radius:5px">MEASURED · live probe</span>'; | |
| }else{ | |
| JT.textContent=(joules>0&&toks>0)?(joules/toks).toFixed(4)+' J/tok*':'— J/tok'; | |
| JTL.innerHTML='<span style="color:var(--yellow);font-size:9px;border:1px solid var(--yellow);padding:1px 5px;border-radius:5px">ROADMAP · no meter ('+esc3(b.total_joules_est_label||'SAMPLE/ESTIMATE')+')</span>'; | |
| } | |
| WIN.textContent=(b.all_within_bound===true)?'✓ within (F19/TH6)':(b.all_within_bound===false?'✗ overclaim':'—'); | |
| } | |
| var _sovereign=false; | |
| function applyHealthz(hz){ | |
| var sov=!!(hz&&hz.sovereign===true&&String(hz.inference||'').indexOf('gpu')>=0); | |
| _sovereign=sov; | |
| SOV.textContent=hz?(sov?'true · local-GPU probe':'false · router fallback'):'— (healthz unreachable)'; | |
| rebuild(); | |
| } | |
| function rebuild(){ | |
| if(!scene)return; | |
| try{ | |
| scene.graphs=[]; scene.spheres=[]; scene.pulses=[]; | |
| // GPU/serving block + router; honest sovereign label baked into the node label | |
| var gpuLab=_sovereign?'GPU·SOVEREIGN':'GPU·ROADMAP'; | |
| scene.addGraph({nodes:[ | |
| {id:'router',label:'\u039b-ENGINE'}, | |
| {id:'gpu',label:gpuLab}, | |
| {id:'bek',label:'BEKENSTEIN'} | |
| ],edges:[ | |
| {id:'e0',from:'router',to:'gpu'}, | |
| {id:'e1',from:'router',to:'bek'} | |
| ]}); | |
| var lam=(typeof window.__e3dLambda==='number')?window.__e3dLambda:0.62; | |
| scene.addTrustSphere({lambda:lam}); scene.setLambda(lam); | |
| }catch(e){} | |
| } | |
| function pulse(){ if(scene){ try{ scene.signPulse('e0'); }catch(_){} } } | |
| function refresh(){ | |
| getJSON(EA+'/v1/energy/budget').then(applyBudget); | |
| getJSON(EA+'/code/healthz').then(applyHealthz); | |
| } | |
| function start(){ | |
| if(started)return; started=true; | |
| mount.style.display='block'; offEl.style.display='none'; toggle.textContent='Disable 3D'; toggle.classList.add('active'); | |
| scene=window.SZLHolo.createScene(mount,{sample:false}); | |
| var caps=window.SZLHolo.capabilities(); | |
| CAP.textContent='mode:'+caps.mode+(caps.webgpu?' · webgpu-detected(ROADMAP)':''); | |
| rebuild(); scene.start(); | |
| refresh(); | |
| poll=setInterval(refresh,30000); | |
| anim=setInterval(pulse,3000); | |
| } | |
| function stop(){ | |
| if(!started)return; started=false; | |
| mount.style.display='none'; offEl.style.display='block'; toggle.textContent='Enable 3D'; toggle.classList.remove('active'); | |
| if(poll)clearInterval(poll); if(anim)clearInterval(anim); | |
| try{ if(scene){scene.stop();scene.dispose();} }catch(e){} | |
| scene=null; | |
| } | |
| toggle.addEventListener('click',function(){ started?stop():start(); }); | |
| })(); | |
| </script> | |
| </body> | |
| </html> | |