Bc-AI commited on
Commit
37b5b14
·
verified ·
1 Parent(s): d22a85e

Upload index.html

Browse files
Files changed (1) hide show
  1. index.html +420 -2
index.html CHANGED
@@ -5,6 +5,10 @@
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
  <meta name="theme-color" content="#eaf8ff" />
7
  <meta name="description" content="Orion / Project Prism — Transformer 2 research notes on Procedure Banks, Working State, recurrent deliberation, and the retirement of the Knowledge Vault." />
 
 
 
 
8
  <title>Orion / Project Prism — Transformer 2 Research Blog</title>
9
 
10
  <style>
@@ -752,6 +756,101 @@
752
  .eyebrow{border-radius:10px}.stat-card{border-radius:16px}.glass-card,.callout,.table-wrap,.timeline-card{border-radius:18px}
753
  .btn{border-radius:11px}.arch-row{border-radius:12px}.arch-row .tag{border-radius:7px}.toc{border-radius:18px}
754
  .section-kicker{letter-spacing:.055em}.quote{font-weight:650}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
755
  </style>
756
  </head>
757
  <body>
@@ -776,12 +875,21 @@
776
  <a href="#scale">2B scale-up</a>
777
  <a href="#t22">T2.2</a>
778
  <button class="nav-tab-btn" id="openAssistant" type="button">✦ AI Assistant</button>
 
779
  </div>
780
  <button class="icon-btn" id="themeToggle" aria-label="Switch to dark mode" title="Switch appearance"><span id="themeIcon">☾</span></button>
781
  </nav>
782
  </div>
783
 
784
- <header class="hero" id="top">
 
 
 
 
 
 
 
 
785
  <div class="hero-grid">
786
  <div class="hero-main">
787
  <div class="eyebrow"><span class="pulse-dot"></span> Ongoing independent ML research</div>
@@ -866,6 +974,7 @@
866
  <a href="#t22">11 — T2.2 direction</a>
867
  <a href="#vm">12 — Built-in VM idea</a>
868
  <a href="#science">13 — What is actually proven?</a>
 
869
  </aside>
870
 
871
  <main>
@@ -1417,13 +1526,108 @@
1417
 
1418
 
1419
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1420
  </main>
1421
  </div>
1422
 
1423
  <section id="ask-orion" class="assistant-view" aria-hidden="true">
1424
  <div class="assistant-view-head">
1425
  <button class="back-blog" id="backToBlog" type="button">← Research blog</button>
1426
- <div class="section-kicker">AI / Interactive architecture guide</div>
1427
  </div>
1428
  <h2>Ask our pattern-matching chatbot</h2>
1429
  <p class="lead">
@@ -1439,6 +1643,10 @@
1439
  <div class="bot-id">
1440
  <div class="bot-orb" aria-hidden="true"></div>
1441
  <div><strong>Prism Pattern Matcher</strong><span>Local research guide · no server required</span></div>
 
 
 
 
1442
  </div>
1443
  <div class="online-pill">● READY</div>
1444
  </div>
@@ -1466,6 +1674,11 @@
1466
  <div class="fun-tile"><strong>🧪 Research mode</strong>Will say when the current notes do not support an answer.</div>
1467
  </div>
1468
 
 
 
 
 
 
1469
  <div class="bot-disclaimer">
1470
  Pattern-matching assistant, not a hosted LLM. It can handle varied/rephrased architecture questions by
1471
  retrieving and combining relevant project facts, but it does not invent new experimental results.
@@ -1689,7 +1902,212 @@
1689
  chatInput.style.height=Math.min(chatInput.scrollHeight,130)+'px';
1690
  });
1691
  document.querySelectorAll('.suggestion').forEach(btn=>btn.addEventListener('click',()=>ask(btn.textContent)));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1692
  })();
1693
  </script>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1694
  </body>
1695
  </html>
 
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
  <meta name="theme-color" content="#eaf8ff" />
7
  <meta name="description" content="Orion / Project Prism — Transformer 2 research notes on Procedure Banks, Working State, recurrent deliberation, and the retirement of the Knowledge Vault." />
8
+ <meta property="og:title" content="Orion / Project Prism — Transformer 2 Research Notes" />
9
+ <meta property="og:description" content="Architecture notes, ablations, training telemetry, negative results, and the road to T2.2." />
10
+ <meta property="og:type" content="website" />
11
+ <meta name="twitter:card" content="summary_large_image" />
12
  <title>Orion / Project Prism — Transformer 2 Research Blog</title>
13
 
14
  <style>
 
756
  .eyebrow{border-radius:10px}.stat-card{border-radius:16px}.glass-card,.callout,.table-wrap,.timeline-card{border-radius:18px}
757
  .btn{border-radius:11px}.arch-row{border-radius:12px}.arch-row .tag{border-radius:7px}.toc{border-radius:18px}
758
  .section-kicker{letter-spacing:.055em}.quote{font-weight:650}
759
+
760
+ .quick-tools{
761
+ position:fixed;right:16px;bottom:16px;z-index:90;
762
+ display:flex;gap:8px;padding:7px;border-radius:16px;
763
+ background:var(--glass);border:1px solid var(--glass-border);
764
+ backdrop-filter:blur(20px) saturate(160%);box-shadow:var(--shadow-soft)
765
+ }
766
+ .quick-tools button,.assistant-actions button{
767
+ border:1px solid var(--glass-border);background:rgba(255,255,255,.35);color:var(--ink);
768
+ border-radius:10px;cursor:pointer;font-weight:750
769
+ }
770
+ .quick-tools button{width:38px;height:38px}
771
+ body.dark .quick-tools button,body.dark .assistant-actions button{background:rgba(255,255,255,.045)}
772
+ .lab-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:26px}
773
+ .lab-card{
774
+ background:var(--glass);border:1px solid var(--glass-border);backdrop-filter:blur(22px) saturate(150%);
775
+ border-radius:18px;padding:20px;box-shadow:var(--shadow-soft);min-width:0
776
+ }
777
+ .span-2{grid-column:span 2}
778
+ .lab-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:16px}
779
+ .lab-head h3{margin:7px 0 0}
780
+ .evidence{display:inline-block;font-size:.61rem;font-weight:850;letter-spacing:.08em;padding:5px 7px;border-radius:7px;border:1px solid var(--line)}
781
+ .observed{color:#157a63;background:rgba(53,180,143,.08)}
782
+ .ablation{color:#8a6200;background:rgba(204,153,42,.08)}
783
+ .planned{color:#316db1;background:rgba(70,132,203,.08)}
784
+ .illustrative{color:#7c5a9e;background:rgba(133,88,173,.08)}
785
+ .range{width:100%;accent-color:var(--cyan)}
786
+ .tm-scale{display:flex;justify-content:space-between;gap:6px;font-size:.65rem;color:var(--muted);margin:8px 0 15px}
787
+ .metric-bars{display:grid;gap:10px}
788
+ .metric-row{display:grid;grid-template-columns:95px 1fr 70px;gap:10px;align-items:center;font-size:.78rem}
789
+ .metric-track{height:10px;background:rgba(30,80,100,.09);border-radius:999px;overflow:hidden}
790
+ .metric-fill{height:100%;background:var(--cyan);border-radius:999px;transition:width .35s ease}
791
+ .micro{font-size:.76rem;line-height:1.5;color:var(--muted);margin:12px 0 0}
792
+ .ablation-switches{display:grid;gap:9px}
793
+ .ablation-switches label{display:flex;gap:9px;align-items:center;font-size:.84rem}
794
+ .ablation-meter{height:12px;border-radius:999px;background:rgba(30,80,100,.09);overflow:hidden;margin:16px 0}
795
+ .ablation-meter div{height:100%;width:14%;background:var(--cyan);transition:.25s}
796
+ .status-live{font-size:.66rem;font-weight:850;color:#21816b}
797
+ .status-list{display:grid;gap:0;margin:0}
798
+ .status-list div{display:flex;justify-content:space-between;gap:18px;padding:9px 0;border-bottom:1px solid var(--line)}
799
+ .status-list dt{color:var(--muted);font-size:.76rem}.status-list dd{margin:0;font-size:.79rem;font-weight:700;text-align:right}
800
+ .diff{margin:0;background:rgba(9,29,39,.94);color:#e9f5fa;padding:17px;border-radius:13px;line-height:1.8;overflow:auto;font-size:.8rem}
801
+ .diff .minus{color:#ff9b9b}.diff .plus{color:#8fe1b9}.diff .same{color:#d9e6ec}.diff .maybe{color:#f0cd7a}
802
+ .token-demo{display:flex;gap:8px}.token-demo input{flex:1;min-width:0}
803
+ .token-demo input,.token-demo button,.assistant-mode-select{
804
+ border:1px solid var(--glass-border);background:rgba(255,255,255,.35);color:var(--ink);border-radius:10px;padding:10px 12px
805
+ }
806
+ body.dark .token-demo input,body.dark .token-demo button,body.dark .assistant-mode-select{background:rgba(255,255,255,.045)}
807
+ .token-demo button{cursor:pointer;font-weight:750}
808
+ .token-path{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}
809
+ .token-node{padding:9px 10px;border:1px solid var(--line);border-radius:10px;font-size:.74rem;opacity:.35;transform:translateY(4px);transition:.3s}
810
+ .token-node.on{opacity:1;transform:none;background:rgba(54,175,205,.08)}
811
+ .experts{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
812
+ .expert{aspect-ratio:1;border-radius:12px;border:1px solid var(--line);display:grid;place-items:center;font-size:.72rem;font-weight:800;background:rgba(255,255,255,.2)}
813
+ .expert.hot{background:rgba(53,185,204,.18);box-shadow:inset 0 0 0 1px rgba(53,185,204,.18)}
814
+ .family-tree{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}
815
+ .family-tree div{padding:12px;border:1px solid var(--line);border-radius:12px;display:flex;flex-direction:column;gap:3px;min-width:105px}
816
+ .family-tree span{font-size:.7rem;color:var(--muted)}.family-tree i{color:var(--muted)}.family-tree .future{border-style:dashed}
817
+ .repro summary{cursor:pointer;font-weight:800}.repro-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:16px}
818
+ .repro-grid div{padding:12px;border:1px solid var(--line);border-radius:12px}.repro-grid b,.repro-grid span{display:block}.repro-grid span{font-size:.76rem;color:var(--muted);margin-top:4px}
819
+ .assistant-mode-select{font-size:.7rem;padding:6px 8px;margin-left:8px}
820
+ .assistant-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.assistant-actions button{padding:8px 10px;font-size:.72rem}
821
+ .modal-backdrop{position:fixed;inset:0;background:rgba(5,12,18,.38);backdrop-filter:blur(10px);z-index:300}
822
+ .modal-panel{position:fixed;left:50%;top:14%;transform:translateX(-50%);width:min(680px,calc(100% - 24px));z-index:310;background:var(--glass-strong);border:1px solid var(--glass-border);backdrop-filter:blur(30px) saturate(170%);border-radius:18px;box-shadow:0 30px 80px rgba(0,0,0,.22);padding:14px}
823
+ .palette input,.search-panel input{width:100%;border:1px solid var(--line);background:transparent;color:var(--ink);border-radius:12px;padding:14px;font-size:1rem;outline:0}
824
+ .palette-item,.search-result{padding:11px 12px;border-radius:10px;cursor:pointer;border-bottom:1px solid var(--line)}
825
+ .palette-item:hover,.palette-item.active,.search-result:hover{background:rgba(255,255,255,.28)}
826
+ .palette-help{font-size:.68rem;color:var(--muted);padding:9px 5px 2px}
827
+ .modal-title{display:flex;justify-content:space-between;align-items:center;font-weight:850;margin:2px 2px 12px}
828
+ .modal-title button{border:0;background:none;color:var(--ink);font-size:1.4rem;cursor:pointer}
829
+ .change-item{padding:12px 4px;border-top:1px solid var(--line)}.change-item b,.change-item span{display:block}.change-item span{color:var(--muted);font-size:.78rem;line-height:1.5;margin-top:4px}
830
+ .toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,20px);opacity:0;pointer-events:none;z-index:400;background:#102b3a;color:white;border-radius:10px;padding:10px 14px;font-size:.78rem;transition:.2s}
831
+ .toast.show{opacity:1;transform:translate(-50%,0)}
832
+ .section-anchor{opacity:0;margin-left:8px;font-size:.7em;color:var(--muted);transition:.15s}.section-anchor:hover{opacity:1}h2:hover .section-anchor{opacity:.65}
833
+ mark.search-hit{background:rgba(255,222,91,.55);color:inherit;border-radius:3px}
834
+ body.paper-mode{background:#fff!important;color:#111!important}
835
+ body.paper-mode .ambient,body.paper-mode .quick-tools,body.paper-mode .nav-wrap{display:none!important}
836
+ body.paper-mode .hero-main,body.paper-mode .hero-side,body.paper-mode .stat-card,body.paper-mode .glass-card,body.paper-mode .callout,body.paper-mode .table-wrap,body.paper-mode .timeline-card,body.paper-mode .lab-card{background:white!important;box-shadow:none!important;backdrop-filter:none!important;border:1px solid #ddd!important}
837
+ body.paper-mode{--ink:#111;--muted:#555;--line:#ddd;--glass:#fff;--glass-border:#ddd}
838
+ body.no-glass *{backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
839
+ body.no-animations *{animation:none!important;transition:none!important}
840
+ body.no-radius *{border-radius:0!important}
841
+ body.no-css{font-family:serif!important;background:white!important;color:black!important}
842
+ body.no-css *{box-shadow:none!important;background:transparent!important;color:inherit!important;border-radius:0!important;backdrop-filter:none!important}
843
+ @media(max-width:760px){
844
+ .lab-grid{grid-template-columns:1fr}.span-2{grid-column:auto}.repro-grid{grid-template-columns:1fr}
845
+ .quick-tools{right:8px;bottom:8px}.quick-tools button{width:34px;height:34px}
846
+ .tm-scale{font-size:.55rem}.metric-row{grid-template-columns:78px 1fr 55px}.family-tree i{display:none}
847
+ .modal-panel{top:8%}
848
+ }
849
+ @media print{
850
+ .nav-wrap,.quick-tools,.ambient,.progress,.assistant-view,.hero-actions{display:none!important}
851
+ body{background:#fff!important}.hero-main,.hero-side,.stat-card,.glass-card,.callout,.table-wrap,.timeline-card,.lab-card{box-shadow:none!important;backdrop-filter:none!important;background:white!important}
852
+ }
853
+
854
  </style>
855
  </head>
856
  <body>
 
875
  <a href="#scale">2B scale-up</a>
876
  <a href="#t22">T2.2</a>
877
  <button class="nav-tab-btn" id="openAssistant" type="button">✦ AI Assistant</button>
878
+ <button class="nav-tab-btn" id="openPalette" type="button" title="Command palette">⌘K</button>
879
  </div>
880
  <button class="icon-btn" id="themeToggle" aria-label="Switch to dark mode" title="Switch appearance"><span id="themeIcon">☾</span></button>
881
  </nav>
882
  </div>
883
 
884
+
885
+ <div class="quick-tools" aria-label="Research tools">
886
+ <button id="searchBtn" title="Search research">⌕</button>
887
+ <button id="paperModeBtn" title="Paper / print mode">▤</button>
888
+ <button id="ablateSiteBtn" title="Ablate the website">Δ</button>
889
+ <button id="changelogBtn" title="Changelog">↻</button>
890
+ </div>
891
+
892
+ <header class="hero" id="top">
893
  <div class="hero-grid">
894
  <div class="hero-main">
895
  <div class="eyebrow"><span class="pulse-dot"></span> Ongoing independent ML research</div>
 
974
  <a href="#t22">11 — T2.2 direction</a>
975
  <a href="#vm">12 — Built-in VM idea</a>
976
  <a href="#science">13 — What is actually proven?</a>
977
+ <a href="#lab">14 — Interactive research lab</a>
978
  </aside>
979
 
980
  <main>
 
1526
 
1527
 
1528
 
1529
+
1530
+ <section id="lab">
1531
+ <div class="section-kicker">14 / Interactive research lab</div>
1532
+ <h2>Explore the architecture</h2>
1533
+ <p class="lead">Interactive views of the same measurements used in the research notes. Where a view is illustrative rather than measured, it is labelled as such.</p>
1534
+
1535
+ <div class="lab-grid">
1536
+ <article class="lab-card span-2">
1537
+ <div class="lab-head">
1538
+ <div><span class="evidence observed">OBSERVED</span><h3>Checkpoint Time Machine</h3></div>
1539
+ <span class="mono" id="tmLabel">Mini</span>
1540
+ </div>
1541
+ <input id="timeMachine" class="range" type="range" min="0" max="4" step="1" value="0" aria-label="Checkpoint">
1542
+ <div class="tm-scale"><span>Mini</span><span>Nano 1k</span><span>Nano 4.36B</span><span>Nano 9.4B</span><span>2B 1.72B</span></div>
1543
+ <div class="metric-bars" id="tmBars"></div>
1544
+ <p class="micro" id="tmNote"></p>
1545
+ </article>
1546
+
1547
+ <article class="lab-card">
1548
+ <div class="lab-head"><div><span class="evidence ablation">ABLATION</span><h3>Ablation Playground</h3></div><span class="mono" id="ablCE">CE 2.7877</span></div>
1549
+ <div class="ablation-switches">
1550
+ <label><input type="checkbox" data-ablate="vault" checked> Vault</label>
1551
+ <label><input type="checkbox" data-ablate="state" checked> Working State</label>
1552
+ <label><input type="checkbox" data-ablate="procedure" checked> Procedure</label>
1553
+ <label><input type="checkbox" data-ablate="delib" checked> Deliberation</label>
1554
+ </div>
1555
+ <div class="ablation-meter"><div id="ablFill"></div></div>
1556
+ <p class="micro" id="ablText">All measured subsystems enabled.</p>
1557
+ </article>
1558
+
1559
+ <article class="lab-card">
1560
+ <div class="lab-head"><div><span class="evidence observed">OBSERVED</span><h3>Experiment status</h3></div><span class="status-live">● RUNNING</span></div>
1561
+ <dl class="status-list">
1562
+ <div><dt>Model</dt><dd>~2B T2.1</dd></div>
1563
+ <div><dt>Target</dt><dd>99,999,907,840 tokens</dd></div>
1564
+ <div><dt>Hardware</dt><dd>8× H200</dd></div>
1565
+ <div><dt>Throughput</dt><dd>~160–167k tok/s</dd></div>
1566
+ <div><dt>Latest supplied point</dt><dd>~1.72B tokens</dd></div>
1567
+ </dl>
1568
+ <p class="micro">Static snapshot from the supplied research notes. Ready to swap for a live telemetry endpoint later.</p>
1569
+ </article>
1570
+
1571
+ <article class="lab-card span-2">
1572
+ <div class="lab-head"><div><span class="evidence planned">PLANNED</span><h3>T2.1 → T2.2 architecture diff</h3></div></div>
1573
+ <pre class="diff"><span class="minus">- Knowledge Vault (explicit persistent memory)</span>
1574
+ <span class="plus">+ More Procedure capacity</span>
1575
+ <span class="plus">+ Mid-sized Working State budget</span>
1576
+ <span class="same"> Recurrent/shared computation</span>
1577
+ <span class="same"> Recurrent deliberation</span>
1578
+ <span class="same"> State-conditioned routing</span>
1579
+ <span class="maybe">? Deterministic VM / exact-compute path</span></pre>
1580
+ </article>
1581
+
1582
+ <article class="lab-card span-2">
1583
+ <div class="lab-head"><div><span class="evidence illustrative">ILLUSTRATIVE</span><h3>Inside one token</h3></div></div>
1584
+ <div class="token-demo">
1585
+ <input id="tokenInput" value="The capital of France is" aria-label="Illustrative token prompt">
1586
+ <button id="runToken">Run illustrative trace</button>
1587
+ </div>
1588
+ <div class="token-path" id="tokenPath"></div>
1589
+ <p class="micro">This animation is a conceptual walkthrough, not a recorded causal trace from a live checkpoint.</p>
1590
+ </article>
1591
+
1592
+ <article class="lab-card">
1593
+ <div class="lab-head"><div><span class="evidence observed">OBSERVED</span><h3>Procedure Bank visualizer</h3></div><select id="bankSelect" aria-label="Procedure bank"></select></div>
1594
+ <div class="experts" id="experts"></div>
1595
+ <p class="micro" id="bankNote"></p>
1596
+ </article>
1597
+
1598
+ <article class="lab-card">
1599
+ <div class="lab-head"><div><span class="evidence observed">OBSERVED</span><h3>Model family tree</h3></div></div>
1600
+ <div class="family-tree">
1601
+ <div><b>Mini</b><span>219.1M</span></div><i>→</i>
1602
+ <div><b>Nano T2.1</b><span>134.7M</span></div><i>→</i>
1603
+ <div><b>2B T2.1</b><span>~2B</span></div><i>→</i>
1604
+ <div class="future"><b>T2.2</b><span>designing</span></div>
1605
+ </div>
1606
+ </article>
1607
+
1608
+ <article class="lab-card span-2">
1609
+ <details class="repro">
1610
+ <summary>Reproducibility drawer</summary>
1611
+ <div class="repro-grid">
1612
+ <div><b>Data</b><span>Nano: 50B tokens; 60% general, 20% math, 20% code</span></div>
1613
+ <div><b>2B target</b><span>99,999,907,840 tokens</span></div>
1614
+ <div><b>Hardware</b><span>8× NVIDIA H200</span></div>
1615
+ <div><b>Tokens/update</b><span>114,688</span></div>
1616
+ <div><b>Reported throughput</b><span>~160k–167k tokens/s</span></div>
1617
+ <div><b>Scientific caveat</b><span>Inference ablations show checkpoint dependence, not matched-training superiority.</span></div>
1618
+ </div>
1619
+ </details>
1620
+ </article>
1621
+ </div>
1622
+ </section>
1623
+
1624
  </main>
1625
  </div>
1626
 
1627
  <section id="ask-orion" class="assistant-view" aria-hidden="true">
1628
  <div class="assistant-view-head">
1629
  <button class="back-blog" id="backToBlog" type="button">← Research blog</button>
1630
+ <div class="section-kicker">AI Assistant / Interactive architecture guide</div>
1631
  </div>
1632
  <h2>Ask our pattern-matching chatbot</h2>
1633
  <p class="lead">
 
1643
  <div class="bot-id">
1644
  <div class="bot-orb" aria-hidden="true"></div>
1645
  <div><strong>Prism Pattern Matcher</strong><span>Local research guide · no server required</span></div>
1646
+ <select id="assistantMode" class="assistant-mode-select" title="Assistant mode">
1647
+ <option value="pattern">Pattern Matcher</option>
1648
+ <option value="orion" disabled>Orion 2B · connect later</option>
1649
+ </select>
1650
  </div>
1651
  <div class="online-pill">● READY</div>
1652
  </div>
 
1674
  <div class="fun-tile"><strong>🧪 Research mode</strong>Will say when the current notes do not support an answer.</div>
1675
  </div>
1676
 
1677
+ <div class="assistant-actions">
1678
+ <button id="researchModeBtn">Research mode: OFF</button>
1679
+ <button id="exportChatBtn">Export Markdown</button>
1680
+ <button id="shareChatBtn">Copy share link</button>
1681
+ </div>
1682
  <div class="bot-disclaimer">
1683
  Pattern-matching assistant, not a hosted LLM. It can handle varied/rephrased architecture questions by
1684
  retrieving and combining relevant project facts, but it does not invent new experimental results.
 
1902
  chatInput.style.height=Math.min(chatInput.scrollHeight,130)+'px';
1903
  });
1904
  document.querySelectorAll('.suggestion').forEach(btn=>btn.addEventListener('click',()=>ask(btn.textContent)));
1905
+
1906
+ // ---------- Reading time, anchors, search corpus ----------
1907
+ const articleText = [...document.querySelectorAll('main section')].map(x=>x.innerText).join(' ');
1908
+ const words = articleText.trim().split(/\s+/).length;
1909
+ const reading = document.getElementById('readingTime');
1910
+ if(reading) reading.textContent = Math.max(1, Math.round(words/220)) + ' min read';
1911
+
1912
+ document.querySelectorAll('main section h2').forEach(h=>{
1913
+ const sec=h.closest('section'); if(!sec || !sec.id) return;
1914
+ const a=document.createElement('a'); a.href='#'+sec.id; a.className='section-anchor'; a.textContent='¶'; a.title='Copy section link';
1915
+ a.addEventListener('click',e=>{ e.preventDefault(); history.replaceState(null,'','#'+sec.id); navigator.clipboard?.writeText(location.href); showToast('Section link copied'); });
1916
+ h.appendChild(a);
1917
+ });
1918
+
1919
+ const searchDocs=[...document.querySelectorAll('main section')].map(sec=>({
1920
+ id:sec.id, title:sec.querySelector('h2')?.childNodes[0]?.textContent?.trim() || sec.id, text:sec.innerText
1921
+ }));
1922
+
1923
+ // ---------- Checkpoint Time Machine ----------
1924
+ const checkpoints=[
1925
+ {name:'Mini', note:'Mini checkpoint: Working State was the strongest observed dependency; Vault evidence was weak/mixed.', vals:{Vault:.2,State:9.0,Procedure:0,Deliberation:1.6}},
1926
+ {name:'Nano · ~1k steps', note:'Procedure mattered almost immediately, while State and Vault were still small.', vals:{Vault:.0012,State:.0332,Procedure:2.9562,Deliberation:.0806}},
1927
+ {name:'Nano · 4.36B', note:'Working State had become a major dependency by this point.', vals:{Vault:.1622,State:4.4783,Procedure:5.8667,Deliberation:.6068}},
1928
+ {name:'Nano · 9.4B', note:'Procedure and State were both strongly important; Vault remained much smaller.', vals:{Vault:.2111,State:6.1979,Procedure:6.6810,Deliberation:1.0009}},
1929
+ {name:'2B · 1.72B', note:'Early 2B checkpoint: Procedure dominated the measured ablation effect.', vals:{Vault:0,State:.8092,Procedure:13.8884,Deliberation:.4310}}
1930
+ ];
1931
+ const tm=document.getElementById('timeMachine'), tmBars=document.getElementById('tmBars'), tmLabel=document.getElementById('tmLabel'), tmNote=document.getElementById('tmNote');
1932
+ function renderTM(){
1933
+ const c=checkpoints[+tm.value]; tmLabel.textContent=c.name; tmNote.textContent=c.note; tmBars.innerHTML='';
1934
+ const max=Math.max(...Object.values(c.vals),1);
1935
+ Object.entries(c.vals).forEach(([k,v])=>{
1936
+ const r=document.createElement('div'); r.className='metric-row';
1937
+ r.innerHTML=`<b>${k}</b><div class="metric-track"><div class="metric-fill" style="width:${Math.max(1,v/max*100)}%"></div></div><span class="mono">${v===0?'≈0':v.toFixed(v<1?3:2)}</span>`;
1938
+ tmBars.appendChild(r);
1939
+ });
1940
+ }
1941
+ tm?.addEventListener('input',renderTM); if(tm) renderTM();
1942
+
1943
+ // ---------- Ablation playground ----------
1944
+ const baseCE=2.7877, deltas={vault:-.0030,state:.8092,procedure:13.8884,delib:.4310};
1945
+ function renderAblation(){
1946
+ let ce=baseCE, removed=[];
1947
+ document.querySelectorAll('[data-ablate]').forEach(x=>{ if(!x.checked){ce+=deltas[x.dataset.ablate];removed.push(x.parentElement.textContent.trim())} });
1948
+ document.getElementById('ablCE').textContent='CE '+ce.toFixed(4);
1949
+ document.getElementById('ablFill').style.width=Math.min(100,Math.max(5,ce/17*100))+'%';
1950
+ document.getElementById('ablText').textContent=removed.length ? 'Disabled: '+removed.join(', ')+'. This is a simple composition of the supplied single-subsystem deltas, not a measured multi-ablation result.' : 'All measured subsystems enabled.';
1951
+ }
1952
+ document.querySelectorAll('[data-ablate]').forEach(x=>x.addEventListener('change',renderAblation));
1953
+
1954
+ // ---------- Token walkthrough ----------
1955
+ const tokenPath=document.getElementById('tokenPath');
1956
+ const tokenSteps=['Embedding','Cortex','Procedure B0 · maybe NULL','Working State write','Deeper Cortex','Procedure B4','Deliberation','Next-token logits'];
1957
+ function resetToken(){ tokenPath.innerHTML=''; tokenSteps.forEach(t=>{const n=document.createElement('div');n.className='token-node';n.textContent=t;tokenPath.appendChild(n)}); }
1958
+ resetToken();
1959
+ document.getElementById('runToken')?.addEventListener('click',()=>{
1960
+ resetToken(); [...tokenPath.children].forEach((n,i)=>setTimeout(()=>n.classList.add('on'),i*220));
1961
+ });
1962
+
1963
+ // ---------- Procedure visualizer ----------
1964
+ const bankNull=[.943,.853,.720,.620,.441,.534], bankSelect=document.getElementById('bankSelect'), experts=document.getElementById('experts'), bankNote=document.getElementById('bankNote');
1965
+ if(bankSelect){
1966
+ bankNull.forEach((v,i)=>{const o=document.createElement('option');o.value=i;o.textContent='Bank B'+i;bankSelect.appendChild(o)});
1967
+ function renderBank(){
1968
+ const b=+bankSelect.value, active=1-bankNull[b]; experts.innerHTML='';
1969
+ for(let i=0;i<12;i++){ const e=document.createElement('div'); e.className='expert '+(i<Math.round(active*12)?'hot':''); e.textContent='E'+i; e.title='Illustrative expert activity display'; experts.appendChild(e); }
1970
+ bankNote.textContent=`Observed soft-NULL probability for B${b}: ${bankNull[b].toFixed(3)}. Expert highlights are illustrative; the supplied notes only establish zero dead experts and bank-level NULL usage.`;
1971
+ }
1972
+ bankSelect.addEventListener('change',renderBank); renderBank();
1973
+ }
1974
+
1975
+ // ---------- Modal / palette / search ----------
1976
+ const backdrop=document.getElementById('modalBackdrop'), palette=document.getElementById('commandPalette'), searchPanel=document.getElementById('searchPanel'), changelogPanel=document.getElementById('changelogPanel');
1977
+ const modalPanels=[palette,searchPanel,changelogPanel];
1978
+ function closeModals(){modalPanels.forEach(x=>x.hidden=true);backdrop.hidden=true}
1979
+ function openModal(el){closeModals();el.hidden=false;backdrop.hidden=false;setTimeout(()=>el.querySelector('input')?.focus(),30)}
1980
+ backdrop.addEventListener('click',closeModals); document.querySelectorAll('[data-close-modal]').forEach(b=>b.addEventListener('click',closeModals));
1981
+ document.addEventListener('keydown',e=>{if(e.key==='Escape')closeModals()});
1982
+
1983
+ const commands=[
1984
+ {label:'Open AI Assistant',action:()=>setView('assistant')},
1985
+ {label:'Go to current 2B experiment',action:()=>location.hash='scale'},
1986
+ {label:'Open interactive research lab',action:()=>location.hash='lab'},
1987
+ {label:'Toggle dark mode',action:()=>toggle.click()},
1988
+ {label:'Toggle paper mode',action:()=>document.body.classList.toggle('paper-mode')},
1989
+ {label:'Search research',action:()=>openModal(searchPanel)},
1990
+ {label:'Print / save PDF',action:()=>window.print()},
1991
+ {label:'Download RSS snapshot',action:downloadRSS}
1992
+ ];
1993
+ searchDocs.forEach(d=>commands.push({label:'Section: '+d.title,action:()=>location.hash=d.id}));
1994
+ const palInput=document.getElementById('paletteInput'), palResults=document.getElementById('paletteResults');
1995
+ function renderPalette(){
1996
+ const q=(palInput.value||'').toLowerCase(); palResults.innerHTML='';
1997
+ commands.filter(c=>c.label.toLowerCase().includes(q)).slice(0,10).forEach((c,i)=>{
1998
+ const el=document.createElement('div');el.className='palette-item';el.textContent=c.label;el.onclick=()=>{closeModals();c.action()};palResults.appendChild(el)
1999
+ });
2000
+ }
2001
+ palInput.addEventListener('input',renderPalette);
2002
+ document.getElementById('openPalette')?.addEventListener('click',()=>{openModal(palette);renderPalette()});
2003
+ document.addEventListener('keydown',e=>{if((e.ctrlKey||e.metaKey)&&e.key.toLowerCase()==='k'){e.preventDefault();openModal(palette);renderPalette()}});
2004
+
2005
+ const siteSearchInput=document.getElementById('siteSearchInput'), siteSearchResults=document.getElementById('siteSearchResults');
2006
+ function renderSearch(){
2007
+ const q=siteSearchInput.value.trim().toLowerCase();siteSearchResults.innerHTML=''; if(q.length<2)return;
2008
+ searchDocs.map(d=>({...d,score:(d.title.toLowerCase().includes(q)?4:0)+(d.text.toLowerCase().match(new RegExp(q.replace(/[.*+?^${}()|[\]\\]/g,'\\$&'),'g'))||[]).length}))
2009
+ .filter(x=>x.score>0).sort((a,b)=>b.score-a.score).slice(0,12).forEach(d=>{
2010
+ const el=document.createElement('div');el.className='search-result';el.innerHTML=`<b>${d.title}</b><div class="micro">${d.text.slice(0,150).replace(/\s+/g,' ')}…</div>`;
2011
+ el.onclick=()=>{closeModals();setView('blog',false);location.hash=d.id};siteSearchResults.appendChild(el)
2012
+ });
2013
+ }
2014
+ siteSearchInput.addEventListener('input',renderSearch);
2015
+ document.getElementById('searchBtn')?.addEventListener('click',()=>openModal(searchPanel));
2016
+ document.getElementById('changelogBtn')?.addEventListener('click',()=>openModal(changelogPanel));
2017
+
2018
+ // ---------- Paper mode + website self-ablation ----------
2019
+ document.getElementById('paperModeBtn')?.addEventListener('click',()=>document.body.classList.toggle('paper-mode'));
2020
+ let ablationStage=0;
2021
+ const siteAblations=[
2022
+ {cls:'no-glass',msg:'ΔGlass: backdrop blur removed.'},
2023
+ {cls:'no-animations',msg:'ΔAnimations: motion removed.'},
2024
+ {cls:'no-radius',msg:'ΔRadius: rounded corners removed.'},
2025
+ {cls:'no-css',msg:'ΔCSS: website has entered the Times New Roman dimension.'}
2026
+ ];
2027
+ document.getElementById('ablateSiteBtn')?.addEventListener('click',()=>{
2028
+ if(ablationStage>=siteAblations.length){
2029
+ siteAblations.forEach(x=>document.body.classList.remove(x.cls));ablationStage=0;showToast('Website restored. CSS pathway recovered.');return;
2030
+ }
2031
+ const a=siteAblations[ablationStage++];document.body.classList.add(a.cls);showToast(a.msg+(ablationStage===4?' The website is extraordinarily dependent on its CSS pathway.':''));
2032
+ });
2033
+
2034
+ // ---------- Assistant research mode / export / share ----------
2035
+ let researchMode=false;
2036
+ const researchBtn=document.getElementById('researchModeBtn');
2037
+ researchBtn?.addEventListener('click',()=>{researchMode=!researchMode;researchBtn.textContent='Research mode: '+(researchMode?'ON':'OFF')});
2038
+ const oldCompose=composeAnswer;
2039
+ composeAnswer=function(question){
2040
+ const a=oldCompose(question);
2041
+ if(!researchMode)return a;
2042
+ return `OBSERVATION\n${a}\n\nINTERPRETATION\nThis answer is assembled from the supplied Orion research notes and their repeated qualitative patterns.\n\nLIMITATION\nInference-time ablations establish checkpoint dependence; matched retrained controls are still needed for stronger architecture-level claims.`;
2043
+ };
2044
+ document.getElementById('exportChatBtn')?.addEventListener('click',()=>{
2045
+ const rows=[...document.querySelectorAll('#chatWindow .msg')].map(m=>(m.classList.contains('user')?'## You':'## Prism')+'\n'+m.innerText.trim()).join('\n\n');
2046
+ const blob=new Blob(['# Orion Assistant Conversation\n\n'+rows],{type:'text/markdown'});const a=document.createElement('a');a.href=URL.createObjectURL(blob);a.download='orion-chat.md';a.click();URL.revokeObjectURL(a.href);
2047
+ });
2048
+ document.getElementById('shareChatBtn')?.addEventListener('click',()=>{history.replaceState(null,'','#assistant');navigator.clipboard?.writeText(location.href);showToast('Assistant link copied')});
2049
+
2050
+ // slash commands
2051
+ const originalAsk=ask;
2052
+ ask=function(text){
2053
+ const t=text.trim();
2054
+ if(t.startsWith('/')){
2055
+ const map={'/architecture':'What is the current Orion architecture?','/ablations':'What have the ablations shown?','/training':'How is the current 2B run training?','/t22':'What is planned for T2.2?'};
2056
+ if(map[t.toLowerCase()]) return originalAsk(map[t.toLowerCase()]);
2057
+ }
2058
+ if(/are you conscious/i.test(t)){addMessage(t,'user');setTimeout(()=>addMessage('bro I am currently JavaScript pattern matching 😭','bot'),180);chatInput.value='';return}
2059
+ return originalAsk(text);
2060
+ };
2061
+
2062
+ // ---------- RSS snapshot ----------
2063
+ function downloadRSS(){
2064
+ const items=searchDocs.slice(0,8).map(d=>`<item><title>${escapeXML(d.title)}</title><description>${escapeXML(d.text.slice(0,280))}</description><guid>#${d.id}</guid></item>`).join('');
2065
+ const xml=`<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Orion / Project Prism Research Notes</title><description>Transformer 2 research updates</description><link>${escapeXML(location.href)}</link>${items}</channel></rss>`;
2066
+ const blob=new Blob([xml],{type:'application/rss+xml'});const a=document.createElement('a');a.href=URL.createObjectURL(blob);a.download='orion-research.xml';a.click();URL.revokeObjectURL(a.href);
2067
+ }
2068
+ function escapeXML(x){return String(x).replace(/[<>&'"]/g,c=>({'<':'&lt;','>':'&gt;','&':'&amp;',"'":'&apos;','"':'&quot;'}[c]))}
2069
+
2070
+ // ---------- Toast ----------
2071
+ let toastTimer;
2072
+ function showToast(msg){const t=document.getElementById('toast');t.textContent=msg;t.classList.add('show');clearTimeout(toastTimer);toastTimer=setTimeout(()=>t.classList.remove('show'),2200)}
2073
+
2074
+ // ---------- Keyboard section navigation ----------
2075
+ document.addEventListener('keydown',e=>{
2076
+ if(['INPUT','TEXTAREA','SELECT'].includes(document.activeElement.tagName))return;
2077
+ if(e.key==='j'||e.key==='k'){
2078
+ const secs=[...document.querySelectorAll('main section')]; const y=scrollY+160;
2079
+ let idx=secs.findIndex(x=>x.offsetTop>y); if(idx<0)idx=secs.length;
2080
+ if(e.key==='k') idx=Math.max(0,idx-2); else idx=Math.min(secs.length-1,idx);
2081
+ secs[idx]?.scrollIntoView({behavior:'smooth'});
2082
+ }
2083
+ });
2084
+
2085
  })();
2086
  </script>
2087
+
2088
+ <div class="modal-backdrop" id="modalBackdrop" hidden></div>
2089
+
2090
+ <div class="palette modal-panel" id="commandPalette" hidden role="dialog" aria-modal="true" aria-label="Command palette">
2091
+ <input id="paletteInput" placeholder="Search sections or run a command…" autocomplete="off">
2092
+ <div id="paletteResults"></div>
2093
+ <div class="palette-help">↑↓ navigate · Enter open · Esc close · Ctrl/⌘ K toggle</div>
2094
+ </div>
2095
+
2096
+ <div class="modal-panel search-panel" id="searchPanel" hidden role="dialog" aria-modal="true">
2097
+ <div class="modal-title">Search research <button data-close-modal>×</button></div>
2098
+ <input id="siteSearchInput" placeholder="Search the blog…" autocomplete="off">
2099
+ <div id="siteSearchResults"></div>
2100
+ </div>
2101
+
2102
+ <div class="modal-panel changelog-panel" id="changelogPanel" hidden role="dialog" aria-modal="true">
2103
+ <div class="modal-title">Changelog <button data-close-modal>×</button></div>
2104
+ <div class="change-item"><b>v4 · Interactive Lab</b><span>Checkpoint time machine, ablation playground, family tree, token walkthrough, procedure visualizer, search, command palette, paper mode, self-ablation.</span></div>
2105
+ <div class="change-item"><b>v3 · Assistant view</b><span>Separate AI tab, responsive mobile layout, persistent dark mode.</span></div>
2106
+ <div class="change-item"><b>v2 · Pattern Matcher</b><span>Local architecture Q&A with evidence-aware retrieval.</span></div>
2107
+ <div class="change-item"><b>v1 · Research Blog</b><span>Original Orion/T2 research notes site.</span></div>
2108
+ </div>
2109
+
2110
+ <div class="toast" id="toast" role="status" aria-live="polite"></div>
2111
+
2112
  </body>
2113
  </html>