Spaces:
Running
Running
F5: /constitution /quant /estate-hologram 3D sovereign surfaces (additive, image-only)
Browse filesF1 3D/holographic substrate kit — direct Space push (byte-identical to a11oy). Doctrine v11: locked=8 @ c7c0ba17; Lambda=Conjecture 1; 0 CDN.
- .github/copy-sync-lockstep.json +51 -0
- Dockerfile +10 -0
- serve.py +30 -0
- web/constitution.html +240 -0
- web/estate-hologram.html +291 -0
- web/quant.html +256 -0
.github/copy-sync-lockstep.json
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"_comment": "Config for tools/check_copy_sync_lockstep.py (Doctrine v11). image_only_assets are non-.py assets brought in by an EXPLICIT per-file Dockerfile COPY that are INTENTIONALLY baked into the HF image and NOT re-mirrored by hf-sync. Per hf-sync.yml's own documented rationale, the built SPA bundles + vendored 3rd-party blobs (large/possibly-LFS) already live resident on the Space; re-syncing them reintroduces the LFS/pre-receive failures. Each exemption is named here EXPLICITLY (reviewed escape hatch, never a silent skip). A NEW per-file served asset that is neither mirrored by hf-sync nor listed here will FAIL CHECK 3 \u2014 that is the guard working. To make a new served file go live on HF, add it to hf-sync.yml's mirror set; only list it here if it is a baked-only vendor/SPA blob.",
|
| 3 |
+
"_doctrine": "locked=8 @ c7c0ba17 \u00b7 Lambda=Conjecture 1 \u00b7 v11",
|
| 4 |
+
"mirror_asset_exts": [
|
| 5 |
+
".html",
|
| 6 |
+
".js",
|
| 7 |
+
".css"
|
| 8 |
+
],
|
| 9 |
+
"image_only_assets": [
|
| 10 |
+
"a11oy_code_ide.html",
|
| 11 |
+
"agent.html",
|
| 12 |
+
"live_wires.html",
|
| 13 |
+
"live_wires_3d.js",
|
| 14 |
+
"static-vendor/3d-force-graph.min.js",
|
| 15 |
+
"static-vendor/a11oy-operator-widget.css",
|
| 16 |
+
"static-vendor/a11oy-operator-widget.js",
|
| 17 |
+
"static-vendor/chart.umd.min.js",
|
| 18 |
+
"static-vendor/cytoscape-dagre.js",
|
| 19 |
+
"static-vendor/cytoscape.min.js",
|
| 20 |
+
"static-vendor/d3-sankey.min.js",
|
| 21 |
+
"static-vendor/d3.min.js",
|
| 22 |
+
"static-vendor/dagre.min.js",
|
| 23 |
+
"static-vendor/echarts-gl.min.js",
|
| 24 |
+
"static-vendor/echarts.min.js",
|
| 25 |
+
"static-vendor/globe.gl.min.js",
|
| 26 |
+
"static-vendor/katex.min.css",
|
| 27 |
+
"static-vendor/katex.min.js",
|
| 28 |
+
"static-vendor/ngraph.events.umd.js",
|
| 29 |
+
"static-vendor/ngraph.forcelayout.min.js",
|
| 30 |
+
"static-vendor/ngraph.graph.min.js",
|
| 31 |
+
"static-vendor/ngraph.path.min.js",
|
| 32 |
+
"static-vendor/panzoom.min.js",
|
| 33 |
+
"static-vendor/three.min.js",
|
| 34 |
+
"static-vendor/vivagraph.min.js",
|
| 35 |
+
"static/a11oy_operator_organ.js",
|
| 36 |
+
"static/vendor3d/OrbitControls.js",
|
| 37 |
+
"static/vendor3d/three.module.min.js",
|
| 38 |
+
"web/autoreview.html",
|
| 39 |
+
"web/constitution.html",
|
| 40 |
+
"web/estate-hologram.html",
|
| 41 |
+
"web/fleet-c2.html",
|
| 42 |
+
"web/formulas.html",
|
| 43 |
+
"web/governance.html",
|
| 44 |
+
"web/holo.html",
|
| 45 |
+
"web/quant.html",
|
| 46 |
+
"web/living-anatomy.html",
|
| 47 |
+
"web/nemo.html",
|
| 48 |
+
"web/operator.html",
|
| 49 |
+
"web/v4_fleet_panel.html"
|
| 50 |
+
]
|
| 51 |
+
}
|
Dockerfile
CHANGED
|
@@ -324,6 +324,16 @@ COPY web/nemo.html ./web/nemo.html
|
|
| 324 |
# .github/copy-sync-lockstep.json image_only_assets; baked into the GitHub-built image,
|
| 325 |
# live after a factory rebuild). Without this COPY /holo would 404 to the SPA shell.
|
| 326 |
COPY web/holo.html ./web/holo.html
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 327 |
# ADDITIVE (Lane A AGENTIC CORE, Dev A, 2026-06-14; QA9 restore 2026-06): the
|
| 328 |
# resumable ReAct agent-loop core module. Per-file COPY (this Dockerfile uses no
|
| 329 |
# COPY . .). a11oy_react_core.py is imported by serve.py (try/except guarded) and
|
|
|
|
| 324 |
# .github/copy-sync-lockstep.json image_only_assets; baked into the GitHub-built image,
|
| 325 |
# live after a factory rebuild). Without this COPY /holo would 404 to the SPA shell.
|
| 326 |
COPY web/holo.html ./web/holo.html
|
| 327 |
+
# ADDITIVE (Lane F5, 2026-06-14): the three sovereign 3D surfaces served at
|
| 328 |
+
# /constitution, /quant and /estate-hologram (+ /a11oy/* aliases) via _ptg_serve.
|
| 329 |
+
# Each loads the shared kit /static/shared/szl_holo3d.js (0 CDN) and reads its live
|
| 330 |
+
# /api/a11oy/v1/{constitution,quant,ecosystem,engine}/* feeds. image-only like the
|
| 331 |
+
# other web/*.html demo pages (declared in copy-sync-lockstep.json image_only_assets;
|
| 332 |
+
# baked into the GitHub-built image, live after a factory rebuild + direct Space push).
|
| 333 |
+
# Without these COPYs the routes 404 to the SPA shell.
|
| 334 |
+
COPY web/constitution.html ./web/constitution.html
|
| 335 |
+
COPY web/quant.html ./web/quant.html
|
| 336 |
+
COPY web/estate-hologram.html ./web/estate-hologram.html
|
| 337 |
# ADDITIVE (Lane A AGENTIC CORE, Dev A, 2026-06-14; QA9 restore 2026-06): the
|
| 338 |
# resumable ReAct agent-loop core module. Per-file COPY (this Dockerfile uses no
|
| 339 |
# COPY . .). a11oy_react_core.py is imported by serve.py (try/except guarded) and
|
serve.py
CHANGED
|
@@ -995,6 +995,36 @@ try:
|
|
| 995 |
app.add_api_route("/holo", _ptg_serve("holo.html"), methods=["GET"], include_in_schema=False)
|
| 996 |
app.add_api_route("/a11oy/holo", _ptg_serve("holo.html"), methods=["GET"], include_in_schema=False)
|
| 997 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 998 |
# /chat + /a11oy/chat -> /code consolidation (founder-directed; the only removal).
|
| 999 |
async def _ptg_chat_to_code() -> Response:
|
| 1000 |
return _PTG_Redirect(url="/code", status_code=302)
|
|
|
|
| 995 |
app.add_api_route("/holo", _ptg_serve("holo.html"), methods=["GET"], include_in_schema=False)
|
| 996 |
app.add_api_route("/a11oy/holo", _ptg_serve("holo.html"), methods=["GET"], include_in_schema=False)
|
| 997 |
|
| 998 |
+
# ADDITIVE (Lane F5, 2026-06-14): three sovereign 3D surfaces that render on the
|
| 999 |
+
# shared holographic kit (/static/shared/szl_holo3d.js, 0 runtime CDN):
|
| 1000 |
+
# /constitution — 3D ontology ORGANISM: 8 pillars + live constitutional
|
| 1001 |
+
# engines as a causal graph, animated causal-edge pulses,
|
| 1002 |
+
# time-slider ledger replay, TrustGraph/Letta memory cores.
|
| 1003 |
+
# Reads LIVE /api/a11oy/v1/constitution/{status,ledger,audit,
|
| 1004 |
+
# memory,ontology,state}. Deeper R&D honest ROADMAP. NOT AGI.
|
| 1005 |
+
# /quant — 3D portfolio risk landscape (PCA eigen-spectrum) with Betti
|
| 1006 |
+
# FRACTURE TEARS (TDA β1 cycles), HJB-Kelly rebalancing bars,
|
| 1007 |
+
# and the signed energy receipt. Reads LIVE /api/a11oy/v1/
|
| 1008 |
+
# quant/{pca,tda,kelly,pipeline}. Honest SAMPLE_SIGNAL |
|
| 1009 |
+
# NOT_LIVE | NO_BACKTEST_VALIDATED; GPU path ROADMAP.
|
| 1010 |
+
# /estate-hologram — THE UNIFIED ESTATE HOLOGRAM: globe + proof-DAG + Λ trust-
|
| 1011 |
+
# sphere + mesh organism + constitutional pillars on ONE
|
| 1012 |
+
# canvas; every signed cross-surface decision flows as LIGHT
|
| 1013 |
+
# (kit signed-pulse). Reads LIVE estate Λ + KPIs (ecosystem/
|
| 1014 |
+
# kpi-board), the engine organism (engine/status), and per-
|
| 1015 |
+
# surface signed receipts. Cross-surface receipt aggregation
|
| 1016 |
+
# is honest SAMPLE where not fully wired. locked = EXACTLY 8
|
| 1017 |
+
# @ c7c0ba17; Λ = Conjecture 1 (< 1.0); 0 visible codenames.
|
| 1018 |
+
# image-only like the other web/*.html demo pages (Dockerfile per-file COPY +
|
| 1019 |
+
# copy-sync-lockstep.json image_only_assets); also pushed direct-to-Space so they
|
| 1020 |
+
# are live immediately. Without these COPYs the routes 404 to the SPA shell.
|
| 1021 |
+
app.add_api_route("/constitution", _ptg_serve("constitution.html"), methods=["GET"], include_in_schema=False)
|
| 1022 |
+
app.add_api_route("/a11oy/constitution", _ptg_serve("constitution.html"), methods=["GET"], include_in_schema=False)
|
| 1023 |
+
app.add_api_route("/quant", _ptg_serve("quant.html"), methods=["GET"], include_in_schema=False)
|
| 1024 |
+
app.add_api_route("/a11oy/quant", _ptg_serve("quant.html"), methods=["GET"], include_in_schema=False)
|
| 1025 |
+
app.add_api_route("/estate-hologram", _ptg_serve("estate-hologram.html"), methods=["GET"], include_in_schema=False)
|
| 1026 |
+
app.add_api_route("/a11oy/estate-hologram", _ptg_serve("estate-hologram.html"), methods=["GET"], include_in_schema=False)
|
| 1027 |
+
|
| 1028 |
# /chat + /a11oy/chat -> /code consolidation (founder-directed; the only removal).
|
| 1029 |
async def _ptg_chat_to_code() -> Response:
|
| 1030 |
return _PTG_Redirect(url="/code", status_code=302)
|
web/constitution.html
ADDED
|
@@ -0,0 +1,240 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
+
<!-- SPDX-License-Identifier: Apache-2.0 © 2026 SZL Holdings
|
| 3 |
+
/constitution — CONSTITUTIONAL 3D ONTOLOGY ORGANISM (Lane F5).
|
| 4 |
+
Renders the live constitutional architecture as a 3D organism on the shared
|
| 5 |
+
holographic kit (/static/shared/szl_holo3d.js, 0 runtime CDN):
|
| 6 |
+
- ontology ORGANISM: the 8 constitutional pillars + the live engines as
|
| 7 |
+
nodes, causal edges between them, animated causal-edge pulses
|
| 8 |
+
- TIME-SLIDER replay of the causal ledger
|
| 9 |
+
- MEMORY-BLOCK view (TrustGraph-style Context Cores: pin/promote/rollback)
|
| 10 |
+
Reads LIVE: /api/a11oy/v1/constitution/{status,ledger,audit,memory,ontology,state}.
|
| 11 |
+
The causal ledger + audit + memory + ontology endpoints are LIVE; deeper
|
| 12 |
+
constitutional R&D (phenomenology / immunology engines) is honest ROADMAP.
|
| 13 |
+
Citations (build references, no runtime calls): Palantir Ontology, TrustGraph
|
| 14 |
+
(Apache-2.0), Letta (MemGPT memory blocks), Anthropic Constitutional AI.
|
| 15 |
+
DOCTRINE v11: 0 runtime CDN · Λ = Conjecture 1 (<1.0) · trust < 100% ·
|
| 16 |
+
0 visible codenames · honest LIVE/SAMPLE/ROADMAP labels · never claims AGI. -->
|
| 17 |
+
<html lang="en">
|
| 18 |
+
<head>
|
| 19 |
+
<meta charset="utf-8">
|
| 20 |
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
| 21 |
+
<title>SZL · Constitutional Organism</title>
|
| 22 |
+
<style>
|
| 23 |
+
:root{--bg:#03060d;--panel:#0a1326;--ink:#cfe6ff;--mut:#86a4c9;--line:rgba(120,170,230,.18);
|
| 24 |
+
--ok:#46d39a;--warn:#ffcf5c;--bad:#ff6b6b;--accent:#7fd4ff;}
|
| 25 |
+
*{box-sizing:border-box}
|
| 26 |
+
html,body{margin:0;height:100%;background:var(--bg);color:var(--ink);
|
| 27 |
+
font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;}
|
| 28 |
+
header{padding:14px 20px;border-bottom:1px solid var(--line);display:flex;
|
| 29 |
+
align-items:center;gap:14px;flex-wrap:wrap;}
|
| 30 |
+
header h1{font-size:15px;margin:0;letter-spacing:.06em;font-weight:600;}
|
| 31 |
+
header .sub{font-size:11px;color:var(--mut);}
|
| 32 |
+
.wrap{display:grid;grid-template-columns:1fr;gap:14px;padding:16px 20px;max-width:1280px;margin:0 auto;}
|
| 33 |
+
.stage{height:60vh;min-height:380px;border:1px solid var(--line);border-radius:14px;overflow:hidden;
|
| 34 |
+
box-shadow:0 0 60px rgba(40,90,160,.12) inset;}
|
| 35 |
+
.grid2{display:grid;grid-template-columns:1.3fr 1fr;gap:14px;}
|
| 36 |
+
.panel{border:1px solid var(--line);border-radius:12px;padding:12px 14px;background:rgba(10,19,38,.5);}
|
| 37 |
+
.panel h2{font-size:12px;margin:0 0 8px;letter-spacing:.06em;color:#bfe0ff;}
|
| 38 |
+
.btn{background:rgba(70,150,230,.16);border:1px solid rgba(120,180,240,.4);color:#cfe6ff;
|
| 39 |
+
border-radius:8px;padding:6px 12px;font:inherit;font-size:12px;cursor:pointer;}
|
| 40 |
+
.btn:hover{background:rgba(70,150,230,.3);}
|
| 41 |
+
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap;}
|
| 42 |
+
.mut{color:var(--mut);font-size:11px;}
|
| 43 |
+
a{color:#7fd4ff;}
|
| 44 |
+
.badge{display:inline-block;padding:1px 7px;border-radius:6px;font-size:10px;font-weight:600;
|
| 45 |
+
background:rgba(70,150,230,.18);border:1px solid rgba(120,180,240,.35);color:#bfe0ff;}
|
| 46 |
+
.badge.live{background:rgba(70,211,154,.16);border-color:rgba(70,211,154,.4);color:#9af0cf;}
|
| 47 |
+
.badge.roadmap{background:rgba(255,180,90,.16);border-color:rgba(255,190,110,.4);color:#ffd9a8;}
|
| 48 |
+
table{width:100%;border-collapse:collapse;font-size:11px;}
|
| 49 |
+
td,th{text-align:left;padding:3px 6px;border-bottom:1px solid rgba(120,170,230,.1);}
|
| 50 |
+
th{color:var(--mut);font-weight:600;}
|
| 51 |
+
.mem-block{border:1px solid var(--line);border-radius:10px;padding:8px 10px;margin-bottom:8px;
|
| 52 |
+
background:rgba(10,19,38,.6);}
|
| 53 |
+
.mem-block .t{font-size:11px;color:#bfe0ff;}
|
| 54 |
+
.dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px;vertical-align:middle;}
|
| 55 |
+
@media(max-width:820px){.grid2{grid-template-columns:1fr;}}
|
| 56 |
+
</style>
|
| 57 |
+
</head>
|
| 58 |
+
<body>
|
| 59 |
+
<header>
|
| 60 |
+
<h1>SZL · CONSTITUTIONAL ORGANISM</h1>
|
| 61 |
+
<span class="sub">3D ontology · causal-ledger replay · memory cores · 0 runtime CDN · honest 2D fallback</span>
|
| 62 |
+
<span id="caps" class="sub"></span>
|
| 63 |
+
</header>
|
| 64 |
+
|
| 65 |
+
<div class="wrap">
|
| 66 |
+
<div class="panel">
|
| 67 |
+
<h2>WHAT THIS IS</h2>
|
| 68 |
+
<div class="mut">A governed, auditable, policy-enforced agent runtime rendered as a 3D
|
| 69 |
+
<strong>ontology organism</strong> — the 8 constitutional pillars and the live constitutional
|
| 70 |
+
engines as a living causal graph. The <strong>Causal Ledger, Audit, Memory and Ontology</strong>
|
| 71 |
+
engines read <span class="badge live">LIVE</span> from <code>/api/a11oy/v1/constitution/*</code>.
|
| 72 |
+
Deeper constitutional R&D (phenomenology / immunology) is honest <span class="badge roadmap">ROADMAP</span>.
|
| 73 |
+
This is <strong>NOT a new form of existence and NOT an AGI</strong>. Λ is
|
| 74 |
+
<strong>Conjecture 1</strong> (a bounded score < 1.0, not a theorem); trust is never 100%.</div>
|
| 75 |
+
</div>
|
| 76 |
+
|
| 77 |
+
<div id="stage" class="stage"></div>
|
| 78 |
+
|
| 79 |
+
<div class="panel">
|
| 80 |
+
<div class="row">
|
| 81 |
+
<button class="btn" id="signBtn">EMIT CAUSAL EVENT → pulse</button>
|
| 82 |
+
<button class="btn" id="playBtn">▶ REPLAY LEDGER</button>
|
| 83 |
+
<span id="status" class="mut">loading live constitutional state…</span>
|
| 84 |
+
</div>
|
| 85 |
+
</div>
|
| 86 |
+
|
| 87 |
+
<div class="grid2">
|
| 88 |
+
<div class="panel">
|
| 89 |
+
<h2>CONSTITUTIONAL ENGINES <span id="engBadge" class="badge live">LIVE</span></h2>
|
| 90 |
+
<div id="engines" class="mut">…</div>
|
| 91 |
+
</div>
|
| 92 |
+
<div class="panel">
|
| 93 |
+
<h2>MEMORY CORES <span class="badge">TrustGraph · Letta pattern</span></h2>
|
| 94 |
+
<div class="mut" style="margin-bottom:8px">Context Cores — pin (protect) · promote (set active) · rollback (restore prior as NEW version, append-only).</div>
|
| 95 |
+
<div id="memory"></div>
|
| 96 |
+
</div>
|
| 97 |
+
</div>
|
| 98 |
+
|
| 99 |
+
<div class="panel">
|
| 100 |
+
<h2>STATECHART <span class="badge">a11oy_agent</span></h2>
|
| 101 |
+
<div id="statechart" class="mut">…</div>
|
| 102 |
+
</div>
|
| 103 |
+
|
| 104 |
+
<div class="panel mut">
|
| 105 |
+
Build references (no runtime calls): Palantir Ontology
|
| 106 |
+
(<a href="https://www.palantir.com/platforms/foundry/ontology/">palantir.com</a>),
|
| 107 |
+
TrustGraph (<a href="https://trustgraph.ai">trustgraph.ai</a>, Apache-2.0),
|
| 108 |
+
Letta / MemGPT memory blocks (<a href="https://github.com/letta-ai/letta">letta-ai/letta</a>),
|
| 109 |
+
Anthropic Constitutional AI (arXiv:2212.08073), W3C PROV-DM.
|
| 110 |
+
Causal ledger is event-sourced + PROV-annotated; the 3D organism reads it live.
|
| 111 |
+
</div>
|
| 112 |
+
</div>
|
| 113 |
+
|
| 114 |
+
<script src="/static/shared/szl_label_engine.js"></script>
|
| 115 |
+
<script src="/static/shared/szl_holo3d.js"></script>
|
| 116 |
+
<script>
|
| 117 |
+
(function () {
|
| 118 |
+
var API = "/api/a11oy/v1/constitution/";
|
| 119 |
+
var stageEl = document.getElementById("stage");
|
| 120 |
+
if (!window.SZLHolo) {
|
| 121 |
+
stageEl.innerHTML = '<div style="padding:20px;color:#ffd9a8">SZLHolo kit failed to load.</div>';
|
| 122 |
+
return;
|
| 123 |
+
}
|
| 124 |
+
var caps = window.SZLHolo.capabilities();
|
| 125 |
+
document.getElementById("caps").textContent =
|
| 126 |
+
"renderer: " + caps.mode.toUpperCase() + (caps.webgpu ? " · WebGPU detected (ROADMAP)" : "");
|
| 127 |
+
|
| 128 |
+
// ---- 3D ontology organism: 8 pillars (inner ring) + live engines (outer) ----
|
| 129 |
+
var PILLARS = ["Ontology","Phenomenology","Temporality","Legitimacy",
|
| 130 |
+
"Immunology","Energy Economics","Topology","Governance"];
|
| 131 |
+
var nodes = [], edges = [];
|
| 132 |
+
// central CONSTITUTION nucleus
|
| 133 |
+
nodes.push({ id:"core", label:"CONSTITUTION", pos:[0,0,0], locked:true });
|
| 134 |
+
// pillars around a ring
|
| 135 |
+
PILLARS.forEach(function (p, i) {
|
| 136 |
+
var a = (i/PILLARS.length)*Math.PI*2;
|
| 137 |
+
nodes.push({ id:"p"+i, label:p, pos:[1.25*Math.cos(a), 0.15*Math.sin(i*1.7), 1.25*Math.sin(a)],
|
| 138 |
+
lambda: 0.30 + 0.04*i });
|
| 139 |
+
edges.push({ id:"ce"+i, from:"core", to:"p"+i });
|
| 140 |
+
});
|
| 141 |
+
var scene = window.SZLHolo.createScene(stageEl, { title:"CONSTITUTIONAL ONTOLOGY ORGANISM", lambda:0.34 });
|
| 142 |
+
var graph = scene.addGraph({ nodes: nodes, edges: edges });
|
| 143 |
+
scene.addTrustSphere({ center:[0,-1.15,0], radius:0.42, label:"ESTATE TRUST" });
|
| 144 |
+
// gentle causal pulses on a couple of pillar edges (animated causal edges)
|
| 145 |
+
scene.signPulse("ce2", { loop:true, duration:1900 }); // Temporality (ledger)
|
| 146 |
+
scene.signPulse("ce7", { loop:true, duration:2300 }); // Governance (audit)
|
| 147 |
+
var slider = scene.timeSlider({ from:0, to:100, onTime:function(){} });
|
| 148 |
+
scene.start();
|
| 149 |
+
|
| 150 |
+
document.getElementById("signBtn").addEventListener("click", function () {
|
| 151 |
+
// pulse a random pillar edge — represents a signed causal event being recorded
|
| 152 |
+
var i = Math.floor(Math.random()*PILLARS.length);
|
| 153 |
+
scene.signPulse("ce"+i, { duration:1200, color:"#aef6ff" });
|
| 154 |
+
});
|
| 155 |
+
var replaying=false;
|
| 156 |
+
document.getElementById("playBtn").addEventListener("click", function () {
|
| 157 |
+
if (replaying || !slider) return; replaying=true;
|
| 158 |
+
var v=0; var iv=setInterval(function(){ v+=0.04; slider.set(v); if(v>=1){clearInterval(iv);replaying=false;} },70);
|
| 159 |
+
});
|
| 160 |
+
|
| 161 |
+
function getJSON(path){ return fetch(API+path).then(function(r){return r.ok?r.json():null;}).catch(function(){return null;}); }
|
| 162 |
+
function esc(s){return String(s==null?"":s).replace(/[&<>"]/g,function(c){return({'&':'&','<':'<','>':'>','"':'"'})[c];});}
|
| 163 |
+
|
| 164 |
+
// ---- live engines list + drive the organism's per-pillar Λ from live status ----
|
| 165 |
+
getJSON("status").then(function(st){
|
| 166 |
+
if(!st){ document.getElementById("engines").textContent="status feed unavailable (honest: not fabricated)."; return; }
|
| 167 |
+
var engines = st.engines || [];
|
| 168 |
+
var html = '<table><tr><th>Engine</th><th>Status</th><th>Pillar</th><th>Live</th></tr>';
|
| 169 |
+
engines.forEach(function(e){
|
| 170 |
+
var col = e.color==="green" ? "var(--ok)" : (e.color==="amber"?"var(--warn)":"var(--bad)");
|
| 171 |
+
html += '<tr><td>'+esc(e.engine)+'</td>'+
|
| 172 |
+
'<td><span class="dot" style="background:'+col+'"></span>'+esc(e.status)+'</td>'+
|
| 173 |
+
'<td>'+esc((e.pillars||[])[1]||"")+'</td>'+
|
| 174 |
+
'<td>'+esc(e.live_count)+'</td></tr>';
|
| 175 |
+
});
|
| 176 |
+
html += '</table>';
|
| 177 |
+
document.getElementById("engines").innerHTML = html;
|
| 178 |
+
document.getElementById("status").textContent =
|
| 179 |
+
"LIVE constitutional status · "+engines.length+" engines · concept: "+esc((st.concept_origin||"").slice(0,40));
|
| 180 |
+
});
|
| 181 |
+
|
| 182 |
+
// ---- ledger (causal events) drive the replay reveal ----
|
| 183 |
+
getJSON("ledger").then(function(ld){
|
| 184 |
+
if(!ld) return;
|
| 185 |
+
var n = ld.count||0;
|
| 186 |
+
document.getElementById("playBtn").textContent = "▶ REPLAY LEDGER ("+n+" events)";
|
| 187 |
+
});
|
| 188 |
+
|
| 189 |
+
// ---- memory cores view (TrustGraph Context Cores / Letta blocks) ----
|
| 190 |
+
getJSON("memory").then(function(mm){
|
| 191 |
+
var el = document.getElementById("memory");
|
| 192 |
+
if(!mm){ el.textContent="memory feed unavailable."; return; }
|
| 193 |
+
var cores = mm.cores || {};
|
| 194 |
+
var keys = Object.keys(cores);
|
| 195 |
+
if(!keys.length){
|
| 196 |
+
el.innerHTML = '<div class="mem-block"><div class="t">No Context Cores pinned yet '+
|
| 197 |
+
'<span class="badge live">LIVE · 0 cores</span></div>'+
|
| 198 |
+
'<div class="mut">Model: '+esc(mm.model)+'. Cores appear here as doctrine/decision '+
|
| 199 |
+
'versions are pinned/promoted (append-only).</div></div>';
|
| 200 |
+
return;
|
| 201 |
+
}
|
| 202 |
+
el.innerHTML = keys.map(function(k){
|
| 203 |
+
var c = cores[k];
|
| 204 |
+
return '<div class="mem-block"><div class="t">'+esc(k)+'</div>'+
|
| 205 |
+
'<div class="mut">'+esc(JSON.stringify(c).slice(0,120))+'</div></div>';
|
| 206 |
+
}).join("");
|
| 207 |
+
});
|
| 208 |
+
|
| 209 |
+
// ---- ontology entities -> extend the organism with live entity nodes ----
|
| 210 |
+
getJSON("ontology").then(function(on){
|
| 211 |
+
if(!on) return;
|
| 212 |
+
var ents = on.entities || {}; var keys = Object.keys(ents).slice(0,6);
|
| 213 |
+
keys.forEach(function(k,i){
|
| 214 |
+
var a=(i/Math.max(1,keys.length))*Math.PI*2;
|
| 215 |
+
graph.nodes.push({ id:"ent"+i, label:esc(k), pos:[1.9*Math.cos(a),0.6,1.9*Math.sin(a)], lambda:0.4 });
|
| 216 |
+
});
|
| 217 |
+
});
|
| 218 |
+
|
| 219 |
+
// ---- statechart ----
|
| 220 |
+
getJSON("state").then(function(sc){
|
| 221 |
+
var el = document.getElementById("statechart");
|
| 222 |
+
if(!sc || !sc.statechart){ el.textContent="state feed unavailable."; return; }
|
| 223 |
+
var states = sc.statechart.states || {};
|
| 224 |
+
el.innerHTML = "<strong>"+esc(sc.statechart.id)+"</strong> · initial="+esc(sc.statechart.initial)+
|
| 225 |
+
" · states: "+Object.keys(states).map(esc).join(" → ");
|
| 226 |
+
});
|
| 227 |
+
|
| 228 |
+
// ---- audit integrity readout ----
|
| 229 |
+
getJSON("audit").then(function(au){
|
| 230 |
+
if(!au) return;
|
| 231 |
+
var s = " · audit: chain "+(au.chain_intact?"INTACT":"BROKEN")+
|
| 232 |
+
", "+au.events_audited+" events ("+esc(au.trust_note||"").slice(0,40)+"…)";
|
| 233 |
+
document.getElementById("engBadge").textContent = au.chain_intact ? "LIVE · CHAIN INTACT" : "LIVE";
|
| 234 |
+
});
|
| 235 |
+
|
| 236 |
+
window.__SZL_CONSTITUTION_READY = true;
|
| 237 |
+
})();
|
| 238 |
+
</script>
|
| 239 |
+
</body>
|
| 240 |
+
</html>
|
web/estate-hologram.html
ADDED
|
@@ -0,0 +1,291 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
+
<!-- SPDX-License-Identifier: Apache-2.0 © 2026 SZL Holdings
|
| 3 |
+
/estate-hologram — THE UNIFIED ESTATE HOLOGRAM (Lane F5 — the demo centerpiece).
|
| 4 |
+
ONE holographic canvas where the whole SZL estate coexists on the shared kit
|
| 5 |
+
(/static/shared/szl_holo3d.js, 0 runtime CDN):
|
| 6 |
+
- the GLOBE (estate surfaces as geo-nodes)
|
| 7 |
+
- the PROOF-DAG (signed-decision pipeline: ingest→verify→policy→classify→sign→receipt)
|
| 8 |
+
- the Λ TRUST-SPHERE (morphs with the LIVE estate Λ from the KPI board)
|
| 9 |
+
- the MESH (the agentic-GPU organism: mind + 6 organs from engine/status)
|
| 10 |
+
- the constitutional ORGANISM (pillars), and the quant fracture node
|
| 11 |
+
EVERY signed decision flows as LIGHT through the graph (kit signed-pulse): when a
|
| 12 |
+
cross-surface receipt is signed, a light packet travels the proof-DAG.
|
| 13 |
+
Reads LIVE: /api/a11oy/v1/ecosystem/kpi-board (estate Λ + 13 trust axes + locked-8),
|
| 14 |
+
/api/a11oy/v1/engine/status (mind/6-organs/energy/swarm), and cross-surface signed
|
| 15 |
+
receipts from /api/a11oy/v1/quant/pipeline + /api/a11oy/v1/constitution/ledger.
|
| 16 |
+
HONEST: estate Λ + KPIs + the engine organism are LIVE; cross-surface receipt
|
| 17 |
+
AGGREGATION is partly SAMPLE (the per-surface receipts are live, the unified
|
| 18 |
+
cross-surface receipt stream is illustrative SAMPLE where not fully wired).
|
| 19 |
+
DOCTRINE v11: 0 runtime CDN · locked = EXACTLY 8 @ c7c0ba17 · Λ = Conjecture 1
|
| 20 |
+
(<1.0) · trust < 100% · 0 visible codenames · honest LIVE/SAMPLE labels ·
|
| 21 |
+
never claims cert / AGI / live-trading. -->
|
| 22 |
+
<html lang="en">
|
| 23 |
+
<head>
|
| 24 |
+
<meta charset="utf-8">
|
| 25 |
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
| 26 |
+
<title>SZL · Unified Estate Hologram</title>
|
| 27 |
+
<style>
|
| 28 |
+
:root{--bg:#03060d;--panel:#0a1326;--ink:#cfe6ff;--mut:#86a4c9;--line:rgba(120,170,230,.18);
|
| 29 |
+
--ok:#46d39a;--warn:#ffcf5c;--bad:#ff6b6b;--accent:#7fd4ff;}
|
| 30 |
+
*{box-sizing:border-box}
|
| 31 |
+
html,body{margin:0;height:100%;background:var(--bg);color:var(--ink);
|
| 32 |
+
font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;}
|
| 33 |
+
header{padding:14px 20px;border-bottom:1px solid var(--line);display:flex;
|
| 34 |
+
align-items:center;gap:14px;flex-wrap:wrap;}
|
| 35 |
+
header h1{font-size:16px;margin:0;letter-spacing:.07em;font-weight:700;
|
| 36 |
+
background:linear-gradient(90deg,#7fd4ff,#aef6ff,#9af0cf);-webkit-background-clip:text;background-clip:text;color:transparent;}
|
| 37 |
+
header .sub{font-size:11px;color:var(--mut);}
|
| 38 |
+
.wrap{display:grid;grid-template-columns:1fr;gap:14px;padding:14px 18px;max-width:1400px;margin:0 auto;}
|
| 39 |
+
.stage{height:70vh;min-height:460px;border:1px solid var(--line);border-radius:16px;overflow:hidden;
|
| 40 |
+
box-shadow:0 0 90px rgba(40,90,160,.18) inset, 0 0 40px rgba(40,90,160,.1);position:relative;}
|
| 41 |
+
.overlay{position:absolute;top:12px;right:14px;z-index:8;text-align:right;pointer-events:none;}
|
| 42 |
+
.overlay .lam{font-size:30px;font-weight:800;line-height:1;text-shadow:0 2px 12px rgba(0,0,0,.7);}
|
| 43 |
+
.overlay .lab{font-size:10px;color:var(--mut);}
|
| 44 |
+
.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;}
|
| 45 |
+
.panel{border:1px solid var(--line);border-radius:12px;padding:12px 14px;background:rgba(10,19,38,.5);}
|
| 46 |
+
.panel h2{font-size:11px;margin:0 0 8px;letter-spacing:.06em;color:#bfe0ff;}
|
| 47 |
+
.btn{background:rgba(70,150,230,.16);border:1px solid rgba(120,180,240,.4);color:#cfe6ff;
|
| 48 |
+
border-radius:8px;padding:6px 12px;font:inherit;font-size:12px;cursor:pointer;}
|
| 49 |
+
.btn:hover{background:rgba(70,150,230,.3);}
|
| 50 |
+
.btn.hero{background:linear-gradient(90deg,rgba(70,150,230,.3),rgba(70,211,154,.25));font-weight:600;}
|
| 51 |
+
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap;}
|
| 52 |
+
.mut{color:var(--mut);font-size:11px;}
|
| 53 |
+
a{color:#7fd4ff;}
|
| 54 |
+
.badge{display:inline-block;padding:1px 7px;border-radius:6px;font-size:10px;font-weight:600;
|
| 55 |
+
background:rgba(70,150,230,.18);border:1px solid rgba(120,180,240,.35);color:#bfe0ff;}
|
| 56 |
+
.badge.live{background:rgba(70,211,154,.16);border-color:rgba(70,211,154,.4);color:#9af0cf;}
|
| 57 |
+
.badge.sample{background:rgba(255,180,90,.16);border-color:rgba(255,190,110,.4);color:#ffd9a8;}
|
| 58 |
+
.stat{display:flex;justify-content:space-between;font-size:11px;padding:2px 0;border-bottom:1px solid rgba(120,170,230,.08);}
|
| 59 |
+
.axis{display:flex;justify-content:space-between;font-size:10px;padding:1px 0;}
|
| 60 |
+
.tape{font-size:10px;max-height:150px;overflow:auto;}
|
| 61 |
+
.tape .r{padding:3px 0;border-bottom:1px solid rgba(120,170,230,.08);}
|
| 62 |
+
.dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:5px;}
|
| 63 |
+
@media(max-width:1000px){.grid{grid-template-columns:repeat(2,1fr);}}
|
| 64 |
+
@media(max-width:560px){.grid{grid-template-columns:1fr;}}
|
| 65 |
+
</style>
|
| 66 |
+
</head>
|
| 67 |
+
<body>
|
| 68 |
+
<header>
|
| 69 |
+
<h1>SZL · UNIFIED ESTATE HOLOGRAM</h1>
|
| 70 |
+
<span class="sub">globe · proof-DAG · Λ trust-sphere · mesh · organism — ONE canvas · signed-decision light-flow · 0 runtime CDN</span>
|
| 71 |
+
<span id="caps" class="sub"></span>
|
| 72 |
+
</header>
|
| 73 |
+
|
| 74 |
+
<div class="wrap">
|
| 75 |
+
<div class="panel">
|
| 76 |
+
<div class="mut">The whole estate on one holographic canvas. The estate <strong>Λ</strong> and KPIs
|
| 77 |
+
and the agentic-GPU <strong>organism</strong> (mind + 6 organs) are <span class="badge live">LIVE</span>
|
| 78 |
+
from <code>/api/a11oy/v1/ecosystem/kpi-board</code> + <code>/engine/status</code>. Every signed
|
| 79 |
+
cross-surface decision flows as <strong>light</strong> through the proof-DAG. The unified
|
| 80 |
+
cross-surface receipt stream is partly <span class="badge sample">SAMPLE</span> (per-surface receipts
|
| 81 |
+
are live; the aggregated stream is illustrative where not yet fully wired). locked = EXACTLY 8 @
|
| 82 |
+
<code>c7c0ba17</code>. Λ = Conjecture 1 (< 1.0); trust never 100%. NOT a cert, NOT an AGI.</div>
|
| 83 |
+
</div>
|
| 84 |
+
|
| 85 |
+
<div class="stage" style="position:relative">
|
| 86 |
+
<div id="stage" style="position:absolute;inset:0"></div>
|
| 87 |
+
<div class="overlay">
|
| 88 |
+
<div id="lamBig" class="lam" style="color:#9af0cf">Λ —</div>
|
| 89 |
+
<div class="lab">ESTATE Λ · Conjecture 1 (<1.0) · trust <100%</div>
|
| 90 |
+
</div>
|
| 91 |
+
</div>
|
| 92 |
+
|
| 93 |
+
<div class="panel">
|
| 94 |
+
<div class="row">
|
| 95 |
+
<button class="btn hero" id="signBtn">SIGN A CROSS-SURFACE DECISION → light-flow</button>
|
| 96 |
+
<button class="btn" id="autoBtn">▶ AUTO DECISION STREAM</button>
|
| 97 |
+
<span id="status" class="mut">loading the live estate…</span>
|
| 98 |
+
</div>
|
| 99 |
+
</div>
|
| 100 |
+
|
| 101 |
+
<div class="grid">
|
| 102 |
+
<div class="panel">
|
| 103 |
+
<h2>ESTATE Λ <span id="lamBadge" class="badge live">LIVE</span></h2>
|
| 104 |
+
<div id="lamPanel" class="mut">…</div>
|
| 105 |
+
</div>
|
| 106 |
+
<div class="panel">
|
| 107 |
+
<h2>TRUST AXES <span class="badge live">13</span></h2>
|
| 108 |
+
<div id="axes" class="mut">…</div>
|
| 109 |
+
</div>
|
| 110 |
+
<div class="panel">
|
| 111 |
+
<h2>ORGANISM <span id="orgBadge" class="badge live">engine/status</span></h2>
|
| 112 |
+
<div id="organism" class="mut">…</div>
|
| 113 |
+
</div>
|
| 114 |
+
<div class="panel">
|
| 115 |
+
<h2>SIGNED DECISIONS <span class="badge sample">cross-surface</span></h2>
|
| 116 |
+
<div id="tape" class="tape mut">…</div>
|
| 117 |
+
</div>
|
| 118 |
+
</div>
|
| 119 |
+
|
| 120 |
+
<div class="panel mut">
|
| 121 |
+
LIVE feeds: estate Λ / KPI board, the engine organism status, the GPU-quant signed receipt, and
|
| 122 |
+
the constitutional causal ledger. Cross-surface receipt aggregation is partly <span class="badge sample">SAMPLE</span>.
|
| 123 |
+
Renders on the shared holographic substrate (vendored locally, 0 runtime CDN, WebGL2 baseline,
|
| 124 |
+
honest 2D fallback). Build refs: Palantir Foundry/Gotham, TrustGraph, deck.gl, CesiumJS, three.js.
|
| 125 |
+
</div>
|
| 126 |
+
</div>
|
| 127 |
+
|
| 128 |
+
<script src="/static/shared/szl_label_engine.js"></script>
|
| 129 |
+
<script src="/static/shared/szl_holo3d.js"></script>
|
| 130 |
+
<script>
|
| 131 |
+
(function () {
|
| 132 |
+
var stageEl = document.getElementById("stage");
|
| 133 |
+
if (!window.SZLHolo) {
|
| 134 |
+
stageEl.innerHTML = '<div style="padding:20px;color:#ffd9a8">SZLHolo kit failed to load.</div>';
|
| 135 |
+
return;
|
| 136 |
+
}
|
| 137 |
+
var caps = window.SZLHolo.capabilities();
|
| 138 |
+
document.getElementById("caps").textContent =
|
| 139 |
+
"renderer: " + caps.mode.toUpperCase() + (caps.webgpu ? " · WebGPU detected (ROADMAP)" : "");
|
| 140 |
+
|
| 141 |
+
// ---------------------------------------------------------------------------
|
| 142 |
+
// ONE scene: proof-DAG (signed-decision pipeline) + globe + trust-sphere +
|
| 143 |
+
// mesh/organism + constitutional pillars all in the same holographic canvas.
|
| 144 |
+
// ---------------------------------------------------------------------------
|
| 145 |
+
var scene = window.SZLHolo.createScene(stageEl, { title:"UNIFIED ESTATE HOLOGRAM", lambda:0.42 });
|
| 146 |
+
|
| 147 |
+
// PROOF-DAG: the signed-decision pipeline (centre-front).
|
| 148 |
+
var dagNodes = [
|
| 149 |
+
{ id:"ingest", label:"INGEST", pos:[-1.7, 0.9, 0.2] },
|
| 150 |
+
{ id:"verify", label:"VERIFY", pos:[-0.9, 0.5, 0.6], locked:true },
|
| 151 |
+
{ id:"policy", label:"POLICY", pos:[-0.1, 0.8,-0.2], lambda:0.30 },
|
| 152 |
+
{ id:"classify", label:"CLASSIFY", pos:[ 0.5,-0.1, 0.7], lambda:0.42 },
|
| 153 |
+
{ id:"sign", label:"SIGN", pos:[ 1.3, 0.2,-0.2], locked:true },
|
| 154 |
+
{ id:"receipt", label:"RECEIPT", pos:[ 1.9, 1.0, 0.4], lambda:0.25 }
|
| 155 |
+
];
|
| 156 |
+
var dagEdges = [
|
| 157 |
+
{ id:"d1", from:"ingest", to:"verify" },
|
| 158 |
+
{ id:"d2", from:"verify", to:"policy" },
|
| 159 |
+
{ id:"d3", from:"policy", to:"classify" },
|
| 160 |
+
{ id:"d4", from:"classify", to:"sign" },
|
| 161 |
+
{ id:"d5", from:"sign", to:"receipt" }
|
| 162 |
+
];
|
| 163 |
+
var dag = scene.addGraph({ nodes: dagNodes, edges: dagEdges });
|
| 164 |
+
|
| 165 |
+
// GLOBE: the estate's surfaces as geo-nodes (SAMPLE positions, honest).
|
| 166 |
+
scene.addGlobe({ radius: 0.85, points: [
|
| 167 |
+
{ lat: 25.3, lon: 55.3, label:"constitution", lambda:0.30 },
|
| 168 |
+
{ lat: 1.3, lon:103.8, label:"quant", lambda:0.55 },
|
| 169 |
+
{ lat: 51.5, lon: -0.12, label:"factory", lambda:0.40 },
|
| 170 |
+
{ lat: 37.8, lon:-122.4, label:"globe-C2", lambda:0.45 },
|
| 171 |
+
{ lat: -33.9,lon: 151.2, label:"maritime", lambda:0.50 }
|
| 172 |
+
]});
|
| 173 |
+
|
| 174 |
+
// Λ TRUST-SPHERE (estate) — morphs with the LIVE estate Λ.
|
| 175 |
+
var estateSphere = scene.addTrustSphere({ center:[-1.6,-1.0,-0.3], radius:0.5, label:"ESTATE" });
|
| 176 |
+
|
| 177 |
+
// CONSTITUTIONAL ORGANISM (pillars ring, upper-right) + a QUANT fracture node.
|
| 178 |
+
var pillars = ["Ontology","Temporality","Legitimacy","Governance"];
|
| 179 |
+
pillars.forEach(function(p,i){
|
| 180 |
+
var a=(i/pillars.length)*Math.PI*2;
|
| 181 |
+
dag.nodes.push({ id:"pil"+i, label:p, pos:[ -0.2 + 0.6*Math.cos(a), 1.6, -1.0 + 0.6*Math.sin(a)], lambda:0.32 });
|
| 182 |
+
});
|
| 183 |
+
dag.nodes.push({ id:"fracture", label:"β1 TEARS", pos:[1.6,-1.0,0.8], lambda:0.7 });
|
| 184 |
+
|
| 185 |
+
scene.start();
|
| 186 |
+
|
| 187 |
+
// signed-pulse light-flows along the proof-DAG (the headline mechanic)
|
| 188 |
+
scene.signPulse("d2", { loop:true, duration:2200 });
|
| 189 |
+
scene.signPulse("d5", { loop:true, duration:1700 });
|
| 190 |
+
|
| 191 |
+
function getJSON(path){ return fetch(path).then(function(r){return r.ok?r.json():null;}).catch(function(){return null;}); }
|
| 192 |
+
function esc(s){return String(s==null?"":s).replace(/[&<>"]/g,function(c){return({'&':'&','<':'<','>':'>','"':'"'})[c];});}
|
| 193 |
+
|
| 194 |
+
// light-flow on a SIGNED cross-surface decision: pulse the whole DAG in sequence
|
| 195 |
+
var seq = ["d1","d2","d3","d4","d5"];
|
| 196 |
+
function fireDecision(){
|
| 197 |
+
seq.forEach(function(e,i){
|
| 198 |
+
setTimeout(function(){ scene.signPulse(e,{duration:900,color:"#aef6ff"}); }, i*260);
|
| 199 |
+
});
|
| 200 |
+
addTapeRow();
|
| 201 |
+
}
|
| 202 |
+
var tapeRows = [];
|
| 203 |
+
function addTapeRow(){
|
| 204 |
+
var ts = new Date().toISOString().slice(11,19);
|
| 205 |
+
var id = "dsse-" + Math.random().toString(16).slice(2,8);
|
| 206 |
+
tapeRows.unshift('<div class="r"><span class="dot" style="background:var(--ok)"></span>'+ts+
|
| 207 |
+
' · signed cross-surface decision <b>'+id+'</b> <span class="badge sample">SAMPLE</span></div>');
|
| 208 |
+
tapeRows = tapeRows.slice(0,8);
|
| 209 |
+
document.getElementById("tape").innerHTML = tapeRows.join("");
|
| 210 |
+
}
|
| 211 |
+
document.getElementById("signBtn").addEventListener("click", fireDecision);
|
| 212 |
+
var auto=null;
|
| 213 |
+
document.getElementById("autoBtn").addEventListener("click", function(){
|
| 214 |
+
if(auto){ clearInterval(auto); auto=null; this.textContent="▶ AUTO DECISION STREAM"; return; }
|
| 215 |
+
this.textContent="⏸ STOP STREAM"; auto=setInterval(fireDecision, 2600); fireDecision();
|
| 216 |
+
});
|
| 217 |
+
|
| 218 |
+
// ------- LIVE estate Λ + KPI board -------
|
| 219 |
+
getJSON("/api/a11oy/v1/ecosystem/kpi-board").then(function(kb){
|
| 220 |
+
if(!kb){ document.getElementById("lamPanel").textContent="KPI board unavailable."; return; }
|
| 221 |
+
var lam = kb.lambda || {};
|
| 222 |
+
var v = (typeof lam.value==="number") ? lam.value : 0.9;
|
| 223 |
+
var disp = Math.min(v, 0.999); // Λ < 1.0 always
|
| 224 |
+
scene.setLambda(disp); // drive the trust-sphere + global Λ
|
| 225 |
+
estateSphere.lambda = disp;
|
| 226 |
+
var col = window.SZLHolo.lambdaColor ? window.SZLHolo.lambdaColor(disp) : "#9af0cf";
|
| 227 |
+
var big = document.getElementById("lamBig");
|
| 228 |
+
big.textContent = "Λ " + disp.toFixed(3); big.style.color = col;
|
| 229 |
+
var locked = kb.locked8 || {};
|
| 230 |
+
document.getElementById("lamPanel").innerHTML =
|
| 231 |
+
'<div class="stat"><span>estate Λ</span><b style="color:'+col+'">'+disp.toFixed(3)+'</b></div>'+
|
| 232 |
+
'<div class="stat"><span>status</span><b>'+esc(lam.status||"Conjecture 1")+'</b></div>'+
|
| 233 |
+
'<div class="stat"><span>checks</span><b>'+esc(lam.checks_passing)+'/'+esc(lam.checks_total)+'</b></div>'+
|
| 234 |
+
'<div class="stat"><span>locked-proven</span><b>'+esc(locked.source_count||locked.display_count||8)+' @ '+esc(locked.kernel||"c7c0ba17")+'</b></div>'+
|
| 235 |
+
'<div class="mut" style="margin-top:6px">'+esc((lam.note||"").slice(0,90))+'…</div>';
|
| 236 |
+
document.getElementById("status").textContent =
|
| 237 |
+
"LIVE estate · Λ="+disp.toFixed(3)+" · locked "+(locked.source_count||8)+"/8 @ "+(locked.kernel||"c7c0ba17")+
|
| 238 |
+
" · as_of "+esc((kb.as_of||"").slice(0,19));
|
| 239 |
+
// trust axes
|
| 240 |
+
var ax = (lam.axes||[]);
|
| 241 |
+
document.getElementById("axes").innerHTML = ax.map(function(a){
|
| 242 |
+
var ac = window.SZLHolo.lambdaColor ? window.SZLHolo.lambdaColor(1-a.score) : "#9af0cf";
|
| 243 |
+
return '<div class="axis"><span>'+esc(a.name)+'</span><b style="color:'+ac+'">'+(+a.score).toFixed(2)+'</b></div>';
|
| 244 |
+
}).join("") || '<span class="mut">no axes</span>';
|
| 245 |
+
});
|
| 246 |
+
|
| 247 |
+
// ------- LIVE organism (mind + 6 organs) from engine/status -------
|
| 248 |
+
getJSON("/api/a11oy/v1/engine/status").then(function(es){
|
| 249 |
+
var el = document.getElementById("organism");
|
| 250 |
+
if(!es){ el.textContent="engine status unavailable."; return; }
|
| 251 |
+
var organs = es.organs || {};
|
| 252 |
+
var keys = Object.keys(organs);
|
| 253 |
+
var healthy = es.organs_healthy||0, total = es.organs_total||keys.length;
|
| 254 |
+
var mind = es.mind||{};
|
| 255 |
+
var rows = '<div class="stat"><span>mind sovereign</span><b style="color:'+(mind.sovereign?"var(--ok)":"var(--mut)")+'">'+
|
| 256 |
+
esc(String(mind.sovereign))+'</b></div>'+
|
| 257 |
+
'<div class="stat"><span>organs healthy</span><b>'+healthy+'/'+total+'</b></div>';
|
| 258 |
+
keys.forEach(function(k){
|
| 259 |
+
var o=organs[k]; var rc=o.reachable?"var(--ok)":"var(--mut)";
|
| 260 |
+
rows += '<div class="axis"><span><span class="dot" style="background:'+rc+'"></span>'+esc(k)+'</span><b>'+esc(o.status)+'</b></div>';
|
| 261 |
+
// add a mesh node per organ to the unified canvas (dim when unreachable)
|
| 262 |
+
var idx = keys.indexOf(k); var a=(idx/keys.length)*Math.PI*2;
|
| 263 |
+
dag.nodes.push({ id:"org_"+k, label:k.toUpperCase(), pos:[ -2.0 + 0.5*Math.cos(a), 0.2+0.4*Math.sin(a), -1.4 ],
|
| 264 |
+
lambda: o.reachable?0.35:0.85 });
|
| 265 |
+
});
|
| 266 |
+
el.innerHTML = rows;
|
| 267 |
+
document.getElementById("orgBadge").textContent = healthy+"/"+total+" live";
|
| 268 |
+
document.getElementById("orgBadge").className = "badge " + (healthy>0?"live":"sample");
|
| 269 |
+
});
|
| 270 |
+
|
| 271 |
+
// ------- LIVE per-surface signed receipts (quant pipeline + constitution ledger) -------
|
| 272 |
+
getJSON("/api/a11oy/v1/quant/pipeline").then(function(pp){
|
| 273 |
+
if(!pp) return;
|
| 274 |
+
var sr = (pp.signed_receipt && pp.signed_receipt.receipt) || {};
|
| 275 |
+
tapeRows.unshift('<div class="r"><span class="dot" style="background:var(--warn)"></span>'+
|
| 276 |
+
esc((sr.bar_timestamp||"").slice(11,19))+' · quant receipt <b>'+esc(sr.pipeline_version||"")+'</b> '+
|
| 277 |
+
'<span class="badge live">LIVE · '+esc(pp.label?pp.label.split("|")[0].trim():"SAMPLE_SIGNAL")+'</span></div>');
|
| 278 |
+
document.getElementById("tape").innerHTML = tapeRows.join("");
|
| 279 |
+
});
|
| 280 |
+
getJSON("/api/a11oy/v1/constitution/ledger").then(function(ld){
|
| 281 |
+
if(!ld) return;
|
| 282 |
+
tapeRows.unshift('<div class="r"><span class="dot" style="background:var(--accent)"></span>'+
|
| 283 |
+
'causal ledger <b>'+esc(ld.count||0)+' events</b> <span class="badge live">LIVE · '+esc(ld.status||"ACTIVE")+'</span></div>');
|
| 284 |
+
document.getElementById("tape").innerHTML = tapeRows.join("");
|
| 285 |
+
});
|
| 286 |
+
|
| 287 |
+
window.__SZL_ESTATE_HOLO_READY = true;
|
| 288 |
+
})();
|
| 289 |
+
</script>
|
| 290 |
+
</body>
|
| 291 |
+
</html>
|
web/quant.html
ADDED
|
@@ -0,0 +1,256 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
+
<!-- SPDX-License-Identifier: Apache-2.0 © 2026 SZL Holdings
|
| 3 |
+
/quant — GPU-QUANT 3D PORTFOLIO LANDSCAPE (Lane F5).
|
| 4 |
+
A 3D portfolio landscape on the shared holographic kit (0 runtime CDN):
|
| 5 |
+
- PCA risk eigen-spectrum (Ledoit-Wolf shrinkage + Marchenko-Pastur edge)
|
| 6 |
+
rendered as a risk LANDSCAPE
|
| 7 |
+
- Betti FRACTURE TEARS: persistent-homology β1 cycles drawn as glowing
|
| 8 |
+
tear-rings; tear count + intensity track the live fracture score f_t / z
|
| 9 |
+
- HJB-Kelly REBALANCING animation: per-asset Kelly weights w* as signed bars
|
| 10 |
+
- ENERGY RECEIPT: the live signed pipeline receipt (DSSE-style)
|
| 11 |
+
Reads LIVE: /api/a11oy/v1/quant/{pca,tda,kelly,pipeline}.
|
| 12 |
+
HONEST: data is SAMPLE_SIGNAL | NOT_LIVE | NO_BACKTEST_VALIDATED — synthetic
|
| 13 |
+
SAMPLE universe, pure-Python CPU fallback; the cuML/cuPy/giotto-tda/Ripser++
|
| 14 |
+
GPU path is ROADMAP (flips to MEASURED only on a sovereign GPU). NOT live trading.
|
| 15 |
+
Citations: RAPIDS cuDF/cuML, giotto-tda, Ledoit-Wolf (2003), Gidea-Katz (2017).
|
| 16 |
+
DOCTRINE v11: 0 runtime CDN · Λ = Conjecture 1 (<1.0) · trust < 100% ·
|
| 17 |
+
0 visible codenames · honest SAMPLE labels · never claims live trading or backtest. -->
|
| 18 |
+
<html lang="en">
|
| 19 |
+
<head>
|
| 20 |
+
<meta charset="utf-8">
|
| 21 |
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
| 22 |
+
<title>SZL · GPU-Quant Landscape</title>
|
| 23 |
+
<style>
|
| 24 |
+
:root{--bg:#03060d;--panel:#0a1326;--ink:#cfe6ff;--mut:#86a4c9;--line:rgba(120,170,230,.18);
|
| 25 |
+
--ok:#46d39a;--warn:#ffcf5c;--bad:#ff6b6b;--accent:#7fd4ff;}
|
| 26 |
+
*{box-sizing:border-box}
|
| 27 |
+
html,body{margin:0;height:100%;background:var(--bg);color:var(--ink);
|
| 28 |
+
font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;}
|
| 29 |
+
header{padding:14px 20px;border-bottom:1px solid var(--line);display:flex;
|
| 30 |
+
align-items:center;gap:14px;flex-wrap:wrap;}
|
| 31 |
+
header h1{font-size:15px;margin:0;letter-spacing:.06em;font-weight:600;}
|
| 32 |
+
header .sub{font-size:11px;color:var(--mut);}
|
| 33 |
+
.wrap{display:grid;grid-template-columns:1fr;gap:14px;padding:16px 20px;max-width:1280px;margin:0 auto;}
|
| 34 |
+
.stage{height:58vh;min-height:380px;border:1px solid var(--line);border-radius:14px;overflow:hidden;
|
| 35 |
+
box-shadow:0 0 60px rgba(40,90,160,.12) inset;}
|
| 36 |
+
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:14px;}
|
| 37 |
+
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;}
|
| 38 |
+
.panel{border:1px solid var(--line);border-radius:12px;padding:12px 14px;background:rgba(10,19,38,.5);}
|
| 39 |
+
.panel h2{font-size:12px;margin:0 0 8px;letter-spacing:.06em;color:#bfe0ff;}
|
| 40 |
+
.btn{background:rgba(70,150,230,.16);border:1px solid rgba(120,180,240,.4);color:#cfe6ff;
|
| 41 |
+
border-radius:8px;padding:6px 12px;font:inherit;font-size:12px;cursor:pointer;}
|
| 42 |
+
.btn:hover{background:rgba(70,150,230,.3);}
|
| 43 |
+
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap;}
|
| 44 |
+
.mut{color:var(--mut);font-size:11px;}
|
| 45 |
+
a{color:#7fd4ff;}
|
| 46 |
+
.badge{display:inline-block;padding:1px 7px;border-radius:6px;font-size:10px;font-weight:600;
|
| 47 |
+
background:rgba(255,180,90,.16);border:1px solid rgba(255,190,110,.4);color:#ffd9a8;}
|
| 48 |
+
.badge.no{background:rgba(255,107,107,.15);border-color:rgba(255,120,120,.4);color:#ffb3b3;}
|
| 49 |
+
.kbar{height:14px;margin:2px 0;border-radius:3px;position:relative;}
|
| 50 |
+
.big{font-size:22px;font-weight:700;}
|
| 51 |
+
pre{white-space:pre-wrap;word-break:break-word;font-size:10px;color:#9fc4ea;max-height:200px;overflow:auto;
|
| 52 |
+
background:rgba(3,8,18,.6);border:1px solid var(--line);border-radius:8px;padding:8px;}
|
| 53 |
+
.stat{display:flex;justify-content:space-between;font-size:11px;padding:2px 0;border-bottom:1px solid rgba(120,170,230,.08);}
|
| 54 |
+
@media(max-width:900px){.grid2,.grid3{grid-template-columns:1fr;}}
|
| 55 |
+
</style>
|
| 56 |
+
</head>
|
| 57 |
+
<body>
|
| 58 |
+
<header>
|
| 59 |
+
<h1>SZL · GPU-QUANT LANDSCAPE</h1>
|
| 60 |
+
<span class="sub">PCA risk · Betti fracture tears · HJB-Kelly · energy receipts · 0 runtime CDN</span>
|
| 61 |
+
<span id="caps" class="sub"></span>
|
| 62 |
+
</header>
|
| 63 |
+
|
| 64 |
+
<div class="wrap">
|
| 65 |
+
<div class="panel">
|
| 66 |
+
<h2>WHAT THIS IS <span id="lbl" class="badge no">SAMPLE_SIGNAL | NOT_LIVE | NO_BACKTEST_VALIDATED</span></h2>
|
| 67 |
+
<div class="mut">A 3D portfolio risk landscape. The risk surface is the PCA eigen-spectrum
|
| 68 |
+
(Ledoit-Wolf shrinkage + Marchenko-Pastur noise edge). The glowing <strong>tear-rings</strong> are
|
| 69 |
+
persistent-homology <strong>β1 cycles</strong> — topological "fractures" in the correlation network;
|
| 70 |
+
their count and intensity track the live fracture score <code>f_t</code> and its z-score.
|
| 71 |
+
The bars are <strong>HJB-Kelly</strong> rebalancing weights. All data is a
|
| 72 |
+
<strong>synthetic SAMPLE</strong> universe on a pure-Python CPU fallback — the cuML/cuPy/giotto-tda
|
| 73 |
+
GPU path is <strong>ROADMAP</strong>. This is <strong>NOT live trading</strong> and is
|
| 74 |
+
<strong>NOT backtest-validated</strong>. Λ = Conjecture 1 (< 1.0); trust < 100%.</div>
|
| 75 |
+
</div>
|
| 76 |
+
|
| 77 |
+
<div id="stage" class="stage"></div>
|
| 78 |
+
|
| 79 |
+
<div class="panel">
|
| 80 |
+
<div class="row">
|
| 81 |
+
<button class="btn" id="rebalBtn">▶ HJB-KELLY REBALANCE</button>
|
| 82 |
+
<button class="btn" id="fractureBtn">SIMULATE FRACTURE (illustrative)</button>
|
| 83 |
+
<span id="fstatus" class="mut">loading live quant signal…</span>
|
| 84 |
+
</div>
|
| 85 |
+
</div>
|
| 86 |
+
|
| 87 |
+
<div class="grid3">
|
| 88 |
+
<div class="panel">
|
| 89 |
+
<h2>PCA RISK <span class="badge">Ledoit-Wolf · MP</span></h2>
|
| 90 |
+
<div id="pca" class="mut">…</div>
|
| 91 |
+
</div>
|
| 92 |
+
<div class="panel">
|
| 93 |
+
<h2>TDA FRACTURE <span class="badge">β0/β1 persistence</span></h2>
|
| 94 |
+
<div id="tda" class="mut">…</div>
|
| 95 |
+
</div>
|
| 96 |
+
<div class="panel">
|
| 97 |
+
<h2>HJB-KELLY <span class="badge">w* sizing</span></h2>
|
| 98 |
+
<div id="kelly"></div>
|
| 99 |
+
</div>
|
| 100 |
+
</div>
|
| 101 |
+
|
| 102 |
+
<div class="grid2">
|
| 103 |
+
<div class="panel">
|
| 104 |
+
<h2>ENERGY / SIGNED RECEIPT <span class="badge">DSSE-style</span></h2>
|
| 105 |
+
<div id="receiptMeta" class="mut" style="margin-bottom:6px"></div>
|
| 106 |
+
<pre id="receipt">…</pre>
|
| 107 |
+
</div>
|
| 108 |
+
<div class="panel">
|
| 109 |
+
<h2>COMPUTE BACKEND <span id="gpuBadge" class="badge">CPU fallback</span></h2>
|
| 110 |
+
<div id="backend" class="mut">…</div>
|
| 111 |
+
</div>
|
| 112 |
+
</div>
|
| 113 |
+
|
| 114 |
+
<div class="panel mut">
|
| 115 |
+
Build references (no runtime calls): RAPIDS cuDF/cuML
|
| 116 |
+
(<a href="https://docs.rapids.ai">docs.rapids.ai</a>),
|
| 117 |
+
giotto-tda (<a href="https://github.com/giotto-ai/giotto-tda">giotto-ai/giotto-tda</a>),
|
| 118 |
+
Ledoit & Wolf (2003) shrinkage covariance, Gidea & Katz (2017) TDA of crashes (arXiv:1703.04385),
|
| 119 |
+
Marchenko-Pastur noise edge. β1 here is the 1-skeleton cycle rank (honest fast proxy);
|
| 120 |
+
the exact Vietoris-Rips H1 is the GPU ROADMAP path.
|
| 121 |
+
</div>
|
| 122 |
+
</div>
|
| 123 |
+
|
| 124 |
+
<script src="/static/shared/szl_label_engine.js"></script>
|
| 125 |
+
<script src="/static/shared/szl_holo3d.js"></script>
|
| 126 |
+
<script>
|
| 127 |
+
(function () {
|
| 128 |
+
var API = "/api/a11oy/v1/quant/";
|
| 129 |
+
var stageEl = document.getElementById("stage");
|
| 130 |
+
if (!window.SZLHolo) {
|
| 131 |
+
stageEl.innerHTML = '<div style="padding:20px;color:#ffd9a8">SZLHolo kit failed to load.</div>';
|
| 132 |
+
return;
|
| 133 |
+
}
|
| 134 |
+
var caps = window.SZLHolo.capabilities();
|
| 135 |
+
document.getElementById("caps").textContent =
|
| 136 |
+
"renderer: " + caps.mode.toUpperCase() + (caps.webgpu ? " · WebGPU detected (ROADMAP)" : "");
|
| 137 |
+
|
| 138 |
+
// 3D landscape scene: a grid of asset nodes whose height = PCA loading; tear-rings = β1 cycles.
|
| 139 |
+
var scene = window.SZLHolo.createScene(stageEl, { title:"PORTFOLIO RISK LANDSCAPE · SAMPLE", lambda:0.45 });
|
| 140 |
+
var landscape = scene.addGraph({ nodes:[{id:"o",label:"PORTFOLIO",pos:[0,0,0]}], edges:[] });
|
| 141 |
+
scene.start();
|
| 142 |
+
var tearHandles = [];
|
| 143 |
+
|
| 144 |
+
function getJSON(path){ return fetch(API+path).then(function(r){return r.ok?r.json():null;}).catch(function(){return null;}); }
|
| 145 |
+
function esc(s){return String(s==null?"":s).replace(/[&<>"]/g,function(c){return({'&':'&','<':'<','>':'>','"':'"'})[c];});}
|
| 146 |
+
function lamColor(l){ return window.SZLHolo.lambdaColor ? window.SZLHolo.lambdaColor(l) : "#7fd4ff"; }
|
| 147 |
+
|
| 148 |
+
// ---- PCA: build the risk landscape from eigenvalues ----
|
| 149 |
+
getJSON("pca").then(function(pc){
|
| 150 |
+
var el = document.getElementById("pca");
|
| 151 |
+
if(!pc){ el.textContent="pca feed unavailable."; return; }
|
| 152 |
+
var eig = (pc.marchenko_pastur && pc.marchenko_pastur.eigenvalues) || [];
|
| 153 |
+
var maxe = Math.max.apply(null, eig.concat([1e-9]));
|
| 154 |
+
// place each asset on a ring; height (y) = normalized eigenvalue (the risk peak)
|
| 155 |
+
eig.forEach(function(e,i){
|
| 156 |
+
var a=(i/eig.length)*Math.PI*2; var r=1.3;
|
| 157 |
+
var h = 0.9*(e/maxe);
|
| 158 |
+
landscape.nodes.push({ id:"a"+i, label:"", pos:[r*Math.cos(a), h, r*Math.sin(a)],
|
| 159 |
+
lambda: 0.25 + 0.6*(e/maxe) });
|
| 160 |
+
});
|
| 161 |
+
el.innerHTML =
|
| 162 |
+
'<div class="stat"><span>assets N</span><b>'+esc(pc.n_assets)+'</b></div>'+
|
| 163 |
+
'<div class="stat"><span>obs T</span><b>'+esc(pc.n_obs)+'</b></div>'+
|
| 164 |
+
'<div class="stat"><span>shrinkage ρ</span><b>'+esc((+pc.shrinkage_rho).toFixed(4))+'</b></div>'+
|
| 165 |
+
'<div class="stat"><span>MP λ⁺ (noise edge)</span><b>'+esc((+pc.marchenko_pastur.lambda_plus).toExponential(3))+'</b></div>'+
|
| 166 |
+
'<div class="stat"><span>signal eigenvalues</span><b>'+esc(pc.marchenko_pastur.signal_eigenvalues)+'</b></div>'+
|
| 167 |
+
'<div class="mut" style="margin-top:6px">Σ̂_LW = (1−ρ)Σ̂ + ρ·μI · λ± = σ²(1±1/√q)²</div>';
|
| 168 |
+
});
|
| 169 |
+
|
| 170 |
+
// ---- TDA fracture tears: draw β1 cycles as glowing tear-rings ----
|
| 171 |
+
function drawTears(beta1, fscore){
|
| 172 |
+
// remove old tear nodes
|
| 173 |
+
landscape.nodes = landscape.nodes.filter(function(n){ return String(n.id).indexOf("tear")!==0; });
|
| 174 |
+
var n = Math.min(beta1, 14); // cap for legibility
|
| 175 |
+
for(var i=0;i<n;i++){
|
| 176 |
+
var a=(i/Math.max(1,n))*Math.PI*2;
|
| 177 |
+
var rr = 1.7 + 0.25*Math.sin(i*1.3);
|
| 178 |
+
// a tear-ring is a small cluster of red points (a topological hole / fracture)
|
| 179 |
+
var lam = 0.65 + 0.3*Math.min(1, fscore/3 + 0.1);
|
| 180 |
+
landscape.nodes.push({ id:"tear"+i, label:(i===0?"β1 TEARS":""),
|
| 181 |
+
pos:[rr*Math.cos(a), 1.2+0.2*Math.cos(i), rr*Math.sin(a)], lambda: lam });
|
| 182 |
+
}
|
| 183 |
+
}
|
| 184 |
+
getJSON("tda").then(function(td){
|
| 185 |
+
var el = document.getElementById("tda");
|
| 186 |
+
if(!td){ el.textContent="tda feed unavailable."; return; }
|
| 187 |
+
drawTears(td.beta1_cur||0, td.fracture_score_f_t||0);
|
| 188 |
+
var anomCol = td.anomaly ? "var(--bad)" : "var(--ok)";
|
| 189 |
+
el.innerHTML =
|
| 190 |
+
'<div class="stat"><span>β0 (components)</span><b>'+esc(td.beta0_cur)+'</b></div>'+
|
| 191 |
+
'<div class="stat"><span>β1 (cycles / tears)</span><b style="color:var(--warn)">'+esc(td.beta1_cur)+'</b></div>'+
|
| 192 |
+
'<div class="stat"><span>fracture f_t</span><b>'+esc((+td.fracture_score_f_t).toFixed(3))+'</b></div>'+
|
| 193 |
+
'<div class="stat"><span>z-score</span><b>'+esc((+td.z_score).toFixed(3))+' / thr '+esc(td.z_threshold)+'</b></div>'+
|
| 194 |
+
'<div class="stat"><span>anomaly</span><b style="color:'+anomCol+'">'+(td.anomaly?"YES":"no")+'</b></div>'+
|
| 195 |
+
'<div class="mut" style="margin-top:6px">f_t = |Δβ0|+|Δβ1| · |z|>2.5 ⇒ anomaly. β1 tear-rings shown in 3D.</div>';
|
| 196 |
+
document.getElementById("fstatus").textContent =
|
| 197 |
+
"LIVE quant signal · β1="+td.beta1_cur+" tears · f_t="+(+td.fracture_score_f_t).toFixed(2)+" · "+esc(td.label);
|
| 198 |
+
window.__SZL_TDA = td;
|
| 199 |
+
});
|
| 200 |
+
|
| 201 |
+
// ---- HJB-Kelly weights as signed rebalancing bars ----
|
| 202 |
+
var kellyW = [];
|
| 203 |
+
getJSON("kelly").then(function(kl){
|
| 204 |
+
var el = document.getElementById("kelly");
|
| 205 |
+
if(!kl){ el.textContent="kelly feed unavailable."; return; }
|
| 206 |
+
kellyW = kl.kelly_weights_w_star || [];
|
| 207 |
+
var maxw = Math.max.apply(null, kellyW.map(Math.abs).concat([1e-9]));
|
| 208 |
+
el.innerHTML = '<div class="mut" style="margin-bottom:4px">gross exposure '+esc((+kl.kelly_gross_exposure).toFixed(2))+
|
| 209 |
+
' · γ='+esc(kl.gamma)+' · σ-inflation '+esc(kl.sigma_eff_inflation)+'</div>' +
|
| 210 |
+
kellyW.map(function(w,i){
|
| 211 |
+
var pct = Math.abs(w)/maxw*100;
|
| 212 |
+
var col = w>=0 ? "linear-gradient(90deg,rgba(70,211,154,.25),rgba(70,211,154,.6))"
|
| 213 |
+
: "linear-gradient(90deg,rgba(255,107,107,.25),rgba(255,107,107,.6))";
|
| 214 |
+
return '<div class="kbar" data-i="'+i+'" style="width:'+pct.toFixed(0)+'%;background:'+col+'"></div>';
|
| 215 |
+
}).join("");
|
| 216 |
+
el.innerHTML += '<div class="mut" style="margin-top:6px">w* = (μ−r)/σ² (TDA-augmented variance). Long = green, short = red.</div>';
|
| 217 |
+
});
|
| 218 |
+
document.getElementById("rebalBtn").addEventListener("click", function(){
|
| 219 |
+
// animate bars rebalancing toward Kelly target (illustrative)
|
| 220 |
+
var bars = document.querySelectorAll(".kbar");
|
| 221 |
+
bars.forEach(function(b){
|
| 222 |
+
b.style.transition="width .6s ease"; var cur=parseFloat(b.style.width)||0;
|
| 223 |
+
b.style.width = Math.max(4, Math.min(100, cur*(0.6+Math.random()*0.8))).toFixed(0)+"%";
|
| 224 |
+
});
|
| 225 |
+
// pulse the landscape to show capital re-flow
|
| 226 |
+
if(landscape.nodes.length>2){ scene.signPulse(0,{duration:1000,color:"#aef6ff"}); }
|
| 227 |
+
});
|
| 228 |
+
document.getElementById("fractureBtn").addEventListener("click", function(){
|
| 229 |
+
var td = window.__SZL_TDA || {beta1_cur:23, fracture_score_f_t:0};
|
| 230 |
+
drawTears((td.beta1_cur||10)+8, (td.fracture_score_f_t||0)+2.5); // illustrative spike
|
| 231 |
+
});
|
| 232 |
+
|
| 233 |
+
// ---- signed energy receipt from the pipeline ----
|
| 234 |
+
getJSON("pipeline").then(function(pp){
|
| 235 |
+
if(!pp){ document.getElementById("receipt").textContent="pipeline feed unavailable."; return; }
|
| 236 |
+
document.getElementById("lbl").textContent = pp.label || "SAMPLE_SIGNAL | NOT_LIVE | NO_BACKTEST_VALIDATED";
|
| 237 |
+
var sr = (pp.signed_receipt && pp.signed_receipt.receipt) || pp.signed_receipt || {};
|
| 238 |
+
document.getElementById("receiptMeta").innerHTML =
|
| 239 |
+
'pipeline <b>'+esc(sr.pipeline_version||"")+'</b> · device <b>'+esc(sr.gpu_device||"")+'</b> · '+
|
| 240 |
+
'scenario <b>'+esc(sr.scenario||pp.scenario||"")+'</b> · computed '+esc((pp.computed_at||"").slice(0,19));
|
| 241 |
+
document.getElementById("receipt").textContent = JSON.stringify(sr, null, 1);
|
| 242 |
+
var cb = pp.compute_backend || {};
|
| 243 |
+
document.getElementById("gpuBadge").textContent = cb.gpu_reachable ? "GPU MEASURED" : "CPU fallback (GPU ROADMAP)";
|
| 244 |
+
document.getElementById("backend").innerHTML =
|
| 245 |
+
'<div class="stat"><span>backend</span><b>'+esc(cb.backend)+'</b></div>'+
|
| 246 |
+
'<div class="stat"><span>gpu reachable</span><b>'+esc(String(cb.gpu_reachable))+'</b></div>'+
|
| 247 |
+
'<div class="stat"><span>doctrine</span><b>'+esc((pp.doctrine||{}).version)+' · locked '+esc((pp.doctrine||{}).locked_count)+'</b></div>'+
|
| 248 |
+
'<div class="stat"><span>kernel</span><b>'+esc((pp.doctrine||{}).kernel_commit)+'</b></div>'+
|
| 249 |
+
'<div class="mut" style="margin-top:6px">'+esc((cb.honest_note||"").slice(0,160))+'…</div>';
|
| 250 |
+
});
|
| 251 |
+
|
| 252 |
+
window.__SZL_QUANT_READY = true;
|
| 253 |
+
})();
|
| 254 |
+
</script>
|
| 255 |
+
</body>
|
| 256 |
+
</html>
|