status / index.html
betterwithage's picture
ADDITIVE: status board live healthz polling at 5s + honest disclosure footer + canonical .static URL
7bc8535 verified
<!DOCTYPE html>
<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>