betterwithage Claude Opus 4.7 commited on
Commit
761fe7c
·
verified ·
1 Parent(s): d504010

deploy(hf): sync szl-holdings/a11oy@c038cc952b5adffeb6a7bc1a1328100464996745 derived COPY set

Browse files

Reusable 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 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
- semantic: tc["SEMANTIC-VERIFIED"],
996
- evidence: tc["evidence-backed"],
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
- await loadKernelLocked();
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
- if _SPEC_MARKER not in body and _SPEC_ANCHOR in body:
 
 
 
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
- --ground:#0a0a0a; --panel:#0e0e0e; --panel2:#080808; --rail:#0b0b0b;
27
- --gold:#c9b787; --gold-bright:#d6c69a;
28
- --teal:#5fb3a3; --teal-soft:rgba(95,179,163,0.10);
 
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:#0a0a0a;font-weight:700;font-family:var(--mono);}
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='#c9b787',TEAL='#5fb3a3',CREAM='#f5f5f5',DIM='#555',GRID='rgba(201,183,135,0.08)';
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
- --ground:#0a0a0a; --panel:#0e0e0e; --panel2:#080808; --rail:#0b0b0b;
54
- --gold:#c9b787; --gold-bright:#d6c69a;
55
- --teal:#5fb3a3; --teal-soft:rgba(95,179,163,0.10);
56
- --cream:#f5f5f5; --paragraph:#9a9a9a; --muted:#888; --dim:#9a9a9a;
57
- --gold-line:rgba(201,183,135,0.15); --gold-soft:rgba(201,183,135,0.04);
58
- --teal-line:rgba(95,179,163,0.22);
59
- --live:#5a8a6e; --err:#b06a5a; --warn:#c9a05f;
 
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:39px;min-height:39px;max-height:39px;overflow-x:auto;overflow-y:hidden;white-space:nowrap;
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:#0A0D12; --surf:#141820; --surf2:#0e1217;
493
- --line:#222833;
494
- --ink:#e8edf2; --ink-dim:#9aa3ad; --ink-faint:#6b727c;
495
- --blue:#2563EB; --red:#b06a5a;
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
- --ground:#0a0f1e;
506
- --panel:#1b222c;
 
 
 
507
  --gold:#d7b96b;
508
- --gold-line:#c08f2f;
509
- --cream:#f5f7fa;
510
- --teal:#168f89;
511
- --live:#1f9d57;
512
- --line:#3c4757;
 
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:#2563EB;border-color:#2563EB}
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:#0a0a0a;color:#f5f5f5;display:flex;flex-direction:column;align-items:center;justify-content:center;font-family:'Space Grotesk',Georgia,serif;-webkit-font-smoothing:antialiased;">
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,#c9b787,#5fb3a3);color:#0a0a0a;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:26px;line-height:1;box-shadow:0 0 22px rgba(95,179,163,.28);">A</div>
606
  <div style="text-align:left;">
607
- <div style="font-size:13px;letter-spacing:.18em;color:#888;font-family:'JetBrains Mono',ui-monospace,monospace;">SZL HOLDINGS</div>
608
- <div style="font-size:21px;font-weight:600;color:#c9b787;line-height:1.15;">a11oy</div>
609
  </div>
610
  </div>
611
- <div style="margin-top:26px;width:168px;height:3px;border-radius:3px;background:rgba(201,183,135,.14);overflow:hidden;">
612
- <div id="szl-bg-bar" style="height:100%;width:38%;border-radius:3px;background:linear-gradient(90deg,#5fb3a3,#c9b787);"></div>
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&hellip;</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
- <span>SZL HOLDINGS</span><span class="sep">/</span>
678
- <span style="color:var(--teal)">a11oy</span><span class="sep">/</span>
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 honestDegraded(label){ return '<span class="badge b-gold" title="This metric cannot be observed from this Space right now — shown honestly as not-available rather than faked.">'+(label||'not available right now')+'</span>'; }
 
 
 
 
 
 
 
 
 
 
 
 
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:'#5fb3a3',line:'rgba(95,179,163,0.45)',soft:'rgba(95,179,163,0.08)',green:true,desc:'Formally proven in Lean 4 (kernel-checked). The locked kernel is exactly 8 {F1,F4,F7,F11,F12,F18,F19,F22}; other proven rows are experimental CI-green, never folded into the locked count.'},
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:'#c9b787',line:'rgba(201,183,135,0.4)',soft:'rgba(201,183,135,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.'},
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.green?'Lean-proven':(t.conjecture?'open \u00b7 never green':'honest tier')}</div></div>`); });
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:#5fb3a3;border:1px solid var(--teal-line);background:var(--teal-soft)" title="machine-checkable Lean reference">Lean: ${esc(e.lean_ref)}</span>`
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
- if(history.replaceState)history.replaceState(null,'','#'+view);
 
 
 
 
 
 
 
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 '<span class="badge b-gold" title="This panel\'s live source did not resolve within its timeout from this Space right now \u2014 shown honestly as a labeled fallback rather than a spinner or a faked value. The server proxy serves it live in-deployment; retry to re-probe.">live source unavailable \u2014 showing sample / snapshot</span>';
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
- const start=(location.hash||'#command').slice(1);
 
 
 
 
 
 
 
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(){go(VIEWS[start]?start:'command');}
 
 
 
 
 
 
 
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&nbsp;1</span></div>'
6504
  +'</div>'
6505
  +'<div class="hero-cta">'
6506
- +'<a class="btn-primary" href="https://huggingface.co/SZLHOLDINGS/governed-inference-meter" target="_blank" rel="noopener">Pull the kernel</a>'
6507
- +'<a class="btn-ghost" href="#evidence" onclick="go(\'evidence\');return false;">Read the method</a>'
 
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 class="grid2">'
 
 
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
- ["Operate", [
15925
  ["command","\u25ce","Command Center"],
 
 
 
 
 
15926
  ["ask","\u2726","Ask & Act"],
15927
  ["demo","\u229e","Run a Demo"],
15928
- ["mesh","\u22b9","Live System Map"]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
- ["Prove", [
15940
- ["chain","\u26d3","Receipt Chain"],
15941
- ["replay","\u25f7","Reasoning Replay"],
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
- ["Models & Tools", [
15951
- ["llm","\u2687","Model Router"],
15952
- ["alloy","\u2697","Open-Weight Alloy"],
15953
- ["mcp","\u2699","Agent Tools"]
 
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
- if((health.status==='ok'||health.status==='healthy')&&matrix.available){set('','ONLINE · CONTRACT '+(matrix.contract_version||''));}
16062
- else if(health.status==='ok'||health.status==='healthy'){set('degraded','ONLINE · CONTRACT GAP');}
 
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(){ set(true); }
16621
- function close(){ set(false); }
16622
- function toggle(){ try{ var o=el(); set(!(o&&o.classList.contains('open'))); }catch(_){ } }
 
 
16623
  try{
16624
  document.addEventListener('keydown', function(e){
16625
  try{ if(e.key==='Escape'){ close(); } }catch(_){}
16626
  });
16627
- // Auto-open on deep-link so a shared investor link lands on the story.
 
 
16628
  var q=(window.location.search||''); var h=(window.location.hash||'');
16629
- if(/[?&]investor=1\b/.test(q) || /(^|#)investor$/.test(h)){ open(); }
 
 
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&hellip;</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&nbsp;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
- --ground:#0a0a0a; --panel:#0c0c0c; --panel2:#070707;
18
- --gold:#c9b787; --gold-bright:#d6c69a;
19
- --teal:#5fb3a3; --teal-soft:rgba(95,179,163,0.10);
20
- --cream:#f5f5f5; --paragraph:#9a9a9a; --muted:#888; --dim:#555;
21
- --gold-line:rgba(201,183,135,0.15); --gold-soft:rgba(201,183,135,0.04);
22
- --teal-line:rgba(95,179,163,0.22);
23
- --live:#5a8a6e; --err:#b06a5a; --warn:#c9b787;
 
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(--gold);
69
- background:var(--gold);color:var(--ground);cursor:pointer;letter-spacing:.06em;margin-top:.5rem;}
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(--gold);color:var(--ground);border-color:var(--gold);}
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:"— run this query to read the live Khipu DAG —";color:var(--dim);font-style:italic;}
 
 
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
- if b'a11oy-operator-widget.js' not in _data:
 
 
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-11T00: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,10 +15,10 @@
15
  "UNAVAILABLE": "The source or evidence is not available; no replacement value is fabricated."
16
  },
17
  "summary": {
18
- "tabs": 139,
19
  "endpoints": 98,
20
  "tabsWithCitations": 35,
21
- "staticTabs": 40
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">Console</a>
186
- <a href="/console#genome">Genome</a>
 
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
- $('genome-src').textContent='Kernel locked-proven = '+(kernelCount??'N/A')+' from /api/a11oy/v1/honest. Genome catalog from /api/a11oy/v1/genome — '+(g.count??'?')+' entries · LOCKED-PROVEN tag = '+(genomeLp??'N/A')+' (catalog, not the kernel, never green)'+naExtra+'. Counts are not hard-coded; this page re-reads them on every load.';
 
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='Genome endpoint UNAVAILABLE ('+e.message+') — catalog counts shown as N/A, never fabricated. Kernel chip is from /honest, not genome.';
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');