Bc-AI commited on
Commit
bb7ad9f
·
verified ·
1 Parent(s): d824e4a

Upload index.html

Browse files
Files changed (1) hide show
  1. index.html +322 -1
index.html CHANGED
@@ -531,6 +531,132 @@
531
  color:var(--muted);font-size:.82rem;
532
  }
533
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
534
  .mobile-menu{display:none}
535
 
536
  @media (max-width: 980px){
@@ -552,7 +678,7 @@
552
  .stats{grid-template-columns:1fr 1fr;gap:10px}
553
  .stat-card{padding:16px}
554
  .stat-card .value{font-size:1.32rem}
555
- .split,.flow{grid-template-columns:1fr}
556
  .bar-row{grid-template-columns:102px minmax(0,1fr) 56px;gap:8px}
557
  .table-wrap{overflow-x:auto}
558
  table{min-width:620px}
@@ -589,6 +715,7 @@
589
  <a href="#nano">Nano</a>
590
  <a href="#scale">2B scale-up</a>
591
  <a href="#t22">T2.2</a>
 
592
  </div>
593
  <button class="icon-btn" id="themeToggle" aria-label="Toggle theme" title="Toggle theme">◐</button>
594
  </nav>
@@ -679,6 +806,7 @@
679
  <a href="#t22">11 — T2.2 direction</a>
680
  <a href="#vm">12 — Built-in VM idea</a>
681
  <a href="#science">13 — What is actually proven?</a>
 
682
  </aside>
683
 
684
  <main>
@@ -1227,6 +1355,58 @@
1227
  </ol>
1228
  </div>
1229
  </section>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1230
  </main>
1231
  </div>
1232
 
@@ -1280,6 +1460,147 @@
1280
  }, {threshold:.2});
1281
 
1282
  document.querySelectorAll('[data-bars]').forEach(el => observer.observe(el));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1283
  })();
1284
  </script>
1285
  </body>
 
531
  color:var(--muted);font-size:.82rem;
532
  }
533
 
534
+
535
+ .ask-shell{
536
+ position:relative;
537
+ overflow:hidden;
538
+ border-radius:34px;
539
+ padding:1px;
540
+ margin-top:26px;
541
+ background:linear-gradient(135deg,rgba(255,255,255,.9),rgba(77,185,233,.24),rgba(83,218,184,.24),rgba(255,255,255,.72));
542
+ box-shadow:0 30px 90px rgba(33,111,145,.18);
543
+ }
544
+ .ask-shell::before{
545
+ content:"";
546
+ position:absolute;width:360px;height:360px;border-radius:50%;
547
+ left:-120px;top:-160px;
548
+ background:rgba(93,221,238,.24);filter:blur(20px);pointer-events:none;
549
+ }
550
+ .ask-shell::after{
551
+ content:"";
552
+ position:absolute;width:320px;height:320px;border-radius:50%;
553
+ right:-120px;bottom:-190px;
554
+ background:rgba(78,145,255,.19);filter:blur(20px);pointer-events:none;
555
+ }
556
+ .ask-inner{
557
+ position:relative;z-index:2;
558
+ border-radius:33px;
559
+ padding:24px;
560
+ background:rgba(245,253,255,.52);
561
+ backdrop-filter:blur(34px) saturate(185%);
562
+ -webkit-backdrop-filter:blur(34px) saturate(185%);
563
+ border:1px solid rgba(255,255,255,.7);
564
+ }
565
+ body.dark .ask-inner{background:rgba(7,22,31,.62);border-color:rgba(198,237,255,.12)}
566
+ .ask-top{
567
+ display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:18px;
568
+ }
569
+ .bot-id{display:flex;align-items:center;gap:12px}
570
+ .bot-orb{
571
+ width:48px;height:48px;border-radius:16px;position:relative;
572
+ background:
573
+ radial-gradient(circle at 30% 23%,white 0 7%,transparent 8%),
574
+ linear-gradient(145deg,#7ee9d6,#42b9e5 50%,#4f87ff);
575
+ box-shadow:inset 0 1px 0 rgba(255,255,255,.8),0 10px 30px rgba(52,164,203,.28);
576
+ }
577
+ .bot-orb::after{
578
+ content:"✦";position:absolute;inset:0;display:grid;place-items:center;color:white;font-size:20px;
579
+ text-shadow:0 2px 8px rgba(0,60,100,.22);
580
+ }
581
+ .bot-id strong{display:block;font-size:.98rem}
582
+ .bot-id span{display:block;color:var(--muted);font-size:.76rem;margin-top:3px}
583
+ .online-pill{
584
+ flex:none;padding:7px 10px;border-radius:999px;font-size:.68rem;font-weight:800;
585
+ color:#267c68;background:rgba(71,204,169,.11);border:1px solid rgba(71,204,169,.2)
586
+ }
587
+ .chat-window{
588
+ height:440px;overflow:auto;padding:18px;
589
+ border-radius:25px;
590
+ background:rgba(255,255,255,.29);
591
+ border:1px solid rgba(255,255,255,.55);
592
+ box-shadow:inset 0 1px 0 rgba(255,255,255,.45);
593
+ scroll-behavior:smooth;
594
+ }
595
+ body.dark .chat-window{background:rgba(255,255,255,.025);border-color:rgba(255,255,255,.075)}
596
+ .msg{display:flex;margin:0 0 14px;animation:msgIn .28s ease both}
597
+ .msg.user{justify-content:flex-end}
598
+ .bubble{
599
+ max-width:min(82%,690px);padding:13px 15px;border-radius:19px;
600
+ font-size:.88rem;line-height:1.55;white-space:pre-wrap;
601
+ }
602
+ .msg.bot .bubble{
603
+ color:var(--ink);background:rgba(255,255,255,.66);
604
+ border:1px solid rgba(255,255,255,.78);
605
+ border-bottom-left-radius:7px;
606
+ box-shadow:0 8px 25px rgba(44,102,126,.08);
607
+ }
608
+ body.dark .msg.bot .bubble{background:rgba(255,255,255,.07);border-color:rgba(255,255,255,.09)}
609
+ .msg.user .bubble{
610
+ color:white;background:linear-gradient(135deg,#1e99ca,#34b9c2 55%,#46c3a6);
611
+ border-bottom-right-radius:7px;
612
+ box-shadow:0 8px 24px rgba(31,153,188,.22);
613
+ }
614
+ @keyframes msgIn{from{opacity:0;transform:translateY(6px) scale(.99)}to{opacity:1;transform:none}}
615
+ .typing{display:inline-flex;gap:4px;align-items:center;height:18px}
616
+ .typing i{width:5px;height:5px;border-radius:50%;background:var(--muted);animation:dot 1s infinite ease-in-out}
617
+ .typing i:nth-child(2){animation-delay:.12s}.typing i:nth-child(3){animation-delay:.24s}
618
+ @keyframes dot{50%{transform:translateY(-4px);opacity:.45}}
619
+ .suggestions{display:flex;gap:8px;overflow:auto;padding:13px 2px 4px;scrollbar-width:none}
620
+ .suggestions::-webkit-scrollbar{display:none}
621
+ .suggestion{
622
+ white-space:nowrap;cursor:pointer;border:1px solid rgba(255,255,255,.7);
623
+ background:rgba(255,255,255,.42);color:var(--ink);
624
+ padding:9px 12px;border-radius:999px;font-size:.75rem;font-weight:700;
625
+ transition:.18s ease;
626
+ }
627
+ body.dark .suggestion{background:rgba(255,255,255,.045);border-color:rgba(255,255,255,.09)}
628
+ .suggestion:hover{transform:translateY(-1px);background:rgba(255,255,255,.7)}
629
+ .composer{
630
+ display:grid;grid-template-columns:1fr auto;gap:10px;margin-top:12px;
631
+ padding:7px;border-radius:21px;background:rgba(255,255,255,.52);
632
+ border:1px solid rgba(255,255,255,.76);
633
+ box-shadow:0 10px 30px rgba(35,99,126,.08);
634
+ }
635
+ body.dark .composer{background:rgba(255,255,255,.045);border-color:rgba(255,255,255,.09)}
636
+ .composer textarea{
637
+ resize:none;min-height:46px;max-height:130px;padding:13px 12px;border:0;outline:0;
638
+ background:transparent;color:var(--ink);font:inherit;font-size:.9rem;
639
+ }
640
+ .send-btn{
641
+ align-self:end;width:46px;height:46px;border:0;border-radius:15px;cursor:pointer;
642
+ color:white;font-size:1.15rem;font-weight:900;
643
+ background:linear-gradient(145deg,#218fc6,#37bfc0 55%,#4ac5a8);
644
+ box-shadow:0 8px 20px rgba(35,153,184,.24);
645
+ transition:.18s ease;
646
+ }
647
+ .send-btn:hover{transform:scale(1.04)}
648
+ .send-btn:active{transform:scale(.96)}
649
+ .bot-disclaimer{font-size:.72rem;color:var(--muted);line-height:1.45;margin:11px 4px 0}
650
+ .fun-strip{
651
+ display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:16px;
652
+ }
653
+ .fun-tile{
654
+ padding:14px;border-radius:18px;background:rgba(255,255,255,.31);
655
+ border:1px solid rgba(255,255,255,.52);font-size:.78rem;color:var(--muted)
656
+ }
657
+ body.dark .fun-tile{background:rgba(255,255,255,.03);border-color:rgba(255,255,255,.075)}
658
+ .fun-tile strong{display:block;margin-bottom:3px;font-size:.82rem}
659
+
660
  .mobile-menu{display:none}
661
 
662
  @media (max-width: 980px){
 
678
  .stats{grid-template-columns:1fr 1fr;gap:10px}
679
  .stat-card{padding:16px}
680
  .stat-card .value{font-size:1.32rem}
681
+ .split,.flow,.fun-strip{grid-template-columns:1fr}
682
  .bar-row{grid-template-columns:102px minmax(0,1fr) 56px;gap:8px}
683
  .table-wrap{overflow-x:auto}
684
  table{min-width:620px}
 
715
  <a href="#nano">Nano</a>
716
  <a href="#scale">2B scale-up</a>
717
  <a href="#t22">T2.2</a>
718
+ <a href="#ask-orion">Ask Orion</a>
719
  </div>
720
  <button class="icon-btn" id="themeToggle" aria-label="Toggle theme" title="Toggle theme">◐</button>
721
  </nav>
 
806
  <a href="#t22">11 — T2.2 direction</a>
807
  <a href="#vm">12 — Built-in VM idea</a>
808
  <a href="#science">13 — What is actually proven?</a>
809
+ <a href="#ask-orion">14 — Ask our chatbot</a>
810
  </aside>
811
 
812
  <main>
 
1355
  </ol>
1356
  </div>
1357
  </section>
1358
+
1359
+ <section id="ask-orion">
1360
+ <div class="section-kicker">14 / Interactive architecture guide</div>
1361
+ <h2>Ask our pattern-matching chatbot</h2>
1362
+ <p class="lead">
1363
+ Ask about Orion, T2.1, the ablations, Procedure Banks, Working State, the Vault, training data,
1364
+ the current ~2B run, or the emerging T2.2 design. This is not a tiny list of canned question/answer pairs:
1365
+ it scores your question against the blog's research knowledge, combines relevant evidence, and generates
1366
+ a fresh response in your browser.
1367
+ </p>
1368
+
1369
+ <div class="ask-shell">
1370
+ <div class="ask-inner">
1371
+ <div class="ask-top">
1372
+ <div class="bot-id">
1373
+ <div class="bot-orb" aria-hidden="true"></div>
1374
+ <div><strong>Prism Pattern Matcher</strong><span>Local research guide · no server required</span></div>
1375
+ </div>
1376
+ <div class="online-pill">● READY</div>
1377
+ </div>
1378
+
1379
+ <div class="chat-window" id="chatWindow" aria-live="polite">
1380
+ <div class="msg bot"><div class="bubble">Hey! 👋 I’m the Orion architecture guide. I answer by matching your question against the research notes on this page and composing the most relevant evidence. Try asking why the Vault is being removed, what the Procedure Banks do, or whether the ablations prove T2 beats a normal Transformer.</div></div>
1381
+ </div>
1382
+
1383
+ <div class="suggestions" id="suggestions">
1384
+ <button class="suggestion">Why is the Vault being removed?</button>
1385
+ <button class="suggestion">What do Procedure Banks do?</button>
1386
+ <button class="suggestion">Does +13.9 CE mean 90% of intelligence?</button>
1387
+ <button class="suggestion">How is Working State different from weights?</button>
1388
+ <button class="suggestion">What is planned for T2.2?</button>
1389
+ </div>
1390
+
1391
+ <div class="composer">
1392
+ <textarea id="chatInput" rows="1" placeholder="Ask about the architecture…" aria-label="Ask Orion"></textarea>
1393
+ <button class="send-btn" id="sendChat" aria-label="Send question">↑</button>
1394
+ </div>
1395
+
1396
+ <div class="fun-strip">
1397
+ <div class="fun-tile"><strong>🧠 Evidence-aware</strong>Distinguishes observations, ablations, hypotheses, and unproven claims.</div>
1398
+ <div class="fun-tile"><strong>⚡ Instant</strong>Runs entirely inside this single HTML file.</div>
1399
+ <div class="fun-tile"><strong>🧪 Research mode</strong>Will say when the current notes do not support an answer.</div>
1400
+ </div>
1401
+
1402
+ <div class="bot-disclaimer">
1403
+ Pattern-matching assistant, not a hosted LLM. It can handle varied/rephrased architecture questions by
1404
+ retrieving and combining relevant project facts, but it does not invent new experimental results.
1405
+ </div>
1406
+ </div>
1407
+ </div>
1408
+ </section>
1409
+
1410
  </main>
1411
  </div>
1412
 
 
1460
  }, {threshold:.2});
1461
 
1462
  document.querySelectorAll('[data-bars]').forEach(el => observer.observe(el));
1463
+
1464
+ // ---- Prism Pattern Matcher -------------------------------------------------
1465
+ // Lightweight local retrieval + response composition. The knowledge units are
1466
+ // propositions rather than fixed question/answer pairs, so rephrased questions
1467
+ // can retrieve multiple relevant facts and receive a newly assembled response.
1468
+ const knowledge = [
1469
+ {tags:"goal t2 transformer 2 orion project prism purpose capability parameters efficient", text:"Orion / Project Prism is the Transformer 2 (T2) research program. Its core goal is maximum capability with minimum parameters."},
1470
+ {tags:"original hypothesis know knowledge do procedure think working state verify deliberation split", text:"The original hypothesis separated persistent knowledge, reusable procedures, temporary reasoning, and verification into different pathways: Vault, Procedure Banks, Working State, and recurrent deliberation."},
1471
+ {tags:"updated hypothesis current view distributed weights knowledge persistent", text:"The current view is that persistent factual knowledge can probably remain distributed in ordinary model weights rather than requiring a dedicated Vault."},
1472
+ {tags:"procedure bank banks experts specialists router routing do reusable transformation conditional compute", text:"Procedure Banks are conditional learned specialist pathways intended to represent reusable neural transformations. T2.1 routing can depend on the current token representation, projected Working State, and stage/cycle information."},
1473
+ {tags:"procedure importance ablation 2b 13.8884 11.1971 catastrophic dependency", text:"In the early ~2B run, Procedure was the dominant causal dependency on the small ablation probes: around step 14,000 Δprocedure was +11.1971 CE, and at step 15,000 it was +13.8884 CE."},
1474
+ {tags:"procedure caveat intelligence percentage out distribution ablation proof", text:"A large Procedure ablation delta must not be interpreted as a literal percentage of intelligence. Removing a major trained subsystem can push activations out of distribution; the defensible conclusion is that the checkpoint is extraordinarily dependent on its Procedure pathway."},
1475
+ {tags:"working state state think scratchpad temporary computation reasoning gate bounded replacement", text:"Working State is a separate causal stream for temporary computation. Mini-T2 updated it with bounded gated replacement: state_new = (1 − write_gate) × state + write_gate × candidate, then projected it back through a learned read gate."},
1476
+ {tags:"working state importance emerges later training dynamics language nano", text:"Across earlier Orion training, Working State tended to become much more important only after basic language structure had emerged. This makes its importance over training time a key measurement for the current ~2B run."},
1477
+ {tags:"vault knowledge memory remove removed retiring useless weak gate t2.2", text:"The explicit Knowledge Vault is likely to be removed in T2.2 because across the tested Orion designs it repeatedly showed a much weaker contribution than Procedure or Working State and has not earned its parameter and complexity budget."},
1478
+ {tags:"vault external memory universal failure proven useless caveat", text:"The Vault result is not evidence that external memory architectures are universally useless. It is a negative result about the specific neural Vault designs tested in Orion so far."},
1479
+ {tags:"mini original 219.1m 12 stages 768 16 experts 65536 slots", text:"Original Mini-T2 was about 219.1M parameters, with 12 recurrent/shared stages, d_model 768, three 16-expert Procedure Banks, a 65,536-slot Knowledge Vault, Working State, and recurrent deliberation."},
1480
+ {tags:"mini ablation no state facts reason language causal", text:"In one Mini checkpoint, removing Working State sharply damaged facts, reasoning, and language scores, while removing the Vault had little effect. This established checkpoint dependence, not architectural superiority."},
1481
+ {tags:"nano t2.1 134.715m active 72.812m parameters configuration", text:"Orion Flagship Nano T2.1 had about 134.715M total parameters and about 72.812M active-path parameter-equivalent, with d_model 640, 12 stages, three Procedure Banks, Working State, Vault v2, and recurrent final-three-stage deliberation."},
1482
+ {tags:"data corpus fineweb edu finemath openwebmath codeparrot 50b training", text:"Nano's 50B-token base corpus was 60% FineWeb-Edu (30B), 12% FineMath (6B), 8% OpenWebMath (4B), and 20% CodeParrot Clean (10B): overall 60% general, 20% math, 20% code, with no SFT, DPO, or RLHF in the base corpus."},
1483
+ {tags:"bananamind benchmark elo accuracy nano 1041 56.86 53.26", text:"At 9.99B training tokens, Nano scored about 1041 overall Elo on BananaMind Base Bench 1.1, with 56.86% raw accuracy and 53.26% weighted accuracy. This is one benchmark result, not proof of universal architectural superiority or general intelligence."},
1484
+ {tags:"benchmark later 13.62b 27b monotonic worse", text:"Benchmark scaling was not monotonic: overall Elo stayed around 1041 at 13.62B tokens and was around 1019 in the 27B-token era. A small fixed benchmark is not enough to claim later training made the model generally worse."},
1485
+ {tags:"2b current training h200 8 gpu 100b tokens throughput 160k 167k vram", text:"The current T2.1 scale-up is approximately 2B parameters on 8× NVIDIA H200 GPUs, targeting about 100B tokens. Reported throughput is roughly 160k–167k tokens/s, with peak reported VRAM around 72.4 GiB per device/process context."},
1486
+ {tags:"2b health allocation retries skipped data loader six procedure banks", text:"The ~2B run has six Procedure Banks and has reported no allocation retries, no skipped steps, and essentially zero data-loader wait in the supplied telemetry."},
1487
+ {tags:"2b early telemetry vault gate state gradients null b0 depth", text:"Around ~986M tokens, the Vault gate was about 0.003 ± 0.022, while Procedure and Working State had stronger gradient signals. Procedure routing had zero dead experts, and the earliest bank B0 had a very high soft-NULL probability around 0.943."},
1488
+ {tags:"2b step 15000 1.72b ablation full 2.7877 vault state procedure deliberation", text:"At step 15,000 / ~1.720B tokens, full probe CE was 2.7877; Δvault −0.0030, Δstate +0.8092, Δprocedure +13.8884, and Δdeliberation +0.4310."},
1489
+ {tags:"2b early percent complete 1.7 training tokens", text:"At roughly 1.7B of the intended ~100B tokens, the current model was only about 1.7% through the planned training run, so these results should be treated as early training dynamics rather than final outcomes."},
1490
+ {tags:"deliberation recurrent verify usefulness", text:"Recurrent deliberation repeats deeper computation so the model can integrate or refine results. It has shown a smaller but recurring positive ablation signal relative to Procedure and, later in training, Working State."},
1491
+ {tags:"t2.2 future design larger procedure mid state no vault recurrent deliberation", text:"The provisional T2.2 direction is a larger Procedure subsystem, a mid-sized Working State, no explicit Knowledge Vault, retained recurrent/shared computation and deliberation, state-conditioned conditional compute, neutral initialization, and extensive telemetry."},
1492
+ {tags:"vm built in exact deterministic compute arithmetic symbolic code tool future router null", text:"A possible future T2.2 experiment is a deterministic built-in VM/exact-compute path for arithmetic, symbolic operations, deterministic algorithms, or possibly code execution. This is an idea, not a validated architecture component."},
1493
+ {tags:"scientific evidence causality matched controls retraining superiority prove", text:"Inference-time ablations demonstrate what a trained checkpoint depends on. Stronger architectural claims require matched retrained controls at similar parameter and compute budgets."},
1494
+ {tags:"metrics flops latency vram validation ce capability parameter compute evaluation", text:"A stronger evaluation should report validation CE, downstream benchmarks, total and active parameters, FLOPs/token, latency, VRAM, training stability, component utilization, ablations, capability per parameter, and capability per FLOP."}
1495
+ ];
1496
+
1497
+ const stop = new Set("a an the is are was were be been being do does did of to in on at for from with and or but if then than it its this that these those what why how who when where which can could would should about our your my me i we they them their as by into over under vs versus much many mean means tell explain".split(" "));
1498
+ const synonyms = {
1499
+ memory:"vault", memories:"vault", knowledge:"vault weights",
1500
+ scratchpad:"state", reasoning:"state deliberation", think:"state",
1501
+ expert:"procedure", experts:"procedure", moe:"procedure", specialist:"procedure",
1502
+ procedures:"procedure", bank:"procedure", banks:"procedure",
1503
+ remove:"vault t2.2", removed:"vault t2.2", retire:"vault t2.2", retired:"vault t2.2",
1504
+ gpu:"h200", gpus:"h200", hardware:"h200", speed:"throughput",
1505
+ dataset:"data corpus", training:"training tokens", future:"t2.2",
1506
+ proof:"causality matched controls", prove:"causality matched controls",
1507
+ better:"superiority matched controls", transformer:"transformer t2",
1508
+ math:"finemath openwebmath vm", code:"codeparrot vm",
1509
+ ablations:"ablation", ablate:"ablation"
1510
+ };
1511
+
1512
+ const norm = str => str.toLowerCase().replace(/[^a-z0-9.+×~-]+/g," ").trim().split(/\s+/).filter(Boolean);
1513
+ function expand(tokens){
1514
+ const out = [...tokens];
1515
+ tokens.forEach(t => { if(synonyms[t]) out.push(...synonyms[t].split(" ")); });
1516
+ return out.filter(t => !stop.has(t));
1517
+ }
1518
+ function scoreUnit(qTokens, unit){
1519
+ const hay = new Set(norm(unit.tags + " " + unit.text));
1520
+ let score = 0;
1521
+ qTokens.forEach(t => {
1522
+ if(hay.has(t)) score += t.length > 6 ? 3 : 2;
1523
+ else if(t.length > 4 && [...hay].some(h => h.includes(t) || t.includes(h))) score += 0.8;
1524
+ });
1525
+ return score;
1526
+ }
1527
+ function composeAnswer(question){
1528
+ const q = question.toLowerCase();
1529
+ const qt = expand(norm(question));
1530
+ const ranked = knowledge.map(k => ({...k, score:scoreUnit(qt,k)})).sort((a,b)=>b.score-a.score);
1531
+ const useful = ranked.filter(x=>x.score>0).slice(0, q.includes("compare") || q.includes("difference") ? 4 : 3);
1532
+
1533
+ if(!useful.length || useful[0].score < 1.5){
1534
+ return "I can’t support a confident answer to that from the Orion research notes currently embedded in this page. Try asking about T2/T2.1, Procedure Banks, Working State, the Knowledge Vault, deliberation, Nano, BananaMind, the ~2B H200 run, ablations, T2.2, or the proposed VM.";
1535
+ }
1536
+
1537
+ let prefix = "";
1538
+ if(q.includes("prove") || q.includes("better") || q.includes("superior"))
1539
+ prefix = "Important distinction: the current evidence does not by itself prove architectural superiority. ";
1540
+ else if(q.includes("vault") && (q.includes("why") || q.includes("remove") || q.includes("retir")))
1541
+ prefix = "The short version: the Vault kept losing the parameter-budget argument. ";
1542
+ else if(q.includes("procedure"))
1543
+ prefix = "Procedure Banks are currently one of the strongest signals in the Orion experiments. ";
1544
+ else if(q.includes("state"))
1545
+ prefix = "Working State is Orion’s explicit temporary-computation pathway. ";
1546
+ else if(q.includes("t2.2"))
1547
+ prefix = "T2.2 is still provisional, but its direction is increasingly clear. ";
1548
+
1549
+ const unique = [];
1550
+ useful.forEach(u => { if(!unique.includes(u.text)) unique.push(u.text); });
1551
+ let answer = prefix + unique.join(" ");
1552
+
1553
+ if((q.includes("13.9") || q.includes("intelligence") || q.includes("percent")) && !answer.includes("literal percentage"))
1554
+ answer += " In particular, an ablation delta is not a literal percentage of the model’s intelligence.";
1555
+
1556
+ return answer;
1557
+ }
1558
+
1559
+ const chatWindow = document.getElementById('chatWindow');
1560
+ const chatInput = document.getElementById('chatInput');
1561
+ const sendChat = document.getElementById('sendChat');
1562
+
1563
+ function addMessage(text, who){
1564
+ const row = document.createElement('div');
1565
+ row.className = 'msg ' + who;
1566
+ const bubble = document.createElement('div');
1567
+ bubble.className = 'bubble';
1568
+ bubble.textContent = text;
1569
+ row.appendChild(bubble);
1570
+ chatWindow.appendChild(row);
1571
+ chatWindow.scrollTop = chatWindow.scrollHeight;
1572
+ return row;
1573
+ }
1574
+
1575
+ function ask(text){
1576
+ text = text.trim();
1577
+ if(!text) return;
1578
+ addMessage(text,'user');
1579
+ chatInput.value = '';
1580
+ chatInput.style.height = '46px';
1581
+
1582
+ const typing = document.createElement('div');
1583
+ typing.className = 'msg bot';
1584
+ typing.innerHTML = '<div class="bubble"><span class="typing"><i></i><i></i><i></i></span></div>';
1585
+ chatWindow.appendChild(typing);
1586
+ chatWindow.scrollTop = chatWindow.scrollHeight;
1587
+
1588
+ const answer = composeAnswer(text);
1589
+ setTimeout(() => {
1590
+ typing.remove();
1591
+ addMessage(answer,'bot');
1592
+ }, Math.min(780, 260 + text.length * 7));
1593
+ }
1594
+
1595
+ sendChat.addEventListener('click',()=>ask(chatInput.value));
1596
+ chatInput.addEventListener('keydown',e=>{
1597
+ if(e.key === 'Enter' && !e.shiftKey){e.preventDefault();ask(chatInput.value);}
1598
+ });
1599
+ chatInput.addEventListener('input',()=>{
1600
+ chatInput.style.height='46px';
1601
+ chatInput.style.height=Math.min(chatInput.scrollHeight,130)+'px';
1602
+ });
1603
+ document.querySelectorAll('.suggestion').forEach(btn=>btn.addEventListener('click',()=>ask(btn.textContent)));
1604
  })();
1605
  </script>
1606
  </body>