Spaces:
Running
Running
deploy(hf): sync szl-holdings/a11oy@c038cc952b5adffeb6a7bc1a1328100464996745 derived COPY set
Browse filesReusable Dockerfile-COPY-derived deploy from szl-holdings/a11oy c038cc952b5adffeb6a7bc1a1328100464996745.
Files: 1206 Pruned: 0
Derived from Dockerfile COPY sources (NO hand-maintained allowlist).
Signed-off-by: SZL Holdings <noreply@szlholdings.ai>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- a11oy_landing.html +26 -13
- a11oy_nav_wireup.py +9 -3
- console/index.html +9 -10
- pages/console.html +188 -87
- pages/observability.html +14 -11
- serve.py +20 -1
- tools/readiness-harness/tabs.json +18 -3
- web/trust.html +9 -4
a11oy_landing.html
CHANGED
|
@@ -401,6 +401,8 @@
|
|
| 401 |
<a class="hide-sm" href="#honesty">Honesty</a>
|
| 402 |
<a class="hide-sm" href="/console#arena">Eval arena</a>
|
| 403 |
<a class="hide-sm" href="/observability">Observability</a>
|
|
|
|
|
|
|
| 404 |
<a href="/trust">Evidence</a>
|
| 405 |
<a class="btn btn-primary" href="/console" aria-label="Open the command center"><span class="nav-cta-full">Open the command center</span><span class="nav-cta-short" aria-hidden="true">Command center</span> →</a>
|
| 406 |
</nav>
|
|
@@ -930,6 +932,25 @@
|
|
| 930 |
const val = $("v-defense"); if(val) val.textContent = "UNAVAILABLE";
|
| 931 |
const chip = $("v-defense-chip"); if(chip) chip.innerHTML = downChip("UNAVAILABLE");
|
| 932 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 933 |
|
| 934 |
function setVerticals(v){
|
| 935 |
// v: {core,defense,insurance,finance,realestate} advisory Λ (numbers or null)
|
|
@@ -964,11 +985,7 @@
|
|
| 964 |
const o = await getJSON("/api/a11oy/v1/org/overview");
|
| 965 |
if(!o || o.status === "UNAVAILABLE") return false;
|
| 966 |
let any = false;
|
| 967 |
-
if(o.proof_tiers){
|
| 968 |
-
setTiers(Object.assign({}, o.proof_tiers, {genome_count: o.genome_count}));
|
| 969 |
-
$("proof-src").innerHTML = liveChip("overview");
|
| 970 |
-
any = true;
|
| 971 |
-
}
|
| 972 |
if(Array.isArray(o.verticals)){
|
| 973 |
const vm = {};
|
| 974 |
o.verticals.forEach(x => { if(x && x.name) vm[x.name] = num(x.lambda); });
|
|
@@ -991,13 +1008,9 @@
|
|
| 991 |
const g = await getJSON("/api/a11oy/v1/genome");
|
| 992 |
if(g && g.status === "UNAVAILABLE") throw new Error("genome unavailable");
|
| 993 |
const tc = g.tier_counts || {};
|
| 994 |
-
setTiers({
|
| 995 |
-
|
| 996 |
-
|
| 997 |
-
conjecture: tc["CONJECTURE"],
|
| 998 |
-
genome_locked_proven: tc["LOCKED-PROVEN"],
|
| 999 |
-
genome_count: g.count
|
| 1000 |
-
});
|
| 1001 |
$("proof-src").innerHTML = liveChip("genome");
|
| 1002 |
}catch(e){
|
| 1003 |
setTiers({}); $("proof-src").innerHTML = downChip("UNAVAILABLE");
|
|
@@ -1093,7 +1106,7 @@
|
|
| 1093 |
markKillinchuUnavailable();
|
| 1094 |
loadEstatePulse();
|
| 1095 |
loadOverclaimMetrics();
|
| 1096 |
-
|
| 1097 |
const ov = await loadOverview();
|
| 1098 |
const filled = {
|
| 1099 |
tiers: $("proof-src").innerHTML.trim() !== "",
|
|
|
|
| 401 |
<a class="hide-sm" href="#honesty">Honesty</a>
|
| 402 |
<a class="hide-sm" href="/console#arena">Eval arena</a>
|
| 403 |
<a class="hide-sm" href="/observability">Observability</a>
|
| 404 |
+
<a href="/console">Command</a>
|
| 405 |
+
<a href="https://a11oy.net" target="_blank" rel="noopener noreferrer">Proof registry ↗</a>
|
| 406 |
<a href="/trust">Evidence</a>
|
| 407 |
<a class="btn btn-primary" href="/console" aria-label="Open the command center"><span class="nav-cta-full">Open the command center</span><span class="nav-cta-short" aria-hidden="true">Command center</span> →</a>
|
| 408 |
</nav>
|
|
|
|
| 932 |
const val = $("v-defense"); if(val) val.textContent = "UNAVAILABLE";
|
| 933 |
const chip = $("v-defense-chip"); if(chip) chip.innerHTML = downChip("UNAVAILABLE");
|
| 934 |
}
|
| 935 |
+
async function loadLockedKernel(){
|
| 936 |
+
try{
|
| 937 |
+
const h = await getJSON("/api/a11oy/v1/honest");
|
| 938 |
+
const n = num(h && h.locked_formula_count);
|
| 939 |
+
$("pt-locked").textContent = (n === 8) ? "8" : "N/A";
|
| 940 |
+
}catch(e){ $("pt-locked").textContent = "N/A"; }
|
| 941 |
+
}
|
| 942 |
+
function setCatalogNote(n){
|
| 943 |
+
let el = $("pt-catalog");
|
| 944 |
+
if(!el){
|
| 945 |
+
const grid = document.querySelector("#proof .grid");
|
| 946 |
+
if(!grid) return;
|
| 947 |
+
el = document.createElement("p");
|
| 948 |
+
el.id = "pt-catalog";
|
| 949 |
+
el.className = "intro";
|
| 950 |
+
grid.insertAdjacentElement("afterend", el);
|
| 951 |
+
}
|
| 952 |
+
el.textContent = (num(n)===null) ? "" : ("Genome catalog LOCKED-PROVEN = "+n+" (catalog, not kernel). Lean-8 ≠ genome-144.");
|
| 953 |
+
}
|
| 954 |
|
| 955 |
function setVerticals(v){
|
| 956 |
// v: {core,defense,insurance,finance,realestate} advisory Λ (numbers or null)
|
|
|
|
| 985 |
const o = await getJSON("/api/a11oy/v1/org/overview");
|
| 986 |
if(!o || o.status === "UNAVAILABLE") return false;
|
| 987 |
let any = false;
|
| 988 |
+
if(o.proof_tiers){ setTiers({ semantic:o.proof_tiers.semantic, evidence:o.proof_tiers.evidence, conjecture:o.proof_tiers.conjecture }); setCatalogNote((o.thesis_stats&&o.thesis_stats.locked_proven_count) || o.proof_tiers.locked); $("proof-src").innerHTML = liveChip("overview"); any = true; }
|
|
|
|
|
|
|
|
|
|
|
|
|
| 989 |
if(Array.isArray(o.verticals)){
|
| 990 |
const vm = {};
|
| 991 |
o.verticals.forEach(x => { if(x && x.name) vm[x.name] = num(x.lambda); });
|
|
|
|
| 1008 |
const g = await getJSON("/api/a11oy/v1/genome");
|
| 1009 |
if(g && g.status === "UNAVAILABLE") throw new Error("genome unavailable");
|
| 1010 |
const tc = g.tier_counts || {};
|
| 1011 |
+
setTiers({ semantic: tc["SEMANTIC-VERIFIED"],
|
| 1012 |
+
evidence: tc["evidence-backed"], conjecture: tc["CONJECTURE"] });
|
| 1013 |
+
setCatalogNote(tc["LOCKED-PROVEN"]);
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1014 |
$("proof-src").innerHTML = liveChip("genome");
|
| 1015 |
}catch(e){
|
| 1016 |
setTiers({}); $("proof-src").innerHTML = downChip("UNAVAILABLE");
|
|
|
|
| 1106 |
markKillinchuUnavailable();
|
| 1107 |
loadEstatePulse();
|
| 1108 |
loadOverclaimMetrics();
|
| 1109 |
+
loadLockedKernel();
|
| 1110 |
const ov = await loadOverview();
|
| 1111 |
const filled = {
|
| 1112 |
tiers: $("proof-src").innerHTML.trim() !== "",
|
a11oy_nav_wireup.py
CHANGED
|
@@ -280,7 +280,10 @@ def _make_injector():
|
|
| 280 |
# into the SPA's SPEC array so buildNav() renders them natively
|
| 281 |
# and they survive its nav rebuild + MutationObserver (static
|
| 282 |
# DOM does not). Idempotent via _SPEC_MARKER.
|
| 283 |
-
|
|
|
|
|
|
|
|
|
|
| 284 |
body = body.replace(
|
| 285 |
_SPEC_ANCHOR,
|
| 286 |
b"]]" + spec_groups_js + b"\n ];\n\n function buildNav(){",
|
|
@@ -497,8 +500,11 @@ if __name__ == "__main__":
|
|
| 497 |
assert rb_head.status_code == 200, rb_head.status_code
|
| 498 |
assert rb_head.content in (b"", None) or len(rb_head.content) == 0
|
| 499 |
|
| 500 |
-
h1 = c.get("/console").text
|
| 501 |
-
h2 = c.get("/console").text # second hit must be byte-identical (idempotent)
|
|
|
|
|
|
|
|
|
|
| 502 |
|
| 503 |
# --- SPEC splice: exactly once, idempotent ---
|
| 504 |
assert h1.count("qa12-nav") == 1, "SPEC groups must be spliced in exactly once"
|
|
|
|
| 280 |
# into the SPA's SPEC array so buildNav() renders them natively
|
| 281 |
# and they survive its nav rebuild + MutationObserver (static
|
| 282 |
# DOM does not). Idempotent via _SPEC_MARKER.
|
| 283 |
+
# Public product keeps the 7-module IA. Estate groups (40+ items)
|
| 284 |
+
# splice only when the operator explicitly asked (?operator=1).
|
| 285 |
+
operator = (request.url.query or "").find("operator=1") >= 0
|
| 286 |
+
if operator and _SPEC_MARKER not in body and _SPEC_ANCHOR in body:
|
| 287 |
body = body.replace(
|
| 288 |
_SPEC_ANCHOR,
|
| 289 |
b"]]" + spec_groups_js + b"\n ];\n\n function buildNav(){",
|
|
|
|
| 500 |
assert rb_head.status_code == 200, rb_head.status_code
|
| 501 |
assert rb_head.content in (b"", None) or len(rb_head.content) == 0
|
| 502 |
|
| 503 |
+
h1 = c.get("/console?operator=1").text
|
| 504 |
+
h2 = c.get("/console?operator=1").text # second hit must be byte-identical (idempotent)
|
| 505 |
+
public = c.get("/console").text
|
| 506 |
+
assert "qa12-nav" not in public, "public /console must not splice 40+ estate items"
|
| 507 |
+
|
| 508 |
|
| 509 |
# --- SPEC splice: exactly once, idempotent ---
|
| 510 |
assert h1.count("qa12-nav") == 1, "SPEC groups must be spliced in exactly once"
|
console/index.html
CHANGED
|
@@ -23,9 +23,10 @@
|
|
| 23 |
<style>/* ============ SZL UNIFIED APP SHELL — house style (gold+teal on dark) ============ */
|
| 24 |
/* Shared by all 5 flagship full-applications. One product family. */
|
| 25 |
:root{
|
| 26 |
-
--
|
| 27 |
-
--
|
| 28 |
-
--
|
|
|
|
| 29 |
--cream:#f5f5f5; --paragraph:#9a9a9a; --muted:#888; --dim:#555;
|
| 30 |
--gold-line:rgba(201,183,135,0.15); --gold-soft:rgba(201,183,135,0.04);
|
| 31 |
--teal-line:rgba(95,179,163,0.22);
|
|
@@ -64,7 +65,7 @@ a{color:inherit;text-decoration:none;}
|
|
| 64 |
.app{display:grid;grid-template-columns:248px 1fr;min-height:calc(100vh - 39px);}
|
| 65 |
.side{background:var(--rail);border-right:1px solid var(--gold-line);padding:1.1rem .8rem;overflow-y:auto;}
|
| 66 |
.brand{display:flex;align-items:center;gap:.6rem;padding:0 .4rem 1rem;}
|
| 67 |
-
.brand .mark{width:26px;height:26px;border-radius:7px;background:linear-gradient(135deg,var(--gold),var(--teal));display:grid;place-items:center;color:#
|
| 68 |
.brand .nm{font-weight:600;font-size:1.05rem;}
|
| 69 |
.brand .role{font-family:var(--mono);font-size:9px;color:var(--muted);letter-spacing:.08em;text-transform:uppercase;}
|
| 70 |
.nav-group{font-family:var(--mono);font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:var(--dim);margin:1rem .5rem .4rem;}
|
|
@@ -218,14 +219,12 @@ details.raw[open] summary{color:var(--muted);}
|
|
| 218 |
.pal-empty{padding:1.2rem;text-align:center;color:var(--dim);font-family:var(--mono);font-size:11px;}
|
| 219 |
|
| 220 |
</style>
|
|
|
|
|
|
|
| 221 |
</head>
|
| 222 |
<body>
|
| 223 |
-
<div class="topbar">
|
| 224 |
<button class="menu-btn" onclick="document.querySelector('.side').classList.toggle('open')">☰</button>
|
| 225 |
-
<span>SZL HOLDINGS</span><span class="sep">/</span>
|
| 226 |
-
<span style="color:var(--teal)">a11oy</span><span class="sep">/</span>
|
| 227 |
-
<span>GOVERNED-AI COMMAND PLATFORM</span><span class="sep">/</span>
|
| 228 |
-
<span class="live"><span class="live-dot"></span>LIVE</span>
|
| 229 |
<nav class="switcher" aria-label="Surfaces">
|
| 230 |
<span class="lbl">SURFACE</span>
|
| 231 |
<a class="flag active" href="https://szlholdings-a11oy.hf.space/">Command Platform</a>
|
|
@@ -280,7 +279,7 @@ function setHTML(id,html){const e=el(id);if(e)e.innerHTML=html;}
|
|
| 280 |
function setTxt(id,t){const e=el(id);if(e)e.textContent=t;}
|
| 281 |
function addHTML(id,html){const e=el(id);if(e)e.insertAdjacentHTML('beforeend',html);}
|
| 282 |
// ===== VISUAL HELPERS (Chart.js + 3d-force-graph) =====
|
| 283 |
-
const GOLD='#
|
| 284 |
let _charts={};
|
| 285 |
function killChart(id){if(_charts[id]){try{_charts[id].destroy();}catch(e){}delete _charts[id];}}
|
| 286 |
function mkChart(id,cfg){const cv=el(id);if(!cv||!window.Chart)return;killChart(id);
|
|
|
|
| 23 |
<style>/* ============ SZL UNIFIED APP SHELL — house style (gold+teal on dark) ============ */
|
| 24 |
/* Shared by all 5 flagship full-applications. One product family. */
|
| 25 |
:root{
|
| 26 |
+
--void:#080c14; --proof:#3af4c8; --lattice:#5b8dee;
|
| 27 |
+
--ground:#080c14; --panel:#0e1626; --panel2:#0a1019; --rail:#0a1019;
|
| 28 |
+
--gold:#d7b96b; --gold-bright:#e4c97a;
|
| 29 |
+
--teal:#3af4c8; --teal-soft:rgba(58,244,200,0.10);
|
| 30 |
--cream:#f5f5f5; --paragraph:#9a9a9a; --muted:#888; --dim:#555;
|
| 31 |
--gold-line:rgba(201,183,135,0.15); --gold-soft:rgba(201,183,135,0.04);
|
| 32 |
--teal-line:rgba(95,179,163,0.22);
|
|
|
|
| 65 |
.app{display:grid;grid-template-columns:248px 1fr;min-height:calc(100vh - 39px);}
|
| 66 |
.side{background:var(--rail);border-right:1px solid var(--gold-line);padding:1.1rem .8rem;overflow-y:auto;}
|
| 67 |
.brand{display:flex;align-items:center;gap:.6rem;padding:0 .4rem 1rem;}
|
| 68 |
+
.brand .mark{width:26px;height:26px;border-radius:7px;background:linear-gradient(135deg,var(--gold),var(--teal));display:grid;place-items:center;color:#080c14;font-weight:700;font-family:var(--mono);}
|
| 69 |
.brand .nm{font-weight:600;font-size:1.05rem;}
|
| 70 |
.brand .role{font-family:var(--mono);font-size:9px;color:var(--muted);letter-spacing:.08em;text-transform:uppercase;}
|
| 71 |
.nav-group{font-family:var(--mono);font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:var(--dim);margin:1rem .5rem .4rem;}
|
|
|
|
| 219 |
.pal-empty{padding:1.2rem;text-align:center;color:var(--dim);font-family:var(--mono);font-size:11px;}
|
| 220 |
|
| 221 |
</style>
|
| 222 |
+
<link rel="stylesheet" href="/static/shared/szl_command_bar.css"/>
|
| 223 |
+
<script defer src="/static/shared/szl_command_bar.js"></script>
|
| 224 |
</head>
|
| 225 |
<body>
|
| 226 |
+
<div class="topbar szl-hbar" data-szl-command-bar data-surface="Command Platform" data-origin="product">
|
| 227 |
<button class="menu-btn" onclick="document.querySelector('.side').classList.toggle('open')">☰</button>
|
|
|
|
|
|
|
|
|
|
|
|
|
| 228 |
<nav class="switcher" aria-label="Surfaces">
|
| 229 |
<span class="lbl">SURFACE</span>
|
| 230 |
<a class="flag active" href="https://szlholdings-a11oy.hf.space/">Command Platform</a>
|
|
|
|
| 279 |
function setTxt(id,t){const e=el(id);if(e)e.textContent=t;}
|
| 280 |
function addHTML(id,html){const e=el(id);if(e)e.insertAdjacentHTML('beforeend',html);}
|
| 281 |
// ===== VISUAL HELPERS (Chart.js + 3d-force-graph) =====
|
| 282 |
+
const GOLD='#d7b96b',TEAL='#3af4c8',CREAM='#eef4fb',DIM='#65788f',GRID='rgba(215,185,107,0.08)';
|
| 283 |
let _charts={};
|
| 284 |
function killChart(id){if(_charts[id]){try{_charts[id].destroy();}catch(e){}delete _charts[id];}}
|
| 285 |
function mkChart(id,cfg){const cv=el(id);if(!cv||!window.Chart)return;killChart(id);
|
pages/console.html
CHANGED
|
@@ -50,13 +50,14 @@
|
|
| 50 |
<style>/* ============ SZL UNIFIED APP SHELL — house style (gold+teal on dark) ============ */
|
| 51 |
/* Shared by all 5 flagship full-applications. One product family. */
|
| 52 |
:root{
|
| 53 |
-
--
|
| 54 |
-
--
|
| 55 |
-
--
|
| 56 |
-
--
|
| 57 |
-
--
|
| 58 |
-
--
|
| 59 |
-
--
|
|
|
|
| 60 |
--mono:'JetBrains Mono',ui-monospace,SFMono-Regular,monospace;
|
| 61 |
--display:'Space Grotesk',Georgia,serif;
|
| 62 |
}
|
|
@@ -76,7 +77,7 @@ a{color:inherit;text-decoration:none;}
|
|
| 76 |
|
| 77 |
/* ===== TOP BAR + CROSS-FLAG SWITCHER ===== */
|
| 78 |
.topbar{flex:0 0 auto;z-index:60;display:flex;align-items:center;gap:1rem;flex-wrap:nowrap;
|
| 79 |
-
height:
|
| 80 |
padding:0 1.1rem;background:rgba(10,10,10,.92);backdrop-filter:blur(10px);
|
| 81 |
border-bottom:1px solid var(--gold-line);font-family:var(--mono);font-size:10.5px;
|
| 82 |
letter-spacing:.1em;text-transform:uppercase;color:var(--gold);scrollbar-width:none;}
|
|
@@ -489,10 +490,10 @@ details.raw[open] summary{color:var(--muted);}
|
|
| 489 |
NOT overridden here; we only add the new ambient-dark + ink scale + measured tokens
|
| 490 |
the hero/signature classes reference (with hex fallbacks so cascade order is safe). */
|
| 491 |
:root{
|
| 492 |
-
--bg:#
|
| 493 |
-
--line:#
|
| 494 |
-
--ink:#
|
| 495 |
-
--blue:#
|
| 496 |
--sans:'Space Grotesk',system-ui,sans-serif; /* maps to the vendored house display face */
|
| 497 |
--fs-num-xl:24px; --fs-num-lg:18px; --fs-num:14px; --fs-label:11px;
|
| 498 |
}
|
|
@@ -502,14 +503,18 @@ details.raw[open] summary{color:var(--muted);}
|
|
| 502 |
Declared last so it wins the cascade; overrides variable values only —
|
| 503 |
no markup, no new selectors. 0 CDN, 0 new URLs. */
|
| 504 |
:root{
|
| 505 |
-
--
|
| 506 |
-
--
|
|
|
|
|
|
|
|
|
|
| 507 |
--gold:#d7b96b;
|
| 508 |
-
--gold-line:
|
| 509 |
-
--cream:#
|
| 510 |
-
--teal:#
|
| 511 |
-
--live:#
|
| 512 |
-
--line:#
|
|
|
|
| 513 |
}
|
| 514 |
/* RECEIPT-MARK — CSS-only wax-seal dot; marks any cryptographically-attested datum */
|
| 515 |
.rmark{width:11px;height:11px;border-radius:50%;display:inline-block;flex:0 0 auto;
|
|
@@ -528,7 +533,7 @@ details.raw[open] summary{color:var(--muted);}
|
|
| 528 |
.mb{font-size:9px;letter-spacing:.08em;padding:1px 7px;border-radius:999px;border:1px solid;vertical-align:middle}
|
| 529 |
.mb-measured{color:#6B7280;border-color:#6B7280}
|
| 530 |
.mb-sample{color:#D97706;border-color:#D97706}
|
| 531 |
-
.mb-modeled{color:#
|
| 532 |
.mb-roadmap{color:#9CA3AF;border-color:#9CA3AF}
|
| 533 |
[data-maturity="sample"]{background:rgba(217,119,6,.04)}
|
| 534 |
/* doctrine chip (locked-8, immutable — never "5") */
|
|
@@ -583,7 +588,12 @@ details.raw[open] summary{color:var(--muted);}
|
|
| 583 |
.btn-primary,.btn-ghost{text-align:center}
|
| 584 |
}
|
| 585 |
@media(prefers-reduced-motion:reduce){ .vcard{transition:none} }
|
|
|
|
|
|
|
|
|
|
| 586 |
</style>
|
|
|
|
|
|
|
| 587 |
</head>
|
| 588 |
<body>
|
| 589 |
<a class="skip-link" href="#content">Skip to command content</a>
|
|
@@ -600,16 +610,16 @@ details.raw[open] summary{color:var(--muted);}
|
|
| 600 |
watchdog turns the copy into an honest "reconnecting" line if boot stalls past the
|
| 601 |
cap — NEVER a permanent spinner, NEVER a fabricated number. Respects
|
| 602 |
prefers-reduced-motion. Removes itself cleanly; leaves zero residue in the DOM. -->
|
| 603 |
-
<div id="szl-bootguard" role="status" aria-live="polite" style="position:fixed;inset:0;z-index:2147483646;background:#
|
| 604 |
<div style="display:flex;align-items:center;gap:14px;">
|
| 605 |
-
<div id="szl-bg-mark" style="width:48px;height:48px;border-radius:11px;background:linear-gradient(135deg,#
|
| 606 |
<div style="text-align:left;">
|
| 607 |
-
<div style="font-size:13px;letter-spacing:.18em;color:#
|
| 608 |
-
<div style="font-size:21px;font-weight:600;color:#
|
| 609 |
</div>
|
| 610 |
</div>
|
| 611 |
-
<div style="margin-top:26px;width:168px;height:3px;border-radius:3px;background:rgba(
|
| 612 |
-
<div id="szl-bg-bar" style="height:100%;width:38%;border-radius:3px;background:linear-gradient(90deg,#
|
| 613 |
</div>
|
| 614 |
<div id="szl-bg-msg" style="margin-top:16px;font-size:12px;letter-spacing:.08em;color:#9a9a9a;font-family:'JetBrains Mono',ui-monospace,monospace;">initializing…</div>
|
| 615 |
</div>
|
|
@@ -672,18 +682,10 @@ details.raw[open] summary{color:var(--muted);}
|
|
| 672 |
</script>
|
| 673 |
<!-- ============================ END SZL BOOT-GUARD ============================ -->
|
| 674 |
|
| 675 |
-
<div class="topbar">
|
| 676 |
<button class="menu-btn" aria-label="Toggle navigation" aria-expanded="false" onclick="toggleSide()">☰</button>
|
| 677 |
-
<
|
| 678 |
-
|
| 679 |
-
<span class="tb-desc">GOVERNED-AI COMMAND PLATFORM</span><span class="sep">/</span>
|
| 680 |
-
<span class="live" id="runtime-status" role="status" aria-live="polite"><span class="live-dot"></span><span id="runtime-status-text">CHECKING</span></span>
|
| 681 |
-
<!-- ADDITIVE (feat/investor-mode-pricing): CEO / Investor-mode toggle. Opens a clean
|
| 682 |
-
overlay of 5-7 plain-English, honest proof points over the dense operator view.
|
| 683 |
-
The operator (dense) console is never rebuilt or hidden — this is an overlay only. -->
|
| 684 |
-
<button id="inv-toggle" class="inv-toggle" type="button" aria-pressed="false"
|
| 685 |
-
aria-controls="inv-overlay" title="CEO / Investor view — the plain-English story"
|
| 686 |
-
onclick="a11oyInvestor.toggle()">◆ Investor view</button>
|
| 687 |
<nav class="switcher" aria-label="Surfaces">
|
| 688 |
<span class="lbl">SURFACE</span>
|
| 689 |
<a class="flag active" href="https://szlholdings-a11oy.hf.space/">Command Platform</a>
|
|
@@ -1002,10 +1004,22 @@ async function gjFast(url,ms){
|
|
| 1002 |
}
|
| 1003 |
/* honest degraded chip — shown when a KPI cannot be observed right now (never "down",
|
| 1004 |
never fabricated). Reads as a labeled state, not a broken panel. */
|
| 1005 |
-
function
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1006 |
function skelVal(){ return '<span class="skel skel-val"></span>'; }
|
| 1007 |
function skelRows(n){ var w=['w90','w70','w55','w90','w70'],h=''; n=n||3; for(var i=0;i<n;i++){ h+='<div class="skel skel-row '+w[i%w.length]+'"></div>'; } return '<div class="skel-wrap">'+h+'<div class="skel-caption">loading live data…</div></div>'; }
|
| 1008 |
-
window.gjFast=gjFast; window.honestDegraded=honestDegraded; window.skelVal=skelVal; window.skelRows=skelRows;
|
| 1009 |
// ===== In-browser DSSE receipt verification (WebCrypto, ECDSA P-256 / SHA-256) =====
|
| 1010 |
// Fetches a11oy's OWN in-image public key (/cosign.pub) and a signed receipt
|
| 1011 |
// envelope (/api/a11oy/v1/receipt/export), rebuilds the signing pre-auth encoding, and verifies
|
|
@@ -1178,9 +1192,9 @@ const VIEWS={
|
|
| 1178 |
// KANCHAY tier model. CONJECTURE is NEVER green; honest-N/A never green.
|
| 1179 |
// SEMANTIC-VERIFIED is highlighted (lattice accent) as the real trust math.
|
| 1180 |
const TIERS=[
|
| 1181 |
-
{key:'LOCKED-PROVEN',label:'LOCKED-PROVEN',color:'#
|
| 1182 |
{key:'SEMANTIC-VERIFIED',label:'SEMANTIC-VERIFIED',color:'#5b8dee',line:'rgba(91,141,238,0.5)',soft:'rgba(91,141,238,0.10)',green:false,highlight:true,desc:'The real trust math: \u039b bounds, the conditional Theorem U (\u039b uniqueness under separability), DSSE verifiability. Semantically checked against the implementation \u2014 not a bare label.'},
|
| 1183 |
-
{key:'evidence-backed',label:'evidence-backed',color:'#
|
| 1184 |
{key:'honest-N/A',label:'honest-N/A',color:'#9a9a9a',line:'rgba(154,154,154,0.35)',soft:'rgba(154,154,154,0.06)',green:false,desc:'Honestly out of formal scope (e.g. the soundness floor has no single Lean theorem; downgraded phantom anchors). Shown, not hidden \u2014 never faked green.'},
|
| 1185 |
{key:'CONJECTURE',label:'CONJECTURE',color:'#9a9a9a',line:'rgba(154,154,154,0.35)',soft:'rgba(154,154,154,0.05)',green:false,conjecture:true,desc:'Open research conjecture \u2014 NEVER rendered green. C1 = \u039b unconditional uniqueness (machine-checked FALSE as stated); C2 = Khipu BFT safety; C3 = BFT liveness.'}
|
| 1186 |
];
|
|
@@ -1195,8 +1209,11 @@ const VIEWS={
|
|
| 1195 |
const counts=(data&&data.tier_counts)||{};
|
| 1196 |
// KPI tiles per tier (live counts from the endpoint).
|
| 1197 |
const kp=el('gen-kpis'); kp.innerHTML='';
|
|
|
|
|
|
|
|
|
|
| 1198 |
TIERS.forEach(t=>{ const n=counts[t.key]||0;
|
| 1199 |
-
kp.insertAdjacentHTML('beforeend',`<div class="kpi"><div class="k">${esc(t.label)}</div><div class="v" style="color:${t.color}">${n}</div><div class="d">${t.
|
| 1200 |
const isRealLean=(e)=>{ const r=(e.lean_ref||'').trim(); if(!r) return false; if(/open|never green|n\/a|none|\u2014/i.test(r)) return false; return true; };
|
| 1201 |
function rowHTML(e,t){
|
| 1202 |
const real=isRealLean(e) && !t.conjecture;
|
|
@@ -1205,7 +1222,7 @@ const VIEWS={
|
|
| 1205 |
// Lean chip: green/proof ONLY for proven tiers with a real ref; conjecture & N/A
|
| 1206 |
// get a neutral gray chip carrying the honest text verbatim (e.g. "OPEN \u2014 NEVER green").
|
| 1207 |
const leanChip = e.lean_ref ? (real
|
| 1208 |
-
? `<span class="badge" style="color:#
|
| 1209 |
: `<span class="badge" style="color:#9a9a9a;border:1px solid rgba(154,154,154,.35);background:rgba(154,154,154,.05)">${esc(e.lean_ref)}</span>`) : '';
|
| 1210 |
return `<div class="row" style="display:block;border-bottom:1px solid var(--gold-line);padding:.55rem 0">
|
| 1211 |
<div style="display:flex;gap:.5rem;align-items:center;flex-wrap:wrap">
|
|
@@ -2451,7 +2468,14 @@ function go(view){
|
|
| 2451 |
c.innerHTML=`<div class="view-head"><h1 class="view-title">${v.title}</h1><span class="view-badge">${v.badge}</span></div><p class="view-sub">${v.sub}</p><div id="vbody"></div>`;
|
| 2452 |
v.render(el('vbody'));
|
| 2453 |
_szlSpinnerWatchdog(view);
|
| 2454 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2455 |
if(window.innerWidth<=820)toggleSide(false);
|
| 2456 |
}
|
| 2457 |
/* probe-offline-abort: GLOBAL NO-PERPETUAL-SPINNER WATCHDOG.
|
|
@@ -2469,7 +2493,7 @@ function go(view){
|
|
| 2469 |
already carry a working re-probe link; only dead loading skeletons get swept. */
|
| 2470 |
window.__SZL_WATCHDOG_MS=32000;
|
| 2471 |
function _szlHonestChip(){
|
| 2472 |
-
return '
|
| 2473 |
}
|
| 2474 |
function _szlIsSpinnerText(t){
|
| 2475 |
t=(t||'').replace(/\s+/g,' ').trim().toLowerCase();
|
|
@@ -2578,10 +2602,24 @@ window.toggleSide=toggleSide;
|
|
| 2578 |
can override VIEWS[tab].render. const bindings do NOT auto-attach to window, so we do it
|
| 2579 |
explicitly here. This is the single source of truth the batch module mutates in place. */
|
| 2580 |
window.VIEWS=VIEWS; window.go=go;
|
| 2581 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2582 |
/* defer initial render until all inline scripts (helpers + frontier loaders) have executed,
|
| 2583 |
so deep-links to tabs whose loaders live in a later script block resolve correctly */
|
| 2584 |
-
function _bootGo(){
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2585 |
if(document.readyState==='loading')document.addEventListener('DOMContentLoaded',_bootGo);else setTimeout(_bootGo,0);
|
| 2586 |
</script>
|
| 2587 |
|
|
@@ -6503,8 +6541,9 @@ window.warboard_init=warboard_init; window.warboard_all=warboard_all;
|
|
| 6503 |
+'<span class="hctr-d">F1\u00b7F4\u00b7F7\u00b7F11\u00b7F12\u00b7F18\u00b7F19\u00b7F22 \u00b7 \u039b=Conjecture 1</span></div>'
|
| 6504 |
+'</div>'
|
| 6505 |
+'<div class="hero-cta">'
|
| 6506 |
-
+'<a class="btn-primary" href="https://
|
| 6507 |
-
+'<a class="btn-ghost" href="
|
|
|
|
| 6508 |
+'</div></div>'
|
| 6509 |
+'<div class="hero-cards" aria-label="verticals and energy">'
|
| 6510 |
+'<a class="vcard" onclick="go(\'cybSurface\');return false;" href="#cybSurface"><h3>Counter-UAS / killinchu</h3><p>Detection + classification governed, auditable, energy-bounded at the edge.</p><span class="vcard-go mono">whHero \u2192</span></a>'
|
|
@@ -6527,12 +6566,12 @@ window.warboard_init=warboard_init; window.warboard_all=warboard_all;
|
|
| 6527 |
+kpi('Chain depth','cc-chain','unified receipt ledger','teal')
|
| 6528 |
+kpi('Build security','cc-slsa','SLSA L1 honest; L2 .att emitted (not independently verified) · L3 roadmap','teal')
|
| 6529 |
+'</div>'
|
| 6530 |
-
+'<div
|
|
|
|
|
|
|
| 6531 |
+card('Trust posture (13-axis Λ)','live '+window.a11oyPoweredBy(['F19','F1']),'<div class="chartbox"><canvas id="cc-radar"></canvas></div>')
|
| 6532 |
+card('Governed throughput by vertical','live · auto-poll','<div class="chartbox"><canvas id="cc-bars"></canvas></div>')
|
| 6533 |
+'</div>'
|
| 6534 |
-
+card('Service health','live probe · <span id="cc-stamp" class="mono dim" style="font-size:10px"></span>','<div class="brain-note" style="margin:.1rem 0 .5rem"><b>How to read “Services up”.</b> This Space runs the <b>governed mesh</b> — the in-image capability mesh is <b>6/6 healthy</b> (Byzantine quorum 4/4 REACHED, see the <b>UDS 4/4 Quorum</b> tab). The heavy <b>organ backends (Reasoning / Policy / Operator / Receipts)</b> run on <b>dedicated infrastructure (roadmap)</b>, so on this demo Space they are shown honestly as <b>not-deployed-here</b> rather than faked “up”. Same truth, two probes: the governed mesh a11oy actually runs on is fully healthy; the organ backends are not deployed on this Space.</div><div id="cc-fleet">'+skelRows(4)+'</div>')
|
| 6535 |
-
+card('Rolling receipt stream — ALL verticals',''+liveDot()+'live · one tamper-evident chain','<div id="cc-stream">'+skelRows(3)+'</div>')
|
| 6536 |
+'<div class="card"><div class="card-h"><span class="card-t">Governance engine — powered by the proven formulas</span><span class="card-ep">honest maturity labels</span></div>'
|
| 6537 |
+'<div id="cc-formulas"></div></div>'
|
| 6538 |
+HON;
|
|
@@ -15921,36 +15960,48 @@ window.warboard_init=warboard_init; window.warboard_all=warboard_all;
|
|
| 15921 |
"use strict";
|
| 15922 |
// Ordered spec: [groupLabel, [ [viewKey, icon, label], ... ] ]
|
| 15923 |
var SPEC = [
|
| 15924 |
-
["
|
| 15925 |
["command","\u25ce","Command Center"],
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 15926 |
["ask","\u2726","Ask & Act"],
|
| 15927 |
["demo","\u229e","Run a Demo"],
|
| 15928 |
-
["
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 15929 |
]],
|
| 15930 |
["Govern", [
|
| 15931 |
["lambda","\u25d4","Trust Score"],
|
| 15932 |
-
["decision","\u25c8","Governed Decision"],
|
| 15933 |
["gates","\u22a0","Safety Gates"],
|
| 15934 |
["govern","\u2713","Readiness & Compliance"],
|
|
|
|
| 15935 |
["willay","\u26e8","WILLAY \u2014 Signed Refusals","/willay"],
|
| 15936 |
-
["verify","\u2713","Verify a Receipt","/verify"]
|
| 15937 |
-
["assurance","\u2713","AI Assurance (WDP)","/assurance"]
|
| 15938 |
]],
|
| 15939 |
-
["
|
| 15940 |
-
["
|
| 15941 |
-
["
|
| 15942 |
-
["arena","\u229c","Eval Arena"],
|
| 15943 |
-
["frontier","\u25c8","Frontier Pipeline"]
|
| 15944 |
-
]],
|
| 15945 |
-
["Knowledge", [
|
| 15946 |
-
["knowledge","\u2b21","Knowledge Ontology"],
|
| 15947 |
-
["kbformulas","\u2211","Formulas"],
|
| 15948 |
-
["honest","\u2298","What We Claim"]
|
| 15949 |
]],
|
| 15950 |
-
["
|
| 15951 |
-
["
|
| 15952 |
-
["
|
| 15953 |
-
["
|
|
|
|
| 15954 |
]]
|
| 15955 |
];
|
| 15956 |
|
|
@@ -15995,7 +16046,7 @@ window.warboard_init=warboard_init; window.warboard_all=warboard_all;
|
|
| 15995 |
|
| 15996 |
// Reflect the currently-active view in the menu (if present).
|
| 15997 |
try{
|
| 15998 |
-
var cur = (location.hash||'#command').slice(1).split('/')[0];
|
| 15999 |
var act = side.querySelector('.nav-item[data-view="'+cur+'"]');
|
| 16000 |
if(act){ act.classList.add('active'); act.setAttribute('aria-current','page'); }
|
| 16001 |
}catch(e){}
|
|
@@ -16058,8 +16109,9 @@ window.warboard_init=warboard_init; window.warboard_all=warboard_all;
|
|
| 16058 |
fetch('/api/a11oy/v1/readiness/tab-matrix?view=summary',{cache:'no-store'}).then(function(r){if(!r.ok)throw new Error();return r.json();})
|
| 16059 |
]).then(function(values){
|
| 16060 |
var health=values[0]||{}, matrix=values[1]||{};
|
| 16061 |
-
|
| 16062 |
-
|
|
|
|
| 16063 |
else{set('degraded','DEGRADED');}
|
| 16064 |
}).catch(function(){set('down','STATUS UNAVAILABLE');});
|
| 16065 |
})();
|
|
@@ -16148,7 +16200,7 @@ window.warboard_init=warboard_init; window.warboard_all=warboard_all;
|
|
| 16148 |
var host=document.getElementById('pinned-host'); if(!host) return;
|
| 16149 |
var p=getPins().filter(function(k){ return window.VIEWS&&window.VIEWS[k]; });
|
| 16150 |
if(!p.length){ host.innerHTML=''; return; }
|
| 16151 |
-
var cur=window._requestedView||(location.hash||'#command').slice(1);
|
| 16152 |
var canonicalCurrent=false;
|
| 16153 |
document.querySelectorAll('.nav-item').forEach(function(n){
|
| 16154 |
if(!n.closest('#pinned-host')&&n.dataset.view===cur){ canonicalCurrent=true; }
|
|
@@ -16357,13 +16409,7 @@ window.warboard_init=warboard_init; window.warboard_all=warboard_all;
|
|
| 16357 |
|
| 16358 |
async function renderPublications(c){
|
| 16359 |
var lockedTxt='8';
|
| 16360 |
-
try{
|
| 16361 |
-
var honest=await window.getJSON(window.API+'/v1/honest');
|
| 16362 |
-
var lock=honest&&honest.doctrine_lock;
|
| 16363 |
-
var n=(honest&&typeof honest.locked_formula_count==='number')?honest.locked_formula_count
|
| 16364 |
-
:(lock&&typeof lock.locked_formula_count==='number')?lock.locked_formula_count:null;
|
| 16365 |
-
if(typeof n==='number') lockedTxt=String(n);
|
| 16366 |
-
}catch(e){}
|
| 16367 |
var h='<div class="pz-wrap">';
|
| 16368 |
h+='<div class="pz-lead">The shoulders we stand on. SZL’s own program is DOI-pinned on Zenodo; the work it builds on is cited in full with a one-line note on exactly what we adapt. Honest tiers throughout: <b style="color:var(--teal)">'+esc(lockedTxt)+' locked-proven</b> {F1,F4,F7,F11,F12,F18,F19,F22}; Λ-uniqueness = <b style="color:#7e8aa3">Conjecture 1</b> (never green); Khipu BFT safety = Conjecture 2. Every formula’s proof tier is verifiable in <a href="#genome" onclick="go(\'genome\');return false;" style="color:var(--teal)">Genome</a> against <code>/api/a11oy/v1/genome</code>.</div>';
|
| 16369 |
|
|
@@ -16617,20 +16663,75 @@ window.a11oyInvestor = (function(){
|
|
| 16617 |
}catch(_){}
|
| 16618 |
}catch(_){}
|
| 16619 |
}
|
| 16620 |
-
function open(){
|
| 16621 |
-
|
| 16622 |
-
|
|
|
|
|
|
|
| 16623 |
try{
|
| 16624 |
document.addEventListener('keydown', function(e){
|
| 16625 |
try{ if(e.key==='Escape'){ close(); } }catch(_){}
|
| 16626 |
});
|
| 16627 |
-
//
|
|
|
|
|
|
|
| 16628 |
var q=(window.location.search||''); var h=(window.location.hash||'');
|
| 16629 |
-
|
|
|
|
|
|
|
| 16630 |
}catch(_){}
|
| 16631 |
return { open:open, close:close, toggle:toggle };
|
| 16632 |
})();
|
| 16633 |
</script>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 16634 |
|
| 16635 |
<!-- ===================================================================== -->
|
| 16636 |
<!-- DEV1 WAVE K — GOVERNED FLYWHEEL CONSOLE WIRING (feat/console-flywheel-wire)
|
|
|
|
| 50 |
<style>/* ============ SZL UNIFIED APP SHELL — house style (gold+teal on dark) ============ */
|
| 51 |
/* Shared by all 5 flagship full-applications. One product family. */
|
| 52 |
:root{
|
| 53 |
+
--void:#080c14; --proof:#3af4c8; --lattice:#5b8dee;
|
| 54 |
+
--ground:#080c14; --panel:#0e1626; --panel2:#0a1019; --rail:#0a1019;
|
| 55 |
+
--gold:#d7b96b; --gold-bright:#e4c97a;
|
| 56 |
+
--teal:#3af4c8; --teal-soft:rgba(58,244,200,0.10);
|
| 57 |
+
--cream:#eef4fb; --paragraph:#aebccf; --muted:#7d8aa0; --dim:#65788f;
|
| 58 |
+
--gold-line:rgba(215,185,107,0.18); --gold-soft:rgba(215,185,107,0.05);
|
| 59 |
+
--teal-line:rgba(58,244,200,0.22);
|
| 60 |
+
--live:#3af4c8; --err:#e8746e; --warn:#d7b96b; --gray:#7d8aa0;
|
| 61 |
--mono:'JetBrains Mono',ui-monospace,SFMono-Regular,monospace;
|
| 62 |
--display:'Space Grotesk',Georgia,serif;
|
| 63 |
}
|
|
|
|
| 77 |
|
| 78 |
/* ===== TOP BAR + CROSS-FLAG SWITCHER ===== */
|
| 79 |
.topbar{flex:0 0 auto;z-index:60;display:flex;align-items:center;gap:1rem;flex-wrap:nowrap;
|
| 80 |
+
height:auto;min-height:52px;max-height:none;overflow:visible;white-space:nowrap;
|
| 81 |
padding:0 1.1rem;background:rgba(10,10,10,.92);backdrop-filter:blur(10px);
|
| 82 |
border-bottom:1px solid var(--gold-line);font-family:var(--mono);font-size:10.5px;
|
| 83 |
letter-spacing:.1em;text-transform:uppercase;color:var(--gold);scrollbar-width:none;}
|
|
|
|
| 490 |
NOT overridden here; we only add the new ambient-dark + ink scale + measured tokens
|
| 491 |
the hero/signature classes reference (with hex fallbacks so cascade order is safe). */
|
| 492 |
:root{
|
| 493 |
+
--bg:#080c14; --surf:#0e1626; --surf2:#0a1019;
|
| 494 |
+
--line:#1c2942;
|
| 495 |
+
--ink:#eef4fb; --ink-dim:#aebccf; --ink-faint:#7d8aa0;
|
| 496 |
+
--blue:#5b8dee; --red:#e8746e;
|
| 497 |
--sans:'Space Grotesk',system-ui,sans-serif; /* maps to the vendored house display face */
|
| 498 |
--fs-num-xl:24px; --fs-num-lg:18px; --fs-num:14px; --fs-label:11px;
|
| 499 |
}
|
|
|
|
| 503 |
Declared last so it wins the cascade; overrides variable values only —
|
| 504 |
no markup, no new selectors. 0 CDN, 0 new URLs. */
|
| 505 |
:root{
|
| 506 |
+
--void:#080c14;
|
| 507 |
+
--proof:#3af4c8;
|
| 508 |
+
--lattice:#5b8dee;
|
| 509 |
+
--ground:#080c14;
|
| 510 |
+
--panel:#0e1626;
|
| 511 |
--gold:#d7b96b;
|
| 512 |
+
--gold-line:rgba(215,185,107,0.22);
|
| 513 |
+
--cream:#eef4fb;
|
| 514 |
+
--teal:#3af4c8;
|
| 515 |
+
--live:#3af4c8;
|
| 516 |
+
--line:#1c2942;
|
| 517 |
+
--gray:#7d8aa0;
|
| 518 |
}
|
| 519 |
/* RECEIPT-MARK — CSS-only wax-seal dot; marks any cryptographically-attested datum */
|
| 520 |
.rmark{width:11px;height:11px;border-radius:50%;display:inline-block;flex:0 0 auto;
|
|
|
|
| 533 |
.mb{font-size:9px;letter-spacing:.08em;padding:1px 7px;border-radius:999px;border:1px solid;vertical-align:middle}
|
| 534 |
.mb-measured{color:#6B7280;border-color:#6B7280}
|
| 535 |
.mb-sample{color:#D97706;border-color:#D97706}
|
| 536 |
+
.mb-modeled{color:var(--lattice,#5b8dee);border-color:var(--lattice,#5b8dee)}
|
| 537 |
.mb-roadmap{color:#9CA3AF;border-color:#9CA3AF}
|
| 538 |
[data-maturity="sample"]{background:rgba(217,119,6,.04)}
|
| 539 |
/* doctrine chip (locked-8, immutable — never "5") */
|
|
|
|
| 588 |
.btn-primary,.btn-ghost{text-align:center}
|
| 589 |
}
|
| 590 |
@media(prefers-reduced-motion:reduce){ .vcard{transition:none} }
|
| 591 |
+
.szl-below-fold{margin-top:2.2rem;}
|
| 592 |
+
.hero-cards,.hero-creds,.hero-hook{margin-top:2.4rem;}
|
| 593 |
+
|
| 594 |
</style>
|
| 595 |
+
<link rel="stylesheet" href="/static/shared/szl_command_bar.css"/>
|
| 596 |
+
<script defer src="/static/shared/szl_command_bar.js"></script>
|
| 597 |
</head>
|
| 598 |
<body>
|
| 599 |
<a class="skip-link" href="#content">Skip to command content</a>
|
|
|
|
| 610 |
watchdog turns the copy into an honest "reconnecting" line if boot stalls past the
|
| 611 |
cap — NEVER a permanent spinner, NEVER a fabricated number. Respects
|
| 612 |
prefers-reduced-motion. Removes itself cleanly; leaves zero residue in the DOM. -->
|
| 613 |
+
<div id="szl-bootguard" role="status" aria-live="polite" style="position:fixed;inset:0;z-index:2147483646;background:#080c14;color:#eef4fb;display:flex;flex-direction:column;align-items:center;justify-content:center;font-family:'Space Grotesk',Georgia,serif;-webkit-font-smoothing:antialiased;">
|
| 614 |
<div style="display:flex;align-items:center;gap:14px;">
|
| 615 |
+
<div id="szl-bg-mark" style="width:48px;height:48px;border-radius:11px;background:linear-gradient(135deg,#d7b96b,#3af4c8);color:#080c14;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:26px;line-height:1;box-shadow:0 0 22px rgba(58,244,200,.28);">A</div>
|
| 616 |
<div style="text-align:left;">
|
| 617 |
+
<div style="font-size:13px;letter-spacing:.18em;color:#7d8aa0;font-family:'JetBrains Mono',ui-monospace,monospace;">SZL HOLDINGS</div>
|
| 618 |
+
<div style="font-size:21px;font-weight:600;color:#3af4c8;line-height:1.15;">a11oy</div>
|
| 619 |
</div>
|
| 620 |
</div>
|
| 621 |
+
<div style="margin-top:26px;width:168px;height:3px;border-radius:3px;background:rgba(58,244,200,.14);overflow:hidden;">
|
| 622 |
+
<div id="szl-bg-bar" style="height:100%;width:38%;border-radius:3px;background:linear-gradient(90deg,#3af4c8,#d7b96b);"></div>
|
| 623 |
</div>
|
| 624 |
<div id="szl-bg-msg" style="margin-top:16px;font-size:12px;letter-spacing:.08em;color:#9a9a9a;font-family:'JetBrains Mono',ui-monospace,monospace;">initializing…</div>
|
| 625 |
</div>
|
|
|
|
| 682 |
</script>
|
| 683 |
<!-- ============================ END SZL BOOT-GUARD ============================ -->
|
| 684 |
|
| 685 |
+
<div class="topbar szl-hbar" data-szl-command-bar data-surface="Command Platform" data-origin="product">
|
| 686 |
<button class="menu-btn" aria-label="Toggle navigation" aria-expanded="false" onclick="toggleSide()">☰</button>
|
| 687 |
+
<!-- Holographic three-zone bar is mounted by /static/shared/szl_command_bar.js.
|
| 688 |
+
Investor View is an in-console view (go('investor')); /investor is a 307 alias onto the same chrome. -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 689 |
<nav class="switcher" aria-label="Surfaces">
|
| 690 |
<span class="lbl">SURFACE</span>
|
| 691 |
<a class="flag active" href="https://szlholdings-a11oy.hf.space/">Command Platform</a>
|
|
|
|
| 1004 |
}
|
| 1005 |
/* honest degraded chip — shown when a KPI cannot be observed right now (never "down",
|
| 1006 |
never fabricated). Reads as a labeled state, not a broken panel. */
|
| 1007 |
+
function emptyUnknown(kind, detail){
|
| 1008 |
+
var k = String(kind||'UNKNOWN').toUpperCase();
|
| 1009 |
+
if(k!=='ROADMAP' && k!=='UNAVAILABLE') k='UNKNOWN';
|
| 1010 |
+
var d = detail || (k==='ROADMAP' ? 'not built yet' : 'live source unavailable');
|
| 1011 |
+
return '<span class="badge b-gold empty-unknown-inline" role="status">'+k+' \u2014 '+d+'</span>';
|
| 1012 |
+
}
|
| 1013 |
+
function emptyUnknownBlock(kind, detail){
|
| 1014 |
+
var k = String(kind||'UNKNOWN').toUpperCase();
|
| 1015 |
+
if(k!=='ROADMAP' && k!=='UNAVAILABLE') k='UNKNOWN';
|
| 1016 |
+
var d = detail || (k==='ROADMAP' ? 'not built yet' : 'live source unavailable');
|
| 1017 |
+
return '<div class="empty-unknown'+(k==='UNKNOWN'?' empty-unknown-viz':'')+'" role="status" data-kind="'+k.toLowerCase()+'"><span class="empty-unknown-k mono">'+k+'</span><span class="empty-unknown-d">'+d+'</span></div>';
|
| 1018 |
+
}
|
| 1019 |
+
function honestDegraded(label){ return emptyUnknown('UNKNOWN', label||'live source unavailable'); }
|
| 1020 |
function skelVal(){ return '<span class="skel skel-val"></span>'; }
|
| 1021 |
function skelRows(n){ var w=['w90','w70','w55','w90','w70'],h=''; n=n||3; for(var i=0;i<n;i++){ h+='<div class="skel skel-row '+w[i%w.length]+'"></div>'; } return '<div class="skel-wrap">'+h+'<div class="skel-caption">loading live data…</div></div>'; }
|
| 1022 |
+
window.gjFast=gjFast; window.emptyUnknown=emptyUnknown; window.emptyUnknownBlock=emptyUnknownBlock; window.honestDegraded=honestDegraded; window.skelVal=skelVal; window.skelRows=skelRows;
|
| 1023 |
// ===== In-browser DSSE receipt verification (WebCrypto, ECDSA P-256 / SHA-256) =====
|
| 1024 |
// Fetches a11oy's OWN in-image public key (/cosign.pub) and a signed receipt
|
| 1025 |
// envelope (/api/a11oy/v1/receipt/export), rebuilds the signing pre-auth encoding, and verifies
|
|
|
|
| 1192 |
// KANCHAY tier model. CONJECTURE is NEVER green; honest-N/A never green.
|
| 1193 |
// SEMANTIC-VERIFIED is highlighted (lattice accent) as the real trust math.
|
| 1194 |
const TIERS=[
|
| 1195 |
+
{key:'LOCKED-PROVEN',label:'LOCKED-PROVEN (catalog)',color:'#d7b96b',line:'rgba(215,185,107,0.45)',soft:'rgba(215,185,107,0.08)',green:false,catalog:true,desc:'Genome catalog tier — labelled, never green, never the kernel. The locked kernel is exactly 8 {F1,F4,F7,F11,F12,F18,F19,F22} from /honest locked_formula_count. Lean-8 is not genome-144.'},
|
| 1196 |
{key:'SEMANTIC-VERIFIED',label:'SEMANTIC-VERIFIED',color:'#5b8dee',line:'rgba(91,141,238,0.5)',soft:'rgba(91,141,238,0.10)',green:false,highlight:true,desc:'The real trust math: \u039b bounds, the conditional Theorem U (\u039b uniqueness under separability), DSSE verifiability. Semantically checked against the implementation \u2014 not a bare label.'},
|
| 1197 |
+
{key:'evidence-backed',label:'evidence-backed',color:'#d7b96b',line:'rgba(215,185,107,0.4)',soft:'rgba(215,185,107,0.06)',green:false,desc:'Backed by code + tests / a live surface, but not a single closed Lean theorem. Honest about the gap where one exists.'},
|
| 1198 |
{key:'honest-N/A',label:'honest-N/A',color:'#9a9a9a',line:'rgba(154,154,154,0.35)',soft:'rgba(154,154,154,0.06)',green:false,desc:'Honestly out of formal scope (e.g. the soundness floor has no single Lean theorem; downgraded phantom anchors). Shown, not hidden \u2014 never faked green.'},
|
| 1199 |
{key:'CONJECTURE',label:'CONJECTURE',color:'#9a9a9a',line:'rgba(154,154,154,0.35)',soft:'rgba(154,154,154,0.05)',green:false,conjecture:true,desc:'Open research conjecture \u2014 NEVER rendered green. C1 = \u039b unconditional uniqueness (machine-checked FALSE as stated); C2 = Khipu BFT safety; C3 = BFT liveness.'}
|
| 1200 |
];
|
|
|
|
| 1209 |
const counts=(data&&data.tier_counts)||{};
|
| 1210 |
// KPI tiles per tier (live counts from the endpoint).
|
| 1211 |
const kp=el('gen-kpis'); kp.innerHTML='';
|
| 1212 |
+
let kernelN='UNAVAILABLE';
|
| 1213 |
+
try{ const h=await getJSON(API+'/v1/honest'); if(h&&h.locked_formula_count===8) kernelN='8'; }catch(e){}
|
| 1214 |
+
kp.insertAdjacentHTML('beforeend',`<div class="kpi" id="cnt-locked"><div class="k">KERNEL \u00b7 LOCKED-8</div><div class="v" style="color:var(--proof,#3af4c8)">${esc(kernelN)}</div><div class="d">from /honest locked_formula_count \u00b7 not genome catalog</div></div>`);
|
| 1215 |
TIERS.forEach(t=>{ const n=counts[t.key]||0;
|
| 1216 |
+
kp.insertAdjacentHTML('beforeend',`<div class="kpi"><div class="k">${esc(t.label)}</div><div class="v" style="color:${t.color}">${n}</div><div class="d">${t.catalog?'catalog \u00b7 not kernel':(t.conjecture?'open \u00b7 never green':'honest tier')}</div></div>`); });
|
| 1217 |
const isRealLean=(e)=>{ const r=(e.lean_ref||'').trim(); if(!r) return false; if(/open|never green|n\/a|none|\u2014/i.test(r)) return false; return true; };
|
| 1218 |
function rowHTML(e,t){
|
| 1219 |
const real=isRealLean(e) && !t.conjecture;
|
|
|
|
| 1222 |
// Lean chip: green/proof ONLY for proven tiers with a real ref; conjecture & N/A
|
| 1223 |
// get a neutral gray chip carrying the honest text verbatim (e.g. "OPEN \u2014 NEVER green").
|
| 1224 |
const leanChip = e.lean_ref ? (real
|
| 1225 |
+
? `<span class="badge" style="color:#3af4c8;border:1px solid var(--teal-line);background:var(--teal-soft)" title="machine-checkable Lean reference">Lean: ${esc(e.lean_ref)}</span>`
|
| 1226 |
: `<span class="badge" style="color:#9a9a9a;border:1px solid rgba(154,154,154,.35);background:rgba(154,154,154,.05)">${esc(e.lean_ref)}</span>`) : '';
|
| 1227 |
return `<div class="row" style="display:block;border-bottom:1px solid var(--gold-line);padding:.55rem 0">
|
| 1228 |
<div style="display:flex;gap:.5rem;align-items:center;flex-wrap:wrap">
|
|
|
|
| 2468 |
c.innerHTML=`<div class="view-head"><h1 class="view-title">${v.title}</h1><span class="view-badge">${v.badge}</span></div><p class="view-sub">${v.sub}</p><div id="vbody"></div>`;
|
| 2469 |
v.render(el('vbody'));
|
| 2470 |
_szlSpinnerWatchdog(view);
|
| 2471 |
+
try{
|
| 2472 |
+
document.documentElement.setAttribute('data-view', view);
|
| 2473 |
+
var u=new URL(location.href);
|
| 2474 |
+
u.searchParams.set('view', view);
|
| 2475 |
+
if(String(u.hash||'').toLowerCase()==='#investor') u.hash='';
|
| 2476 |
+
else u.hash='';
|
| 2477 |
+
if(history.replaceState) history.replaceState(null,'', u.pathname + u.search);
|
| 2478 |
+
}catch(e){ if(history.replaceState)history.replaceState(null,'','#'+view); }
|
| 2479 |
if(window.innerWidth<=820)toggleSide(false);
|
| 2480 |
}
|
| 2481 |
/* probe-offline-abort: GLOBAL NO-PERPETUAL-SPINNER WATCHDOG.
|
|
|
|
| 2493 |
already carry a working re-probe link; only dead loading skeletons get swept. */
|
| 2494 |
window.__SZL_WATCHDOG_MS=32000;
|
| 2495 |
function _szlHonestChip(){
|
| 2496 |
+
return emptyUnknown('UNKNOWN', 'live source unavailable');
|
| 2497 |
}
|
| 2498 |
function _szlIsSpinnerText(t){
|
| 2499 |
t=(t||'').replace(/\s+/g,' ').trim().toLowerCase();
|
|
|
|
| 2602 |
can override VIEWS[tab].render. const bindings do NOT auto-attach to window, so we do it
|
| 2603 |
explicitly here. This is the single source of truth the batch module mutates in place. */
|
| 2604 |
window.VIEWS=VIEWS; window.go=go;
|
| 2605 |
+
function szlViewFromLocation(){
|
| 2606 |
+
try{ var q=new URLSearchParams(location.search).get('view'); if(q) return q; }catch(e){}
|
| 2607 |
+
try{ if(/[?&]investor=1\b/.test(location.search||'')) return 'investor'; }catch(e){}
|
| 2608 |
+
var h=(location.hash||'').replace(/^#/,'').split('/')[0];
|
| 2609 |
+
if(h) return h;
|
| 2610 |
+
return 'command';
|
| 2611 |
+
}
|
| 2612 |
+
const start=szlViewFromLocation();
|
| 2613 |
/* defer initial render until all inline scripts (helpers + frontier loaders) have executed,
|
| 2614 |
so deep-links to tabs whose loaders live in a later script block resolve correctly */
|
| 2615 |
+
function _bootGo(){
|
| 2616 |
+
var view=(typeof szlViewFromLocation==='function'?szlViewFromLocation():start);
|
| 2617 |
+
function run(){ if(VIEWS[view]){ go(view); return true; } return false; }
|
| 2618 |
+
if(run()) return;
|
| 2619 |
+
var n=0, iv=setInterval(function(){
|
| 2620 |
+
if(run()||n++>80){ clearInterval(iv); if(!VIEWS[view]) go(VIEWS.command?'command':'command'); }
|
| 2621 |
+
},40);
|
| 2622 |
+
}
|
| 2623 |
if(document.readyState==='loading')document.addEventListener('DOMContentLoaded',_bootGo);else setTimeout(_bootGo,0);
|
| 2624 |
</script>
|
| 2625 |
|
|
|
|
| 6541 |
+'<span class="hctr-d">F1\u00b7F4\u00b7F7\u00b7F11\u00b7F12\u00b7F18\u00b7F19\u00b7F22 \u00b7 \u039b=Conjecture 1</span></div>'
|
| 6542 |
+'</div>'
|
| 6543 |
+'<div class="hero-cta">'
|
| 6544 |
+
+'<a class="btn-primary" href="https://a11oy.net" target="_blank" rel="noopener">Verify on a11oy.net</a>'
|
| 6545 |
+
+'<a class="btn-ghost" href="/verify">Verify a receipt</a>'
|
| 6546 |
+
+'<a class="btn-ghost szl-below-fold" href="https://huggingface.co/SZLHOLDINGS/governed-inference-meter" target="_blank" rel="noopener">Pull the kernel</a>'
|
| 6547 |
+'</div></div>'
|
| 6548 |
+'<div class="hero-cards" aria-label="verticals and energy">'
|
| 6549 |
+'<a class="vcard" onclick="go(\'cybSurface\');return false;" href="#cybSurface"><h3>Counter-UAS / killinchu</h3><p>Detection + classification governed, auditable, energy-bounded at the edge.</p><span class="vcard-go mono">whHero \u2192</span></a>'
|
|
|
|
| 6566 |
+kpi('Chain depth','cc-chain','unified receipt ledger','teal')
|
| 6567 |
+kpi('Build security','cc-slsa','SLSA L1 honest; L2 .att emitted (not independently verified) · L3 roadmap','teal')
|
| 6568 |
+'</div>'
|
| 6569 |
+
+card('Rolling receipt stream',''+liveDot()+'live · one tamper-evident chain','<div id="cc-stream">'+skelRows(3)+'</div>')
|
| 6570 |
+
+card('Service health','live probe · <span id="cc-stamp" class="mono dim" style="font-size:10px"></span>','<div class="brain-note" style="margin:.1rem 0 .5rem"><b>How to read “Services up”.</b> This Space runs the <b>governed mesh</b> — the in-image capability mesh is <b>6/6 healthy</b> (Byzantine quorum 4/4 REACHED, see the <b>UDS 4/4 Quorum</b> tab). The heavy <b>organ backends (Reasoning / Policy / Operator / Receipts)</b> run on <b>dedicated infrastructure (roadmap)</b>, so on this demo Space they are shown honestly as <b>not-deployed-here</b> rather than faked “up”. Same truth, two probes: the governed mesh a11oy actually runs on is fully healthy; the organ backends are not deployed on this Space.</div><div id="cc-fleet">'+skelRows(4)+'</div>')
|
| 6571 |
+
+'<div class="grid2 szl-below-fold">'
|
| 6572 |
+card('Trust posture (13-axis Λ)','live '+window.a11oyPoweredBy(['F19','F1']),'<div class="chartbox"><canvas id="cc-radar"></canvas></div>')
|
| 6573 |
+card('Governed throughput by vertical','live · auto-poll','<div class="chartbox"><canvas id="cc-bars"></canvas></div>')
|
| 6574 |
+'</div>'
|
|
|
|
|
|
|
| 6575 |
+'<div class="card"><div class="card-h"><span class="card-t">Governance engine — powered by the proven formulas</span><span class="card-ep">honest maturity labels</span></div>'
|
| 6576 |
+'<div id="cc-formulas"></div></div>'
|
| 6577 |
+HON;
|
|
|
|
| 15960 |
"use strict";
|
| 15961 |
// Ordered spec: [groupLabel, [ [viewKey, icon, label], ... ] ]
|
| 15962 |
var SPEC = [
|
| 15963 |
+
["Home", [
|
| 15964 |
["command","\u25ce","Command Center"],
|
| 15965 |
+
["investor","\u25c7","Investor View"],
|
| 15966 |
+
["mesh","\u22b9","Live System Map"]
|
| 15967 |
+
]],
|
| 15968 |
+
["Operate", [
|
| 15969 |
+
["launcher","\u25a6","App Launcher"],
|
| 15970 |
["ask","\u2726","Ask & Act"],
|
| 15971 |
["demo","\u229e","Run a Demo"],
|
| 15972 |
+
["decision","\u25c8","Governed Decision"]
|
| 15973 |
+
]],
|
| 15974 |
+
["Build", [
|
| 15975 |
+
["llm","\u2687","Model Router"],
|
| 15976 |
+
["alloy","\u2697","Open-Weight Alloy"],
|
| 15977 |
+
["mcp","\u2699","Agent Tools"],
|
| 15978 |
+
["knowledge","\u2b21","Knowledge Ontology"],
|
| 15979 |
+
["genome","\u2b22","Genome"],
|
| 15980 |
+
["kbformulas","\u2211","Formulas"]
|
| 15981 |
+
]],
|
| 15982 |
+
["Observe", [
|
| 15983 |
+
["chain","\u26d3","Receipt Chain"],
|
| 15984 |
+
["evidence","\u2b21","Evidence Ledger"],
|
| 15985 |
+
["replay","\u25f7","Reasoning Replay"],
|
| 15986 |
+
["arena","\u229c","Eval Arena"]
|
| 15987 |
]],
|
| 15988 |
["Govern", [
|
| 15989 |
["lambda","\u25d4","Trust Score"],
|
|
|
|
| 15990 |
["gates","\u22a0","Safety Gates"],
|
| 15991 |
["govern","\u2713","Readiness & Compliance"],
|
| 15992 |
+
["honest","\u2298","What We Claim"],
|
| 15993 |
["willay","\u26e8","WILLAY \u2014 Signed Refusals","/willay"],
|
| 15994 |
+
["verify","\u2713","Verify a Receipt","/verify"]
|
|
|
|
| 15995 |
]],
|
| 15996 |
+
["Research", [
|
| 15997 |
+
["publications","\u25a4","Publications"],
|
| 15998 |
+
["frontier","\u25c8","Frontier Pipeline","/frontier"]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 15999 |
]],
|
| 16000 |
+
["More", [
|
| 16001 |
+
["assurance","\u2713","AI Assurance (WDP)","/assurance"],
|
| 16002 |
+
["energy","\u26a1","Energy Telemetry"],
|
| 16003 |
+
["labs","\u269b","Labs"],
|
| 16004 |
+
["labsintro","\u22b9","Labs \u00b7 what we extend"]
|
| 16005 |
]]
|
| 16006 |
];
|
| 16007 |
|
|
|
|
| 16046 |
|
| 16047 |
// Reflect the currently-active view in the menu (if present).
|
| 16048 |
try{
|
| 16049 |
+
var cur = (typeof szlViewFromLocation==='function'?szlViewFromLocation():(location.hash||'#command').slice(1)).split('/')[0];
|
| 16050 |
var act = side.querySelector('.nav-item[data-view="'+cur+'"]');
|
| 16051 |
if(act){ act.classList.add('active'); act.setAttribute('aria-current','page'); }
|
| 16052 |
}catch(e){}
|
|
|
|
| 16109 |
fetch('/api/a11oy/v1/readiness/tab-matrix?view=summary',{cache:'no-store'}).then(function(r){if(!r.ok)throw new Error();return r.json();})
|
| 16110 |
]).then(function(values){
|
| 16111 |
var health=values[0]||{}, matrix=values[1]||{};
|
| 16112 |
+
var op=document.documentElement.getAttribute('data-operator')==='1';
|
| 16113 |
+
if((health.status==='ok'||health.status==='healthy')&&matrix.available){set('','ONLINE'+(op?(' · CONTRACT '+(matrix.contract_version||'')):''));}
|
| 16114 |
+
else if(health.status==='ok'||health.status==='healthy'){set('degraded', op?'ONLINE · CONTRACT GAP':'ONLINE');}
|
| 16115 |
else{set('degraded','DEGRADED');}
|
| 16116 |
}).catch(function(){set('down','STATUS UNAVAILABLE');});
|
| 16117 |
})();
|
|
|
|
| 16200 |
var host=document.getElementById('pinned-host'); if(!host) return;
|
| 16201 |
var p=getPins().filter(function(k){ return window.VIEWS&&window.VIEWS[k]; });
|
| 16202 |
if(!p.length){ host.innerHTML=''; return; }
|
| 16203 |
+
var cur=window._requestedView||(typeof szlViewFromLocation==='function'?szlViewFromLocation():(location.hash||'#command').slice(1));
|
| 16204 |
var canonicalCurrent=false;
|
| 16205 |
document.querySelectorAll('.nav-item').forEach(function(n){
|
| 16206 |
if(!n.closest('#pinned-host')&&n.dataset.view===cur){ canonicalCurrent=true; }
|
|
|
|
| 16409 |
|
| 16410 |
async function renderPublications(c){
|
| 16411 |
var lockedTxt='8';
|
| 16412 |
+
try{ var h=await window.getJSON(window.API+'/v1/honest'); if(h&&h.locked_formula_count===8) lockedTxt='8'; else lockedTxt='UNAVAILABLE'; }catch(e){ lockedTxt='UNAVAILABLE'; }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 16413 |
var h='<div class="pz-wrap">';
|
| 16414 |
h+='<div class="pz-lead">The shoulders we stand on. SZL’s own program is DOI-pinned on Zenodo; the work it builds on is cited in full with a one-line note on exactly what we adapt. Honest tiers throughout: <b style="color:var(--teal)">'+esc(lockedTxt)+' locked-proven</b> {F1,F4,F7,F11,F12,F18,F19,F22}; Λ-uniqueness = <b style="color:#7e8aa3">Conjecture 1</b> (never green); Khipu BFT safety = Conjecture 2. Every formula’s proof tier is verifiable in <a href="#genome" onclick="go(\'genome\');return false;" style="color:var(--teal)">Genome</a> against <code>/api/a11oy/v1/genome</code>.</div>';
|
| 16415 |
|
|
|
|
| 16663 |
}catch(_){}
|
| 16664 |
}catch(_){}
|
| 16665 |
}
|
| 16666 |
+
function open(){
|
| 16667 |
+
try{ if(window.go) window.go('investor'); else location.href='/console?view=investor'; }catch(_){}
|
| 16668 |
+
}
|
| 16669 |
+
function close(){ try{ if(window.go) window.go('command'); }catch(_){} set(false); }
|
| 16670 |
+
function toggle(){ try{ open(); }catch(_){ } }
|
| 16671 |
try{
|
| 16672 |
document.addEventListener('keydown', function(e){
|
| 16673 |
try{ if(e.key==='Escape'){ close(); } }catch(_){}
|
| 16674 |
});
|
| 16675 |
+
// Compatibility: leftover overlay markup may remain. Deep-links must land
|
| 16676 |
+
// on V.investor via go('investor'), never revive the overlay as destination.
|
| 16677 |
+
// ?view=investor is the alias write path and must not open #inv-overlay.
|
| 16678 |
var q=(window.location.search||''); var h=(window.location.hash||'');
|
| 16679 |
+
var viewQ='';
|
| 16680 |
+
try{ viewQ=new URLSearchParams(q).get('view')||''; }catch(_){}
|
| 16681 |
+
if(viewQ==='investor' || /[?&]investor=1\b/.test(q) || /(^|#)investor$/.test(h)){ open(); }
|
| 16682 |
}catch(_){}
|
| 16683 |
return { open:open, close:close, toggle:toggle };
|
| 16684 |
})();
|
| 16685 |
</script>
|
| 16686 |
+
<script>
|
| 16687 |
+
/* Investor View — first-class in-console VIEW (ÑAWI design lane). Not a density
|
| 16688 |
+
toggle and not a stub page. /investor is a 307 alias onto this chrome
|
| 16689 |
+
(?view=investor). Doctrine, locked-8, one receipt, one Verify CTA, then a11oy.net diligence. */
|
| 16690 |
+
(function(){
|
| 16691 |
+
function whenReady(fn){ if(window.VIEWS){fn();} else { var n=0, iv=setInterval(function(){ if(window.VIEWS||n++>200){clearInterval(iv);fn();} },40); } }
|
| 16692 |
+
whenReady(function(){
|
| 16693 |
+
var V=window.VIEWS; if(!V||V.investor) return;
|
| 16694 |
+
V.investor={
|
| 16695 |
+
title:'Investor View',
|
| 16696 |
+
badge:'DOCTRINE v11 · LOCKED',
|
| 16697 |
+
sub:'Doctrine, the locked-8, one receipt you can verify, then diligence on a11oy.net. Λ = Conjecture 1 (advisory, gray, never a theorem, never a gate).',
|
| 16698 |
+
render:async function(c){
|
| 16699 |
+
var empty = (window.emptyUnknownBlock||function(k,d){ return '<div class="empty-unknown"><span class="empty-unknown-k">'+k+'</span><span class="empty-unknown-d">'+d+'</span></div>'; });
|
| 16700 |
+
c.innerHTML='<div class="card"><div class="card-h"><span class="card-t">Doctrine</span><span class="card-ep mono">v11 LOCKED</span></div>'
|
| 16701 |
+
+'<p>Every governed state change produces a hash-chained receipt. Signing is claimed only when persistent signer evidence is active and verification passes. Read paths never mint receipts.</p>'
|
| 16702 |
+
+'<p class="szl-lambda mono">Λ = Conjecture 1 · advisory, never green, never a theorem, never a gate.</p></div>'
|
| 16703 |
+
+'<div class="card"><div class="card-h"><span class="card-t">Locked-proven</span><span class="card-ep mono">exactly 8</span></div>'
|
| 16704 |
+
+'<p class="mono">{F1, F4, F7, F11, F12, F18, F19, F22}</p>'
|
| 16705 |
+
+'<p class="muted">A proof of rigor, not a traction number. The locked count is not inflated.</p></div>'
|
| 16706 |
+
+'<div class="card"><div class="card-h"><span class="card-t">One receipt</span><span class="card-ep" id="inv-one-ep">probing</span></div>'
|
| 16707 |
+
+'<div id="inv-one-receipt">'+empty('UNKNOWN','live source unavailable')+'</div></div>'
|
| 16708 |
+
+'<div class="btns">'
|
| 16709 |
+
+'<a class="btn teal" href="/verify">Verify a receipt</a>'
|
| 16710 |
+
+'<a class="btn" href="https://a11oy.net" target="_blank" rel="noopener noreferrer">Open diligence on a11oy.net ↗</a>'
|
| 16711 |
+
+'</div>';
|
| 16712 |
+
try{
|
| 16713 |
+
var L = await (window.getJSON||window.gjFast||fetch)('/api/a11oy/v1/wow/ledger?limit=1');
|
| 16714 |
+
if(L && L.then) L = await L;
|
| 16715 |
+
if(L && L.data) L = L.data;
|
| 16716 |
+
var rec=((L&&(L.receipts||L.items))||[])[0];
|
| 16717 |
+
var host=document.getElementById('inv-one-receipt');
|
| 16718 |
+
var ep=document.getElementById('inv-one-ep');
|
| 16719 |
+
if(rec && host){
|
| 16720 |
+
var id=rec.receipt_id||rec.hash||rec.id||'';
|
| 16721 |
+
var st=rec.unsigned?'UNSIGNED':((rec.hash||rec.prev_hash)?'HASH-LINKED':'UNSIGNED');
|
| 16722 |
+
host.innerHTML='<div class="row mono"><span class="badge b-teal">'+st+'</span><span>'+String(id).slice(0,48)+'</span></div>';
|
| 16723 |
+
if(ep) ep.textContent='live ledger';
|
| 16724 |
+
} else {
|
| 16725 |
+
if(ep) ep.textContent='UNAVAILABLE';
|
| 16726 |
+
}
|
| 16727 |
+
}catch(e){
|
| 16728 |
+
var ep2=document.getElementById('inv-one-ep'); if(ep2) ep2.textContent='UNAVAILABLE';
|
| 16729 |
+
}
|
| 16730 |
+
}
|
| 16731 |
+
};
|
| 16732 |
+
});
|
| 16733 |
+
})();
|
| 16734 |
+
</script>
|
| 16735 |
|
| 16736 |
<!-- ===================================================================== -->
|
| 16737 |
<!-- DEV1 WAVE K — GOVERNED FLYWHEEL CONSOLE WIRING (feat/console-flywheel-wire)
|
pages/observability.html
CHANGED
|
@@ -14,13 +14,14 @@
|
|
| 14 |
<style>
|
| 15 |
/* a11oy house style — dark-constellation + gold/teal ribbon (matches /warhacker /superpowers) */
|
| 16 |
:root{
|
| 17 |
-
--
|
| 18 |
-
--
|
| 19 |
-
--
|
| 20 |
-
--
|
| 21 |
-
--
|
| 22 |
-
--
|
| 23 |
-
--
|
|
|
|
| 24 |
--mono:'JetBrains Mono',ui-monospace,SFMono-Regular,monospace;
|
| 25 |
--display:'Space Grotesk',Georgia,serif;
|
| 26 |
}
|
|
@@ -65,8 +66,8 @@
|
|
| 65 |
.support{font-size:16px;line-height:1.65;color:var(--paragraph);max-width:46rem;margin:0 auto 2rem;}
|
| 66 |
.support b{color:var(--cream);font-weight:500;}
|
| 67 |
.runall{display:inline-flex;align-items:center;gap:.5rem;padding:.7rem 1.5rem;font-size:12.5px;
|
| 68 |
-
font-weight:500;font-family:var(--mono);border-radius:8px;border:1px solid var(--
|
| 69 |
-
background:var(--
|
| 70 |
.runall:hover{background:var(--gold-bright);}
|
| 71 |
.runall:disabled{opacity:.5;cursor:not-allowed;}
|
| 72 |
.stats{display:flex;flex-wrap:wrap;justify-content:center;gap:.75rem;max-width:62rem;margin:2rem auto 0;}
|
|
@@ -91,7 +92,7 @@
|
|
| 91 |
.r-btn:hover{background:rgba(201,183,135,.08);border-color:rgba(201,183,135,.35);}
|
| 92 |
.r-btn:active{opacity:.75;}
|
| 93 |
.r-btn:disabled{opacity:.4;cursor:not-allowed;}
|
| 94 |
-
.r-btn-primary{background:var(--
|
| 95 |
.r-btn-primary:hover{background:var(--gold-bright);border-color:var(--gold-bright);}
|
| 96 |
.metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.75rem;margin-bottom:1rem;}
|
| 97 |
.metric{border:1px solid var(--gold-line);border-radius:8px;background:var(--panel2);padding:.8rem .9rem;}
|
|
@@ -125,7 +126,9 @@
|
|
| 125 |
.out-pre{margin:0;padding:.85rem;font-family:var(--mono);font-size:10.5px;line-height:1.6;
|
| 126 |
color:var(--paragraph);white-space:pre-wrap;word-break:break-word;max-height:340px;overflow-y:auto;
|
| 127 |
scrollbar-width:thin;scrollbar-color:var(--dim) transparent;}
|
| 128 |
-
.out-pre:empty::before{content:"
|
|
|
|
|
|
|
| 129 |
/* signed span list */
|
| 130 |
.spans{display:flex;flex-direction:column;gap:.4rem;margin-bottom:1rem;}
|
| 131 |
.span{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;font-family:var(--mono);font-size:10.5px;
|
|
|
|
| 14 |
<style>
|
| 15 |
/* a11oy house style — dark-constellation + gold/teal ribbon (matches /warhacker /superpowers) */
|
| 16 |
:root{
|
| 17 |
+
--void:#080c14; --proof:#3af4c8; --lattice:#5b8dee;
|
| 18 |
+
--ground:#080c14; --panel:#0e1626; --panel2:#0a1019;
|
| 19 |
+
--gold:#d7b96b; --gold-bright:#e4c97a;
|
| 20 |
+
--teal:#3af4c8; --teal-soft:rgba(58,244,200,0.10);
|
| 21 |
+
--cream:#eef4fb; --paragraph:#aebccf; --muted:#7d8aa0; --dim:#65788f;
|
| 22 |
+
--gold-line:rgba(215,185,107,0.18); --gold-soft:rgba(215,185,107,0.05);
|
| 23 |
+
--teal-line:rgba(58,244,200,0.22);
|
| 24 |
+
--live:#3af4c8; --err:#e8746e; --warn:#d7b96b;
|
| 25 |
--mono:'JetBrains Mono',ui-monospace,SFMono-Regular,monospace;
|
| 26 |
--display:'Space Grotesk',Georgia,serif;
|
| 27 |
}
|
|
|
|
| 66 |
.support{font-size:16px;line-height:1.65;color:var(--paragraph);max-width:46rem;margin:0 auto 2rem;}
|
| 67 |
.support b{color:var(--cream);font-weight:500;}
|
| 68 |
.runall{display:inline-flex;align-items:center;gap:.5rem;padding:.7rem 1.5rem;font-size:12.5px;
|
| 69 |
+
font-weight:500;font-family:var(--mono);border-radius:8px;border:1px solid var(--teal);
|
| 70 |
+
background:var(--teal);color:var(--ground);cursor:pointer;letter-spacing:.06em;margin-top:.5rem;}
|
| 71 |
.runall:hover{background:var(--gold-bright);}
|
| 72 |
.runall:disabled{opacity:.5;cursor:not-allowed;}
|
| 73 |
.stats{display:flex;flex-wrap:wrap;justify-content:center;gap:.75rem;max-width:62rem;margin:2rem auto 0;}
|
|
|
|
| 92 |
.r-btn:hover{background:rgba(201,183,135,.08);border-color:rgba(201,183,135,.35);}
|
| 93 |
.r-btn:active{opacity:.75;}
|
| 94 |
.r-btn:disabled{opacity:.4;cursor:not-allowed;}
|
| 95 |
+
.r-btn-primary{background:var(--teal);color:var(--ground);border-color:var(--teal);}
|
| 96 |
.r-btn-primary:hover{background:var(--gold-bright);border-color:var(--gold-bright);}
|
| 97 |
.metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.75rem;margin-bottom:1rem;}
|
| 98 |
.metric{border:1px solid var(--gold-line);border-radius:8px;background:var(--panel2);padding:.8rem .9rem;}
|
|
|
|
| 126 |
.out-pre{margin:0;padding:.85rem;font-family:var(--mono);font-size:10.5px;line-height:1.6;
|
| 127 |
color:var(--paragraph);white-space:pre-wrap;word-break:break-word;max-height:340px;overflow-y:auto;
|
| 128 |
scrollbar-width:thin;scrollbar-color:var(--dim) transparent;}
|
| 129 |
+
.out-pre:empty::before{content:"";}.out-pre:empty{min-height:120px;background:transparent;}
|
| 130 |
+
.out-pre:empty::after{content:"UNAVAILABLE — DAG 0 / IDLE. No live Khipu DAG to read.";
|
| 131 |
+
display:block;padding:.9rem;color:var(--gold);font-family:var(--mono);font-size:12px;letter-spacing:.06em;}
|
| 132 |
/* signed span list */
|
| 133 |
.spans{display:flex;flex-direction:column;gap:.4rem;margin-bottom:1rem;}
|
| 134 |
.span{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;font-family:var(--mono);font-size:10.5px;
|
serve.py
CHANGED
|
@@ -12432,12 +12432,16 @@ try:
|
|
| 12432 |
# serves them with the correct JS content-type so the console can import
|
| 12433 |
# window.SZLLabels / SZLReceipts / SZLCodenames. 0 CDN — served from the image.
|
| 12434 |
_SHARED_DIR = Path("/app/static/shared")
|
|
|
|
|
|
|
| 12435 |
_SHARED_ALLOW = {
|
| 12436 |
"szl_label_engine.js": _VENDOR_JS_CT,
|
| 12437 |
"szl_receipt_cosign.js": _VENDOR_JS_CT,
|
| 12438 |
"szl_codename_sanitizer.js": _VENDOR_JS_CT,
|
| 12439 |
# Lane F1: the shared 3D/holographic substrate kit (byte-identical a11oy<->killinchu).
|
| 12440 |
"szl_holo3d.js": _VENDOR_JS_CT,
|
|
|
|
|
|
|
| 12441 |
}
|
| 12442 |
|
| 12443 |
@app.get("/static/shared/{fname}")
|
|
@@ -12498,6 +12502,9 @@ try:
|
|
| 12498 |
p = request.url.path
|
| 12499 |
if p.startswith("/vendor/") or p.startswith("/api/") or p.startswith("/assets/"):
|
| 12500 |
return resp
|
|
|
|
|
|
|
|
|
|
| 12501 |
body = b""
|
| 12502 |
async for chunk in resp.body_iterator:
|
| 12503 |
body += chunk if isinstance(chunk, (bytes, bytearray)) else str(chunk).encode()
|
|
@@ -12573,7 +12580,9 @@ async def spa_root():
|
|
| 12573 |
if not _cp.is_file():
|
| 12574 |
continue
|
| 12575 |
_data = _cp.read_bytes()
|
| 12576 |
-
|
|
|
|
|
|
|
| 12577 |
if b'</body>' in _data:
|
| 12578 |
_data = _data.replace(b'</body>', _SPA_TAG + b'</body>', 1)
|
| 12579 |
elif b'</html>' in _data:
|
|
@@ -12851,6 +12860,16 @@ for _cc_path in ("/command", "/command-center"):
|
|
| 12851 |
app.add_api_route(_cc_path, _command_center_redirect, methods=["GET"], include_in_schema=False)
|
| 12852 |
|
| 12853 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 12854 |
# /pinn — Physical-Bounds Certifier surface (distinct from /pinn-console).
|
| 12855 |
# Served from pages/pinn.html (COPYed wholesale by `COPY pages/ ./pages/`).
|
| 12856 |
@app.get("/pinn")
|
|
|
|
| 12432 |
# serves them with the correct JS content-type so the console can import
|
| 12433 |
# window.SZLLabels / SZLReceipts / SZLCodenames. 0 CDN — served from the image.
|
| 12434 |
_SHARED_DIR = Path("/app/static/shared")
|
| 12435 |
+
if not _SHARED_DIR.is_dir():
|
| 12436 |
+
_SHARED_DIR = Path(__file__).resolve().parent / "static" / "shared"
|
| 12437 |
_SHARED_ALLOW = {
|
| 12438 |
"szl_label_engine.js": _VENDOR_JS_CT,
|
| 12439 |
"szl_receipt_cosign.js": _VENDOR_JS_CT,
|
| 12440 |
"szl_codename_sanitizer.js": _VENDOR_JS_CT,
|
| 12441 |
# Lane F1: the shared 3D/holographic substrate kit (byte-identical a11oy<->killinchu).
|
| 12442 |
"szl_holo3d.js": _VENDOR_JS_CT,
|
| 12443 |
+
"szl_command_bar.js": _VENDOR_JS_CT,
|
| 12444 |
+
"szl_command_bar.css": _VENDOR_CSS_CT,
|
| 12445 |
}
|
| 12446 |
|
| 12447 |
@app.get("/static/shared/{fname}")
|
|
|
|
| 12502 |
p = request.url.path
|
| 12503 |
if p.startswith("/vendor/") or p.startswith("/api/") or p.startswith("/assets/"):
|
| 12504 |
return resp
|
| 12505 |
+
# Public product front door: do not inject the operator widget.
|
| 12506 |
+
if p == "/" or p == "/landing":
|
| 12507 |
+
return resp
|
| 12508 |
body = b""
|
| 12509 |
async for chunk in resp.body_iterator:
|
| 12510 |
body += chunk if isinstance(chunk, (bytes, bytearray)) else str(chunk).encode()
|
|
|
|
| 12580 |
if not _cp.is_file():
|
| 12581 |
continue
|
| 12582 |
_data = _cp.read_bytes()
|
| 12583 |
+
# Public front door: do not bake the operator widget into landing.
|
| 12584 |
+
_is_public_front = _cp.name in {"a11oy_landing.html", "landing.html"}
|
| 12585 |
+
if (not _is_public_front) and b'a11oy-operator-widget.js' not in _data:
|
| 12586 |
if b'</body>' in _data:
|
| 12587 |
_data = _data.replace(b'</body>', _SPA_TAG + b'</body>', 1)
|
| 12588 |
elif b'</html>' in _data:
|
|
|
|
| 12860 |
app.add_api_route(_cc_path, _command_center_redirect, methods=["GET"], include_in_schema=False)
|
| 12861 |
|
| 12862 |
|
| 12863 |
+
# /investor — alias onto the same console chrome (Investor View). No stub page,
|
| 12864 |
+
# no second IA. SPA catch-all would otherwise swallow this path as a soft HTML
|
| 12865 |
+
# 200. Registered BEFORE /{full_path:path}. 307 matches /command and /ungoverned.
|
| 12866 |
+
async def _investor_view_redirect() -> Response:
|
| 12867 |
+
return _PTG_Redirect(url="/console?view=investor", status_code=307)
|
| 12868 |
+
|
| 12869 |
+
|
| 12870 |
+
app.add_api_route("/investor", _investor_view_redirect, methods=["GET"], include_in_schema=False)
|
| 12871 |
+
|
| 12872 |
+
|
| 12873 |
# /pinn — Physical-Bounds Certifier surface (distinct from /pinn-console).
|
| 12874 |
# Served from pages/pinn.html (COPYed wholesale by `COPY pages/ ./pages/`).
|
| 12875 |
@app.get("/pinn")
|
tools/readiness-harness/tabs.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
| 3 |
"doctrine": "v11",
|
| 4 |
"organ": "a11oy",
|
| 5 |
"consoleRoute": "/console",
|
| 6 |
-
"generatedAt": "2026-08-
|
| 7 |
"generator": "tools/readiness-harness/gen_tabs_matrix.py",
|
| 8 |
"stateVocabulary": {
|
| 9 |
"LIVE": "Fetched from a running source during this session; reachability is not proof of correctness.",
|
|
@@ -15,10 +15,10 @@
|
|
| 15 |
"UNAVAILABLE": "The source or evidence is not available; no replacement value is fabricated."
|
| 16 |
},
|
| 17 |
"summary": {
|
| 18 |
-
"tabs":
|
| 19 |
"endpoints": 98,
|
| 20 |
"tabsWithCitations": 35,
|
| 21 |
-
"staticTabs":
|
| 22 |
},
|
| 23 |
"endpoints": {
|
| 24 |
"/api/a11oy/v1/lambda": {
|
|
@@ -3975,6 +3975,21 @@
|
|
| 3975 |
"failOnMissingCitation": false
|
| 3976 |
}
|
| 3977 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3978 |
{
|
| 3979 |
"key": "kamay",
|
| 3980 |
"title": "KAMAY — Agentic Coding",
|
|
|
|
| 3 |
"doctrine": "v11",
|
| 4 |
"organ": "a11oy",
|
| 5 |
"consoleRoute": "/console",
|
| 6 |
+
"generatedAt": "2026-08-28T00:00:00Z",
|
| 7 |
"generator": "tools/readiness-harness/gen_tabs_matrix.py",
|
| 8 |
"stateVocabulary": {
|
| 9 |
"LIVE": "Fetched from a running source during this session; reachability is not proof of correctness.",
|
|
|
|
| 15 |
"UNAVAILABLE": "The source or evidence is not available; no replacement value is fabricated."
|
| 16 |
},
|
| 17 |
"summary": {
|
| 18 |
+
"tabs": 140,
|
| 19 |
"endpoints": 98,
|
| 20 |
"tabsWithCitations": 35,
|
| 21 |
+
"staticTabs": 41
|
| 22 |
},
|
| 23 |
"endpoints": {
|
| 24 |
"/api/a11oy/v1/lambda": {
|
|
|
|
| 3975 |
"failOnMissingCitation": false
|
| 3976 |
}
|
| 3977 |
},
|
| 3978 |
+
{
|
| 3979 |
+
"key": "investor",
|
| 3980 |
+
"title": "investor",
|
| 3981 |
+
"group": "Console",
|
| 3982 |
+
"route": "/console#investor",
|
| 3983 |
+
"endpoints": [],
|
| 3984 |
+
"citationsRequired": false,
|
| 3985 |
+
"sampleLabelAllowed": false,
|
| 3986 |
+
"static": true,
|
| 3987 |
+
"degradedRules": {
|
| 3988 |
+
"allowSampleLabel": false,
|
| 3989 |
+
"failOnUnlabeledPlaceholder": true,
|
| 3990 |
+
"failOnMissingCitation": false
|
| 3991 |
+
}
|
| 3992 |
+
},
|
| 3993 |
{
|
| 3994 |
"key": "kamay",
|
| 3995 |
"title": "KAMAY — Agentic Coding",
|
web/trust.html
CHANGED
|
@@ -182,8 +182,9 @@ footer .wrap{display:flex;justify-content:space-between;flex-wrap:wrap;gap:14px}
|
|
| 182 |
<div class="wrap">
|
| 183 |
<span class="brand"><span class="dot"></span>a11oy</span>
|
| 184 |
<nav class="top">
|
| 185 |
-
<a href="/console">
|
| 186 |
-
<a href="/
|
|
|
|
| 187 |
<a href="/proof">Proof</a>
|
| 188 |
<a href="/verify">Verify</a>
|
| 189 |
<a href="/trust" aria-current="page" style="color:var(--ink)">Trust</a>
|
|
@@ -430,6 +431,9 @@ function kernelFromHonest(h){
|
|
| 430 |
$('cnt-locked').firstChild.nodeValue=(kernelCount==null)?'N/A':kernelCount;
|
| 431 |
|
| 432 |
try{
|
|
|
|
|
|
|
|
|
|
| 433 |
const g=await getJSON('/api/a11oy/v1/genome');
|
| 434 |
const tc=g.tier_counts||{};
|
| 435 |
$('cnt-semantic').firstChild.nodeValue=(tc['SEMANTIC-VERIFIED']??'N/A');
|
|
@@ -441,7 +445,8 @@ function kernelFromHonest(h){
|
|
| 441 |
const gTotEl=$('cnt-genome-total');
|
| 442 |
if(gTotEl) gTotEl.textContent=(g.count==null)?'N/A':g.count;
|
| 443 |
const naExtra=(tc['honest-N/A']!=null)?(' · '+tc['honest-N/A']+' honest-N/A'):'';
|
| 444 |
-
|
|
|
|
| 445 |
$('d-genome').classList.add('up');
|
| 446 |
|
| 447 |
const allowed=new Set(kernelIds);
|
|
@@ -478,7 +483,7 @@ function kernelFromHonest(h){
|
|
| 478 |
(proves?'<div class="proves">'+proves+'</div>':'')+lean+'</div></div>';
|
| 479 |
}).join('') : '<div class="frow sem"><div class="id">N/A</div><div><div class="name">No SEMANTIC-VERIFIED entries returned — genome unavailable.</div></div></div>';
|
| 480 |
}catch(e){
|
| 481 |
-
$('genome-src').textContent='
|
| 482 |
for(const id of ['cnt-semantic','cnt-evidence','cnt-conjecture'])
|
| 483 |
$(id).firstChild.nodeValue='N/A';
|
| 484 |
$('d-genome').classList.add('down');
|
|
|
|
| 182 |
<div class="wrap">
|
| 183 |
<span class="brand"><span class="dot"></span>a11oy</span>
|
| 184 |
<nav class="top">
|
| 185 |
+
<a href="/console">Command</a>
|
| 186 |
+
<a href="https://a11oy.net" target="_blank" rel="noopener noreferrer">Proof registry ↗</a>
|
| 187 |
+
<a href="/console?view=genome">Genome</a>
|
| 188 |
<a href="/proof">Proof</a>
|
| 189 |
<a href="/verify">Verify</a>
|
| 190 |
<a href="/trust" aria-current="page" style="color:var(--ink)">Trust</a>
|
|
|
|
| 431 |
$('cnt-locked').firstChild.nodeValue=(kernelCount==null)?'N/A':kernelCount;
|
| 432 |
|
| 433 |
try{
|
| 434 |
+
const h=await getJSON('/api/a11oy/v1/honest');
|
| 435 |
+
const kernel=(h&&h.locked_formula_count===8)?8:null;
|
| 436 |
+
$('cnt-locked').firstChild.nodeValue=(kernel==null?'N/A':kernel);
|
| 437 |
const g=await getJSON('/api/a11oy/v1/genome');
|
| 438 |
const tc=g.tier_counts||{};
|
| 439 |
$('cnt-semantic').firstChild.nodeValue=(tc['SEMANTIC-VERIFIED']??'N/A');
|
|
|
|
| 445 |
const gTotEl=$('cnt-genome-total');
|
| 446 |
if(gTotEl) gTotEl.textContent=(g.count==null)?'N/A':g.count;
|
| 447 |
const naExtra=(tc['honest-N/A']!=null)?(' · '+tc['honest-N/A']+' honest-N/A'):'';
|
| 448 |
+
const cat=tc['LOCKED-PROVEN'];
|
| 449 |
+
$('genome-src').textContent='Kernel locked_formula_count='+(kernel==null?'N/A':kernel)+' from /api/a11oy/v1/honest {F1,F4,F7,F11,F12,F18,F19,F22}. Genome catalog LOCKED-PROVEN='+(cat??'N/A')+' (catalog, not kernel). Lean-8 is not genome-144. Genome entries: '+(g.count??'?')+naExtra+'.';
|
| 450 |
$('d-genome').classList.add('up');
|
| 451 |
|
| 452 |
const allowed=new Set(kernelIds);
|
|
|
|
| 483 |
(proves?'<div class="proves">'+proves+'</div>':'')+lean+'</div></div>';
|
| 484 |
}).join('') : '<div class="frow sem"><div class="id">N/A</div><div><div class="name">No SEMANTIC-VERIFIED entries returned — genome unavailable.</div></div></div>';
|
| 485 |
}catch(e){
|
| 486 |
+
$('genome-src').textContent='Honest/genome probe UNAVAILABLE ('+e.message+') — counts shown as N/A, never fabricated.';
|
| 487 |
for(const id of ['cnt-semantic','cnt-evidence','cnt-conjecture'])
|
| 488 |
$(id).firstChild.nodeValue='N/A';
|
| 489 |
$('d-genome').classList.add('down');
|