Spaces:
Running
Running
ADDITIVE: status board live healthz polling at 5s + honest disclosure footer + canonical .static URL
7bc8535 verified | <html lang="en"> | |
| <head> | |
| <meta charset="utf-8" /> | |
| <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" /> | |
| <title>SZL Holdings — Status</title> | |
| <style> | |
| :root{ | |
| --bg:#0e0f13; --card:#171922; --muted:#8a90a2; --fg:#eef0f6; | |
| --green:#2ecc71; --amber:#f1c40f; --red:#e74c3c; --gold:#d4a444; --line:#262a36; | |
| } | |
| *{box-sizing:border-box} | |
| body{margin:0;background:var(--bg);color:var(--fg); | |
| font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif; | |
| -webkit-font-smoothing:antialiased;padding:16px;padding-bottom:48px} | |
| header{max-width:880px;margin:0 auto 16px} | |
| h1{font-size:22px;margin:0 0 4px;letter-spacing:.2px} | |
| .sub{color:var(--muted);font-size:13px} | |
| .doctrine{display:inline-block;margin-top:8px;font-size:12px;color:var(--gold); | |
| border:1px solid var(--gold);border-radius:6px;padding:3px 8px} | |
| .grid{max-width:880px;margin:0 auto;display:grid;gap:12px;grid-template-columns:1fr} | |
| @media(min-width:620px){.grid{grid-template-columns:1fr 1fr}} | |
| .card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px} | |
| .row{display:flex;align-items:center;justify-content:space-between;gap:8px} | |
| .name{font-weight:600;font-size:16px;text-transform:capitalize} | |
| .dot{width:12px;height:12px;border-radius:50%;flex:0 0 auto;background:var(--muted)} | |
| .dot.green{background:var(--green)} .dot.amber{background:var(--amber)} .dot.red{background:var(--red)} | |
| .badge{font-size:12px;font-weight:700;border-radius:6px;padding:2px 7px;color:#0e0f13} | |
| .badge.green{background:var(--green)} .badge.amber{background:var(--amber)} .badge.red{background:var(--red)} | |
| .meta{margin-top:10px;display:grid;grid-template-columns:1fr 1fr;gap:6px 12px;font-size:12px;color:var(--muted)} | |
| .meta b{color:var(--fg);font-weight:600} | |
| .ok{color:var(--green)} .bad{color:var(--red)} | |
| footer{max-width:880px;margin:22px auto 0;color:var(--muted);font-size:12px;text-align:center} | |
| a{color:var(--gold)} | |
| .pulse{animation:p 2s infinite} | |
| @keyframes p{0%{opacity:1}50%{opacity:.4}100%{opacity:1}} | |
| </style> | |
| </head> | |
| <body> | |
| <header> | |
| <h1>SZL Holdings — Live Status</h1> | |
| <div class="sub">Client-side health probes of the flagship mesh. Auto-refresh every 5s.</div> | |
| <div class="doctrine">Doctrine v11 LOCKED · 749 / 14 / 163 · locked_at c7c0ba17</div> | |
| </header> | |
| <div class="grid" id="grid"></div> | |
| <footer> | |
| <div id="lastrun" class="pulse">Probing…</div> | |
| Updated every 5s. Source: <a href="https://github.com/szl-holdings/status">github.com/szl-holdings/status</a> | |
| <div style="margin-top:10px;font-size:11px;color:var(--muted)"> | |
| Honest: Doctrine v11 LOCKED · 749 / 14 / 163 · Λ = Conjecture 1 (NOT a theorem) · SLSA L1 (honest) · Apache-2.0. | |
| Static Space — canonical URL <a href="https://szlholdings-status.static.hf.space/">szlholdings-status.static.hf.space</a>. | |
| Pills reflect real browser probes; unreachable organs show gray — never faked. | |
| </div> | |
| </footer> | |
| <script> | |
| const TARGETS = [ | |
| {key:"a11oy", base:"https://szlholdings-a11oy.hf.space"}, | |
| {key:"amaru", base:"https://szlholdings-amaru.hf.space"}, | |
| {key:"sentra", base:"https://szlholdings-sentra.hf.space"}, | |
| {key:"rosie", base:"https://szlholdings-rosie.hf.space"}, | |
| {key:"killinchu", base:"https://szlholdings-killinchu.hf.space"}, | |
| ]; | |
| // Extra non-flagship probes — informational. Static Spaces are probed at | |
| // their .static.hf.space root (HTTP 200 == healthy; no /healthz on static SDK). | |
| const EXTRA = [ | |
| {key:"khipu-constellation", base:"https://szlholdings-khipu-constellation.static.hf.space", staticRoot:true}, | |
| {key:"mesh-cathedral", base:"https://szlholdings-mesh-cathedral.static.hf.space", staticRoot:true}, | |
| {key:"otel-collector", base:"https://szlholdings-otel-collector.hf.space"}, | |
| ]; | |
| const DOC = {declarations:749, axioms:14, sorries:163}; | |
| function colorFor(code, doctrineOk, latency){ | |
| if(code === 0 || code >= 500 || doctrineOk === false) return "red"; | |
| if(code >= 400 || (latency!=null && latency > 800)) return "amber"; | |
| if(latency!=null && latency > 500) return "amber"; | |
| return "green"; | |
| } | |
| async function probe(t){ | |
| const out = {key:t.key, code:0, latency:null, last_modified:"—", | |
| doctrineOk:null, signOk:null}; | |
| const start = performance.now(); | |
| // Static Spaces (no backend) expose no /healthz — probe the root document instead. | |
| const healthPath = t.staticRoot ? "/" : "/healthz"; | |
| try{ | |
| const r = await fetch(t.base + healthPath, {cache:"no-store"}); | |
| out.code = r.status; | |
| out.latency = Math.round(performance.now() - start); | |
| out.last_modified = r.headers.get("last-modified") || new Date().toUTCString(); | |
| // Static viz Spaces serve a document, not a doctrine JSON — reachability only, honestly. | |
| if(t.staticRoot){ out.doctrineOk = null; out.signOk = null; out.staticReachable = (r.status>=200 && r.status<300); return out; } | |
| try{ | |
| const j = await r.json(); | |
| if(j && j.numbers){ | |
| out.doctrineOk = (j.numbers.declarations===DOC.declarations && | |
| j.numbers.axioms===DOC.axioms && | |
| j.numbers.sorries===DOC.sorries); | |
| } | |
| }catch(e){ /* non-json health (e.g. hatun) */ } | |
| }catch(e){ out.code = 0; } | |
| // sign endpoint liveness (HEAD/OPTIONS may be blocked; treat any non-0 as live) | |
| try{ | |
| const rs = await fetch(t.base + "/khipu/sign", {method:"POST", cache:"no-store", | |
| headers:{"Content-Type":"application/json"}, body:"{}"}); | |
| out.signOk = rs.status !== 0; | |
| }catch(e){ out.signOk = false; } | |
| return out; | |
| } | |
| function card(t, p){ | |
| const color = colorFor(p.code, p.doctrineOk, p.latency); | |
| const dOk = p.doctrineOk===true ? '<span class="ok">749/14/163 ✓</span>' | |
| : p.doctrineOk===false ? '<span class="bad">DRIFT ✗</span>' | |
| : t.staticRoot ? (p.staticReachable ? '<span class="ok">reachable ✓</span>' : '<span class="bad">unreachable</span>') | |
| : '<span>n/a</span>'; | |
| const sOk = p.signOk===true ? '<span class="ok">live</span>' | |
| : p.signOk===false ? '<span class="bad">down</span>' : '<span>n/a</span>'; | |
| return `<div class="card"> | |
| <div class="row"> | |
| <div class="row" style="gap:8px"><span class="dot ${color}"></span><span class="name">${t.key}</span></div> | |
| <span class="badge ${color}">HTTP ${p.code||'—'}</span> | |
| </div> | |
| <div class="meta"> | |
| <div>Latency<br><b>${p.latency!=null?p.latency+' ms':'—'}</b></div> | |
| <div>Doctrine v11<br><b>${dOk}</b></div> | |
| <div>Sign endpoint<br><b>${sOk}</b></div> | |
| <div>Last-Modified<br><b style="font-size:11px">${p.last_modified}</b></div> | |
| </div> | |
| </div>`; | |
| } | |
| async function run(){ | |
| const grid = document.getElementById("grid"); | |
| const all = [...TARGETS, ...EXTRA]; | |
| const results = await Promise.all(all.map(probe)); | |
| grid.innerHTML = all.map((t,i)=>card(t, results[i])).join(""); | |
| document.getElementById("lastrun").textContent = | |
| "Last probe: " + new Date().toUTCString(); | |
| document.getElementById("lastrun").classList.remove("pulse"); | |
| } | |
| run(); | |
| setInterval(run, 5000); | |
| </script> | |
| </body> | |
| </html> | |