Testing347 commited on
Commit
f0413da
·
verified ·
1 Parent(s): 85c9219

Update capabilities.html

Browse files
Files changed (1) hide show
  1. capabilities.html +228 -371
capabilities.html CHANGED
@@ -3,7 +3,7 @@
3
  <head>
4
  <meta charset="UTF-8" />
5
  <meta name="viewport" content="width=device-width,initial-scale=1.0" />
6
- <title>SILENTPATTERN — Programs</title>
7
 
8
  <!-- Tailwind -->
9
  <script src="https://cdn.tailwindcss.com"></script>
@@ -28,9 +28,9 @@
28
 
29
  .aura {
30
  background:
31
- radial-gradient(circle at 25% 20%, rgba(99,102,241,0.22), transparent 44%),
32
- radial-gradient(circle at 80% 75%, rgba(236,72,153,0.12), transparent 50%),
33
- radial-gradient(circle at 55% 45%, rgba(139,92,246,0.10), transparent 60%);
34
  }
35
 
36
  .conscious-element { transition: all 0.28s ease; }
@@ -38,7 +38,10 @@
38
 
39
  .focus-ring:focus { outline: none; box-shadow: 0 0 0 2px rgba(99,102,241,0.65); }
40
 
41
- /* Scrollbar for dossier panel */
 
 
 
42
  .thin-scroll {
43
  scrollbar-width: thin;
44
  scrollbar-color: #4f46e5 #1e1b4b;
@@ -47,35 +50,12 @@
47
  .thin-scroll::-webkit-scrollbar-track { background: #1e1b4b; }
48
  .thin-scroll::-webkit-scrollbar-thumb { background-color: #4f46e5; border-radius: 3px; }
49
 
50
- .modal { transition: opacity 0.3s ease, transform 0.3s ease; }
51
- .modal-hidden { opacity: 0; transform: translateY(20px); pointer-events: none; }
52
- .modal-visible { opacity: 1; transform: translateY(0); }
53
-
54
- /* Stage badges */
55
- .badge {
56
- display: inline-flex;
57
- align-items: center;
58
- gap: 8px;
59
- padding: 6px 10px;
60
- border-radius: 999px;
61
- font-size: 12px;
62
- border: 1px solid rgba(148,163,184,0.18);
63
- background: rgba(15,23,42,0.25);
64
- color: rgba(226,232,240,0.9);
65
- letter-spacing: 0.08em;
66
- text-transform: uppercase;
67
- }
68
- .dot { width: 8px; height: 8px; border-radius: 999px; }
69
- .dot-concept { background: rgba(99,102,241,0.9); }
70
- .dot-proto { background: rgba(139,92,246,0.9); }
71
- .dot-validated { background: rgba(16,185,129,0.9); }
72
-
73
- /* Subtle “bay” grid */
74
- .bay-grid {
75
  background-image:
76
  linear-gradient(rgba(148,163,184,0.06) 1px, transparent 1px),
77
  linear-gradient(90deg, rgba(148,163,184,0.06) 1px, transparent 1px);
78
- background-size: 40px 40px;
79
  background-position: center;
80
  }
81
  </style>
@@ -85,7 +65,7 @@
85
  <!-- Animated background -->
86
  <div id="vanta-bg" class="fixed top-0 left-0 w-full h-full z-0"></div>
87
 
88
- <!-- Minimal top bar -->
89
  <nav class="relative z-10 py-6 px-8 flex justify-between items-center backdrop-blur-sm">
90
  <a href="index.html" class="flex items-center space-x-2">
91
  <div class="w-8 h-8 rounded-full bg-indigo-600 flex items-center justify-center">
@@ -109,264 +89,146 @@
109
  </nav>
110
 
111
  <!-- HERO -->
112
- <section class="relative z-10 px-6 pt-14 pb-8">
113
  <div class="max-w-6xl mx-auto">
114
- <div class="flex flex-col gap-5">
115
- <div class="inline-flex items-center gap-3 self-start px-4 py-2 rounded-full border border-gray-800 bg-gray-900/20 backdrop-blur-sm">
116
- <span class="w-2 h-2 rounded-full bg-indigo-400 animate-pulse"></span>
117
- <span class="text-xs text-gray-300 tracking-widest uppercase">Programs</span>
118
- <span class="text-xs text-gray-500">Research artifacts and prototypes</span>
119
- </div>
120
-
121
- <h1 class="text-3xl md:text-6xl font-bold leading-tight">
122
- <span class="gradient-text">Program Bay</span><br>
123
- Capabilities as auditable systems
124
- </h1>
125
 
126
- <p class="text-gray-300 max-w-3xl text-lg md:text-xl">
127
- SILENTPATTERN is presented as an interface, not a brochure. Each program has a dossier: scope, assumptions, evaluation protocol, and access gates.
128
- </p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
129
 
130
- <div class="text-xs text-gray-500 max-w-3xl">
131
- Note: Programs involving markets are research prototypes. Nothing here constitutes investment advice, solicitation, or performance claims.
 
132
  </div>
133
- </div>
134
- </div>
135
- </section>
136
-
137
- <!-- PROGRAM BAY + DOSSIER PANEL -->
138
- <section class="relative z-10 px-6 pb-16">
139
- <div class="max-w-6xl mx-auto">
140
- <div class="grid grid-cols-1 lg:grid-cols-5 gap-6">
141
 
142
- <!-- LEFT: Program Bay -->
143
- <div class="lg:col-span-3 rounded-2xl border border-gray-800 bg-gray-900/20 overflow-hidden aura">
144
  <div class="px-6 py-5 border-b border-gray-800/60 flex items-center justify-between">
145
  <div>
146
- <div class="text-sm text-gray-200 font-medium">Program Bay</div>
147
- <div class="text-xs text-gray-500 mt-1">Select a module to load its dossier.</div>
148
  </div>
149
  <div class="text-xs px-2.5 py-1 rounded-full border border-indigo-500/30 text-indigo-200 bg-indigo-900/15">
150
- INTERFACE MODE
151
- </div>
152
- </div>
153
-
154
- <div class="p-6 bay-grid">
155
- <div class="grid grid-cols-1 md:grid-cols-2 gap-4">
156
-
157
- <!-- MCAP -->
158
- <button type="button"
159
- class="program-card text-left rounded-2xl border border-gray-800 bg-gray-900/30 hover:border-indigo-500/55 hover:bg-gray-900/45 transition p-5 conscious-element"
160
- data-dossier="mcap">
161
- <div class="flex items-start justify-between gap-4">
162
- <div>
163
- <div class="text-lg font-semibold text-gray-100">MCAP</div>
164
- <div class="text-xs text-gray-500 mt-1">Minimal Causal Abstraction Principle</div>
165
- </div>
166
- <span class="badge"><span class="dot dot-proto"></span>Prototype</span>
167
- </div>
168
- <p class="text-sm text-gray-300 mt-4 leading-relaxed">
169
- A compression rule for causal structure: preserve intervention-relevant information while minimizing representation.
170
- </p>
171
- <div class="mt-4 text-xs text-gray-500 flex items-center gap-2">
172
- <i class="fas fa-shield-halved"></i>
173
- <span>Evaluation-first; claims gated by evidence</span>
174
- </div>
175
- </button>
176
-
177
- <!-- CHAI -->
178
- <button type="button"
179
- class="program-card text-left rounded-2xl border border-gray-800 bg-gray-900/30 hover:border-indigo-500/55 hover:bg-gray-900/45 transition p-5 conscious-element"
180
- data-dossier="chai">
181
- <div class="flex items-start justify-between gap-4">
182
- <div>
183
- <div class="text-lg font-semibold text-gray-100">CHAI</div>
184
- <div class="text-xs text-gray-500 mt-1">Forecasting & regime inference stack</div>
185
- </div>
186
- <span class="badge"><span class="dot dot-concept"></span>Concept</span>
187
- </div>
188
- <p class="text-sm text-gray-300 mt-4 leading-relaxed">
189
- A research pipeline for market prediction under distribution shift: features, regimes, calibration, and robust validation.
190
- </p>
191
- <div class="mt-4 text-xs text-gray-500 flex items-center gap-2">
192
- <i class="fas fa-triangle-exclamation"></i>
193
- <span>Markets are adversarial; protocols matter</span>
194
- </div>
195
- </button>
196
-
197
- <!-- Quantum Lambda -->
198
- <button type="button"
199
- class="program-card text-left rounded-2xl border border-gray-800 bg-gray-900/30 hover:border-indigo-500/55 hover:bg-gray-900/45 transition p-5 conscious-element"
200
- data-dossier="quantum_lambda">
201
- <div class="flex items-start justify-between gap-4">
202
- <div>
203
- <div class="text-lg font-semibold text-gray-100">Quantum Lambda</div>
204
- <div class="text-xs text-gray-500 mt-1">High-frequency decision systems</div>
205
- </div>
206
- <span class="badge"><span class="dot dot-concept"></span>Concept</span>
207
- </div>
208
- <p class="text-sm text-gray-300 mt-4 leading-relaxed">
209
- A microstructure-aware control loop: latency budgets, execution constraints, and risk-aware action selection.
210
- </p>
211
- <div class="mt-4 text-xs text-gray-500 flex items-center gap-2">
212
- <i class="fas fa-stopwatch"></i>
213
- <span>Assumptions must be explicit (latency, slippage)</span>
214
- </div>
215
- </button>
216
-
217
- <!-- AI Scientist -->
218
- <button type="button"
219
- class="program-card text-left rounded-2xl border border-gray-800 bg-gray-900/30 hover:border-indigo-500/55 hover:bg-gray-900/45 transition p-5 conscious-element"
220
- data-dossier="ai_scientist">
221
- <div class="flex items-start justify-between gap-4">
222
- <div>
223
- <div class="text-lg font-semibold text-gray-100">AI Scientist</div>
224
- <div class="text-xs text-gray-500 mt-1">Hypothesis → Experiment → Report</div>
225
- </div>
226
- <span class="badge"><span class="dot dot-proto"></span>Prototype</span>
227
- </div>
228
- <p class="text-sm text-gray-300 mt-4 leading-relaxed">
229
- An internal research engine that standardizes experiments, enforces reproducibility, and generates concise research notes with uncertainty.
230
- </p>
231
- <div class="mt-4 text-xs text-gray-500 flex items-center gap-2">
232
- <i class="fas fa-flask"></i>
233
- <span>Reproducibility is a feature, not a slogan</span>
234
- </div>
235
- </button>
236
-
237
- <!-- Agentic Workforce -->
238
- <button type="button"
239
- class="program-card text-left rounded-2xl border border-gray-800 bg-gray-900/30 hover:border-indigo-500/55 hover:bg-gray-900/45 transition p-5 conscious-element md:col-span-2"
240
- data-dossier="agentic_workforce">
241
- <div class="flex items-start justify-between gap-4">
242
- <div>
243
- <div class="text-lg font-semibold text-gray-100">Agentic Workforce</div>
244
- <div class="text-xs text-gray-500 mt-1">Autonomous workflows under governance</div>
245
- </div>
246
- <span class="badge"><span class="dot dot-concept"></span>Concept</span>
247
- </div>
248
- <p class="text-sm text-gray-300 mt-4 leading-relaxed">
249
- “AI employees” as controlled agents: scoped permissions, logging, approval gates, and outcome verification.
250
- </p>
251
- <div class="mt-4 text-xs text-gray-500 flex items-center gap-2">
252
- <i class="fas fa-key"></i>
253
- <span>Permissions + audits + fail-closed behaviors</span>
254
- </div>
255
- </button>
256
-
257
- </div>
258
- </div>
259
- </div>
260
-
261
- <!-- RIGHT: Dossier Panel -->
262
- <div class="lg:col-span-2 rounded-2xl border border-gray-800 bg-gray-900/30 overflow-hidden">
263
- <div class="px-6 py-5 border-b border-gray-800/60">
264
- <div class="flex items-start justify-between gap-4">
265
- <div>
266
- <div id="dossier-title" class="text-lg font-semibold text-gray-100">Dossier</div>
267
- <div id="dossier-subtitle" class="text-xs text-gray-500 mt-1">Select a module to load details.</div>
268
- </div>
269
- <div id="dossier-status"
270
- class="text-xs px-2.5 py-1 rounded-full border border-indigo-500/30 text-indigo-200 bg-indigo-900/15">
271
- READY
272
- </div>
273
  </div>
274
  </div>
275
 
276
- <div class="p-6 space-y-5 max-h-[740px] overflow-auto thin-scroll">
277
- <div class="rounded-xl border border-gray-800 bg-black/20 p-4">
278
- <div class="text-xs text-gray-400 uppercase tracking-wider mb-2">Summary</div>
279
- <div id="dossier-body" class="text-sm text-gray-300 leading-relaxed">
280
- This panel is designed to be stable and audit-friendly: scope, assumptions, evaluation protocol, and access gates.
281
- </div>
282
- </div>
283
-
284
  <div class="rounded-xl border border-gray-800 bg-black/20 p-4">
285
- <div class="text-xs text-gray-400 uppercase tracking-wider mb-2">Evidence Capsule</div>
286
- <ul id="dossier-evidence" class="text-sm text-gray-300 space-y-1">
287
- <li class="text-gray-500">No module selected.</li>
 
 
 
288
  </ul>
289
  </div>
290
 
291
  <div class="rounded-xl border border-gray-800 bg-black/20 p-4">
292
- <div class="text-xs text-gray-400 uppercase tracking-wider mb-2">Public Interface</div>
293
- <div id="dossier-public" class="text-sm text-gray-300 leading-relaxed">
294
- Public copy remains conservative. Claims scale with verified evidence.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
295
  </div>
296
  </div>
297
 
298
  <div class="rounded-xl border border-gray-800 bg-black/20 p-4">
299
- <div class="text-xs text-gray-400 uppercase tracking-wider mb-2">Evaluation Protocol</div>
300
- <div id="dossier-eval" class="text-sm text-gray-300 leading-relaxed">
301
- Define the benchmark first; then allow the method to earn its reputation.
302
  </div>
303
  </div>
304
-
305
- <div class="flex flex-col gap-3">
306
- <button id="dossier-primary"
307
- class="px-5 py-3 rounded-xl bg-gradient-to-r from-indigo-600 to-purple-600 hover:opacity-90 transition">
308
- Request Access
309
- </button>
310
- <button id="dossier-secondary"
311
- class="px-5 py-3 rounded-xl border border-gray-700 bg-gray-900/20 hover:bg-gray-900/35 transition">
312
- Open Console
313
- </button>
314
- </div>
315
-
316
- <div id="dossier-meta" class="text-xs text-gray-500">
317
- Last updated: <span class="text-gray-300">—</span>
318
- </div>
319
  </div>
320
  </div>
321
-
322
  </div>
323
  </div>
324
  </section>
325
 
326
- <!-- CAPABILITY PRIMITIVES (SHORT, NON-BROCHURE) -->
327
  <section class="relative z-10 px-6 pb-16">
328
- <div class="max-w-6xl mx-auto rounded-2xl border border-gray-800 bg-gray-900/20 overflow-hidden">
329
- <div class="px-6 py-5 border-b border-gray-800/60 flex items-center justify-between">
330
- <div>
331
- <div class="text-sm text-gray-200 font-medium">Capability Primitives</div>
332
- <div class="text-xs text-gray-500 mt-1">The building blocks behind programs.</div>
333
- </div>
334
- <div class="text-xs text-gray-500">Concise by design</div>
335
- </div>
336
-
337
- <div class="p-6 grid grid-cols-1 md:grid-cols-2 gap-4">
338
- <div class="rounded-2xl border border-gray-800 bg-gray-900/30 p-5">
339
- <div class="text-sm font-semibold text-gray-100">Causal Abstraction</div>
340
- <div class="text-sm text-gray-300 mt-2">
341
- Distill mechanisms, not correlations. Prefer intervention-relevant representations.
342
  </div>
343
- </div>
344
-
345
- <div class="rounded-2xl border border-gray-800 bg-gray-900/30 p-5">
346
- <div class="text-sm font-semibold text-gray-100">Regime Awareness</div>
347
- <div class="text-sm text-gray-300 mt-2">
348
- Models must survive distribution shift; calibration and uncertainty are first-class.
349
  </div>
350
- </div>
351
-
352
- <div class="rounded-2xl border border-gray-800 bg-gray-900/30 p-5">
353
- <div class="text-sm font-semibold text-gray-100">Experiment Automation</div>
354
- <div class="text-sm text-gray-300 mt-2">
355
- Repeatable harnesses, tracked assumptions, and reportable deltas per change.
 
 
356
  </div>
357
- </div>
358
-
359
- <div class="rounded-2xl border border-gray-800 bg-gray-900/30 p-5">
360
- <div class="text-sm font-semibold text-gray-100">Agentic Orchestration</div>
361
- <div class="text-sm text-gray-300 mt-2">
362
- Autonomous workflows with permissions, logs, approvals, and fail-closed behavior.
363
  </div>
364
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
365
  </div>
366
  </div>
367
  </section>
368
 
369
- <!-- Minimal Footer -->
370
  <footer class="relative z-10 px-6 pb-10">
371
  <div class="max-w-6xl mx-auto border-t border-gray-800/60 pt-8 flex flex-col md:flex-row justify-between items-center gap-4">
372
  <div class="text-sm text-gray-500">© 2025 SILENTPATTERN. All rights reserved.</div>
@@ -429,7 +291,7 @@
429
  </div>
430
  </div>
431
 
432
- <!-- LAB NAVIGATOR -->
433
  <div id="lab-navigator"
434
  class="fixed inset-0 z-[60] bg-black/80 backdrop-blur-md modal modal-hidden"
435
  role="dialog" aria-modal="true" aria-label="Lab Navigator" tabindex="-1">
@@ -438,6 +300,7 @@
438
 
439
  <div class="relative w-full h-full flex items-center justify-center p-6">
440
  <div class="w-full max-w-6xl mx-auto grid grid-cols-1 lg:grid-cols-2 gap-6">
 
441
  <div class="relative rounded-2xl border border-gray-800 bg-gray-900/20 overflow-hidden">
442
  <div class="flex items-center justify-between px-5 py-4 border-b border-gray-800/60">
443
  <div class="flex items-center space-x-3">
@@ -464,34 +327,40 @@
464
 
465
  <div class="relative grid grid-cols-1 sm:grid-cols-2 gap-3">
466
  <button class="lab-node text-left rounded-xl border border-gray-800 bg-gray-900/30 hover:border-indigo-500/50 hover:bg-gray-900/45 transition p-4"
467
- data-nav="index.html">
468
  <div class="text-sm text-gray-200 font-medium">Start Here</div>
469
  <div class="text-xs text-gray-500 mt-1">Entry interface</div>
470
  </button>
471
 
472
  <button class="lab-node text-left rounded-xl border border-gray-800 bg-gray-900/30 hover:border-indigo-500/50 hover:bg-gray-900/45 transition p-4"
473
- data-nav="capabilities.html">
474
  <div class="text-sm text-gray-200 font-medium">Programs</div>
475
- <div class="text-xs text-gray-500 mt-1">This page</div>
476
  </button>
477
 
478
  <button class="lab-node text-left rounded-xl border border-gray-800 bg-gray-900/30 hover:border-indigo-500/50 hover:bg-gray-900/45 transition p-4"
479
- data-nav="chat.html">
480
  <div class="text-sm text-gray-200 font-medium">Console</div>
481
  <div class="text-xs text-gray-500 mt-1">Controlled chat</div>
482
  </button>
483
 
484
  <button class="lab-node text-left rounded-xl border border-gray-800 bg-gray-900/30 hover:border-indigo-500/50 hover:bg-gray-900/45 transition p-4"
485
- data-nav="research.html">
486
  <div class="text-sm text-gray-200 font-medium">Research</div>
487
  <div class="text-xs text-gray-500 mt-1">Notes and briefs</div>
488
  </button>
489
 
490
- <button class="lab-node text-left rounded-xl border border-gray-800 bg-gray-900/30 hover:border-indigo-500/50 hover:bg-gray-900/45 transition p-4 sm:col-span-2"
491
- data-nav="contact.html">
492
  <div class="text-sm text-gray-200 font-medium">Contact</div>
493
  <div class="text-xs text-gray-500 mt-1">Direct channel</div>
494
  </button>
 
 
 
 
 
 
495
  </div>
496
 
497
  <div class="relative mt-6 text-xs text-gray-500">
@@ -500,14 +369,47 @@
500
  </div>
501
  </div>
502
 
 
503
  <div class="relative rounded-2xl border border-gray-800 bg-gray-900/30 overflow-hidden">
504
  <div class="px-6 py-5 border-b border-gray-800/60">
505
- <div class="text-lg font-semibold text-gray-100">Navigation</div>
506
- <div class="text-xs text-gray-500 mt-1">No top menu; only the lab interface.</div>
 
 
 
 
 
 
 
 
507
  </div>
508
- <div class="p-6 text-sm text-gray-300 leading-relaxed">
509
- SILENTPATTERN uses a reduced navigation surface to maintain a “lab console” feel.
510
- Pages are modules. Each module is accessed through this navigator.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
511
  </div>
512
  </div>
513
 
@@ -534,7 +436,7 @@
534
  });
535
  window.addEventListener('resize', () => vantaEffect.resize());
536
 
537
- /* MODAL HELPERS */
538
  function trapFocus(modal) {
539
  const focusable = modal.querySelectorAll('a, button, input, select, textarea, [tabindex]:not([tabindex="-1"])');
540
  if (!focusable.length) return;
@@ -578,12 +480,16 @@
578
  /* ACCESS MODAL */
579
  const accessModal = document.getElementById('access-modal');
580
  const accessBtn = document.getElementById('access-btn');
 
581
  const closeAccessModal = document.getElementById('close-access-modal');
582
 
583
- accessBtn.addEventListener('click', () => {
584
  toggleModal(accessModal, true);
585
  setTimeout(() => document.getElementById('name').focus(), 50);
586
- });
 
 
 
587
  closeAccessModal.addEventListener('click', () => toggleModal(accessModal, false));
588
  accessModal.addEventListener('click', (e) => { if (e.target === accessModal) toggleModal(accessModal, false); });
589
 
@@ -593,6 +499,7 @@
593
  const email = document.getElementById('email').value.trim();
594
  const institution = document.getElementById('institution').value.trim();
595
  const purpose = document.getElementById('purpose').value;
 
596
  if (!name || !email || !institution || !purpose) {
597
  alert('Please fill in all fields.');
598
  return;
@@ -612,114 +519,70 @@
612
 
613
  labNavBtn.addEventListener('click', openLabNav);
614
  labNavClose.addEventListener('click', closeLabNav);
615
-
616
  labNav.addEventListener('click', (e) => {
617
  const shouldClose = e.target && e.target.getAttribute('data-lab-close') === 'true';
618
  if (shouldClose) closeLabNav();
619
  });
620
 
621
- document.querySelectorAll('.lab-node').forEach(btn => {
622
- btn.addEventListener('click', () => {
623
- const href = btn.getAttribute('data-nav');
624
- if (href) window.location.href = href;
625
- });
626
- });
627
-
628
- /* DOSSIERS */
629
  const DOSSIERS = {
630
- mcap: {
631
- title: "MCAP",
632
- subtitle: "Minimal Causal Abstraction Principle",
633
- status: "PROTOTYPE",
634
- body:
635
- "MCAP is a proposed principle for building minimal representations of systems that preserve intervention-relevant causal structure. The public posture remains conservative until results are reproduced and benchmarked.",
636
- evidence: [
637
- "Defined abstraction objective (intervention-relevant compression)",
638
- "Planned: causal fidelity checks under interventions",
639
- "Planned: baseline comparisons (causal discovery + representation learning)"
640
- ],
641
- public:
642
- "Public-facing language should emphasize: a research principle, an evaluation harness, and transparent baselines. Avoid performance claims until replicated.",
643
- eval:
644
- "Evaluation focus: (1) identifiability assumptions, (2) interventional accuracy, (3) stability under distribution shift, (4) ablation against simpler baselines. Prefer preregistered protocols where possible.",
645
- primary: { label: "Request Access", action: () => accessBtn.click() },
646
  secondary: { label: "Open Console", action: () => { window.location.href = "chat.html"; } },
647
  updated: "—"
648
  },
649
- chai: {
650
- title: "CHAI",
651
- subtitle: "Forecasting & regime inference stack",
652
- status: "CONCEPT",
653
- body:
654
- "CHAI is positioned as a forecasting pipeline that prioritizes robustness: regime detection, calibration, and evidence-first evaluation. Markets are adversarial; the protocol is the product.",
655
- evidence: [
656
- "Regime-aware framing (distribution shift explicit)",
657
- "Planned: walk-forward evaluation + leakage controls",
658
- "Planned: calibration and uncertainty reporting"
659
- ],
660
- public:
661
- "Public copy should emphasize methodology and evaluation (walk-forward, leakage prevention, calibration). Avoid any statement implying guaranteed returns or “high accuracy.”",
662
- eval:
663
- "Evaluation focus: strict temporal splits, realistic transaction cost modeling, sensitivity to slippage assumptions, and robustness across assets/regimes. Report uncertainty and failure modes.",
664
- primary: { label: "Request Access", action: () => accessBtn.click() },
665
- secondary: { label: "Open Console", action: () => { window.location.href = "chat.html"; } },
666
  updated: "—"
667
  },
668
- quantum_lambda: {
669
- title: "Quantum Lambda",
670
- subtitle: "High-frequency decision systems",
671
- status: "CONCEPT",
672
- body:
673
- "Quantum Lambda is framed as a decision system under tight latency constraints. The core requirement is explicit assumptions: data latency, execution model, risk limits, and compliance boundaries.",
674
- evidence: [
675
- "Microstructure-aware constraints (latency/slippage explicit)",
676
- "Planned: simulation harness with realistic fills",
677
- "Planned: risk controls as first-class objects"
678
- ],
679
- public:
680
- "Public copy should focus on systems engineering (constraints, risk, audit trails). Do not imply edge without verification. Emphasize that this is research, not a trading service.",
681
- eval:
682
- "Evaluation focus: execution realism, latency budgets, out-of-sample stability, and adversarial conditions. If assumptions are not auditable, results are not meaningful.",
683
- primary: { label: "Request Access", action: () => accessBtn.click() },
684
- secondary: { label: "Open Console", action: () => { window.location.href = "chat.html"; } },
685
  updated: "—"
686
  },
687
- ai_scientist: {
688
- title: "AI Scientist",
689
- subtitle: "Hypothesis Experiment → Report",
690
- status: "PROTOTYPE",
691
- body:
692
- "The AI Scientist is the lab’s internal instrument: it standardizes experiments, manages baselines, logs assumptions, and produces concise research notes with uncertainty and reproducibility hooks.",
693
- evidence: [
694
- "Experiment templates (dataset protocol metrics)",
695
- "Baseline registry + ablation tracking",
696
- "Report generator (results + uncertainty + failure modes)"
697
- ],
698
- public:
699
- "Public positioning: an internal research engine for reproducibility and speed. Emphasize transparency, auditable reports, and discipline in evaluation.",
700
- eval:
701
- "Evaluation focus: reproducibility rates, time-to-result, and quality of decision-making under uncertainty. Output must be traceable from claim → experiment → evidence.",
702
- primary: { label: "Open Console", action: () => { window.location.href = "chat.html"; } },
703
- secondary: { label: "Research", action: () => { window.location.href = "research.html"; } },
 
704
  updated: "—"
705
  },
706
- agentic_workforce: {
707
- title: "Agentic Workforce",
708
- subtitle: "Autonomous workflows under governance",
709
- status: "CONCEPT",
710
- body:
711
- "Agentic AI employees are introduced as controlled agents, not unbounded automation: scoped permissions, action logs, approval gates, and verification layers. Governance is the differentiator.",
712
- evidence: [
713
- "Scope definitions (what agents can and cannot do)",
714
- "Audit trails (logs, transcripts, tool usage)",
715
- "Approval gates (human-in-the-loop where required)"
716
- ],
717
- public:
718
- "Public positioning: a governed agent platform for research ops and internal productivity. Avoid anthropomorphic claims; emphasize controls, accountability, and measurable outcomes.",
719
- eval:
720
- "Evaluation focus: error rates, containment failures avoided, auditability, and ROI in constrained workflows (data prep, experiments, reporting). Fail-closed behaviors are required.",
721
- primary: { label: "Request Access", action: () => accessBtn.click() },
722
- secondary: { label: "Contact", action: () => { window.location.href = "contact.html"; } },
723
  updated: "—"
724
  }
725
  };
@@ -729,8 +592,6 @@
729
  const dossierStatus = document.getElementById('dossier-status');
730
  const dossierBody = document.getElementById('dossier-body');
731
  const dossierEvidence = document.getElementById('dossier-evidence');
732
- const dossierPublic = document.getElementById('dossier-public');
733
- const dossierEval = document.getElementById('dossier-eval');
734
  const dossierPrimary = document.getElementById('dossier-primary');
735
  const dossierSecondary = document.getElementById('dossier-secondary');
736
  const dossierMeta = document.getElementById('dossier-meta');
@@ -742,7 +603,6 @@
742
  dossierTitle.textContent = d.title;
743
  dossierSubtitle.textContent = d.subtitle;
744
  dossierStatus.textContent = d.status;
745
-
746
  dossierBody.textContent = d.body;
747
 
748
  dossierEvidence.innerHTML = "";
@@ -752,9 +612,6 @@
752
  dossierEvidence.appendChild(li);
753
  });
754
 
755
- dossierPublic.textContent = d.public;
756
- dossierEval.textContent = d.eval;
757
-
758
  dossierPrimary.textContent = d.primary.label;
759
  dossierPrimary.onclick = d.primary.action;
760
 
@@ -764,11 +621,11 @@
764
  dossierMeta.innerHTML = `Last updated: <span class="text-gray-300">${d.updated}</span>`;
765
  }
766
 
767
- document.querySelectorAll('.program-card').forEach(btn => {
768
  btn.addEventListener('click', () => renderDossier(btn.getAttribute('data-dossier')));
769
  });
770
 
771
- /* ESC behavior */
772
  document.addEventListener('keydown', (e) => {
773
  if (e.key === 'Escape') {
774
  if (labNav && !labNav.classList.contains('modal-hidden')) closeLabNav();
@@ -776,8 +633,8 @@
776
  }
777
  });
778
 
779
- /* Default dossier */
780
- renderDossier('mcap');
781
  </script>
782
  </body>
783
  </html>
 
3
  <head>
4
  <meta charset="UTF-8" />
5
  <meta name="viewport" content="width=device-width,initial-scale=1.0" />
6
+ <title>SILENTPATTERN — Lab Interface</title>
7
 
8
  <!-- Tailwind -->
9
  <script src="https://cdn.tailwindcss.com"></script>
 
28
 
29
  .aura {
30
  background:
31
+ radial-gradient(circle at 25% 15%, rgba(99,102,241,0.20), transparent 42%),
32
+ radial-gradient(circle at 70% 70%, rgba(236,72,153,0.12), transparent 46%),
33
+ radial-gradient(circle at 50% 45%, rgba(139,92,246,0.10), transparent 55%);
34
  }
35
 
36
  .conscious-element { transition: all 0.28s ease; }
 
38
 
39
  .focus-ring:focus { outline: none; box-shadow: 0 0 0 2px rgba(99,102,241,0.65); }
40
 
41
+ .modal { transition: opacity 0.3s ease, transform 0.3s ease; }
42
+ .modal-hidden { opacity: 0; transform: translateY(20px); pointer-events: none; }
43
+ .modal-visible { opacity: 1; transform: translateY(0); }
44
+
45
  .thin-scroll {
46
  scrollbar-width: thin;
47
  scrollbar-color: #4f46e5 #1e1b4b;
 
50
  .thin-scroll::-webkit-scrollbar-track { background: #1e1b4b; }
51
  .thin-scroll::-webkit-scrollbar-thumb { background-color: #4f46e5; border-radius: 3px; }
52
 
53
+ /* Subtle grid for “lab surface” */
54
+ .lab-grid {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55
  background-image:
56
  linear-gradient(rgba(148,163,184,0.06) 1px, transparent 1px),
57
  linear-gradient(90deg, rgba(148,163,184,0.06) 1px, transparent 1px);
58
+ background-size: 44px 44px;
59
  background-position: center;
60
  }
61
  </style>
 
65
  <!-- Animated background -->
66
  <div id="vanta-bg" class="fixed top-0 left-0 w-full h-full z-0"></div>
67
 
68
+ <!-- Top bar -->
69
  <nav class="relative z-10 py-6 px-8 flex justify-between items-center backdrop-blur-sm">
70
  <a href="index.html" class="flex items-center space-x-2">
71
  <div class="w-8 h-8 rounded-full bg-indigo-600 flex items-center justify-center">
 
89
  </nav>
90
 
91
  <!-- HERO -->
92
+ <section class="relative z-10 px-6 pt-14 pb-10">
93
  <div class="max-w-6xl mx-auto">
94
+ <div class="inline-flex items-center gap-3 self-start px-4 py-2 rounded-full border border-gray-800 bg-gray-900/20 backdrop-blur-sm">
95
+ <span class="w-2 h-2 rounded-full bg-indigo-400 animate-pulse"></span>
96
+ <span class="text-xs text-gray-300 tracking-widest uppercase">Start</span>
97
+ <span class="text-xs text-gray-500">Lab interface</span>
98
+ </div>
 
 
 
 
 
 
99
 
100
+ <div class="mt-6 grid grid-cols-1 lg:grid-cols-2 gap-8 items-start">
101
+ <div>
102
+ <h1 class="text-3xl md:text-6xl font-bold leading-tight">
103
+ <span class="gradient-text">SILENTPATTERN</span><br>
104
+ Minimal surface, auditable depth
105
+ </h1>
106
+
107
+ <p class="mt-4 text-gray-300 max-w-xl text-lg md:text-xl leading-relaxed">
108
+ This is presented as a lab console: programs are dossiers, not marketing claims.
109
+ Outputs are constrained, traceable, and designed for evaluation.
110
+ </p>
111
+
112
+ <div class="mt-6 flex flex-col sm:flex-row gap-3">
113
+ <a href="capabilities.html"
114
+ class="px-6 py-3 rounded-xl bg-gradient-to-r from-indigo-600 to-purple-600 hover:opacity-90 transition text-center">
115
+ Enter Program Bay
116
+ </a>
117
+ <a href="chat.html"
118
+ class="px-6 py-3 rounded-xl border border-gray-700 bg-gray-900/20 hover:bg-gray-900/35 transition text-center">
119
+ Open Console
120
+ </a>
121
+ </div>
122
 
123
+ <div class="mt-5 text-xs text-gray-500 max-w-xl">
124
+ Security note: interactive systems must not expose secrets client-side. Browser pages should call server endpoints for any model access.
125
+ </div>
126
  </div>
 
 
 
 
 
 
 
 
127
 
128
+ <div class="rounded-2xl border border-gray-800 bg-gray-900/20 overflow-hidden aura lab-grid">
 
129
  <div class="px-6 py-5 border-b border-gray-800/60 flex items-center justify-between">
130
  <div>
131
+ <div class="text-sm text-gray-200 font-medium">Interface Status</div>
132
+ <div class="text-xs text-gray-500 mt-1">Conservative defaults; evidence gates.</div>
133
  </div>
134
  <div class="text-xs px-2.5 py-1 rounded-full border border-indigo-500/30 text-indigo-200 bg-indigo-900/15">
135
+ DRAFT
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
136
  </div>
137
  </div>
138
 
139
+ <div class="p-6 space-y-4">
 
 
 
 
 
 
 
140
  <div class="rounded-xl border border-gray-800 bg-black/20 p-4">
141
+ <div class="text-xs text-gray-400 uppercase tracking-wider mb-2">Operating Principles</div>
142
+ <ul class="text-sm text-gray-300 space-y-2">
143
+ <li class="flex gap-2"><span class="text-indigo-300">•</span><span>Evaluation-first posture: protocols before claims.</span></li>
144
+ <li class="flex gap-2"><span class="text-indigo-300">•</span><span>Secure-by-design: no client-side secrets, auditable endpoints.</span></li>
145
+ <li class="flex gap-2"><span class="text-indigo-300">•</span><span>Traceability: outputs map to assumptions and evidence capsules.</span></li>
146
+ <li class="flex gap-2"><span class="text-indigo-300">•</span><span>Fail-closed governance for any agentic workflows.</span></li>
147
  </ul>
148
  </div>
149
 
150
  <div class="rounded-xl border border-gray-800 bg-black/20 p-4">
151
+ <div class="text-xs text-gray-400 uppercase tracking-wider mb-2">Modules</div>
152
+ <div class="grid grid-cols-1 sm:grid-cols-2 gap-3">
153
+ <a href="capabilities.html"
154
+ class="rounded-xl border border-gray-800 bg-gray-900/30 hover:border-indigo-500/50 hover:bg-gray-900/45 transition p-4 conscious-element">
155
+ <div class="text-sm font-semibold text-gray-100"><i class="fas fa-layer-group mr-2 text-indigo-300"></i>Programs</div>
156
+ <div class="text-xs text-gray-500 mt-1">MCAP · CHAI · Quantum Lambda · AI Scientist</div>
157
+ </a>
158
+ <a href="chat.html"
159
+ class="rounded-xl border border-gray-800 bg-gray-900/30 hover:border-indigo-500/50 hover:bg-gray-900/45 transition p-4 conscious-element">
160
+ <div class="text-sm font-semibold text-gray-100"><i class="fas fa-terminal mr-2 text-indigo-300"></i>Console</div>
161
+ <div class="text-xs text-gray-500 mt-1">Controlled chat with exportable transcripts</div>
162
+ </a>
163
+ <a href="research.html"
164
+ class="rounded-xl border border-gray-800 bg-gray-900/30 hover:border-indigo-500/50 hover:bg-gray-900/45 transition p-4 conscious-element">
165
+ <div class="text-sm font-semibold text-gray-100"><i class="fas fa-file-lines mr-2 text-indigo-300"></i>Research</div>
166
+ <div class="text-xs text-gray-500 mt-1">Notes, briefs, and evaluation artifacts</div>
167
+ </a>
168
+ <a href="contact.html"
169
+ class="rounded-xl border border-gray-800 bg-gray-900/30 hover:border-indigo-500/50 hover:bg-gray-900/45 transition p-4 conscious-element">
170
+ <div class="text-sm font-semibold text-gray-100"><i class="fas fa-inbox mr-2 text-indigo-300"></i>Contact</div>
171
+ <div class="text-xs text-gray-500 mt-1">Direct channel and coordination</div>
172
+ </a>
173
  </div>
174
  </div>
175
 
176
  <div class="rounded-xl border border-gray-800 bg-black/20 p-4">
177
+ <div class="text-xs text-gray-400 uppercase tracking-wider mb-2">Disclaimer</div>
178
+ <div class="text-sm text-gray-300 leading-relaxed">
179
+ Any market-oriented content is research-only. No investment advice, solicitation, or performance claims are provided here.
180
  </div>
181
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
182
  </div>
183
  </div>
 
184
  </div>
185
  </div>
186
  </section>
187
 
188
+ <!-- QUICK ENTRY CARDS -->
189
  <section class="relative z-10 px-6 pb-16">
190
+ <div class="max-w-6xl mx-auto">
191
+ <div class="grid grid-cols-1 md:grid-cols-3 gap-4">
192
+ <a href="capabilities.html"
193
+ class="rounded-2xl border border-gray-800 bg-gray-900/20 hover:bg-gray-900/30 transition p-6 aura conscious-element">
194
+ <div class="flex items-center justify-between">
195
+ <div class="text-sm text-gray-200 font-semibold">Program Bay</div>
196
+ <i class="fas fa-arrow-right text-gray-400"></i>
 
 
 
 
 
 
 
197
  </div>
198
+ <div class="mt-3 text-gray-300">
199
+ Dossiers for MCAP, CHAI, Quantum Lambda, AI Scientist, and the Agentic Workforce concept.
 
 
 
 
200
  </div>
201
+ <div class="mt-4 text-xs text-gray-500">Structured scope · assumptions · evaluation · access gates</div>
202
+ </a>
203
+
204
+ <a href="chat.html"
205
+ class="rounded-2xl border border-gray-800 bg-gray-900/20 hover:bg-gray-900/30 transition p-6 aura conscious-element">
206
+ <div class="flex items-center justify-between">
207
+ <div class="text-sm text-gray-200 font-semibold">Console</div>
208
+ <i class="fas fa-arrow-right text-gray-400"></i>
209
  </div>
210
+ <div class="mt-3 text-gray-300">
211
+ Controlled interaction channel with exportable transcripts. No client-side secrets.
 
 
 
 
212
  </div>
213
+ <div class="mt-4 text-xs text-gray-500">Server endpoint integration · audit trail ready</div>
214
+ </a>
215
+
216
+ <button type="button" id="access-cta"
217
+ class="rounded-2xl border border-gray-800 bg-gray-900/20 hover:bg-gray-900/30 transition p-6 text-left aura conscious-element">
218
+ <div class="flex items-center justify-between">
219
+ <div class="text-sm text-gray-200 font-semibold">Request Access</div>
220
+ <i class="fas fa-lock text-gray-400"></i>
221
+ </div>
222
+ <div class="mt-3 text-gray-300">
223
+ Curated access for research, evaluation, and controlled demos.
224
+ </div>
225
+ <div class="mt-4 text-xs text-gray-500">Qualified users · high-signal feedback · responsible scaling</div>
226
+ </button>
227
  </div>
228
  </div>
229
  </section>
230
 
231
+ <!-- Footer -->
232
  <footer class="relative z-10 px-6 pb-10">
233
  <div class="max-w-6xl mx-auto border-t border-gray-800/60 pt-8 flex flex-col md:flex-row justify-between items-center gap-4">
234
  <div class="text-sm text-gray-500">© 2025 SILENTPATTERN. All rights reserved.</div>
 
291
  </div>
292
  </div>
293
 
294
+ <!-- LAB NAVIGATOR (Dossier-style) -->
295
  <div id="lab-navigator"
296
  class="fixed inset-0 z-[60] bg-black/80 backdrop-blur-md modal modal-hidden"
297
  role="dialog" aria-modal="true" aria-label="Lab Navigator" tabindex="-1">
 
300
 
301
  <div class="relative w-full h-full flex items-center justify-center p-6">
302
  <div class="w-full max-w-6xl mx-auto grid grid-cols-1 lg:grid-cols-2 gap-6">
303
+ <!-- Left panel: nodes -->
304
  <div class="relative rounded-2xl border border-gray-800 bg-gray-900/20 overflow-hidden">
305
  <div class="flex items-center justify-between px-5 py-4 border-b border-gray-800/60">
306
  <div class="flex items-center space-x-3">
 
327
 
328
  <div class="relative grid grid-cols-1 sm:grid-cols-2 gap-3">
329
  <button class="lab-node text-left rounded-xl border border-gray-800 bg-gray-900/30 hover:border-indigo-500/50 hover:bg-gray-900/45 transition p-4"
330
+ data-dossier="start">
331
  <div class="text-sm text-gray-200 font-medium">Start Here</div>
332
  <div class="text-xs text-gray-500 mt-1">Entry interface</div>
333
  </button>
334
 
335
  <button class="lab-node text-left rounded-xl border border-gray-800 bg-gray-900/30 hover:border-indigo-500/50 hover:bg-gray-900/45 transition p-4"
336
+ data-dossier="programs">
337
  <div class="text-sm text-gray-200 font-medium">Programs</div>
338
+ <div class="text-xs text-gray-500 mt-1">Program Bay dossiers</div>
339
  </button>
340
 
341
  <button class="lab-node text-left rounded-xl border border-gray-800 bg-gray-900/30 hover:border-indigo-500/50 hover:bg-gray-900/45 transition p-4"
342
+ data-dossier="console">
343
  <div class="text-sm text-gray-200 font-medium">Console</div>
344
  <div class="text-xs text-gray-500 mt-1">Controlled chat</div>
345
  </button>
346
 
347
  <button class="lab-node text-left rounded-xl border border-gray-800 bg-gray-900/30 hover:border-indigo-500/50 hover:bg-gray-900/45 transition p-4"
348
+ data-dossier="research">
349
  <div class="text-sm text-gray-200 font-medium">Research</div>
350
  <div class="text-xs text-gray-500 mt-1">Notes and briefs</div>
351
  </button>
352
 
353
+ <button class="lab-node text-left rounded-xl border border-gray-800 bg-gray-900/30 hover:border-indigo-500/50 hover:bg-gray-900/45 transition p-4"
354
+ data-dossier="contact">
355
  <div class="text-sm text-gray-200 font-medium">Contact</div>
356
  <div class="text-xs text-gray-500 mt-1">Direct channel</div>
357
  </button>
358
+
359
+ <button class="lab-node text-left rounded-xl border border-gray-800 bg-gray-900/30 hover:border-indigo-500/50 hover:bg-gray-900/45 transition p-4"
360
+ data-dossier="access">
361
+ <div class="text-sm text-gray-200 font-medium">Access</div>
362
+ <div class="text-xs text-gray-500 mt-1">Curated entry</div>
363
+ </button>
364
  </div>
365
 
366
  <div class="relative mt-6 text-xs text-gray-500">
 
369
  </div>
370
  </div>
371
 
372
+ <!-- Right panel: dossier -->
373
  <div class="relative rounded-2xl border border-gray-800 bg-gray-900/30 overflow-hidden">
374
  <div class="px-6 py-5 border-b border-gray-800/60">
375
+ <div class="flex items-start justify-between gap-4">
376
+ <div>
377
+ <div id="dossier-title" class="text-lg font-semibold text-gray-100">Lab Dossier</div>
378
+ <div id="dossier-subtitle" class="text-xs text-gray-500 mt-1">Select a node to load details.</div>
379
+ </div>
380
+ <div id="dossier-status"
381
+ class="text-xs px-2.5 py-1 rounded-full border border-indigo-500/30 text-indigo-200 bg-indigo-900/15">
382
+ READY
383
+ </div>
384
+ </div>
385
  </div>
386
+
387
+ <div class="p-6 space-y-5 max-h-[560px] overflow-auto thin-scroll">
388
+ <div id="dossier-body" class="text-sm text-gray-300 leading-relaxed">
389
+ SILENTPATTERN uses a reduced navigation surface to maintain a lab-console feel.
390
+ </div>
391
+
392
+ <div class="rounded-xl border border-gray-800 bg-black/20 p-4">
393
+ <div class="text-xs text-gray-400 uppercase tracking-wider mb-2">Evidence Capsule</div>
394
+ <ul id="dossier-evidence" class="text-sm text-gray-300 space-y-1">
395
+ <li class="text-gray-500">No dossier selected.</li>
396
+ </ul>
397
+ </div>
398
+
399
+ <div class="flex flex-col sm:flex-row gap-3">
400
+ <button id="dossier-primary"
401
+ class="flex-1 px-5 py-3 rounded-xl bg-gradient-to-r from-indigo-600 to-purple-600 hover:opacity-90 transition">
402
+ Open
403
+ </button>
404
+ <button id="dossier-secondary"
405
+ class="flex-1 px-5 py-3 rounded-xl border border-gray-700 bg-gray-900/20 hover:bg-gray-900/35 transition">
406
+ View Note
407
+ </button>
408
+ </div>
409
+
410
+ <div id="dossier-meta" class="text-xs text-gray-500">
411
+ Last updated: <span class="text-gray-300">—</span>
412
+ </div>
413
  </div>
414
  </div>
415
 
 
436
  });
437
  window.addEventListener('resize', () => vantaEffect.resize());
438
 
439
+ /* MODAL ACCESSIBILITY */
440
  function trapFocus(modal) {
441
  const focusable = modal.querySelectorAll('a, button, input, select, textarea, [tabindex]:not([tabindex="-1"])');
442
  if (!focusable.length) return;
 
480
  /* ACCESS MODAL */
481
  const accessModal = document.getElementById('access-modal');
482
  const accessBtn = document.getElementById('access-btn');
483
+ const accessCta = document.getElementById('access-cta');
484
  const closeAccessModal = document.getElementById('close-access-modal');
485
 
486
+ function openAccess() {
487
  toggleModal(accessModal, true);
488
  setTimeout(() => document.getElementById('name').focus(), 50);
489
+ }
490
+
491
+ accessBtn.addEventListener('click', openAccess);
492
+ if (accessCta) accessCta.addEventListener('click', openAccess);
493
  closeAccessModal.addEventListener('click', () => toggleModal(accessModal, false));
494
  accessModal.addEventListener('click', (e) => { if (e.target === accessModal) toggleModal(accessModal, false); });
495
 
 
499
  const email = document.getElementById('email').value.trim();
500
  const institution = document.getElementById('institution').value.trim();
501
  const purpose = document.getElementById('purpose').value;
502
+
503
  if (!name || !email || !institution || !purpose) {
504
  alert('Please fill in all fields.');
505
  return;
 
519
 
520
  labNavBtn.addEventListener('click', openLabNav);
521
  labNavClose.addEventListener('click', closeLabNav);
 
522
  labNav.addEventListener('click', (e) => {
523
  const shouldClose = e.target && e.target.getAttribute('data-lab-close') === 'true';
524
  if (shouldClose) closeLabNav();
525
  });
526
 
 
 
 
 
 
 
 
 
527
  const DOSSIERS = {
528
+ start: {
529
+ title: "Start Here",
530
+ subtitle: "Entry interface",
531
+ status: "ACTIVE",
532
+ body: "This is the primary entry layer: minimal navigation surface, with modules accessible through dossiers.",
533
+ evidence: ["Reduced surface area", "Conservative claims", "Evaluation posture visible"],
534
+ primary: { label: "Close Navigator", action: () => closeLabNav() },
 
 
 
 
 
 
 
 
 
535
  secondary: { label: "Open Console", action: () => { window.location.href = "chat.html"; } },
536
  updated: "—"
537
  },
538
+ programs: {
539
+ title: "Programs",
540
+ subtitle: "Program Bay dossiers",
541
+ status: "ACTIVE",
542
+ body: "Programs are exposed as dossiers: scope, assumptions, evaluation protocol, and access gates.",
543
+ evidence: ["MCAP · CHAI · Quantum Lambda", "AI Scientist prototype", "Agentic Workforce concept"],
544
+ primary: { label: "Open Programs", action: () => { window.location.href = "capabilities.html"; } },
545
+ secondary: { label: "Research", action: () => { window.location.href = "research.html"; } },
 
 
 
 
 
 
 
 
 
546
  updated: "—"
547
  },
548
+ console: {
549
+ title: "Console",
550
+ subtitle: "Controlled interaction channel",
551
+ status: "DRAFT",
552
+ body: "The console is UI-only by design and should call a server endpoint for any model access. Transcripts are exportable for auditability.",
553
+ evidence: ["No client-side secrets", "Server endpoint integration", "Exportable transcript format"],
554
+ primary: { label: "Open Console", action: () => { window.location.href = "chat.html"; } },
555
+ secondary: { label: "Close Navigator", action: () => closeLabNav() },
 
 
 
 
 
 
 
 
 
556
  updated: "—"
557
  },
558
+ research: {
559
+ title: "Research",
560
+ subtitle: "Notes and briefs",
561
+ status: "DRAFT",
562
+ body: "Research notes should remain evidence-first: protocols, results, uncertainty, and failure modes.",
563
+ evidence: ["Evaluation artifacts", "Reproducibility hooks", "Conservative external wording"],
564
+ primary: { label: "Open Research", action: () => { window.location.href = "research.html"; } },
565
+ secondary: { label: "Programs", action: () => { window.location.href = "capabilities.html"; } },
566
+ updated: "—"
567
+ },
568
+ contact: {
569
+ title: "Contact",
570
+ subtitle: "Direct channel",
571
+ status: "ACTIVE",
572
+ body: "A single coordination channel for qualified requests and high-signal feedback.",
573
+ evidence: ["Curated inbound", "Clear scope alignment", "Responsible scaling"],
574
+ primary: { label: "Open Contact", action: () => { window.location.href = "contact.html"; } },
575
+ secondary: { label: "Request Access", action: () => { closeLabNav(); openAccess(); } },
576
  updated: "—"
577
  },
578
+ access: {
579
+ title: "Access",
580
+ subtitle: "Curated entry",
581
+ status: "ACTIVE",
582
+ body: "Access is curated to keep evaluation controlled: qualified users, high-signal feedback, and responsible iteration.",
583
+ evidence: ["Application-based", "Segmented by intent", "Controlled demos"],
584
+ primary: { label: "Request Access", action: () => { closeLabNav(); openAccess(); } },
585
+ secondary: { label: "Programs", action: () => { window.location.href = "capabilities.html"; } },
 
 
 
 
 
 
 
 
 
586
  updated: "—"
587
  }
588
  };
 
592
  const dossierStatus = document.getElementById('dossier-status');
593
  const dossierBody = document.getElementById('dossier-body');
594
  const dossierEvidence = document.getElementById('dossier-evidence');
 
 
595
  const dossierPrimary = document.getElementById('dossier-primary');
596
  const dossierSecondary = document.getElementById('dossier-secondary');
597
  const dossierMeta = document.getElementById('dossier-meta');
 
603
  dossierTitle.textContent = d.title;
604
  dossierSubtitle.textContent = d.subtitle;
605
  dossierStatus.textContent = d.status;
 
606
  dossierBody.textContent = d.body;
607
 
608
  dossierEvidence.innerHTML = "";
 
612
  dossierEvidence.appendChild(li);
613
  });
614
 
 
 
 
615
  dossierPrimary.textContent = d.primary.label;
616
  dossierPrimary.onclick = d.primary.action;
617
 
 
621
  dossierMeta.innerHTML = `Last updated: <span class="text-gray-300">${d.updated}</span>`;
622
  }
623
 
624
+ document.querySelectorAll('.lab-node').forEach(btn => {
625
  btn.addEventListener('click', () => renderDossier(btn.getAttribute('data-dossier')));
626
  });
627
 
628
+ /* GLOBAL ESC */
629
  document.addEventListener('keydown', (e) => {
630
  if (e.key === 'Escape') {
631
  if (labNav && !labNav.classList.contains('modal-hidden')) closeLabNav();
 
633
  }
634
  });
635
 
636
+ /* Default */
637
+ renderDossier('start');
638
  </script>
639
  </body>
640
  </html>