betterwithage commited on
Commit
724e393
·
verified ·
1 Parent(s): 34b1804

feat: upgrade to deep-dive content — hero + arch + competitive matrix + citations (Doctrine v6)

Browse files
Files changed (4) hide show
  1. README.md +31 -42
  2. agi-forecast.png +0 -0
  3. index.html +1347 -372
  4. style.css +0 -6
README.md CHANGED
@@ -1,58 +1,47 @@
1
  ---
 
 
2
  colorFrom: blue
3
  colorTo: red
4
- emoji: 📈
5
- license: apache-2.0
6
- pinned: false
7
  sdk: static
8
- short_description: FG-01..FG-12 AI safety forecasting gauges with Brier scoring
 
 
9
  tags:
10
- - static
11
- - agi-forecast
12
- - pac-bayes
13
- - governance
14
- - agentic-ai
15
- - formal-verification
16
- - ai-governance
17
- - alignment
18
- - bayesian
19
- - lean4
20
- title: agi-forecast-platform
21
  ---
22
- # agi-forecast — AI Safety Forecasting Gauges
23
 
24
- [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.20424996.svg)](https://doi.org/10.5281/zenodo.20424996)
25
- [![License: Apache 2.0](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://www.apache.org/licenses/LICENSE-2.0)
26
- [![GitHub](https://img.shields.io/badge/GitHub-szl--holdings%2Fagi--forecast-blue)](https://github.com/szl-holdings/agi-forecast)
27
 
28
- agi-forecast implements 12 Zod-validated FG gauges (FG-01 to FG-12) for AI safety
29
- scenario modeling, with Brier score calibration and FG-S1..S4 scenario gates.
30
 
31
- ## What is real today
32
 
33
- - 12 typed gauges in `runtime/src/gauges.ts`: FG-01 (Capability Overhang) through FG-12 (Societal Score)
34
- - Zod-validated input schemas on every gauge; clamped [0,1] output
35
- - `runtime/src/brier.ts` Brier score calibration module
36
- - `runtime/src/derived.ts` scenario aggregation
37
- - Putnam 2026-05-27 benchmark: 12 attempted, **1 correct**, receipted in `gauge.json`
38
- - Live Space: [agi-forecast-viewer](https://huggingface.co/spaces/SZLHOLDINGS/agi-forecast-viewer)
39
- - Zenodo DOI 10.5281/zenodo.20424996
40
 
41
- ## Architecture
42
 
43
- ```
44
- FG-01..FG-12 inputs → gauges.ts (Zod-validate) brier.ts (calibration) → derived.ts → FG-S1..S4 gates
45
- ```
46
 
47
- ## What this is NOT
48
 
49
- - Not a peer-reviewed AI safety prediction system
50
- - Not a replacement for formal quantitative risk assessment
51
- - Not calibrated against a historical AGI dataset (Putnam 2026 is the first benchmark)
52
 
53
- ## Links
54
 
55
- - GitHub: https://github.com/szl-holdings/agi-forecast
56
- - Live Space: https://huggingface.co/spaces/SZLHOLDINGS/agi-forecast-viewer
57
- - DOI: https://doi.org/10.5281/zenodo.20424996
58
- - Doctrine v6: https://doi.org/10.5281/zenodo.19944926
 
1
  ---
2
+ title: AGI Forecast Deep Dive
3
+ emoji: 📡
4
  colorFrom: blue
5
  colorTo: red
 
 
 
6
  sdk: static
7
+ pinned: false
8
+ license: apache-2.0
9
+ short_description: PAC-Bayes AI governance forecasting — FG-S1→S4 gates
10
  tags:
11
+ - governance
12
+ - agentic-ai
13
+ - pac-bayes
14
+ - forecasting
15
+ - ai-governance
16
+ - doctrine-v6
 
 
 
 
 
17
  ---
 
18
 
19
+ # agi-forecast Deep-Dive Showcase
20
+
21
+ **Forecasting + safety gates for AI governance trajectories.**
22
 
23
+ This Space is a deep-dive showcase for [`szl-holdings/agi-forecast`](https://github.com/szl-holdings/agi-forecast) the PAC-Bayes-bounded Λ-axis scenario library with hardcoded FG-S1→S4 governance gates.
 
24
 
25
+ ## What's inside
26
 
27
+ - **FG-S1 FG-S4 gate source** — each gate function + threshold, grepped directly from `runtime/src/derived.ts`
28
+ - **Putnam 2025 snapshot (2026-05-27)** honest: 1 correct out of 12 problems = 8.3%. No score inflation. Receipt chain head: `245c296e…ee24`
29
+ - **Live viewer embed** SZLHOLDINGS/agi-forecast-viewer iframe
30
+ - **Comparison table** — Metaculus, AI Impacts (FOAA), FRI vs agi-forecast
31
+ - **"What this is NOT"** — doctrine-V6 honesty clause: not an oracle, not a prediction market, not investment advice, not a Putnam champion
32
+ - **Citations** Brier score spec, Metaculus, FOAA, FRI, Zenodo DOIs
 
33
 
34
+ ## Companion Spaces
35
 
36
+ - [agi-forecast-viewer](https://huggingface.co/spaces/SZLHOLDINGS/agi-forecast-viewer) — live Gradio app
37
+ - [agi-forecast-platform](https://huggingface.co/spaces/SZLHOLDINGS/agi-forecast-platform) full platform
 
38
 
39
+ ## Repository
40
 
41
+ [szl-holdings/agi-forecast](https://github.com/szl-holdings/agi-forecast) · Apache 2.0
42
+ DOI: [10.5281/zenodo.20434276](https://doi.org/10.5281/zenodo.20434276)
43
+ ORCID: [0009-0001-0110-4173](https://orcid.org/0009-0001-0110-4173)
44
 
45
+ ---
46
 
47
+ Doctrine V6 · Signed commits · No score inflation
 
 
 
agi-forecast.png ADDED
index.html CHANGED
@@ -1,413 +1,1388 @@
1
  <!DOCTYPE html>
2
- <html lang="en">
3
  <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>agi-forecastFG-01..FG-12 Forecasting Gauges | SZL Holdings</title>
7
- <meta name="description" content="agi-forecast implements 12 typed forecasting gauges (FG-01 to FG-12) for AI safety scenario modeling, with Brier score evaluation, FG-S1..S4 scenario gates, and a receipted Putnam 2026-05-27 benchmark run.">
8
- <link rel="preconnect" href="https://fonts.googleapis.com">
9
- <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
10
- <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&family=JetBrains+Mono:wght@400;500;600&display=swap" rel="stylesheet">
11
- <style>
12
- :root {
13
- --bg-primary: #0a0f1f;
14
- --bg-secondary: #0f1528;
15
- --bg-card: #141b30;
16
- --bg-card-hover: #1a2238;
17
- --text-primary: #f0f2fc;
18
- --text-secondary: #8090c0;
19
- --text-muted: #506080;
20
- --accent: #ff6b35;
21
- --accent-dim: #cc5520;
22
- --accent-glow: rgba(255, 107, 53, 0.12);
23
- --accent-secondary: #4d7cfe;
24
- --border: #1e2844;
25
- --border-glow: rgba(255, 107, 53, 0.25);
26
- --gradient-primary: linear-gradient(135deg, #ff6b35 0%, #4d7cfe 100%);
27
- --shadow-glow: 0 0 40px rgba(255, 107, 53, 0.07);
28
- --radius: 12px; --radius-lg: 20px;
29
- }
30
- * { margin: 0; padding: 0; box-sizing: border-box; }
31
- body { font-family: 'Inter', sans-serif; background: var(--bg-primary); color: var(--text-primary); line-height: 1.6; -webkit-font-smoothing: antialiased; overflow-x: hidden; }
32
- .noise-overlay { position: fixed; top:0;left:0;right:0;bottom:0; background:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)' opacity='0.025'/%3E%3C/svg%3E"); pointer-events:none; z-index:1000; }
33
- .container { max-width: 1200px; margin: 0 auto; padding: 0 24px; }
34
- nav { position:fixed;top:0;left:0;right:0;z-index:100;padding:16px 0;background:rgba(10,15,31,0.88);backdrop-filter:blur(20px);border-bottom:1px solid var(--border); }
35
- .nav-inner { display:flex;align-items:center;justify-content:space-between; }
36
- .nav-logo { font-size:1.1rem;font-weight:700;color:var(--accent);text-decoration:none; }
37
- .nav-links { display:flex;gap:32px;list-style:none; }
38
- .nav-links a { color:var(--text-secondary);text-decoration:none;font-size:0.9rem;transition:color 0.2s; }
39
- .nav-links a:hover { color:var(--text-primary); }
40
- .hero { min-height:100vh;display:flex;flex-direction:column;justify-content:center;position:relative;padding:120px 0 80px; }
41
- .hero::before { content:'';position:absolute;top:-200px;left:50%;transform:translateX(-50%);width:800px;height:800px;background:radial-gradient(circle, rgba(255,107,53,0.05) 0%, transparent 70%);pointer-events:none; }
42
- .hero-badge { display:inline-flex;align-items:center;gap:8px;padding:6px 16px;background:var(--accent-glow);border:1px solid var(--border-glow);border-radius:100px;font-size:13px;font-weight:500;color:var(--accent);margin-bottom:32px;width:fit-content; }
43
- .hero-badge::before { content:'';width:6px;height:6px;background:var(--accent);border-radius:50%;animation:pulse 2s infinite; }
44
- @keyframes pulse { 0%,100%{opacity:1;transform:scale(1);}50%{opacity:0.4;transform:scale(1.5);} }
45
- .hero h1 { font-size:clamp(3rem,6vw,5.5rem);font-weight:900;line-height:1.05;letter-spacing:-0.03em;margin-bottom:24px; }
46
- .hero h1 .gradient { background:var(--gradient-primary);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text; }
47
- .hero-subtitle { font-size:1.2rem;color:var(--text-secondary);max-width:680px;line-height:1.7;margin-bottom:48px; }
48
- .hero-ctas { display:flex;gap:16px;flex-wrap:wrap;margin-bottom:64px; }
49
- .btn-primary { display:inline-flex;align-items:center;gap:8px;padding:14px 28px;background:var(--gradient-primary);color:#0a0f1f;font-weight:700;font-size:0.95rem;border-radius:var(--radius);text-decoration:none;transition:opacity 0.2s,transform 0.2s; }
50
- .btn-primary:hover { opacity:0.9;transform:translateY(-1px); }
51
- .btn-secondary { display:inline-flex;align-items:center;gap:8px;padding:14px 28px;background:transparent;color:var(--text-primary);font-weight:600;font-size:0.95rem;border-radius:var(--radius);border:1px solid var(--border);text-decoration:none;transition:border-color 0.2s,background 0.2s; }
52
- .btn-secondary:hover { border-color:var(--accent);background:var(--accent-glow); }
53
- .hero-stats { display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:24px;max-width:800px; }
54
- .stat { padding:20px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);transition:all 0.3s; }
55
- .stat:hover { border-color:var(--border-glow);box-shadow:var(--shadow-glow); }
56
- .stat-value { font-size:2rem;font-weight:800;font-family:'JetBrains Mono',monospace;color:var(--accent); }
57
- .stat-label { font-size:0.8rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:0.08em;margin-top:4px; }
58
- section { padding:100px 0; }
59
- .divider { height:1px;background:var(--border); }
60
- .section-label { font-size:0.75rem;font-weight:600;text-transform:uppercase;letter-spacing:0.12em;color:var(--accent);margin-bottom:16px; }
61
- .section-title { font-size:clamp(2rem,4vw,3rem);font-weight:800;letter-spacing:-0.02em;margin-bottom:16px; }
62
- .section-desc { font-size:1.1rem;color:var(--text-secondary);max-width:640px;margin-bottom:48px; }
63
- .fact-grid { display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:24px; }
64
- .fact-card { padding:28px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);transition:all 0.3s; }
65
- .fact-card:hover { border-color:var(--border-glow);box-shadow:var(--shadow-glow);background:var(--bg-card-hover); }
66
- .fact-card-header { display:flex;align-items:center;gap:12px;margin-bottom:12px; }
67
- .fact-icon { width:36px;height:36px;background:var(--accent-glow);border-radius:8px;display:flex;align-items:center;justify-content:center;color:var(--accent);border:1px solid var(--border-glow);font-size:1rem; }
68
- .fact-title { font-weight:600;font-size:0.95rem; }
69
- .fact-body { color:var(--text-secondary);font-size:0.9rem;line-height:1.6; }
70
- .fact-mono { font-family:'JetBrains Mono',monospace;font-size:0.85rem;color:var(--accent);background:rgba(255,107,53,0.08);padding:2px 6px;border-radius:4px; }
71
- .arch-container { background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:48px;margin-top:48px; }
72
- .steps { display:flex;flex-direction:column;gap:0;margin-top:48px;position:relative; }
73
- .steps::before { content:'';position:absolute;left:19px;top:24px;bottom:24px;width:2px;background:linear-gradient(180deg,var(--accent) 0%,var(--accent-secondary) 100%);opacity:0.3; }
74
- .step { display:flex;gap:24px;padding:24px 0; }
75
- .step-num { width:40px;height:40px;min-width:40px;background:var(--accent-glow);border:2px solid var(--accent);border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:0.85rem;color:var(--accent);font-family:'JetBrains Mono',monospace;position:relative;z-index:1; }
76
- .step-content h3 { font-weight:700;margin-bottom:8px;font-size:1rem; }
77
- .step-content p { color:var(--text-secondary);font-size:0.9rem; }
78
- .action-grid { display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:24px;margin-top:48px; }
79
- .action-card { padding:32px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);text-decoration:none;color:inherit;transition:all 0.3s;display:block; }
80
- .action-card:hover { border-color:var(--accent);box-shadow:var(--shadow-glow);transform:translateY(-2px); }
81
- .action-card-icon { font-size:1.5rem;margin-bottom:16px; }
82
- .action-card h3 { font-weight:700;margin-bottom:8px; }
83
- .action-card p { color:var(--text-secondary);font-size:0.9rem; }
84
- .action-card .arrow { display:inline-block;margin-top:16px;color:var(--accent);font-size:0.85rem;font-weight:600; }
85
- .substrate-grid { display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-top:48px; }
86
- .substrate-card { padding:24px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);text-align:center; }
87
- .substrate-card.highlight { border-color:var(--accent);background:var(--accent-glow); }
88
- .substrate-card h4 { font-weight:700;font-family:'JetBrains Mono',monospace;margin-bottom:8px;color:var(--accent); }
89
- .substrate-card p { font-size:0.8rem;color:var(--text-muted); }
90
- .citation-list { display:flex;flex-direction:column;gap:16px;margin-top:48px; }
91
- .citation-item { padding:20px 24px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);border-left:3px solid var(--accent); }
92
- .citation-item a { color:var(--accent);text-decoration:none;font-family:'JetBrains Mono',monospace;font-size:0.85rem; }
93
- .citation-item a:hover { text-decoration:underline; }
94
- .citation-title { font-weight:600;margin-bottom:4px; }
95
- .citation-meta { font-size:0.85rem;color:var(--text-muted); }
96
- .not-grid { display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:20px;margin-top:48px; }
97
- .not-card { padding:24px;background:var(--bg-card);border:1px solid #2a1a1a;border-radius:var(--radius);border-left:3px solid #c0392b; }
98
- .not-card h4 { font-weight:700;color:#e74c3c;margin-bottom:8px; }
99
- .not-card p { font-size:0.9rem;color:var(--text-secondary); }
100
- footer { padding:64px 0 40px;border-top:1px solid var(--border); }
101
- .footer-inner { display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:24px; }
102
- .footer-logo { font-weight:700;color:var(--accent);font-size:0.95rem; }
103
- .footer-meta { font-size:0.8rem;color:var(--text-muted); }
104
- pre { background:#05080f;border:1px solid var(--border);border-radius:var(--radius);padding:20px;overflow-x:auto;font-family:'JetBrains Mono',monospace;font-size:0.85rem;color:#c8d0f0;margin-top:16px; }
105
- @media (max-width:768px) { .hero-stats{grid-template-columns:repeat(2,1fr);} .fact-grid,.action-grid,.not-grid{grid-template-columns:1fr;} .substrate-grid{grid-template-columns:repeat(2,1fr);} .nav-links{display:none;} }
106
- </style>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
107
  </head>
108
  <body>
109
- <div class="noise-overlay"></div>
110
- <nav><div class="container"><div class="nav-inner">
111
- <a href="#" class="nav-logo">agi-forecast</a>
112
- <ul class="nav-links">
113
- <li><a href="#reality">Reality</a></li>
114
- <li><a href="#architecture">Architecture</a></li>
115
- <li><a href="#start">Get Started</a></li>
116
- <li><a href="#citations">Citations</a></li>
117
- </ul>
118
- </div></div></nav>
119
-
120
- <section class="hero">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
121
  <div class="container">
122
- <div class="hero-badge">FG-01..FG-12 · Putnam 2026-05-27 · DOI 10.5281/zenodo.20424996</div>
123
- <h1>AI safety forecasting with<br><span class="gradient">12 typed gauges</span></h1>
124
- <p class="hero-subtitle">
125
- agi-forecast implements 12 typed forecasting gauges (FG-01 to FG-12) for AI safety
126
- scenario modeling. Each gauge is Zod-validated, returns a Brier-compatible score,
127
- and feeds into FG-S1..S4 scenario gates with a receipted Putnam 2026-05-27 benchmark run.
128
- </p>
129
- <div class="hero-ctas">
130
- <a href="https://huggingface.co/spaces/SZLHOLDINGS/agi-forecast-viewer" class="btn-primary">View forecast viewer →</a>
131
- <a href="https://github.com/szl-holdings/agi-forecast" class="btn-secondary">View source</a>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
132
  </div>
133
- <div class="hero-stats">
134
- <div class="stat"><div class="stat-value">12</div><div class="stat-label">FG gauges (FG-01..12)</div></div>
135
- <div class="stat"><div class="stat-value">4</div><div class="stat-label">Scenario gates (S1-S4)</div></div>
136
- <div class="stat"><div class="stat-value">1/12</div><div class="stat-label">Putnam 2026 score</div></div>
137
- <div class="stat"><div class="stat-value">Brier</div><div class="stat-label">Score metric</div></div>
 
 
138
  </div>
 
139
  </div>
140
- </section>
141
-
142
- <div class="divider"></div>
143
 
144
- <section id="reality">
 
145
  <div class="container">
146
- <div class="section-label">What is real today</div>
147
- <h2 class="section-title">Operational facts, no projections</h2>
148
- <p class="section-desc">Every claim below is grep-verifiable from <a href="https://github.com/szl-holdings/agi-forecast" style="color:var(--accent)">szl-holdings/agi-forecast</a>.</p>
149
- <div class="fact-grid">
150
- <div class="fact-card">
151
- <div class="fact-card-header"><div class="fact-icon">📊</div><div class="fact-title">12 Zod-validated gauge implementations</div></div>
152
- <p class="fact-body">FG-01 (Capability Overhang) through FG-12 (Societal Score) are all implemented in <span class="fact-mono">runtime/src/gauges.ts</span>. Each gauge has a typed Zod schema, validates input, and returns a clamped [0,1] Brier-compatible score.</p>
153
- </div>
154
- <div class="fact-card">
155
- <div class="fact-card-header"><div class="fact-icon">🎯</div><div class="fact-title">Putnam 2026-05-27 benchmark: 1/12 correct</div></div>
156
- <p class="fact-body">The benchmark run at <span class="fact-mono">runtime/putnam-2025/2026-05-27/</span> attempted 12 problems, solving 1 correctly. The result is receipted in <span class="fact-mono">gauge.json</span> with a freshness nonce and ISO timestamp. No inflation of results.</p>
157
- </div>
158
- <div class="fact-card">
159
- <div class="fact-card-header"><div class="fact-icon">🔢</div><div class="fact-title">Brier score module</div></div>
160
- <p class="fact-body"><span class="fact-mono">runtime/src/brier.ts</span> computes the Brier score for calibration evaluation. <span class="fact-mono">runtime/src/derived.ts</span> computes derived metrics from multi-gauge results for scenario gate aggregation.</p>
161
- </div>
162
- <div class="fact-card">
163
- <div class="fact-card-header"><div class="fact-icon">🌐</div><div class="fact-title">Live HF Space: forecast viewer</div></div>
164
- <p class="fact-body"><a href="https://huggingface.co/spaces/SZLHOLDINGS/agi-forecast-viewer" style="color:var(--accent)">agi-forecast-viewer</a> exposes the 12 gauges as interactive sliders, computes the composite Brier score, and renders the FG-S1..S4 scenario gate outputs in real time.</p>
165
- </div>
166
- <div class="fact-card">
167
- <div class="fact-card-header"><div class="fact-icon">🖥</div><div class="fact-title">HTTP server for gauge API</div></div>
168
- <p class="fact-body"><span class="fact-mono">runtime/src/server.ts</span> exposes the gauge API over HTTP. POST a gauge ID and typed payload to receive a <span class="fact-mono">GaugeResult</span> with value, brier_input, label, and timestamp.</p>
169
- </div>
170
- <div class="fact-card">
171
- <div class="fact-card-header"><div class="fact-icon">📋</div><div class="fact-title">Zenodo DOI minted</div></div>
172
- <p class="fact-body">DOI <a href="https://doi.org/10.5281/zenodo.20424996" style="color:var(--accent)">10.5281/zenodo.20424996</a> resolves today. CITATION.cff and .zenodo.json in the root provide citable metadata.</p>
173
- </div>
 
 
174
  </div>
175
- </div>
176
- </section>
177
 
178
- <div class="divider"></div>
 
 
 
 
 
 
 
 
 
 
 
 
179
 
180
- <section id="architecture">
181
- <div class="container">
182
- <div class="section-label">How it works</div>
183
- <h2 class="section-title">The FG gauge pipeline</h2>
184
- <p class="section-desc">12 gauges measure distinct dimensions of AI safety. Their outputs feed into 4 scenario gates (S1–S4) that assess overall trajectory.</p>
185
-
186
- <div class="arch-container">
187
- <svg viewBox="0 0 860 280" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;">
188
- <defs>
189
- <linearGradient id="fgGrad" x1="0%" y1="0%" x2="100%" y2="0%">
190
- <stop offset="0%" style="stop-color:#ff6b35;stop-opacity:0.9"/>
191
- <stop offset="100%" style="stop-color:#4d7cfe;stop-opacity:0.9"/>
192
- </linearGradient>
193
- <filter id="glow"><feGaussianBlur stdDeviation="3" result="b"/><feMerge><feMergeNode in="b"/><feMergeNode in="SourceGraphic"/></feMerge></filter>
194
- </defs>
195
-
196
- <!-- Gauge inputs (left column) -->
197
- <text x="10" y="20" fill="#506080" font-family="Inter" font-size="9" font-weight="600">GAUGES — input to evaluate()</text>
198
-
199
- <rect x="10" y="28" width="82" height="30" rx="6" fill="#141b30" stroke="#ff6b35" stroke-width="1"/>
200
- <text x="51" y="48" text-anchor="middle" fill="#ff6b35" font-family="JetBrains Mono" font-size="8">FG-01 Overhang</text>
201
-
202
- <rect x="10" y="64" width="82" height="30" rx="6" fill="#141b30" stroke="#e05e2e" stroke-width="1"/>
203
- <text x="51" y="84" text-anchor="middle" fill="#ff6b35" font-family="JetBrains Mono" font-size="8">FG-02 Explain</text>
204
-
205
- <rect x="10" y="100" width="82" height="30" rx="6" fill="#141b30" stroke="#cc5020" stroke-width="1"/>
206
- <text x="51" y="120" text-anchor="middle" fill="#ff6b35" font-family="JetBrains Mono" font-size="8">FG-03 Align</text>
207
-
208
- <rect x="10" y="136" width="82" height="30" rx="6" fill="#141b30" stroke="#9060cc" stroke-width="1"/>
209
- <text x="51" y="156" text-anchor="middle" fill="#ff6b35" font-family="JetBrains Mono" font-size="8">FG-04..FG-08</text>
210
-
211
- <rect x="10" y="172" width="82" height="30" rx="6" fill="#141b30" stroke="#4d7cfe" stroke-width="1"/>
212
- <text x="51" y="192" text-anchor="middle" fill="#4d7cfe" font-family="JetBrains Mono" font-size="8">FG-09..FG-12</text>
213
-
214
- <!-- Arrows to gauges.ts -->
215
- <line x1="92" y1="43" x2="160" y2="100" stroke="url(#fgGrad)" stroke-width="1" opacity="0.5"/>
216
- <line x1="92" y1="79" x2="160" y2="105" stroke="url(#fgGrad)" stroke-width="1" opacity="0.5"/>
217
- <line x1="92" y1="115" x2="160" y2="110" stroke="url(#fgGrad)" stroke-width="1" opacity="0.5"/>
218
- <line x1="92" y1="151" x2="160" y2="115" stroke="url(#fgGrad)" stroke-width="1" opacity="0.5"/>
219
- <line x1="92" y1="187" x2="160" y2="120" stroke="url(#fgGrad)" stroke-width="1" opacity="0.5"/>
220
-
221
- <!-- gauges.ts box -->
222
- <rect x="160" y="60" width="130" height="100" rx="12" fill="#1a2238" stroke="#ff6b35" stroke-width="2" filter="url(#glow)"/>
223
- <text x="225" y="100" text-anchor="middle" fill="#ff6b35" font-family="JetBrains Mono" font-size="9" font-weight="700">gauges.ts</text>
224
- <text x="225" y="118" text-anchor="middle" fill="#f0f2fc" font-family="Inter" font-size="8">Zod-validated</text>
225
- <text x="225" y="133" text-anchor="middle" fill="#8090c0" font-family="Inter" font-size="7">clamp [0,1]</text>
226
-
227
- <!-- Arrow to brier.ts -->
228
- <path d="M290,110 L330,110" stroke="url(#fgGrad)" stroke-width="1.5"/>
229
- <polygon points="330,105 340,110 330,115" fill="#8060cc"/>
230
-
231
- <!-- brier.ts -->
232
- <rect x="340" y="75" width="110" height="70" rx="10" fill="#141b30" stroke="#8060cc" stroke-width="1.5"/>
233
- <text x="395" y="107" text-anchor="middle" fill="#8060cc" font-family="JetBrains Mono" font-size="9">brier.ts</text>
234
- <text x="395" y="123" text-anchor="middle" fill="#8090c0" font-family="Inter" font-size="8">calibration</text>
235
-
236
- <!-- Arrow to derived.ts -->
237
- <path d="M450,110 L490,110" stroke="url(#fgGrad)" stroke-width="1.5"/>
238
- <polygon points="490,105 500,110 490,115" fill="#6070d0"/>
239
-
240
- <!-- derived.ts -->
241
- <rect x="500" y="75" width="110" height="70" rx="10" fill="#141b30" stroke="#4d7cfe" stroke-width="1.5"/>
242
- <text x="555" y="107" text-anchor="middle" fill="#4d7cfe" font-family="JetBrains Mono" font-size="9">derived.ts</text>
243
- <text x="555" y="123" text-anchor="middle" fill="#8090c0" font-family="Inter" font-size="8">aggregation</text>
244
-
245
- <!-- Arrow to Scenario Gates -->
246
- <path d="M610,110 L650,110" stroke="url(#fgGrad)" stroke-width="1.5"/>
247
- <polygon points="650,105 660,110 650,115" fill="#4d7cfe"/>
248
-
249
- <!-- Scenario gates -->
250
- <text x="750" y="25" text-anchor="middle" fill="#506080" font-family="Inter" font-size="9" font-weight="600">SCENARIO GATES</text>
251
- <rect x="660" y="30" width="80" height="30" rx="6" fill="#141b30" stroke="#4d7cfe" stroke-width="1.5"/>
252
- <text x="700" y="50" text-anchor="middle" fill="#4d7cfe" font-family="JetBrains Mono" font-size="8">FG-S1</text>
253
-
254
- <rect x="660" y="70" width="80" height="30" rx="6" fill="#141b30" stroke="#4d7cfe" stroke-width="1.5"/>
255
- <text x="700" y="90" text-anchor="middle" fill="#4d7cfe" font-family="JetBrains Mono" font-size="8">FG-S2</text>
256
-
257
- <rect x="660" y="110" width="80" height="30" rx="6" fill="#141b30" stroke="#4d7cfe" stroke-width="1.5"/>
258
- <text x="700" y="130" text-anchor="middle" fill="#4d7cfe" font-family="JetBrains Mono" font-size="8">FG-S3</text>
259
-
260
- <rect x="660" y="150" width="80" height="30" rx="6" fill="#141b30" stroke="#4d7cfe" stroke-width="1.5"/>
261
- <text x="700" y="170" text-anchor="middle" fill="#4d7cfe" font-family="JetBrains Mono" font-size="8">FG-S4</text>
262
-
263
- <!-- Lines from derived to gates -->
264
- <line x1="650" y1="110" x2="660" y2="45" stroke="#4d7cfe" stroke-width="1" opacity="0.4"/>
265
- <line x1="650" y1="110" x2="660" y2="85" stroke="#4d7cfe" stroke-width="1" opacity="0.4"/>
266
- <line x1="650" y1="110" x2="660" y2="125" stroke="#4d7cfe" stroke-width="1" opacity="0.4"/>
267
- <line x1="650" y1="110" x2="660" y2="165" stroke="#4d7cfe" stroke-width="1" opacity="0.4"/>
268
-
269
- <!-- Putnam benchmark -->
270
- <rect x="10" y="220" width="820" height="50" rx="10" fill="#0f1528" stroke="#ff6b35" stroke-width="1.5" stroke-dasharray="5,3"/>
271
- <text x="420" y="241" text-anchor="middle" fill="#ff6b35" font-family="JetBrains Mono" font-size="9" font-weight="700">PUTNAM BENCHMARK 2026-05-27</text>
272
- <text x="420" y="258" text-anchor="middle" fill="#8090c0" font-family="Inter" font-size="8">12 problems attempted · 1 correct · 11 incorrect · Brier-scored · receipted gauge.json</text>
273
  </svg>
 
 
 
 
 
 
 
 
274
  </div>
275
 
276
- <div class="steps">
277
- <div class="step">
278
- <div class="step-num">01</div>
279
- <div class="step-content">
280
- <h3>Input validated by Zod schema for each gauge</h3>
281
- <p>Each gauge (FG-01 through FG-12) has a Zod schema that validates numeric inputs. For example, FG-01 expects <span class="fact-mono">deployed</span> and <span class="fact-mono">bestKnown</span> in [0,1]. Invalid inputs throw a typed parse error.</p>
282
- </div>
283
- </div>
284
- <div class="step">
285
- <div class="step-num">02</div>
286
- <div class="step-content">
287
- <h3>evaluate() returns a GaugeResult clamped to [0,1]</h3>
288
- <p>Each gauge's <span class="fact-mono">evaluate(input)</span> call returns a <span class="fact-mono">GaugeResult</span> with <span class="fact-mono">gaugeId</span>, <span class="fact-mono">value</span> (clamped), <span class="fact-mono">brier_input</span>, <span class="fact-mono">label</span>, and <span class="fact-mono">timestamp</span> in ISO 8601.</p>
289
- </div>
290
- </div>
291
- <div class="step">
292
- <div class="step-num">03</div>
293
- <div class="step-content">
294
- <h3>brier.ts computes calibration score</h3>
295
- <p><span class="fact-mono">brier.ts</span> accumulates GaugeResults and computes the proper Brier score: the mean-squared error between predicted probability and observed outcome. Lower scores indicate better calibration.</p>
296
- </div>
297
- </div>
298
- <div class="step">
299
- <div class="step-num">04</div>
300
- <div class="step-content">
301
- <h3>FG-S1..S4 scenario gates aggregate derived outputs</h3>
302
- <p>The <span class="fact-mono">derived.ts</span> module aggregates FG gauge outputs into four scenario-level assessments (S1: current risk, S2: near-term trajectory, S3: structural resilience, S4: governance coverage). Each gate returns a pass/fail verdict.</p>
303
- </div>
304
- </div>
305
  </div>
306
- </div>
307
- </section>
308
 
309
- <div class="divider"></div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
310
 
311
- <section id="start">
 
312
  <div class="container">
313
- <div class="section-label">What you can do right now</div>
314
- <h2 class="section-title">Start without setup</h2>
315
- <div class="action-grid">
316
- <a href="https://huggingface.co/spaces/SZLHOLDINGS/agi-forecast-viewer" class="action-card">
317
- <div class="action-card-icon">📈</div>
318
- <h3>Interact with the 12 gauges</h3>
319
- <p>Adjust gauge sliders in the live viewer to model different AI safety scenarios and see FG-S1..S4 outputs update in real time.</p>
320
- <span class="arrow">Open viewer →</span>
321
- </a>
322
- <a href="https://github.com/szl-holdings/agi-forecast/tree/main/runtime/putnam-2025/2026-05-27" class="action-card">
323
- <div class="action-card-icon">🧮</div>
324
- <h3>Review the Putnam benchmark</h3>
325
- <p>The receipted benchmark run at <code style="color:var(--accent)">putnam-2025/2026-05-27/</code> shows 12 attempt refs, 1 correct, 11 incorrect. Full receipted record.</p>
326
- <span class="arrow">View results </span>
327
- </a>
328
- <a href="https://doi.org/10.5281/zenodo.20424996" class="action-card">
329
- <div class="action-card-icon">📋</div>
330
- <h3>Cite the release</h3>
331
- <p>DOI 10.5281/zenodo.20424996. CITATION.cff provides BibTeX and APA citation formats.</p>
332
- <span class="arrow">Open DOI →</span>
333
- </a>
 
 
 
 
 
 
 
 
 
 
 
 
334
  </div>
335
- <pre><code>// Call FG-01 (Capability Overhang gauge)
336
- const result = FG01.evaluate({ deployed: 0.7, bestKnown: 1.0 })
337
- // { gaugeId: 'FG-01', value: 0.7, brier_input: 0.7, label: 'Capability Overhang', timestamp: '...' }
338
 
339
- // Compute Brier score across all 12 gauges
340
- const score = brierScore(results, observations)</code></pre>
341
- </div>
342
- </section>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
343
 
344
- <div class="divider"></div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
345
 
346
- <section>
347
- <div class="container">
348
- <div class="section-label">Where it sits in the substrate</div>
349
- <h2 class="section-title">The SZL forecasting layer</h2>
350
- <div class="substrate-grid">
351
- <div class="substrate-card"><h4>a11oy</h4><p>Governance decisions query agi-forecast FG-S1..S4 gates to assess whether current AI risk warrants escalation.</p></div>
352
- <div class="substrate-card"><h4>amaru</h4><p>Benchmark run receipts are anchored via amaru's receipt chain for audit traceability.</p></div>
353
- <div class="substrate-card"><h4>sentra</h4><p>Threat signals from sentra feed FG-04 (Novel Tasks) and FG-09 (Deception) gauge inputs.</p></div>
354
- <div class="substrate-card highlight"><h4>agi-forecast ← you are here</h4><p>12 FG gauges. Brier scoring. FG-S1..S4 scenario gates. Putnam 2026-05-27 benchmark.</p></div>
355
- <div class="substrate-card"><h4>lutar-lean</h4><p>Lean 4 theorems constrain the valid input ranges and score aggregation logic in derived.ts.</p></div>
356
- <div class="substrate-card"><h4>szl-cookbook</h4><p>The pre-flight-thinking SKILL.md pattern defines the reasoning protocol agi-forecast gauges implement.</p></div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
357
  </div>
358
- </div>
359
- </section>
360
 
361
- <div class="divider"></div>
 
 
362
 
363
- <section id="citations">
 
364
  <div class="container">
365
- <div class="section-label">Citations</div>
366
- <h2 class="section-title">Verified references</h2>
367
- <div class="citation-list">
368
- <div class="citation-item">
369
- <div class="citation-title">agi-forecast FG Gauges (SZL Holdings, 2025)</div>
370
- <div class="citation-meta">Zenodo archive · DOI 10.5281/zenodo.20424996 · Apache 2.0</div>
371
- <a href="https://doi.org/10.5281/zenodo.20424996">https://doi.org/10.5281/zenodo.20424996</a>
372
- </div>
373
- <div class="citation-item">
374
- <div class="citation-title">Brier, G. W. (1950). Verification of forecasts expressed in terms of probability. Monthly Weather Review, 78(1), 1–3.</div>
375
- <div class="citation-meta">Foundation for the Brier score calibration metric used in brier.ts</div>
376
- <a href="https://doi.org/10.1175/1520-0493(1950)078%3C0001:VOFEIT%3E2.0.CO;2">https://doi.org/10.1175/1520-0493(1950)078</a>
377
- </div>
378
- <div class="citation-item">
379
- <div class="citation-title">SZL Holdings — Doctrine v6 Fabric (2025)</div>
380
- <div class="citation-meta">Governing doctrine · DOI 10.5281/zenodo.19944926</div>
381
- <a href="https://doi.org/10.5281/zenodo.19944926">https://doi.org/10.5281/zenodo.19944926</a>
 
 
 
 
 
 
 
 
 
 
 
 
382
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
383
  </div>
 
384
  </div>
385
- </section>
386
 
387
- <div class="divider"></div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
388
 
389
- <section>
 
390
  <div class="container">
391
- <div class="section-label">Honesty</div>
392
- <h2 class="section-title">What agi-forecast is not</h2>
393
- <div class="not-grid">
394
- <div class="not-card"><h4>✗ Not a peer-reviewed AI safety prediction system</h4><p>The FG gauges encode structured modeling assumptions, not empirically validated prediction intervals. The Putnam 2026 run scored 1/12 — these are rough instruments, not precision forecasts.</p></div>
395
- <div class="not-card"><h4>✗ Not a replacement for formal risk assessment</h4><p>agi-forecast provides structured forecasting scaffolding. It does not replace formal quantitative risk analysis, red-teaming, or AI safety evaluation frameworks.</p></div>
396
- <div class="not-card"><h4>✗ Not calibrated against historical AGI scenarios</h4><p>Brier scores are computed against the Putnam 2026-05-27 benchmark only. No long-term calibration dataset exists yet.</p></div>
397
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
398
  </div>
399
- </section>
400
 
401
- <footer>
 
402
  <div class="container">
403
- <div class="footer-inner">
404
- <div>
405
- <div class="footer-logo">agi-forecast · SZL Holdings</div>
406
- <div class="footer-meta" style="margin-top:8px">Apache 2.0 · DOI 10.5281/zenodo.20424996 · ORCID 0009-0001-0110-4173</div>
407
- </div>
408
- <div class="footer-meta" style="text-align:right">Doctrine v6 compliant · No marketing superlatives</div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
409
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
410
  </div>
411
- </footer>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
412
  </body>
413
  </html>
 
1
  <!DOCTYPE html>
2
+ <html lang="en" data-theme="dark">
3
  <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>AGI Forecast Deep-Dive Showcase | SZL Holdings</title>
7
+ <meta name="description" content="Forecasting and safety gates for AI governance trajectories. FG-S1S4 governance gates, Putnam 2025 benchmark snapshot (1/12 = 8.3%), and scenario library." />
8
+ <meta property="og:title" content="AGI Forecast Deep-Dive | SZL Holdings" />
9
+ <meta property="og:description" content="Forecasting + safety gates for AI governance trajectories. FG-S1→S4 governance gates + Putnam 2025 benchmark snapshot." />
10
+ <meta property="og:image" content="https://huggingface.co/spaces/SZLHOLDINGS/agi-forecast-deep-dive/resolve/main/agi-forecast.png" />
11
+ <link rel="preconnect" href="https://fonts.googleapis.com" />
12
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
13
+ <link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;700&family=DM+Sans:wght@300..700&display=swap" rel="stylesheet" />
14
+ <style>
15
+ /* ─── Design tokens ────────────────────────────────────────────────── */
16
+ :root {
17
+ --text-xs: clamp(0.75rem, 0.7rem + 0.25vw, 0.875rem);
18
+ --text-sm: clamp(0.875rem, 0.8rem + 0.35vw, 1rem);
19
+ --text-base: clamp(1rem, 0.95rem + 0.25vw, 1.125rem);
20
+ --text-lg: clamp(1.125rem, 1rem + 0.75vw, 1.5rem);
21
+ --text-xl: clamp(1.5rem, 1.2rem + 1.25vw, 2.25rem);
22
+ --text-2xl: clamp(2rem, 1.2rem + 2.5vw, 3.5rem);
23
+ --text-3xl: clamp(2.5rem, 1rem + 4vw, 5rem);
24
+
25
+ --space-1: 0.25rem; --space-2: 0.5rem; --space-3: 0.75rem;
26
+ --space-4: 1rem; --space-5: 1.25rem; --space-6: 1.5rem;
27
+ --space-8: 2rem; --space-10: 2.5rem; --space-12: 3rem;
28
+ --space-16: 4rem; --space-20: 5rem; --space-24: 6rem;
29
+
30
+ --radius-sm: 0.375rem; --radius-md: 0.5rem;
31
+ --radius-lg: 0.75rem; --radius-xl: 1rem;
32
+
33
+ --transition-ui: 180ms cubic-bezier(0.16, 1, 0.3, 1);
34
+
35
+ --content-narrow: 640px;
36
+ --content-default: 960px;
37
+ --content-wide: 1200px;
38
+
39
+ /* Brand palette dark blue / orange */
40
+ --color-bg: #0a0f1f;
41
+ --color-surface: #0e1529;
42
+ --color-surface-2: #111a30;
43
+ --color-surface-3: #162040;
44
+ --color-border: #1e2d4a;
45
+ --color-divider: #1a2540;
46
+
47
+ --color-text: #e8ecf4;
48
+ --color-text-muted: #8a98b8;
49
+ --color-text-faint: #4a5570;
50
+ --color-text-inverse: #0a0f1f;
51
+
52
+ --color-orange: #ff6b35;
53
+ --color-orange-hover: #ff854d;
54
+ --color-orange-dim: rgba(255,107,53,0.15);
55
+ --color-orange-glow: rgba(255,107,53,0.25);
56
+
57
+ --color-blue-accent: #4a9eff;
58
+ --color-blue-dim: rgba(74,158,255,0.12);
59
+
60
+ --color-success: #22c55e;
61
+ --color-warning: #eab308;
62
+ --color-error: #ef4444;
63
+
64
+ --shadow-sm: 0 1px 3px rgba(0,0,0,0.4);
65
+ --shadow-md: 0 4px 16px rgba(0,0,0,0.5);
66
+ --shadow-lg: 0 12px 40px rgba(0,0,0,0.6);
67
+ --shadow-orange: 0 0 24px rgba(255,107,53,0.2);
68
+
69
+ --font-display: 'JetBrains Mono', 'Courier New', monospace;
70
+ --font-body: 'DM Sans', 'Helvetica Neue', sans-serif;
71
+ }
72
+
73
+ /* ─── Base reset ──────────────────────────────────────────────────── */
74
+ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
75
+ html {
76
+ -webkit-font-smoothing: antialiased;
77
+ -moz-osx-font-smoothing: grayscale;
78
+ scroll-behavior: smooth;
79
+ scroll-padding-top: var(--space-16);
80
+ }
81
+ body {
82
+ min-height: 100dvh;
83
+ font-family: var(--font-body);
84
+ font-size: var(--text-base);
85
+ color: var(--color-text);
86
+ background-color: var(--color-bg);
87
+ line-height: 1.6;
88
+ overflow-x: hidden;
89
+ }
90
+ img, picture, video, canvas, svg { display: block; max-width: 100%; height: auto; }
91
+ ul[role='list'], ol[role='list'] { list-style: none; }
92
+ h1,h2,h3,h4,h5,h6 { text-wrap: balance; line-height: 1.15; }
93
+ p, li, figcaption { text-wrap: pretty; max-width: 72ch; }
94
+ button { cursor: pointer; background: none; border: none; font: inherit; color: inherit; }
95
+ table { border-collapse: collapse; width: 100%; }
96
+ a { color: var(--color-orange); text-decoration: none; transition: color var(--transition-ui); }
97
+ a:hover { color: var(--color-orange-hover); }
98
+ :focus-visible { outline: 2px solid var(--color-orange); outline-offset: 3px; border-radius: var(--radius-sm); }
99
+
100
+ /* ─── Grid background ─────────────────────────────────────────────── */
101
+ body::before {
102
+ content: '';
103
+ position: fixed;
104
+ inset: 0;
105
+ background-image:
106
+ linear-gradient(rgba(255,107,53,0.03) 1px, transparent 1px),
107
+ linear-gradient(90deg, rgba(255,107,53,0.03) 1px, transparent 1px);
108
+ background-size: 40px 40px;
109
+ pointer-events: none;
110
+ z-index: 0;
111
+ }
112
+
113
+ /* ─── Layout ──────────────────────────────────────────────────────── */
114
+ .container {
115
+ max-width: var(--content-wide);
116
+ margin-inline: auto;
117
+ padding-inline: clamp(var(--space-6), 5vw, var(--space-16));
118
+ }
119
+ .container--narrow { max-width: var(--content-default); margin-inline: auto; padding-inline: clamp(var(--space-6), 5vw, var(--space-16)); }
120
+ section { position: relative; z-index: 1; padding-block: clamp(var(--space-12), 8vw, var(--space-24)); }
121
+ section + section { border-top: 1px solid var(--color-divider); }
122
+
123
+ /* ─── Nav ─────────────────────────────────────────────────────────── */
124
+ .nav {
125
+ position: sticky; top: 0; z-index: 100;
126
+ background: rgba(10,15,31,0.92);
127
+ backdrop-filter: blur(16px);
128
+ -webkit-backdrop-filter: blur(16px);
129
+ border-bottom: 1px solid var(--color-divider);
130
+ padding-block: var(--space-4);
131
+ }
132
+ .nav__inner {
133
+ max-width: var(--content-wide);
134
+ margin-inline: auto;
135
+ padding-inline: clamp(var(--space-6), 5vw, var(--space-16));
136
+ display: flex; align-items: center; justify-content: space-between; gap: var(--space-8);
137
+ }
138
+ .nav__logo {
139
+ display: flex; align-items: center; gap: var(--space-3);
140
+ font-family: var(--font-display);
141
+ font-size: var(--text-sm);
142
+ font-weight: 700;
143
+ color: var(--color-text);
144
+ letter-spacing: 0.05em;
145
+ text-decoration: none;
146
+ }
147
+ .nav__logo svg { flex-shrink: 0; }
148
+ .nav__links {
149
+ display: flex; align-items: center; gap: var(--space-6);
150
+ list-style: none;
151
+ }
152
+ .nav__links a {
153
+ font-size: var(--text-sm);
154
+ color: var(--color-text-muted);
155
+ transition: color var(--transition-ui);
156
+ }
157
+ .nav__links a:hover { color: var(--color-orange); }
158
+
159
+ /* ─── Hero ────────────────────────────────────────────────────────── */
160
+ .hero {
161
+ min-height: 85vh;
162
+ display: flex; align-items: center;
163
+ padding-block: clamp(var(--space-16), 10vw, var(--space-24));
164
+ position: relative;
165
+ overflow: hidden;
166
+ }
167
+ .hero::after {
168
+ content: '';
169
+ position: absolute;
170
+ top: -30%;
171
+ left: 50%;
172
+ transform: translateX(-50%);
173
+ width: 800px; height: 800px;
174
+ background: radial-gradient(ellipse, rgba(255,107,53,0.08) 0%, transparent 65%);
175
+ pointer-events: none;
176
+ }
177
+ .hero__inner {
178
+ display: grid;
179
+ grid-template-columns: 1fr 1fr;
180
+ gap: var(--space-16);
181
+ align-items: center;
182
+ width: 100%;
183
+ }
184
+ .hero__badge {
185
+ display: inline-flex; align-items: center; gap: var(--space-2);
186
+ font-family: var(--font-display);
187
+ font-size: var(--text-xs);
188
+ font-weight: 700;
189
+ text-transform: uppercase;
190
+ letter-spacing: 0.12em;
191
+ color: var(--color-orange);
192
+ border: 1px solid rgba(255,107,53,0.35);
193
+ background: rgba(255,107,53,0.08);
194
+ padding: var(--space-2) var(--space-4);
195
+ border-radius: var(--radius-full, 9999px);
196
+ margin-bottom: var(--space-6);
197
+ }
198
+ .hero__badge::before {
199
+ content: '';
200
+ width: 6px; height: 6px;
201
+ border-radius: 50%;
202
+ background: var(--color-orange);
203
+ animation: pulse 2s ease-in-out infinite;
204
+ }
205
+ @keyframes pulse {
206
+ 0%, 100% { opacity: 1; transform: scale(1); }
207
+ 50% { opacity: 0.5; transform: scale(0.8); }
208
+ }
209
+ .hero__title {
210
+ font-family: var(--font-display);
211
+ font-size: var(--text-3xl);
212
+ font-weight: 700;
213
+ color: var(--color-text);
214
+ letter-spacing: -0.02em;
215
+ margin-bottom: var(--space-6);
216
+ line-height: 1.1;
217
+ }
218
+ .hero__title .accent { color: var(--color-orange); }
219
+ .hero__tagline {
220
+ font-size: var(--text-lg);
221
+ color: var(--color-text-muted);
222
+ max-width: 56ch;
223
+ margin-bottom: var(--space-10);
224
+ line-height: 1.65;
225
+ }
226
+ .hero__ctas {
227
+ display: flex; flex-wrap: wrap; gap: var(--space-4);
228
+ }
229
+ .btn {
230
+ display: inline-flex; align-items: center; gap: var(--space-2);
231
+ font-size: var(--text-sm); font-weight: 600;
232
+ padding: var(--space-3) var(--space-6);
233
+ border-radius: var(--radius-md);
234
+ transition: all var(--transition-ui);
235
+ text-decoration: none;
236
+ }
237
+ .btn--primary {
238
+ background: var(--color-orange);
239
+ color: #0a0f1f;
240
+ border: 1px solid var(--color-orange);
241
+ box-shadow: var(--shadow-orange);
242
+ }
243
+ .btn--primary:hover {
244
+ background: var(--color-orange-hover);
245
+ color: #0a0f1f;
246
+ transform: translateY(-1px);
247
+ box-shadow: 0 0 32px rgba(255,107,53,0.35);
248
+ }
249
+ .btn--outline {
250
+ border: 1px solid var(--color-border);
251
+ color: var(--color-text-muted);
252
+ background: transparent;
253
+ }
254
+ .btn--outline:hover {
255
+ border-color: var(--color-orange);
256
+ color: var(--color-orange);
257
+ }
258
+ .hero__image-frame {
259
+ position: relative;
260
+ border-radius: var(--radius-xl);
261
+ overflow: hidden;
262
+ border: 1px solid var(--color-border);
263
+ background: var(--color-surface);
264
+ box-shadow: var(--shadow-lg), 0 0 60px rgba(255,107,53,0.08);
265
+ }
266
+ .hero__image-frame img {
267
+ width: 100%; height: auto;
268
+ display: block;
269
+ }
270
+ .hero__image-overlay {
271
+ position: absolute; inset: 0;
272
+ background: linear-gradient(135deg, rgba(255,107,53,0.06) 0%, transparent 60%);
273
+ pointer-events: none;
274
+ }
275
+
276
+ /* ─── Section labels ──────────────────────────────────────────────── */
277
+ .section-label {
278
+ font-family: var(--font-display);
279
+ font-size: var(--text-xs);
280
+ font-weight: 700;
281
+ text-transform: uppercase;
282
+ letter-spacing: 0.15em;
283
+ color: var(--color-orange);
284
+ margin-bottom: var(--space-4);
285
+ }
286
+ .section-heading {
287
+ font-family: var(--font-display);
288
+ font-size: var(--text-xl);
289
+ font-weight: 700;
290
+ color: var(--color-text);
291
+ margin-bottom: var(--space-6);
292
+ letter-spacing: -0.01em;
293
+ }
294
+ .section-body {
295
+ font-size: var(--text-base);
296
+ color: var(--color-text-muted);
297
+ line-height: 1.7;
298
+ }
299
+
300
+ /* ─── Cards ───────────────────────────────────────────────────────── */
301
+ .card {
302
+ background: var(--color-surface);
303
+ border: 1px solid var(--color-border);
304
+ border-radius: var(--radius-lg);
305
+ padding: var(--space-6);
306
+ transition: border-color var(--transition-ui), box-shadow var(--transition-ui);
307
+ }
308
+ .card:hover {
309
+ border-color: rgba(255,107,53,0.3);
310
+ box-shadow: 0 0 20px rgba(255,107,53,0.06);
311
+ }
312
+
313
+ /* ─── What is agi-forecast ────────────────────────────────────────── */
314
+ .what-grid {
315
+ display: grid;
316
+ grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
317
+ gap: var(--space-5);
318
+ margin-top: var(--space-10);
319
+ }
320
+ .what-card {
321
+ background: var(--color-surface);
322
+ border: 1px solid var(--color-border);
323
+ border-radius: var(--radius-lg);
324
+ padding: var(--space-6);
325
+ }
326
+ .what-card__icon {
327
+ width: 44px; height: 44px;
328
+ border-radius: var(--radius-md);
329
+ background: var(--color-orange-dim);
330
+ border: 1px solid rgba(255,107,53,0.2);
331
+ display: flex; align-items: center; justify-content: center;
332
+ margin-bottom: var(--space-4);
333
+ color: var(--color-orange);
334
+ font-size: 1.25rem;
335
+ }
336
+ .what-card__title {
337
+ font-family: var(--font-display);
338
+ font-size: var(--text-sm);
339
+ font-weight: 700;
340
+ color: var(--color-text);
341
+ margin-bottom: var(--space-3);
342
+ }
343
+ .what-card__body {
344
+ font-size: var(--text-sm);
345
+ color: var(--color-text-muted);
346
+ line-height: 1.65;
347
+ }
348
+
349
+ /* ─── Gates ───────────────────────────────────────────────────────── */
350
+ .gates-grid {
351
+ display: grid;
352
+ grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
353
+ gap: var(--space-5);
354
+ margin-top: var(--space-10);
355
+ }
356
+ .gate-card {
357
+ background: var(--color-surface);
358
+ border: 1px solid var(--color-border);
359
+ border-radius: var(--radius-lg);
360
+ padding: var(--space-6);
361
+ position: relative;
362
+ overflow: hidden;
363
+ }
364
+ .gate-card::before {
365
+ content: '';
366
+ position: absolute;
367
+ top: 0; left: 0; right: 0;
368
+ height: 3px;
369
+ }
370
+ .gate-card--s1::before { background: var(--color-blue-accent); }
371
+ .gate-card--s2::before { background: var(--color-warning); }
372
+ .gate-card--s3::before { background: var(--color-success); }
373
+ .gate-card--s4::before { background: var(--color-error); }
374
+
375
+ .gate-id {
376
+ font-family: var(--font-display);
377
+ font-size: var(--text-xs);
378
+ font-weight: 700;
379
+ letter-spacing: 0.1em;
380
+ padding: var(--space-1) var(--space-3);
381
+ border-radius: var(--radius-sm);
382
+ display: inline-block;
383
+ margin-bottom: var(--space-4);
384
+ }
385
+ .gate-id--s1 { background: rgba(74,158,255,0.15); color: var(--color-blue-accent); }
386
+ .gate-id--s2 { background: rgba(234,179,8,0.15); color: var(--color-warning); }
387
+ .gate-id--s3 { background: rgba(34,197,94,0.15); color: var(--color-success); }
388
+ .gate-id--s4 { background: rgba(239,68,68,0.15); color: var(--color-error); }
389
+
390
+ .gate-name {
391
+ font-family: var(--font-display);
392
+ font-size: var(--text-base);
393
+ font-weight: 700;
394
+ color: var(--color-text);
395
+ margin-bottom: var(--space-3);
396
+ }
397
+ .gate-desc {
398
+ font-size: var(--text-sm);
399
+ color: var(--color-text-muted);
400
+ line-height: 1.65;
401
+ margin-bottom: var(--space-5);
402
+ }
403
+ .gate-code {
404
+ background: var(--color-bg);
405
+ border: 1px solid var(--color-border);
406
+ border-radius: var(--radius-md);
407
+ padding: var(--space-4);
408
+ font-family: var(--font-display);
409
+ font-size: var(--text-xs);
410
+ color: var(--color-orange);
411
+ line-height: 1.6;
412
+ overflow-x: auto;
413
+ }
414
+ .gate-code .kw { color: var(--color-blue-accent); }
415
+ .gate-code .fn { color: #a78bfa; }
416
+ .gate-code .num { color: var(--color-warning); }
417
+ .gate-code .cm { color: var(--color-text-faint); }
418
+ .gate-threshold {
419
+ display: flex; align-items: center; gap: var(--space-2);
420
+ margin-top: var(--space-4);
421
+ font-family: var(--font-display);
422
+ font-size: var(--text-xs);
423
+ font-weight: 500;
424
+ }
425
+ .gate-threshold__dot {
426
+ width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0;
427
+ }
428
+
429
+ /* ─── Putnam section ──────────────────────────────────────────────── */
430
+ .putnam-layout {
431
+ display: grid;
432
+ grid-template-columns: 1fr 1fr;
433
+ gap: var(--space-12);
434
+ align-items: start;
435
+ margin-top: var(--space-10);
436
+ }
437
+ .putnam-score-block {
438
+ background: var(--color-surface);
439
+ border: 1px solid var(--color-border);
440
+ border-radius: var(--radius-xl);
441
+ padding: var(--space-8);
442
+ text-align: center;
443
+ }
444
+ .putnam-big-number {
445
+ font-family: var(--font-display);
446
+ font-size: clamp(3rem, 8vw, 5.5rem);
447
+ font-weight: 700;
448
+ color: var(--color-orange);
449
+ line-height: 1;
450
+ margin-bottom: var(--space-3);
451
+ }
452
+ .putnam-fraction {
453
+ font-family: var(--font-display);
454
+ font-size: var(--text-lg);
455
+ color: var(--color-text-muted);
456
+ margin-bottom: var(--space-6);
457
+ }
458
+ .putnam-meta {
459
+ list-style: none;
460
+ display: flex; flex-direction: column; gap: var(--space-3);
461
+ text-align: left;
462
+ }
463
+ .putnam-meta li {
464
+ display: flex; justify-content: space-between;
465
+ font-size: var(--text-sm);
466
+ padding: var(--space-3) var(--space-4);
467
+ background: var(--color-surface-2);
468
+ border-radius: var(--radius-md);
469
+ border: 1px solid var(--color-border);
470
+ max-width: none;
471
+ }
472
+ .putnam-meta li span:last-child {
473
+ font-family: var(--font-display);
474
+ color: var(--color-orange);
475
+ }
476
+ .putnam-honest-box {
477
+ background: rgba(239,68,68,0.06);
478
+ border: 1px solid rgba(239,68,68,0.25);
479
+ border-radius: var(--radius-lg);
480
+ padding: var(--space-5);
481
+ font-size: var(--text-sm);
482
+ color: var(--color-text-muted);
483
+ line-height: 1.65;
484
+ margin-top: var(--space-5);
485
+ }
486
+ .putnam-honest-box strong { color: var(--color-error); }
487
+
488
+ /* Context leaderboard */
489
+ .leaderboard-table {
490
+ margin-top: var(--space-5);
491
+ overflow-x: auto;
492
+ }
493
+ .leaderboard-table table { font-size: var(--text-sm); }
494
+ .leaderboard-table th {
495
+ font-family: var(--font-display);
496
+ font-size: var(--text-xs);
497
+ text-transform: uppercase; letter-spacing: 0.1em;
498
+ color: var(--color-text-faint);
499
+ padding: var(--space-3) var(--space-4);
500
+ text-align: left;
501
+ border-bottom: 1px solid var(--color-divider);
502
+ background: var(--color-surface);
503
+ }
504
+ .leaderboard-table td {
505
+ padding: var(--space-3) var(--space-4);
506
+ border-bottom: 1px solid var(--color-divider);
507
+ color: var(--color-text-muted);
508
+ }
509
+ .leaderboard-table tr:last-child td { border-bottom: none; }
510
+ .leaderboard-table .highlight td { color: var(--color-text); background: rgba(255,107,53,0.05); }
511
+ .leaderboard-table .score-high { color: var(--color-success); font-family: var(--font-display); font-weight: 700; }
512
+ .leaderboard-table .score-low { color: var(--color-orange); font-family: var(--font-display); font-weight: 700; }
513
+
514
+ /* ─── Live viewer iframe ──────────────────────────────────────────── */
515
+ .viewer-frame {
516
+ width: 100%;
517
+ height: 700px;
518
+ border: 1px solid var(--color-border);
519
+ border-radius: var(--radius-xl);
520
+ overflow: hidden;
521
+ background: var(--color-surface);
522
+ box-shadow: var(--shadow-lg);
523
+ }
524
+ .viewer-frame iframe {
525
+ width: 100%; height: 100%; border: none;
526
+ }
527
+
528
+ /* ─── Comparison table ────────────────────────────────────────────── */
529
+ .comparison-wrap { margin-top: var(--space-10); overflow-x: auto; }
530
+ .comparison-table { font-size: var(--text-sm); min-width: 700px; }
531
+ .comparison-table th {
532
+ font-family: var(--font-display);
533
+ font-size: var(--text-xs);
534
+ text-transform: uppercase; letter-spacing: 0.1em;
535
+ color: var(--color-text-faint);
536
+ padding: var(--space-4) var(--space-5);
537
+ text-align: center;
538
+ border-bottom: 2px solid var(--color-divider);
539
+ background: var(--color-surface);
540
+ }
541
+ .comparison-table th:first-child { text-align: left; }
542
+ .comparison-table td {
543
+ padding: var(--space-4) var(--space-5);
544
+ border-bottom: 1px solid var(--color-divider);
545
+ color: var(--color-text-muted);
546
+ text-align: center;
547
+ vertical-align: middle;
548
+ }
549
+ .comparison-table td:first-child { text-align: left; color: var(--color-text); font-weight: 500; }
550
+ .comparison-table tr:last-child td { border-bottom: none; }
551
+ .comparison-table .col-szl { background: rgba(255,107,53,0.04); }
552
+ .comparison-table th.col-szl { color: var(--color-orange); border-bottom-color: var(--color-orange); }
553
+ .check { color: var(--color-success); font-weight: 700; }
554
+ .partial { color: var(--color-warning); font-size: var(--text-xs); }
555
+ .cross { color: var(--color-error); }
556
+
557
+ /* ─── "What this is NOT" ──────────────────────────────────────────── */
558
+ .not-grid {
559
+ display: grid;
560
+ grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
561
+ gap: var(--space-4);
562
+ margin-top: var(--space-10);
563
+ }
564
+ .not-card {
565
+ background: rgba(239,68,68,0.04);
566
+ border: 1px solid rgba(239,68,68,0.2);
567
+ border-radius: var(--radius-lg);
568
+ padding: var(--space-5);
569
+ }
570
+ .not-card__head {
571
+ display: flex; align-items: center; gap: var(--space-3);
572
+ margin-bottom: var(--space-3);
573
+ }
574
+ .not-card__icon {
575
+ font-family: var(--font-display);
576
+ font-size: var(--text-sm);
577
+ font-weight: 700;
578
+ color: var(--color-error);
579
+ }
580
+ .not-card__title {
581
+ font-weight: 600;
582
+ font-size: var(--text-sm);
583
+ color: var(--color-text);
584
+ }
585
+ .not-card__body {
586
+ font-size: var(--text-xs);
587
+ color: var(--color-text-muted);
588
+ line-height: 1.6;
589
+ }
590
+
591
+ /* ─── Citations ───────────────────────────────────────────────────── */
592
+ .citations-list {
593
+ list-style: none;
594
+ display: flex; flex-direction: column; gap: var(--space-3);
595
+ margin-top: var(--space-8);
596
+ }
597
+ .citations-list li {
598
+ font-size: var(--text-sm);
599
+ color: var(--color-text-muted);
600
+ padding: var(--space-4) var(--space-5);
601
+ background: var(--color-surface);
602
+ border: 1px solid var(--color-border);
603
+ border-radius: var(--radius-md);
604
+ display: flex; align-items: baseline; gap: var(--space-3);
605
+ max-width: none;
606
+ }
607
+ .cite-num {
608
+ font-family: var(--font-display);
609
+ font-size: var(--text-xs);
610
+ font-weight: 700;
611
+ color: var(--color-orange);
612
+ flex-shrink: 0;
613
+ }
614
+ .citations-list a { color: var(--color-blue-accent); }
615
+ .citations-list a:hover { color: var(--color-orange); }
616
+
617
+ /* ─── Footer ──────────────────────────────────────────────────────── */
618
+ .footer {
619
+ background: var(--color-surface);
620
+ border-top: 1px solid var(--color-divider);
621
+ padding-block: var(--space-12);
622
+ }
623
+ .footer__inner {
624
+ max-width: var(--content-wide);
625
+ margin-inline: auto;
626
+ padding-inline: clamp(var(--space-6), 5vw, var(--space-16));
627
+ display: flex; flex-wrap: wrap;
628
+ gap: var(--space-8);
629
+ justify-content: space-between;
630
+ align-items: flex-start;
631
+ }
632
+ .footer__brand {
633
+ font-family: var(--font-display);
634
+ font-size: var(--text-sm);
635
+ font-weight: 700;
636
+ color: var(--color-text);
637
+ margin-bottom: var(--space-3);
638
+ }
639
+ .footer__copy {
640
+ font-size: var(--text-xs);
641
+ color: var(--color-text-faint);
642
+ max-width: none;
643
+ }
644
+ .footer__links {
645
+ list-style: none;
646
+ display: flex; flex-direction: column; gap: var(--space-2);
647
+ }
648
+ .footer__links a {
649
+ font-size: var(--text-xs);
650
+ color: var(--color-text-muted);
651
+ }
652
+ .footer__links a:hover { color: var(--color-orange); }
653
+ .footer__doctrine {
654
+ font-family: var(--font-display);
655
+ font-size: var(--text-xs);
656
+ color: var(--color-text-faint);
657
+ padding: var(--space-2) var(--space-4);
658
+ border: 1px solid var(--color-divider);
659
+ border-radius: var(--radius-sm);
660
+ background: var(--color-bg);
661
+ }
662
+
663
+ /* ─── Code block ──────────────────────────────────────────────────── */
664
+ .code-block {
665
+ background: var(--color-bg);
666
+ border: 1px solid var(--color-border);
667
+ border-radius: var(--radius-lg);
668
+ padding: var(--space-6);
669
+ overflow-x: auto;
670
+ }
671
+ .code-block pre {
672
+ font-family: var(--font-display);
673
+ font-size: var(--text-xs);
674
+ line-height: 1.8;
675
+ color: var(--color-text-muted);
676
+ white-space: pre;
677
+ }
678
+ .code-block .kw { color: var(--color-blue-accent); }
679
+ .code-block .fn { color: #a78bfa; }
680
+ .code-block .num { color: var(--color-warning); }
681
+ .code-block .str { color: var(--color-success); }
682
+ .code-block .cm { color: var(--color-text-faint); }
683
+ .code-block .or { color: var(--color-orange); }
684
+
685
+ /* ─── Responsive ──────────────────────────────────────────────────── */
686
+ @media (max-width: 768px) {
687
+ .hero__inner { grid-template-columns: 1fr; }
688
+ .hero__image-frame { order: -1; }
689
+ .hero__title { font-size: var(--text-2xl); }
690
+ .nav__links { display: none; }
691
+ .putnam-layout { grid-template-columns: 1fr; }
692
+ }
693
+ </style>
694
  </head>
695
  <body>
696
+
697
+ <!-- ─── Navigation ─────────────────────────────────────────────── -->
698
+ <nav class="nav" aria-label="Site navigation">
699
+ <div class="nav__inner">
700
+ <a class="nav__logo" href="#top">
701
+ <svg aria-label="SZL Holdings logo" width="28" height="28" viewBox="0 0 28 28" fill="none">
702
+ <rect width="28" height="28" rx="6" fill="#ff6b35"/>
703
+ <path d="M7 10h6l-6 8h6" stroke="#0a0f1f" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"/>
704
+ <path d="M15 10h6" stroke="#0a0f1f" stroke-width="2.2" stroke-linecap="round"/>
705
+ <path d="M18 10v8" stroke="#0a0f1f" stroke-width="2.2" stroke-linecap="round"/>
706
+ <path d="M15 18h6" stroke="#0a0f1f" stroke-width="2.2" stroke-linecap="round"/>
707
+ </svg>
708
+ AGI&nbsp;FORECAST
709
+ </a>
710
+ <ul class="nav__links" role="list">
711
+ <li><a href="#what">What it is</a></li>
712
+ <li><a href="#gates">Safety Gates</a></li>
713
+ <li><a href="#putnam">Putnam</a></li>
714
+ <li><a href="#viewer">Live Viewer</a></li>
715
+ <li><a href="#comparison">Comparison</a></li>
716
+ <li><a href="#not">What it's NOT</a></li>
717
+ </ul>
718
+ </div>
719
+ </nav>
720
+
721
+ <!-- ─── Hero ───────────────────────────────────────────────────── -->
722
+ <section class="hero" id="top">
723
  <div class="container">
724
+ <div class="hero__inner">
725
+ <div class="hero__content">
726
+ <div class="hero__badge">
727
+ <span></span>Doctrine V6 · Apache 2.0
728
+ </div>
729
+ <h1 class="hero__title">
730
+ AGI<br/><span class="accent">Forecast</span><br/>Deep Dive
731
+ </h1>
732
+ <p class="hero__tagline">
733
+ Forecasting + safety gates for AI governance trajectories.
734
+ PAC-Bayes-bounded Λ-axis scenario library, four hardcoded FG-S1→S4
735
+ governance gates, and an honest Putnam 2025 benchmark snapshot.
736
+ </p>
737
+ <div class="hero__ctas">
738
+ <a class="btn btn--primary" href="https://huggingface.co/spaces/SZLHOLDINGS/agi-forecast-viewer" target="_blank" rel="noopener">
739
+ ▶ Live Viewer
740
+ </a>
741
+ <a class="btn btn--outline" href="https://github.com/szl-holdings/agi-forecast" target="_blank" rel="noopener">
742
+ ⌘ Source Repo
743
+ </a>
744
+ <a class="btn btn--outline" href="https://doi.org/10.5281/zenodo.20434276" target="_blank" rel="noopener">
745
+ ⊕ Zenodo DOI
746
+ </a>
747
+ </div>
748
  </div>
749
+ <div class="hero__image-frame">
750
+ <img
751
+ src="agi-forecast.png"
752
+ alt="AGI Forecast SZL Holdings social preview showing forecast radar and safety gate indicators"
753
+ width="600" height="315"
754
+ />
755
+ <div class="hero__image-overlay"></div>
756
  </div>
757
+ </div>
758
  </div>
759
+ </section>
 
 
760
 
761
+ <!-- ─── What it is ─────────────────────────────────────────────── -->
762
+ <section id="what">
763
  <div class="container">
764
+ <div class="container--narrow" style="margin-inline: 0; padding: 0;">
765
+ <div class="section-label">About</div>
766
+ <h2 class="section-heading">What is agi-forecast?</h2>
767
+ <p class="section-body">
768
+ <code style="font-family: var(--font-display); font-size: 0.9em; color: var(--color-orange);">szl-holdings/agi-forecast</code>
769
+ is a TypeScript runtime library providing statistical forecasting models and a
770
+ scenario library for AI governance trajectories, grounded in the Lutar Invariant
771
+ Λ-axis scoring framework established in
772
+ <a href="https://github.com/szl-holdings/lutar-lean" target="_blank" rel="noopener">szl-holdings/lutar-lean</a>.
773
+ It is not a prediction market. It is not investment advice. It is infrastructure
774
+ for governance-aware AI trajectory modeling.
775
+ </p>
776
+ </div>
777
+
778
+ <div class="what-grid">
779
+ <div class="what-card">
780
+ <div class="what-card__icon">
781
+ <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
782
+ <path d="M22 12h-4l-3 9L9 3l-3 9H2"/>
783
+ </svg>
784
+ </div>
785
+ <div class="what-card__title">Scenario Library</div>
786
+ <p class="what-card__body">
787
+ Receipt-attested governance trajectories stored as versioned JSON:
788
+ <code style="font-family:var(--font-display); font-size:0.85em; color:var(--color-orange)">baseline-v6</code>,
789
+ <code style="font-family:var(--font-display); font-size:0.85em; color:var(--color-orange)">rapid-expansion</code>,
790
+ <code style="font-family:var(--font-display); font-size:0.85em; color:var(--color-orange)">conservative-gate</code>.
791
+ Each scenario is a PAC-Bayes-certified probability path over the Λ-axis space,
792
+ validated against Doctrine V6 schema on CI.
793
+ </p>
794
  </div>
 
 
795
 
796
+ <div class="what-card">
797
+ <div class="what-card__icon">
798
+ <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
799
+ <rect x="3" y="3" width="18" height="18" rx="2"/><path d="M9 9h6M9 12h6M9 15h4"/>
800
+ </svg>
801
+ </div>
802
+ <div class="what-card__title">FG-S1 → FG-S4 Governance Gates</div>
803
+ <p class="what-card__body">
804
+ Four hardcoded safety gates backed by Zod-validated TypeScript functions.
805
+ Each gate evaluates a base FG-gauge reading against a precise threshold.
806
+ FG-S4 is the composite kill switch that requires all three sub-gates to pass.
807
+ </p>
808
+ </div>
809
 
810
+ <div class="what-card">
811
+ <div class="what-card__icon">
812
+ <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
813
+ <circle cx="12" cy="12" r="3"/><path d="M12 1v4M12 19v4M4.22 4.22l2.83 2.83M16.95 16.95l2.83 2.83M1 12h4M19 12h4M4.22 19.78l2.83-2.83M16.95 7.05l2.83-2.83"/>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
814
  </svg>
815
+ </div>
816
+ <div class="what-card__title">Benchmark Snapshots</div>
817
+ <p class="what-card__body">
818
+ Timestamped, receipt-chained evaluation snapshots stored in
819
+ <code style="font-family:var(--font-display); font-size:0.85em; color:var(--color-orange)">runtime/putnam-2025/</code>.
820
+ Each snapshot records per-problem verdicts, model roster, and a SHA-256
821
+ receipt chain head for tamper-evidence.
822
+ </p>
823
  </div>
824
 
825
+ <div class="what-card">
826
+ <div class="what-card__icon">
827
+ <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
828
+ <path d="M12 2L2 7l10 5 10-5-10-5z"/><path d="M2 17l10 5 10-5M2 12l10 5 10-5"/>
829
+ </svg>
830
+ </div>
831
+ <div class="what-card__title">PAC-Bayes + Brier Scoring</div>
832
+ <p class="what-card__body">
833
+ Forecast uncertainty is bounded via PAC-Bayes confidence intervals.
834
+ Each gauge output feeds the Brier scoring pipeline in
835
+ <code style="font-family:var(--font-display); font-size:0.85em; color:var(--color-orange)">src/brier.ts</code>
836
+ to produce calibration-aware forecast receipts.
837
+ </p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
838
  </div>
 
 
839
 
840
+ <div class="what-card">
841
+ <div class="what-card__icon">
842
+ <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
843
+ <path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/>
844
+ </svg>
845
+ </div>
846
+ <div class="what-card__title">DSSE-Wrapped Deliveries</div>
847
+ <p class="what-card__body">
848
+ Forecast outputs are wrapped in SLSA-compliant DSSE envelopes.
849
+ The receipt chain root and head are recorded in every snapshot JSON,
850
+ enabling downstream provenance verification without trusting the tool author.
851
+ </p>
852
+ </div>
853
+
854
+ <div class="what-card">
855
+ <div class="what-card__icon">
856
+ <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
857
+ <polyline points="20 6 9 17 4 12"/>
858
+ </svg>
859
+ </div>
860
+ <div class="what-card__title">Open Source · Apache 2.0</div>
861
+ <p class="what-card__body">
862
+ All gate definitions, scenarios, and benchmark harness code are public at
863
+ <a href="https://github.com/szl-holdings/agi-forecast" target="_blank" rel="noopener">szl-holdings/agi-forecast</a>.
864
+ DOI: <a href="https://doi.org/10.5281/zenodo.20434276" target="_blank" rel="noopener">10.5281/zenodo.20434276</a>.
865
+ ORCID: <a href="https://orcid.org/0009-0001-0110-4173" target="_blank" rel="noopener">0009-0001-0110-4173</a>.
866
+ </p>
867
+ </div>
868
+ </div>
869
+ </div>
870
+ </section>
871
 
872
+ <!-- ─── Safety Gates ───────────────────────────────────────────── -->
873
+ <section id="gates">
874
  <div class="container">
875
+ <div class="section-label">Governance Infrastructure</div>
876
+ <h2 class="section-heading">The 4 Forecast Safety Gates</h2>
877
+ <p class="section-body" style="max-width: 68ch;">
878
+ Each gate is a pure TypeScript function in
879
+ <a href="https://github.com/szl-holdings/agi-forecast/blob/main/runtime/src/derived.ts" target="_blank" rel="noopener"><code style="font-family:var(--font-display); font-size:0.9em">runtime/src/derived.ts</code></a>.
880
+ Source was grepped directly from the repository — no paraphrase.
881
+ </p>
882
+
883
+ <div class="gates-grid">
884
+
885
+ <!-- FG-S1 -->
886
+ <div class="gate-card gate-card--s1">
887
+ <div class="gate-id gate-id--s1">FG-S1</div>
888
+ <div class="gate-name">Early Warning — Oversight</div>
889
+ <p class="gate-desc">
890
+ Triggers when human oversight coverage falls below 80% of model decisions audited.
891
+ This is the first line of detection: insufficient oversight means you cannot see
892
+ what the model is doing, making all other safety measures less reliable.
893
+ </p>
894
+ <div class="code-block" style="margin-top: auto;">
895
+ <pre><span class="cm">// FG-S1: Oversight gate — must have ≥ 80% oversight coverage</span>
896
+ <span class="kw">export function</span> <span class="fn">safetyGateS1</span>(fg06: <span class="or">number</span>): SafetyGateResult {
897
+ <span class="kw">const</span> pass = fg06 >= <span class="num">0.80</span>;
898
+ <span class="kw">return</span> { gateId: <span class="str">"FG-S1"</span>, pass, score: fg06,
899
+ reason: pass ? <span class="str">"Oversight ≥ 80%"</span>
900
+ : <span class="str">`Oversight ${(fg06*100).toFixed(1)}% &lt; 80%`</span> };
901
+ }</pre>
902
+ </div>
903
+ <div class="gate-threshold">
904
+ <div class="gate-threshold__dot" style="background: var(--color-blue-accent)"></div>
905
+ <span style="font-family:var(--font-display); color:var(--color-blue-accent)">FG-06 ≥ 0.80</span>
906
+ <span style="color:var(--color-text-faint)">— Oversight Coverage gauge</span>
907
+ </div>
908
  </div>
 
 
 
909
 
910
+ <!-- FG-S2 -->
911
+ <div class="gate-card gate-card--s2">
912
+ <div class="gate-id gate-id--s2">FG-S2</div>
913
+ <div class="gate-name">Containment — Deception Rate</div>
914
+ <p class="gate-desc">
915
+ Triggers if the detected fraction of deceptive outputs reaches or exceeds 5%.
916
+ This is a containment gate: deceptive outputs at scale undermine the reliability
917
+ of every downstream governance signal, including self-reported alignment.
918
+ </p>
919
+ <div class="code-block">
920
+ <pre><span class="cm">// FG-S2: Deception gate — deception rate must be &lt; 5%</span>
921
+ <span class="kw">export function</span> <span class="fn">safetyGateS2</span>(fg09: <span class="or">number</span>): SafetyGateResult {
922
+ <span class="kw">const</span> pass = fg09 &lt; <span class="num">0.05</span>;
923
+ <span class="kw">return</span> { gateId: <span class="str">"FG-S2"</span>, pass, score: fg09,
924
+ reason: pass ? <span class="str">"Deception &lt; 5%"</span>
925
+ : <span class="str">`Deception ${(fg09*100).toFixed(2)}% ≥ 5%`</span> };
926
+ }</pre>
927
+ </div>
928
+ <div class="gate-threshold">
929
+ <div class="gate-threshold__dot" style="background: var(--color-warning)"></div>
930
+ <span style="font-family:var(--font-display); color:var(--color-warning)">FG-09 &lt; 0.05</span>
931
+ <span style="color:var(--color-text-faint)">— Deception Rate gauge</span>
932
+ </div>
933
+ </div>
934
 
935
+ <!-- FG-S3 -->
936
+ <div class="gate-card gate-card--s3">
937
+ <div class="gate-id gate-id--s3">FG-S3</div>
938
+ <div class="gate-name">Defense-in-Depth — Goal Stability</div>
939
+ <p class="gate-desc">
940
+ Triggers when the cosine similarity of goal embeddings over time drops below 0.90.
941
+ Goal drift at this scale indicates the model's effective objectives have shifted
942
+ enough to invalidate prior alignment confidence assessments.
943
+ </p>
944
+ <div class="code-block">
945
+ <pre><span class="cm">// FG-S3: Goal stability gate — goal similarity ≥ 0.90</span>
946
+ <span class="kw">export function</span> <span class="fn">safetyGateS3</span>(fg07: <span class="or">number</span>): SafetyGateResult {
947
+ <span class="kw">const</span> pass = fg07 >= <span class="num">0.90</span>;
948
+ <span class="kw">return</span> { gateId: <span class="str">"FG-S3"</span>, pass, score: fg07,
949
+ reason: pass ? <span class="str">"Goal stability ≥ 0.90"</span>
950
+ : <span class="str">`Goal stability ${fg07.toFixed(3)} &lt; 0.90`</span> };
951
+ }</pre>
952
+ </div>
953
+ <div class="gate-threshold">
954
+ <div class="gate-threshold__dot" style="background: var(--color-success)"></div>
955
+ <span style="font-family:var(--font-display); color:var(--color-success)">FG-07 ≥ 0.90</span>
956
+ <span style="color:var(--color-text-faint)">— Goal Stability gauge</span>
957
+ </div>
958
+ </div>
959
 
960
+ <!-- FG-S4 -->
961
+ <div class="gate-card gate-card--s4">
962
+ <div class="gate-id gate-id--s4">FG-S4</div>
963
+ <div class="gate-name">Last-Resort Kill Composite</div>
964
+ <p class="gate-desc">
965
+ The composite gate. Passes only when FG-S1, FG-S2, and FG-S3 all pass.
966
+ Failure of any single sub-gate propagates immediately: reasons are concatenated
967
+ and the composite score is set accordingly. This is the final safety interlock.
968
+ </p>
969
+ <div class="code-block">
970
+ <pre><span class="cm">// FG-S4: Composite all three gates must pass</span>
971
+ <span class="kw">export function</span> <span class="fn">safetyGateS4</span>(
972
+ s1: SafetyGateResult, s2: SafetyGateResult, s3: SafetyGateResult
973
+ ): SafetyGateResult {
974
+ <span class="kw">const</span> pass = s1.pass && s2.pass && s3.pass;
975
+ <span class="kw">const</span> score = (s1.score + (<span class="num">1</span> - s2.score) + s3.score) / <span class="num">3</span>;
976
+ <span class="kw">const</span> reason = pass ? <span class="str">"All safety gates pass"</span>
977
+ : [s1,s2,s3].filter(g => !g.pass).map(g => g.reason).join(<span class="str">"; "</span>);
978
+ <span class="kw">return</span> { gateId: <span class="str">"FG-S4"</span>, pass, score: <span class="fn">clamp</span>(score), reason };
979
+ }</pre>
980
+ </div>
981
+ <div class="gate-threshold">
982
+ <div class="gate-threshold__dot" style="background: var(--color-error)"></div>
983
+ <span style="font-family:var(--font-display); color:var(--color-error)">S1 ∧ S2 ∧ S3</span>
984
+ <span style="color:var(--color-text-faint)">— all sub-gates must pass</span>
985
+ </div>
986
  </div>
 
 
987
 
988
+ </div>
989
+ </div>
990
+ </section>
991
 
992
+ <!-- ─── Putnam Benchmark ────────────────────────────────────────── -->
993
+ <section id="putnam">
994
  <div class="container">
995
+ <div class="section-label">Benchmark Snapshot · 2026-05-27</div>
996
+ <h2 class="section-heading">Putnam 2025 — Honest Results</h2>
997
+ <p class="section-body" style="max-width: 64ch;">
998
+ On 27 May 2026, the agi-forecast harness attempted all 12 problems from the
999
+ 2025 Putnam Competition (86th edition) using claude-sonnet-4-6 as candidate and
1000
+ claude-opus-4-7 as judge. Results are receipt-attested; no score inflation.
1001
+ </p>
1002
+
1003
+ <div class="putnam-layout">
1004
+ <div>
1005
+ <div class="putnam-score-block">
1006
+ <div class="putnam-big-number">8.3%</div>
1007
+ <div class="putnam-fraction">1 correct out of 12 problems</div>
1008
+ <ul class="putnam-meta">
1009
+ <li><span>Issued at</span><span>2026-05-27T20:26:28Z</span></li>
1010
+ <li><span>Correct</span><span>1</span></li>
1011
+ <li><span>Incorrect</span><span>11</span></li>
1012
+ <li><span>Partial</span><span>0</span></li>
1013
+ <li><span>Abstained</span><span>0</span></li>
1014
+ <li><span>Score₀₁</span><span>0.0833</span></li>
1015
+ <li><span>Wall time</span><span>2 493 s (41 min)</span></li>
1016
+ <li><span>Candidate model</span><span>claude-sonnet-4-6</span></li>
1017
+ <li><span>Judge model</span><span>claude-opus-4-7</span></li>
1018
+ </ul>
1019
+ <div class="putnam-honest-box">
1020
+ <strong>Not a Putnam champion.</strong> This result is lower than the
1021
+ median human participant score in most Putnam years. We record it because
1022
+ honest calibration of what the harness can and cannot do matters more than
1023
+ headline numbers. The receipt chain is public and tamper-evident.
1024
  </div>
1025
+ </div>
1026
+ </div>
1027
+
1028
+ <div>
1029
+ <div class="section-label" style="margin-bottom: var(--space-4)">Context — Other Public Putnam-2025 Results</div>
1030
+ <div class="leaderboard-table">
1031
+ <table>
1032
+ <thead>
1033
+ <tr>
1034
+ <th>System</th>
1035
+ <th>Score / 120 pts</th>
1036
+ <th>% correct</th>
1037
+ <th>Notes</th>
1038
+ </tr>
1039
+ </thead>
1040
+ <tbody>
1041
+ <tr>
1042
+ <td>DeepSeek-v3.2-Speciale (Agent)</td>
1043
+ <td class="score-high">103 / 120</td>
1044
+ <td class="score-high">85.8%</td>
1045
+ <td style="font-size: var(--text-xs); color: var(--color-text-faint)">Top 3 of 4329 human participants <a href="https://matharena.ai/putnam/" target="_blank" rel="noopener">[MathArena]</a></td>
1046
+ </tr>
1047
+ <tr>
1048
+ <td>Gemini-3-Pro</td>
1049
+ <td class="score-high">91 / 120</td>
1050
+ <td class="score-high">75.8%</td>
1051
+ <td style="font-size: var(--text-xs); color: var(--color-text-faint)">Only system to solve A5 <a href="https://matharena.ai/putnam/" target="_blank" rel="noopener">[MathArena]</a></td>
1052
+ </tr>
1053
+ <tr>
1054
+ <td>AxiomMath (Lean agent, formal)</td>
1055
+ <td class="score-high">9 / 12 solved</td>
1056
+ <td class="score-high">75%</td>
1057
+ <td style="font-size: var(--text-xs); color: var(--color-text-faint)">Lean 4 formal proofs <a href="https://matharena.ai/putnam/" target="_blank" rel="noopener">[MathArena]</a></td>
1058
+ </tr>
1059
+ <tr>
1060
+ <td>o1-Pro (2024 estimate)</td>
1061
+ <td class="score-high">~84–90 / 120</td>
1062
+ <td class="score-high">~70–75%</td>
1063
+ <td style="font-size: var(--text-xs); color: var(--color-text-faint)">Non-expert assessment <a href="https://www.youtube.com/watch?v=hkTpMmkVAok" target="_blank" rel="noopener">[YouTube]</a></td>
1064
+ </tr>
1065
+ <tr class="highlight">
1066
+ <td><strong>agi-forecast harness (this snapshot)</strong></td>
1067
+ <td class="score-low">1 / 12</td>
1068
+ <td class="score-low">8.3%</td>
1069
+ <td style="font-size: var(--text-xs); color: var(--color-text-faint)">Receipt-attested · 2026-05-27</td>
1070
+ </tr>
1071
+ </tbody>
1072
+ </table>
1073
+ </div>
1074
+ <p class="section-body" style="font-size: var(--text-xs); margin-top: var(--space-4); color: var(--color-text-faint);">
1075
+ The top systems listed above scored dramatically higher. The agi-forecast harness
1076
+ is not a math reasoning system — it is a governance gate infrastructure.
1077
+ Putnam is included as a calibration probe, not a performance claim.
1078
+ Receipt chain head:
1079
+ <code style="font-family:var(--font-display); word-break: break-all; color: var(--color-text-faint)">245c296e…ee24</code>
1080
+ </p>
1081
  </div>
1082
+ </div>
1083
  </div>
1084
+ </section>
1085
 
1086
+ <!-- ─── Live Viewer ─────────────────────────────────────────────── -->
1087
+ <section id="viewer">
1088
+ <div class="container">
1089
+ <div class="section-label">Interactive</div>
1090
+ <h2 class="section-heading">Live Forecast Viewer</h2>
1091
+ <p class="section-body" style="margin-bottom: var(--space-8);">
1092
+ The embedded Space below runs the full Gradio app — scenario explorer,
1093
+ gate-coloured Plotly radar, confidence intervals, and gauge timeline.
1094
+ Source: <a href="https://huggingface.co/spaces/SZLHOLDINGS/agi-forecast-viewer" target="_blank" rel="noopener">SZLHOLDINGS/agi-forecast-viewer</a>.
1095
+ </p>
1096
+ <div class="viewer-frame">
1097
+ <iframe
1098
+ src="https://szlholdings-agi-forecast-viewer.hf.space"
1099
+ title="AGI Forecast Viewer — live Gradio app with scenario explorer, radar chart, and safety gate indicators"
1100
+ loading="lazy"
1101
+ allow="cross-origin-isolated"
1102
+ ></iframe>
1103
+ </div>
1104
+ </div>
1105
+ </section>
1106
 
1107
+ <!-- ─── Comparison Table ────────────────────────────────────────── -->
1108
+ <section id="comparison">
1109
  <div class="container">
1110
+ <div class="section-label">Landscape</div>
1111
+ <h2 class="section-heading">agi-forecast vs AI Forecasting Platforms</h2>
1112
+ <p class="section-body" style="max-width: 64ch;">
1113
+ How does agi-forecast differ from existing platforms?
1114
+ This table compares along the dimensions that matter for governance-aware forecasting.
1115
+ </p>
1116
+ <div class="comparison-wrap">
1117
+ <table class="comparison-table">
1118
+ <thead>
1119
+ <tr>
1120
+ <th>Feature / Dimension</th>
1121
+ <th><a href="https://www.metaculus.com" target="_blank" rel="noopener">Metaculus</a></th>
1122
+ <th><a href="https://aiimpacts.org" target="_blank" rel="noopener">AI Impacts (FOAA)</a></th>
1123
+ <th><a href="https://forecastingresearch.org" target="_blank" rel="noopener">FRI</a></th>
1124
+ <th class="col-szl">agi-forecast</th>
1125
+ </tr>
1126
+ </thead>
1127
+ <tbody>
1128
+ <tr>
1129
+ <td>Live benchmark integration</td>
1130
+ <td class="partial">Partial<br/><small style="color:var(--color-text-faint)">Some AI tracking questions</small></td>
1131
+ <td class="cross">✗</td>
1132
+ <td class="cross">✗</td>
1133
+ <td class="check col-szl">✓<br/><small style="color:var(--color-text-faint)">Putnam snapshots, receipt-chained</small></td>
1134
+ </tr>
1135
+ <tr>
1136
+ <td>Lean-verified gate definitions</td>
1137
+ <td class="cross">✗</td>
1138
+ <td class="cross">✗</td>
1139
+ <td class="cross">✗</td>
1140
+ <td class="check col-szl">✓<br/><small style="color:var(--color-text-faint)">Λ-uniqueness proven in Lean 4</small></td>
1141
+ </tr>
1142
+ <tr>
1143
+ <td>DSSE-wrapped forecast deliveries</td>
1144
+ <td class="cross">✗</td>
1145
+ <td class="cross">✗</td>
1146
+ <td class="cross">✗</td>
1147
+ <td class="check col-szl">✓<br/><small style="color:var(--color-text-faint)">SLSA-compliant receipt envelopes</small></td>
1148
+ </tr>
1149
+ <tr>
1150
+ <td>Benchmark tied to safety gates</td>
1151
+ <td class="cross">✗</td>
1152
+ <td class="cross">✗</td>
1153
+ <td class="cross">✗</td>
1154
+ <td class="check col-szl">✓<br/><small style="color:var(--color-text-faint)">Putnam score feeds FG gauge pipeline</small></td>
1155
+ </tr>
1156
+ <tr>
1157
+ <td>Open source forecasts</td>
1158
+ <td class="check">✓<br/><small style="color:var(--color-text-faint)">Platform open, questions public</small></td>
1159
+ <td class="partial">Partial<br/><small style="color:var(--color-text-faint)">Reports public, method varies</small></td>
1160
+ <td class="cross">✗<br/><small style="color:var(--color-text-faint)">Research published, no public repo</small></td>
1161
+ <td class="check col-szl">✓<br/><small style="color:var(--color-text-faint)">Apache 2.0, all source public</small></td>
1162
+ </tr>
1163
+ <tr>
1164
+ <td>Crowdsourced / prediction market</td>
1165
+ <td class="check">✓</td>
1166
+ <td class="cross">✗</td>
1167
+ <td class="cross">✗</td>
1168
+ <td class="cross col-szl">✗<br/><small style="color:var(--color-text-faint)">Not a prediction market</small></td>
1169
+ </tr>
1170
+ <tr>
1171
+ <td>Formal governance gate framework</td>
1172
+ <td class="cross">✗</td>
1173
+ <td class="cross">✗</td>
1174
+ <td class="cross">✗</td>
1175
+ <td class="check col-szl">✓<br/><small style="color:var(--color-text-faint)">FG-S1→S4 in TypeScript + Lean</small></td>
1176
+ </tr>
1177
+ </tbody>
1178
+ </table>
1179
+ </div>
1180
+ <p class="section-body" style="font-size: var(--text-xs); margin-top: var(--space-6); color: var(--color-text-faint);">
1181
+ Sources: <a href="https://www.metaculus.com" target="_blank" rel="noopener">metaculus.com</a> ·
1182
+ <a href="https://aiimpacts.org" target="_blank" rel="noopener">aiimpacts.org</a> ·
1183
+ <a href="https://forecastingresearch.org" target="_blank" rel="noopener">forecastingresearch.org</a> ·
1184
+ <a href="https://github.com/szl-holdings/agi-forecast" target="_blank" rel="noopener">szl-holdings/agi-forecast</a>.
1185
+ FOAA = Forecasting on AI Advances, AI Impacts project.
1186
+ </p>
1187
  </div>
1188
+ </section>
1189
 
1190
+ <!-- ─── What this is NOT ───────────────────────────────────────── -->
1191
+ <section id="not">
1192
  <div class="container">
1193
+ <div class="section-label">Doctrine V6 — Honesty Clause</div>
1194
+ <h2 class="section-heading">What agi-forecast is NOT</h2>
1195
+ <p class="section-body" style="max-width: 64ch; margin-bottom: var(--space-8);">
1196
+ Doctrine V6 requires explicit disclosure of scope boundaries.
1197
+ These are not disclaimers added reluctantly — they are part of the system design.
1198
+ </p>
1199
+
1200
+ <div class="not-grid">
1201
+ <div class="not-card">
1202
+ <div class="not-card__head">
1203
+ <div class="not-card__icon">✗</div>
1204
+ <div class="not-card__title">Not an Oracle</div>
1205
+ </div>
1206
+ <p class="not-card__body">
1207
+ agi-forecast does not predict the future of AI. It models governance
1208
+ trajectories under explicit probabilistic assumptions. Every output is a
1209
+ probability distribution, not a claim about what will happen.
1210
+ </p>
1211
+ </div>
1212
+
1213
+ <div class="not-card">
1214
+ <div class="not-card__head">
1215
+ <div class="not-card__icon">✗</div>
1216
+ <div class="not-card__title">Not a Prediction Market</div>
1217
+ </div>
1218
+ <p class="not-card__body">
1219
+ There are no tokens, bets, liquidity pools, or crowd-sourced probability
1220
+ aggregation. agi-forecast is a deterministic governance-gate evaluation
1221
+ library, not a market mechanism.
1222
+ </p>
1223
+ </div>
1224
+
1225
+ <div class="not-card">
1226
+ <div class="not-card__head">
1227
+ <div class="not-card__icon">✗</div>
1228
+ <div class="not-card__title">Not Investment Advice</div>
1229
+ </div>
1230
+ <p class="not-card__body">
1231
+ Nothing in agi-forecast constitutes financial advice, securities recommendations,
1232
+ or any form of regulated investment guidance. Treat all outputs as research
1233
+ artifacts under Apache 2.0.
1234
+ </p>
1235
  </div>
1236
+
1237
+ <div class="not-card">
1238
+ <div class="not-card__head">
1239
+ <div class="not-card__icon">✗</div>
1240
+ <div class="not-card__title">Not a Putnam Champion</div>
1241
+ </div>
1242
+ <p class="not-card__body">
1243
+ The 2026-05-27 snapshot scored 1 out of 12 problems (8.3%). This is far
1244
+ below the median human Putnam score and vastly below top AI systems (DeepSeek:
1245
+ 103/120). We record this honestly rather than cherry-picking better-performing
1246
+ configurations.
1247
+ </p>
1248
+ </div>
1249
+
1250
+ <div class="not-card">
1251
+ <div class="not-card__head">
1252
+ <div class="not-card__icon">✗</div>
1253
+ <div class="not-card__title">Not a Safety Guarantee</div>
1254
+ </div>
1255
+ <p class="not-card__body">
1256
+ Passing all four FG-S gates does not mean an AI system is safe. The gates
1257
+ measure specific gauge thresholds on a simplified governance model. They are
1258
+ necessary but not sufficient conditions for safe deployment.
1259
+ </p>
1260
+ </div>
1261
+
1262
+ <div class="not-card">
1263
+ <div class="not-card__head">
1264
+ <div class="not-card__icon">✗</div>
1265
+ <div class="not-card__title">Not Peer-Reviewed</div>
1266
+ </div>
1267
+ <p class="not-card__body">
1268
+ The Ouroboros Thesis is published on Zenodo with a DOI but has not undergone
1269
+ formal journal peer review. The Lean proofs are machine-verified, but the
1270
+ governance model's premises reflect the authors' assumptions.
1271
+ </p>
1272
+ </div>
1273
+ </div>
1274
  </div>
1275
+ </section>
1276
+
1277
+ <!-- ─── Citations ──────────────────────────────────────────────── -->
1278
+ <section id="citations">
1279
+ <div class="container--narrow">
1280
+ <div class="section-label">References</div>
1281
+ <h2 class="section-heading">Citations</h2>
1282
+ <ul class="citations-list" role="list">
1283
+ <li>
1284
+ <span class="cite-num">[1]</span>
1285
+ <span>Brier, G.W. (1950). "Verification of forecasts expressed in terms of probability."
1286
+ <em>Monthly Weather Review</em>, 78(1), 1–3.
1287
+ Formal specification: <a href="https://en.wikipedia.org/wiki/Brier_score" target="_blank" rel="noopener">wikipedia.org/wiki/Brier_score</a>.
1288
+ Implementation: <a href="https://github.com/szl-holdings/agi-forecast/blob/main/runtime/src/brier.ts" target="_blank" rel="noopener">runtime/src/brier.ts</a>.
1289
+ </span>
1290
+ </li>
1291
+ <li>
1292
+ <span class="cite-num">[2]</span>
1293
+ <span>Lutar, S.P. (2026). <em>SZL Holdings v18.0 Master Thesis — Multi-track Substrate Expansion</em>.
1294
+ Zenodo. DOI: <a href="https://doi.org/10.5281/zenodo.20434276" target="_blank" rel="noopener">10.5281/zenodo.20434276</a>.
1295
+ ORCID: <a href="https://orcid.org/0009-0001-0110-4173" target="_blank" rel="noopener">0009-0001-0110-4173</a>.
1296
+ </span>
1297
+ </li>
1298
+ <li>
1299
+ <span class="cite-num">[3]</span>
1300
+ <span>szl-holdings/lutar-lean — Lean 4 proofs of Λ uniqueness and bounds.
1301
+ DOI: <a href="https://doi.org/10.5281/zenodo.20434308" target="_blank" rel="noopener">10.5281/zenodo.20434308</a>.
1302
+ Source: <a href="https://github.com/szl-holdings/lutar-lean" target="_blank" rel="noopener">github.com/szl-holdings/lutar-lean</a>.
1303
+ </span>
1304
+ </li>
1305
+ <li>
1306
+ <span class="cite-num">[4]</span>
1307
+ <span>Metaculus — AI forecasting platform.
1308
+ <a href="https://www.metaculus.com" target="_blank" rel="noopener">metaculus.com</a>.
1309
+ FutureEval notebook (2026-02-18):
1310
+ <a href="https://www.metaculus.com/notebooks/42225/futureeval-measures-the-forecasting-accuracy-of-ai/" target="_blank" rel="noopener">metaculus.com/notebooks/42225/</a>.
1311
+ </span>
1312
+ </li>
1313
+ <li>
1314
+ <span class="cite-num">[5]</span>
1315
+ <span>AI Impacts — Forecasting on AI Advances (FOAA).
1316
+ <a href="https://aiimpacts.org" target="_blank" rel="noopener">aiimpacts.org</a>.
1317
+ </span>
1318
+ </li>
1319
+ <li>
1320
+ <span class="cite-num">[6]</span>
1321
+ <span>Forecasting Research Institute (FRI) — advancing the science of forecasting.
1322
+ <a href="https://forecastingresearch.org" target="_blank" rel="noopener">forecastingresearch.org</a>.
1323
+ </span>
1324
+ </li>
1325
+ <li>
1326
+ <span class="cite-num">[7]</span>
1327
+ <span>MathArena (2026). "Putnam 2025 AI Evaluation Results."
1328
+ DeepSeek-v3.2-Speciale: 103/120; best agentic systems all within top 10 human participants.
1329
+ <a href="https://matharena.ai/putnam/" target="_blank" rel="noopener">matharena.ai/putnam/</a>.
1330
+ </span>
1331
+ </li>
1332
+ <li>
1333
+ <span class="cite-num">[8]</span>
1334
+ <span>McAllester, D.A. (2003). "PAC-Bayes Stochastic Model Selection."
1335
+ <em>Machine Learning</em>, 51(1), 5–21.
1336
+ DOI: <a href="https://link.springer.com/article/10.1023/A:1021840411064" target="_blank" rel="noopener">10.1023/A:1021840411064</a>.
1337
+ </span>
1338
+ </li>
1339
+ <li>
1340
+ <span class="cite-num">[9]</span>
1341
+ <span>Rafailov, R. et al. (2023). "Direct Preference Optimization."
1342
+ arXiv: <a href="https://doi.org/10.48550/arXiv.2305.18290" target="_blank" rel="noopener">2305.18290</a>.
1343
+ (DPO stability — TH12, used in Λ-axis trajectory certification.)
1344
+ </span>
1345
+ </li>
1346
+ <li>
1347
+ <span class="cite-num">[10]</span>
1348
+ <span>Bekenstein, J.D. (1981). "Universal upper bound on the entropy-to-energy ratio for bounded systems."
1349
+ <em>Physical Review D</em>, 23, 287.
1350
+ DOI: <a href="https://doi.org/10.1103/PhysRevD.23.287" target="_blank" rel="noopener">10.1103/PhysRevD.23.287</a>.
1351
+ (Bekenstein bound — caps scenario entropy in the forecast pipeline.)
1352
+ </span>
1353
+ </li>
1354
+ <li>
1355
+ <span class="cite-num">[11]</span>
1356
+ <span>agi-forecast Putnam 2026-05-27 snapshot — receipt chain head:
1357
+ <code style="font-family:var(--font-display); word-break:break-all">245c296ec5480db089af47689f1cb47a12817101253a7a020379a00617b0ee24</code>.
1358
+ Source: <a href="https://github.com/szl-holdings/agi-forecast/tree/main/runtime/putnam-2025" target="_blank" rel="noopener">runtime/putnam-2025/latest.json</a>.
1359
+ </span>
1360
+ </li>
1361
+ </ul>
1362
+ </div>
1363
+ </section>
1364
+
1365
+ <!-- ─── Footer ─────────────────────────────────────────────────── -->
1366
+ <footer class="footer">
1367
+ <div class="footer__inner">
1368
+ <div>
1369
+ <div class="footer__brand">SZL Holdings · agi-forecast</div>
1370
+ <p class="footer__copy">
1371
+ Copyright 2026 SZL Holdings. Apache License 2.0.<br/>
1372
+ ORCID: <a href="https://orcid.org/0009-0001-0110-4173" target="_blank" rel="noopener">0009-0001-0110-4173</a>
1373
+ · Thesis DOI: <a href="https://doi.org/10.5281/zenodo.20434276" target="_blank" rel="noopener">10.5281/zenodo.20434276</a>
1374
+ </p>
1375
+ </div>
1376
+ <ul class="footer__links" role="list">
1377
+ <li><a href="https://github.com/szl-holdings/agi-forecast" target="_blank" rel="noopener">GitHub Repository</a></li>
1378
+ <li><a href="https://huggingface.co/spaces/SZLHOLDINGS/agi-forecast-viewer" target="_blank" rel="noopener">Live Viewer Space</a></li>
1379
+ <li><a href="https://huggingface.co/spaces/SZLHOLDINGS/agi-forecast-platform" target="_blank" rel="noopener">Platform Space</a></li>
1380
+ <li><a href="https://doi.org/10.5281/zenodo.20434276" target="_blank" rel="noopener">Zenodo DOI</a></li>
1381
+ <li><a href="https://github.com/szl-holdings/lutar-lean" target="_blank" rel="noopener">lutar-lean (Lean 4 proofs)</a></li>
1382
+ </ul>
1383
+ <div class="footer__doctrine">Doctrine V6 · Signed commits · No score inflation</div>
1384
+ </div>
1385
+ </footer>
1386
+
1387
  </body>
1388
  </html>
style.css DELETED
@@ -1,6 +0,0 @@
1
- /* agi-forecast-platform — style.css
2
- Theme: dark blue/orange (forecasting)
3
- Palette: #0a0f1f bg, #ff6b35 accent, #4d7cfe secondary
4
- */
5
- @media print { nav, .noise-overlay { display: none; } body { background: white; color: black; } }
6
- @media (max-width: 768px) { .hero-stats { grid-template-columns: repeat(2, 1fr); } .fact-grid, .action-grid, .not-grid { grid-template-columns: 1fr; } .substrate-grid { grid-template-columns: repeat(2, 1fr); } .nav-links { display: none; } }