betterwithage commited on
Commit
b9c91d7
·
verified ·
1 Parent(s): 980edc2

chore(sync): mirror front-door files to Space (hf-sync)

Browse files

Automated front-door sync from szl-holdings/a11oy main via hf-sync.
Added/updated: cathedral.html, console/docs.html, console/index.html, console/pricing.html, console/throne-room.html, console/throne-room.js, pages/api-keys.html, pages/audit.html, pages/ayni.html, pages/brain-dual.html, pages/brain-jack.html, pages/brain.html, pages/chaski.html, pages/codex-kernel.html, pages/company.html, pages/compliance.html, pages/console.html, pages/counter-uas.html, pages/cued-engagement.html, pages/docs.html, pages/evidence.html, pages/gap-report.html, pages/hatun-mcp.html, pages/hub.html, pages/integrations.html, pages/landing.html, pages/mesh.html, pages/observability.html, pages/operator_organ.html, pages/pricing.html, pages/run-all.html, pages/sdk.html, pages/security.html, pages/status.html, pages/substrate.html, pages/superpowers.html, pages/throne-room.html, pages/throne-room.js, pages/uds.html, pages/upgrades.html, pages/wallpa.html, pages/warhacker.html, pages/wasi-rikuq.html, pages/wires.html, static/a11oy_cathedral.js
Deleted (gone from GitHub main): (none)

Keeps the served front-door (pages/*.html, console/*.html) identical
to GitHub main so an HF factory rebuild never drops a GitHub edit or
keeps serving a page that was deleted on GitHub.

Files changed (1) hide show
  1. pages/console.html +219 -104
pages/console.html CHANGED
@@ -10978,110 +10978,6 @@ window.warboard_init=warboard_init; window.warboard_all=warboard_all;
10978
  /* end anatomy-map-tab-patch */
10979
  </script>
10980
 
10981
-
10982
- <script>
10983
- /* conjecture-factory-tab-patch :: SZL Conjecture Factory — honest live disclosure board ::
10984
- Additive, self-contained, NS-aware. Renders factory-generated OPEN conjectures from the
10985
- real disclosure-ledger (szl-lake khipu, kind=conjecture-disclosure-anchor) via
10986
- /api/{ns}/v1/conjecture-factory. Honesty doctrine v11 by construction: a conjecture is
10987
- NEVER called a theorem; every item stays OPEN until independently verified; novelty is an
10988
- advisory screen; a signature attests timestamp + content, not truth; Conjecture 1
10989
- (unconditional Λ uniqueness) is and remains OPEN. No fabricated live pills. */
10990
- (function(){
10991
- var NS=(window.__rd_ns||(location.pathname.indexOf('killinchu')>=0?'killinchu':'a11oy'));
10992
- var TEAL='#3ddc97', GOLD='#c9b787', DIM='#8a8f98', WARN='#e0a82e', RED='#b06a5a', BLUE='#5aa0d0';
10993
- function esc(s){ return String(s==null?'':s).replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;'); }
10994
- function ago(iso){ if(!iso) return ''; try{ var t=new Date(iso).getTime(); if(!t) return ''; var s=Math.max(0,(Date.now()-t)/1000); if(s<60) return Math.round(s)+'s ago'; if(s<3600) return Math.round(s/60)+'m ago'; if(s<86400) return Math.round(s/3600)+'h ago'; return Math.round(s/86400)+'d ago'; }catch(e){ return ''; } }
10995
- function pill(txt,col,title){ return '<span title="'+esc(title||'')+'" style="display:inline-block;padding:2px 9px;border-radius:999px;font-family:var(--mono,monospace);font-size:10px;letter-spacing:.06em;font-weight:700;color:'+col+';border:1px solid '+col+';background:'+col+'1a;">'+esc(txt)+'</span>'; }
10996
- function link(url,label,col){ if(!url) return ''; return '<a href="'+esc(url)+'" target="_blank" rel="noopener" style="color:'+(col||TEAL)+'">'+esc(label||url)+'</a>'; }
10997
- /* novelty is advisory only — never a claim of originality */
10998
- function novCol(n){ n=String(n||'').toLowerCase(); if(n==='novel-candidate') return TEAL; if(n==='known-restatement'||n==='duplicate') return WARN; return DIM; }
10999
- /* difficulty/grade come from a bounded solver run; OPEN = neither solved nor refuted in budget */
11000
- function diffCol(d){ d=String(d||'').toLowerCase(); if(d==='refuted') return RED; if(d==='verified-finite') return TEAL; if(d==='open-resistant'||d==='hard') return GOLD; return DIM; }
11001
- function gradeCol(g){ g=String(g||'').toUpperCase(); if(g==='REFUTED') return RED; if(g==='VERIFIED-FINITE') return TEAL; return GOLD; }
11002
- function stageCol(s){ s=String(s||'').toLowerCase(); if(s==='solution') return TEAL; if(s==='statement') return BLUE; return DIM; }
11003
- function statusBadge(st){ st=String(st||'').toLowerCase(); if(st==='live') return pill('\u25cf live',TEAL,'fetched live from the disclosure ledger'); if(st==='cached') return pill('\u25cf cached',BLUE,'served from last good cache'); return pill('\u25cf unreachable',RED,'ledger unreachable'); }
11004
-
11005
- function card(c){
11006
- var rec=c.receipt||{}, hon=c.honesty||{};
11007
- var grade=String(c.grade||'OPEN').toUpperCase();
11008
- var openLbl = c.is_open ? 'OPEN' : grade;
11009
- var h='<div style="border:1px solid #232830;border-radius:9px;padding:12px 14px;margin-bottom:10px;background:#0e1217">';
11010
- h+='<div style="display:flex;align-items:center;gap:8px;flex-wrap:wrap">'
11011
- +'<span style="font-weight:700;color:#e6eaee;font-size:14px">'+esc(c.title||'(untitled conjecture)')+'</span>'
11012
- +pill(openLbl, c.is_open?RED:gradeCol(grade), c.is_open?'a genuinely OPEN conjecture \u2014 NOT a theorem; stays OPEN until independently verified':'bounded-solver grade')
11013
- +'</div>';
11014
- h+='<div style="display:flex;gap:6px;flex-wrap:wrap;margin:8px 0 2px">';
11015
- if(c.novelty) h+=pill('novelty: '+c.novelty,novCol(c.novelty),'advisory novelty screen \u2014 not a proof of originality');
11016
- if(c.difficulty) h+=' '+pill('difficulty: '+c.difficulty,diffCol(c.difficulty),'from a bounded solver run');
11017
- h+=' '+pill('grade: '+grade,gradeCol(grade),'OPEN = neither solved nor refuted within the solver budget');
11018
- if(c.release_stage) h+=' '+pill('stage: '+c.release_stage,stageCol(c.release_stage),'release stage (teaser / statement / solution)');
11019
- h+='</div>';
11020
- if(c.statement) h+='<div style="font-size:12.5px;color:#b6bcc4;margin-top:8px;line-height:1.55"><span style="color:'+DIM+';font-family:var(--mono,monospace);font-size:10px;letter-spacing:.08em">STATEMENT</span><br>'+esc(c.statement)+'</div>';
11021
- /* disclosure-ledger receipt — link/badge; signature attests timestamp+content, not truth */
11022
- var rlinks=[];
11023
- if(rec.rekor_log_index!=null) rlinks.push(link('https://search.sigstore.dev/?logIndex='+encodeURIComponent(rec.rekor_log_index),'Rekor #'+rec.rekor_log_index+' \u2197',TEAL));
11024
- if(rec.source_run_url) rlinks.push(link(rec.source_run_url,(rec.source_run_workflow||'source run')+' \u2197',DIM));
11025
- var rid=rec.receipt_id||c.id||'';
11026
- var recline='';
11027
- if(rid) recline+=pill('receipt '+String(rid).slice(0,12),DIM,'disclosure-ledger receipt id');
11028
- if(rec.signing_mode) recline+=' '+pill(rec.signing_mode,DIM,'signing mode \u2014 attests timestamp + content, not truth');
11029
- if(rec.chain_index!=null) recline+=' '+pill('chain #'+rec.chain_index,DIM,'append-only chain index');
11030
- if(recline||rlinks.length){
11031
- h+='<div style="margin-top:9px;padding-top:8px;border-top:1px solid #1c2128">'
11032
- +'<div style="font-family:var(--mono,monospace);font-size:10px;color:'+DIM+';letter-spacing:.08em;margin-bottom:4px">DISCLOSURE-LEDGER RECEIPT</div>'
11033
- +'<div style="display:flex;gap:6px;flex-wrap:wrap;align-items:center">'+recline
11034
- +(rlinks.length?('<span style="font-size:12px;margin-left:4px">'+rlinks.join(' \u00b7 ')+'</span>'):'')
11035
- +'</div>'
11036
- +'<div style="font-family:var(--mono,monospace);font-size:10px;color:'+DIM+';margin-top:5px">A signature attests <b>timestamp + content</b> of the disclosure \u2014 it is not evidence the conjecture is true.</div>'
11037
- +'</div>';
11038
- }
11039
- h+='</div>';
11040
- return h;
11041
- }
11042
-
11043
- window.conjecturefactory_render=async function(host){
11044
- host.innerHTML='<div class="card"><div class="dim">loading factory conjectures from the disclosure ledger\u2026</div></div>';
11045
- try{
11046
- var r=await fetch('/api/'+NS+'/v1/conjecture-factory',{cache:'no-store'});
11047
- var d=await r.json();
11048
- var items=d.conjectures||[];
11049
- var h='';
11050
- h+='<div style="border:1px solid #2a2f37;border-radius:10px;padding:14px 16px;margin-bottom:14px;background:#11151a">'
11051
- +'<div style="font-family:var(--mono,monospace);font-size:11px;color:'+DIM+';letter-spacing:.08em">CONJECTURE FACTORY \u00b7 HONEST OUTPUT</div>'
11052
- +'<div style="display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-top:7px">'
11053
- +statusBadge(d.status)
11054
- +' '+pill((d.count||0)+' OPEN conjecture'+((d.count===1)?'':'s'),GOLD,'generated, not proven')
11055
- +' '+pill('doctrine '+(d.doctrine||'v11'),DIM,'honesty doctrine')
11056
- +'</div>'
11057
- +'<div style="font-size:12.5px;color:#cfd4da;margin-top:9px;line-height:1.5">'+esc(d.honest||'')+'</div>'
11058
- +'<div style="font-family:var(--mono,monospace);font-size:10px;color:'+DIM+';margin-top:7px">source: '+(d.source?link(d.source,'disclosure ledger \u2197',TEAL):'(unreachable)')+' \u00b7 checked '+esc(ago(d.checked_at)||'just now')+'</div>'
11059
- +'</div>';
11060
- items.forEach(function(c){ h+=card(c); });
11061
- if(!items.length){ h+='<div class="card"><div class="dim">No factory conjectures on the ledger yet \u2014 this board shows only signed, disclosed OPEN conjectures.</div></div>'; }
11062
- host.innerHTML=h;
11063
- }catch(e){ host.innerHTML='<div class="card"><div class="dim">conjecture factory unavailable: '+esc((e&&e.message)||e)+'</div></div>'; }
11064
- };
11065
- function reg(){
11066
- var V=window.VIEWS; if(!V){ return setTimeout(reg,80); }
11067
- V.conjecturefactory={ title:'Conjecture Factory', badge:'OPEN \u00b7 generated, not proven \u00b7 signed disclosure',
11068
- sub:'Factory-generated <b>OPEN conjectures</b>, read live from the real disclosure ledger (szl-lake khipu, <span class="mono">kind=conjecture-disclosure-anchor</span>). Each item carries an advisory <b>novelty</b> screen, a bounded-solver <b>difficulty grade</b> (OPEN = neither solved nor refuted in budget), a <b>release stage</b>, the conjecture <b>statement</b>, and a link/badge to its signed disclosure-ledger receipt. A conjecture is <b>never</b> a theorem; it stays OPEN until a solution is independently verified; a signature attests timestamp + content, not truth. \u039b unconditional uniqueness is <b>Conjecture 1</b> \u2014 OPEN, never proved.',
11069
- render:async function(c){ window.conjecturefactory_render(c); } };
11070
- }
11071
- reg();
11072
- function injectNav(){
11073
- var anchor=document.querySelector('.nav-item[data-view="bounties"]')||document.querySelector('.nav-item[data-view="anatomymap"]')||document.querySelector('.nav-item[data-view="readiness"]')||document.querySelector('.nav-item');
11074
- if(!anchor){ return setTimeout(injectNav,250); }
11075
- if(document.querySelector('.nav-item[data-view="conjecturefactory"]')){ return; }
11076
- var n=document.createElement('div'); n.className='nav-item'; n.setAttribute('data-view','conjecturefactory'); n.setAttribute('onclick',"go('conjecturefactory')");
11077
- n.innerHTML='<span class="ico">\u2697</span>Conjecture Factory';
11078
- anchor.parentNode.insertBefore(n, anchor.nextSibling);
11079
- }
11080
- if(document.readyState==='loading'){ document.addEventListener('DOMContentLoaded',injectNav); } else { injectNav(); }
11081
- })();
11082
- /* end conjecture-factory-tab-patch */
11083
- </script>
11084
-
11085
  <script>
11086
  (function(){
11087
  "use strict";
@@ -11902,5 +11798,224 @@ window.warboard_init=warboard_init; window.warboard_all=warboard_all;
11902
  })();
11903
  </script>
11904
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11905
  </body>
11906
  </html>
 
10978
  /* end anatomy-map-tab-patch */
10979
  </script>
10980
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10981
  <script>
10982
  (function(){
10983
  "use strict";
 
11798
  })();
11799
  </script>
11800
 
11801
+ <!-- ===================================================================== -->
11802
+ <!-- SZL METABOLIC SCALING (living-3D) — Kleiber/WBE/MTE + quantum-metabolism -->
11803
+ <!-- bridge, unified into the PROPOSED SZL-Phi engineering gate. Each visual -->
11804
+ <!-- is wired to the REAL /api/a11oy/v1/scaling/* endpoints (szl_scaling.py, -->
11805
+ <!-- byte-identical a11oy<->killinchu). EXPERIMENTAL-tier: adds NOTHING to -->
11806
+ <!-- the locked 8; Lambda stays Conjecture 1; SZL-Phi is PROPOSED, NOT the -->
11807
+ <!-- formal Lambda; trust never 100%. 0 runtime CDN (vendored echarts/three). -->
11808
+ <!-- Every borrowed formula CITED to its real author; SZL claims none as its -->
11809
+ <!-- own discovery. Null-safe (E()/ex()/setHTML); prefers-reduced-motion ok. -->
11810
+ <!-- ===================================================================== -->
11811
+ <script>
11812
+ (function(){
11813
+ function whenReady(fn){ if(window.VIEWS){fn();} else { var n=0; var iv=setInterval(function(){ if(window.VIEWS||n++>200){clearInterval(iv);fn();} },40); } }
11814
+ var SAPI=(window.location.origin)+'/api/a11oy/v1';
11815
+ var TEAL='#5fb3a3', GOLD='#c9b787', RISK='#b06a5a', WARN='#c9a05f', INFO='#6FA8DC', VIOLET='#B79BD6', DIM='#8a8f98', LIVE='#5a8a6e';
11816
+ var RM = (window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches);
11817
+ function esc(s){ return String(s==null?'':s).replace(/[&<>]/g,function(c){return {'&':'&amp;','<':'&lt;','>':'&gt;'}[c];}); }
11818
+ function E(id){ var e=document.getElementById(id); if(e) return e; if(!E._d) E._d=document.createElement('div'); return E._d; }
11819
+ function ex(id){ return document.getElementById(id); }
11820
+ function setHTML(id,html){ var e=document.getElementById(id); if(e) e.innerHTML=html; }
11821
+ function fmt(n,d){ if(n==null||isNaN(n)) return '\u2014'; return Number(n).toFixed(d==null?1:d); }
11822
+ function dot(){ return (window.liveDot?window.liveDot():'<span style="display:inline-block;width:7px;height:7px;border-radius:50%;background:'+TEAL+';box-shadow:0 0 8px '+TEAL+';margin-right:6px;vertical-align:middle"></span>'); }
11823
+ function pill(t,c){ return '<span style="display:inline-block;padding:2px 9px;border-radius:999px;font-family:var(--mono,monospace);font-size:10px;letter-spacing:.06em;font-weight:700;color:'+c+';border:1px solid '+c+';background:'+c+'1a">'+esc(t)+'</span>'; }
11824
+ async function J(p){ var r=await fetch(p); if(!r.ok) throw new Error('HTTP '+r.status); var ct=r.headers.get('content-type')||''; if(ct.indexOf('text/html')>=0) throw new Error('route missing'); return r.json(); }
11825
+ function poll(gateId, fn){ try{fn();}catch(e){} var t=setInterval(function(){ if(!ex(gateId)){return;} try{fn();}catch(e){} var d=ex('sca-ts-'+gateId); if(d) d.textContent='auto \u00b7 '+new Date().toLocaleTimeString(); }, 12000+Math.floor(Math.random()*5000)); window._tailTimers=window._tailTimers||[]; window._tailTimers.push(t); window._liveTimers=window._tailTimers; return t; }
11826
+ function autoPill(g){ return '<span class="badge b-live" style="font-size:9.5px">'+dot()+'AUTO-RECORDING <span id="sca-ts-'+esc(g)+'" class="mono dim" style="margin-left:5px">live</span></span>'; }
11827
+ function kpi(k,id,d,col){ return '<div class="kpi"><div class="k">'+esc(k)+'</div><div class="v" id="'+id+'" style="color:'+(col||TEAL)+'">\u2014</div><div class="d">'+esc(d||'')+'</div></div>'; }
11828
+ function cite(href,label){ return '<a href="'+esc(href)+'" target="_blank" rel="noopener" class="mono" style="color:'+INFO+';text-decoration:none;font-size:11px">'+esc(label)+' \u2197</a>'; }
11829
+ function honesty(txt){ return '<div class="honesty" style="margin-top:.8rem"><b>Honest by design.</b> '+txt+' EXPERIMENTAL-tier SZL construct \u2014 adds <b>nothing</b> to the 8 locked formulas; \u039b = <b>Conjecture 1</b> (advisory, not a theorem); SZL-\u03a6 is a <b>PROPOSED engineering gate, NOT the formal \u039b</b>; trust is never 100%. 0 runtime CDN; vendored libs only. Every borrowed law is cited to its real author; SZL claims none as its own discovery.</div>'; }
11830
+
11831
+ // sampled mass ladder (kg): mouse -> human -> elephant, log-spaced + named anchors
11832
+ var MASSES=[0.02,0.05,0.2,1,5,20,70,300,1000,3000,6000];
11833
+ function massLabel(M){ if(M<=0.03) return 'mouse'; if(M>=60&&M<=80) return 'human'; if(M>=3000) return 'elephant'; return null; }
11834
+
11835
+ // ───────────── VISUAL 1 — KLEIBER LOG-LOG CURVE ─────────────
11836
+ function renderKleiber(c){
11837
+ setHTML(c.id||'', '');
11838
+ c.innerHTML='<div class="card"><div class="card-h"><span class="card-t">'+dot()+'Kleiber\u2019s law \u2014 metabolic rate vs body mass (live)</span><span class="card-ep">'+autoPill('kle-gate')+'</span></div>'
11839
+ +'<div class="kpis" id="kle-gate">'+kpi('Slope (log-log)','kle-slope','B \u221d M^\u00be',TEAL)+kpi('Human 70 kg','kle-h','kcal/day',GOLD)+kpi('Mouse 20 g','kle-m','kcal/day',INFO)+kpi('Elephant 6 t','kle-e','kcal/day',VIOLET)+'</div>'
11840
+ +'<div id="kle-chart" style="height:clamp(300px,46vh,440px);margin-top:.6rem"></div>'
11841
+ +'<div class="mono dim" style="font-size:11px;margin-top:.4rem">Each point is a live <code>/scaling/kleiber?M=</code> call. The 3/4 slope on log-log axes is the WBE fractal-network prediction \u2014 verified by recomputation, not asserted.</div></div>'
11842
+ +'<div class="card" style="padding:.7rem .9rem"><span class="mono dim" style="font-size:11px">Formula author: </span>'+cite('https://pdodds.w3.uvm.edu/files/papers/others/1932/kleiber1932a.pdf','Kleiber 1932, Hilgardia')+' &nbsp; '+cite('https://www.science.org/doi/10.1126/science.276.5309.122','West-Brown-Enquist 1997, Science 276:122 \u2014 DOI:10.1126/science.276.5309.122')+'</div>'
11843
+ +'<details class="raw"><summary>raw /scaling/kleiber samples</summary><pre class="out" id="kle-raw">\u2014</pre></details>'
11844
+ +honesty('B = B\u2080\u00b7M^\u00be (B\u2080\u224870 kcal/day, mammals) is <b>Kleiber 1932</b>; the 3/4 exponent is explained by <b>West, Brown &amp; Enquist 1997</b> (fractal distribution networks). The curve redraws exactly the values the live endpoint returns.');
11845
+ poll('kle-gate', async function(){
11846
+ var pts=[]; var raw=[];
11847
+ for(var i=0;i<MASSES.length;i++){ var d=await J(SAPI+'/scaling/kleiber?M='+MASSES[i]); pts.push([d.M_kg, d.B_kcal_day]); raw.push(d); }
11848
+ if(ex('kle-raw')) ex('kle-raw').textContent=JSON.stringify(raw,null,2);
11849
+ // empirical slope from first/last log-log
11850
+ var x0=Math.log10(pts[0][0]), x1=Math.log10(pts[pts.length-1][0]);
11851
+ var y0=Math.log10(pts[0][1]), y1=Math.log10(pts[pts.length-1][1]);
11852
+ var slope=(y1-y0)/(x1-x0);
11853
+ E('kle-slope').textContent=fmt(slope,3); E('kle-slope').style.color=(Math.abs(slope-0.75)<0.02)?LIVE:TEAL;
11854
+ function at(M){ for(var i=0;i<raw.length;i++){ if(Math.abs(raw[i].M_kg-M)<1e-9) return raw[i].B_kcal_day; } return null; }
11855
+ E('kle-h').textContent=fmt(at(70),0); E('kle-m').textContent=fmt(at(0.02),2); E('kle-e').textContent=fmt(at(6000),0);
11856
+ if(window.mkEchart) window.mkEchart('kle-chart',{
11857
+ backgroundColor:'transparent',tooltip:{trigger:'item',formatter:function(p){ return 'M = '+p.value[0]+' kg<br/>B = '+fmt(p.value[1],1)+' kcal/day'; }},
11858
+ grid:{left:64,right:24,top:24,bottom:48},
11859
+ xAxis:{type:'log',name:'body mass M (kg)',nameLocation:'middle',nameGap:30,nameTextStyle:{color:'#A8B6CC'},axisLabel:{color:'#A8B6CC'},splitLine:{lineStyle:{color:'#1c2230'}}},
11860
+ yAxis:{type:'log',name:'metabolic rate B (kcal/day)',nameTextStyle:{color:'#A8B6CC'},axisLabel:{color:'#A8B6CC'},splitLine:{lineStyle:{color:'#1c2230'}}},
11861
+ series:[{type:'line',smooth:false,symbolSize:9,data:pts,lineStyle:{color:TEAL,width:2.4},itemStyle:{color:GOLD},
11862
+ markPoint:{symbolSize:1,label:{show:true,formatter:function(p){return massLabel(p.value[0])||'';},color:GOLD,fontSize:11},
11863
+ data:pts.filter(function(p){return massLabel(p[0]);}).map(function(p){return {coord:p};})}}]});
11864
+ });
11865
+ }
11866
+
11867
+ // ───────────── VISUAL 2 (HERO) — LIFETIME-HEARTBEATS INVARIANT ─────────────
11868
+ function renderHeart(c){
11869
+ c.innerHTML='<div class="hero" style="border:1px solid '+GOLD+'55;border-radius:14px;padding:1rem 1.1rem;background:radial-gradient(ellipse at top left,'+GOLD+'10,transparent 70%);margin-bottom:.8rem">'
11870
+ +'<div class="card-t" style="font-size:15px">'+dot()+'The invariant no one can dream of \u2014 <b>lifetime heartbeats \u2248 constant</b></div>'
11871
+ +'<div class="mono dim" style="font-size:12px;margin-top:.3rem">A mouse\u2019s heart races; an elephant\u2019s crawls. Yet both spend roughly the <b>same total number of beats</b> in a lifetime (\u2248 1\u20131.5 billion), because heart-rate \u221d M^(\u22121\u00bc) and lifespan \u221d M^(+\u00bc) cancel. Every number below is a live <code>/scaling/heart?M=</code> call.</div></div>'
11872
+ +'<div class="card"><div class="card-h"><span class="card-t">Lifetime beats across mouse \u2192 human \u2192 elephant (live)</span><span class="card-ep">'+autoPill('hrt-gate')+'</span></div>'
11873
+ +'<div class="kpis" id="hrt-gate">'+kpi('Mouse 20 g','hrt-m','\u00d710\u2079 beats',INFO)+kpi('Human 70 kg','hrt-h','\u00d710\u2079 beats',GOLD)+kpi('Elephant 6 t','hrt-e','\u00d710\u2079 beats',VIOLET)+kpi('mouse \u00f7 human','hrt-ratio','\u2248 1 (invariant)',TEAL)+'</div>'
11874
+ +'<div id="hrt-chart" style="height:clamp(300px,44vh,420px);margin-top:.6rem"></div>'
11875
+ +'<div class="mono dim" style="font-size:11px;margin-top:.4rem">Bars = lifetime beats (billions). They stay flat across 5 orders of magnitude in mass \u2014 the famous near-invariant.</div></div>'
11876
+ +'<div class="card" style="padding:.7rem .9rem"><span class="mono dim" style="font-size:11px">Formula authors: </span>'+cite('https://www.science.org/doi/10.1126/science.276.5309.122','West-Brown-Enquist 1997 (M^\u00bc allometry)')+' &nbsp; '+cite('https://doi.org/10.1890/03-9000','Brown et al. 2004 MTE \u2014 DOI:10.1890/03-9000')+'</div>'
11877
+ +'<details class="raw"><summary>raw /scaling/heart samples</summary><pre class="out" id="hrt-raw">\u2014</pre></details>'
11878
+ +honesty('Heart-rate f = 241\u00b7M^(\u2212\u00bc) bpm and lifespan L = 11.8\u00b7M^(+\u00bc) yr are the <b>WBE/MTE</b> allometries; their product (lifetime beats) is near-mass-invariant by construction. Values are recomputed live, not asserted.');
11879
+ poll('hrt-gate', async function(){
11880
+ var rows=[]; var raw=[];
11881
+ for(var i=0;i<MASSES.length;i++){ var d=await J(SAPI+'/scaling/heart?M='+MASSES[i]); rows.push(d); raw.push(d); }
11882
+ if(ex('hrt-raw')) ex('hrt-raw').textContent=JSON.stringify(raw,null,2);
11883
+ function at(M){ for(var i=0;i<rows.length;i++){ if(Math.abs(rows[i].M_kg-M)<1e-9) return rows[i].lifetime_beats_billion; } return null; }
11884
+ var bm=at(0.02), bh=at(70), be=at(6000);
11885
+ E('hrt-m').textContent=fmt(bm,3); E('hrt-h').textContent=fmt(bh,3); E('hrt-e').textContent=fmt(be,3);
11886
+ E('hrt-ratio').textContent=(bh? fmt(bm/bh,2):'\u2014'); E('hrt-ratio').style.color=LIVE;
11887
+ if(window.mkEchart) window.mkEchart('hrt-chart',{
11888
+ backgroundColor:'transparent',tooltip:{trigger:'axis',formatter:function(a){ var p=a[0]; var r=rows[p.dataIndex]; return 'M = '+r.M_kg+' kg<br/>'+fmt(r.bpm,1)+' bpm \u00b7 '+fmt(r.lifespan_yr,1)+' yr<br/><b>'+fmt(r.lifetime_beats_billion,3)+' \u00d710\u2079 beats</b>'; }},
11889
+ grid:{left:60,right:24,top:24,bottom:60},
11890
+ xAxis:{type:'category',data:rows.map(function(r){var l=massLabel(r.M_kg); return l?(l+' ('+r.M_kg+'kg)'):(r.M_kg+'kg');}),axisLabel:{color:'#A8B6CC',rotate:38,fontSize:10}},
11891
+ yAxis:{type:'value',name:'lifetime beats (\u00d710\u2079)',nameTextStyle:{color:'#A8B6CC'},axisLabel:{color:'#A8B6CC'},splitLine:{lineStyle:{color:'#1c2230'}}},
11892
+ series:[{type:'bar',barWidth:'52%',data:rows.map(function(r){ var l=massLabel(r.M_kg); return {value:Number((r.lifetime_beats_billion||0).toFixed(3)),itemStyle:{color:l?GOLD:TEAL}}; }),label:{show:true,position:'top',color:'#cfcfcf',fontSize:10,formatter:'{c}'}}]});
11893
+ });
11894
+ }
11895
+
11896
+ // ───────────── VISUAL 3 — SZL-PHI UNIFIED (PMF activation lift) ─────────────
11897
+ function renderUnified(c){
11898
+ c.innerHTML='<div class="card"><div class="card-h"><span class="card-t">'+dot()+'SZL-\u03a6 unified scaling \u2014 PMF activation lift (live)</span><span class="card-ep">'+autoPill('phi-gate')+'</span></div>'
11899
+ +'<div style="margin:.2rem 0 .7rem;padding:.5rem .7rem;border:1px solid '+WARN+';border-left:3px solid '+WARN+';border-radius:7px;background:'+WARN+'14;font-family:var(--mono,monospace);font-size:11px;letter-spacing:.03em;color:'+WARN+'"><b>PROPOSED engineering gate \u2014 NOT the formal \u039b.</b> \u039b = Conjecture 1. SZL-\u03a6 couples WBE network scaling \u00d7 MTE/PMF activation \u00d7 coherence; it is an SZL construct, claimed only as a unification of cited results.</div>'
11900
+ +'<div class="kpis" id="phi-gate">'+kpi('\u03a6 (with PMF)','phi-w','\u0394p = 121.5 mV',TEAL)+kpi('\u03a6 (no PMF)','phi-n','\u0394p = 0',INFO)+kpi('PMF activation lift','phi-lift','\u03a6(pmf)/\u03a6(0)',GOLD)+kpi('Status','phi-st','doctrine',WARN)+'</div>'
11901
+ +'<div class="grid2"><div><div class="card-h"><span class="card-t">\u03a6 term decomposition</span><span class="card-ep">network \u00d7 PMF-enhancement \u00d7 coherence</span></div><div id="phi-chart" style="height:clamp(260px,38vh,340px);margin-top:.4rem"></div></div>'
11902
+ +'<div><div class="card-h"><span class="card-t">PMF activation lift (3D)</span><span class="card-ep">vendored three.js \u00b7 height \u221d lift</span></div><div id="phi-3d" style="height:clamp(260px,38vh,340px);border-radius:10px;background:#050608;margin-top:.4rem"></div></div></div></div>'
11903
+ +'<div class="card" style="padding:.7rem .9rem"><span class="mono dim" style="font-size:11px">Cited lineage: </span>'+cite('https://pmc.ncbi.nlm.nih.gov/articles/PMC2842802/','Demetrius-Tuszynski 2010 (quantum metabolism / PMF) \u2014 DOI:10.1098/rsif.2009.0310')+' &nbsp; '+cite('https://doi.org/10.1890/03-9000','Brown et al. 2004 MTE')+'</div>'
11904
+ +'<details class="raw"><summary>raw /scaling/unified</summary><pre class="out" id="phi-raw">\u2014</pre></details>'
11905
+ +honesty('\u03a6 = \u03a6\u2080\u00b7M^\u00be\u00b7exp(+\u03b7\u0394p/kT)\u00b7(\u03c4c/\u03c4\u2080)^\u00bc. The PMF lift is \u03a6(\u0394p=121.5)/\u03a6(\u0394p=0) at the same temperature, isolating the proton-motive-force enhancement honestly. SZL-\u03a6 is a <b>PROPOSED engineering gate, NOT the formal \u039b</b>.');
11906
+ function draw3d(lift){
11907
+ var host=ex('phi-3d'); if(!host||!window.THREE) return; host.innerHTML='';
11908
+ var W=host.clientWidth||460,H=host.clientHeight||320;
11909
+ var sc=new THREE.Scene(); var cam=new THREE.PerspectiveCamera(52,W/H,0.1,1000); cam.position.set(0,3,12);
11910
+ var rnd; try{ rnd=new THREE.WebGLRenderer({antialias:true,alpha:true}); }catch(e){ host.innerHTML='<div class="row mono dim" style="padding:1rem">3D unavailable: '+esc(e.message)+'</div>'; return; }
11911
+ rnd.setSize(W,H); rnd.setPixelRatio(Math.min(2,window.devicePixelRatio||1)); host.appendChild(rnd.domElement);
11912
+ sc.add(new THREE.AmbientLight(0xffffff,0.8)); var pl=new THREE.PointLight(0x5fb3a3,1.0); pl.position.set(5,8,8); sc.add(pl);
11913
+ var baseH=1.2, liftH=baseH*Math.max(1,Math.min(120,lift))/4;
11914
+ var b1=new THREE.Mesh(new THREE.CylinderGeometry(0.6,0.6,baseH,28),new THREE.MeshStandardMaterial({color:0x6fa8dc,transparent:true,opacity:0.85})); b1.position.set(-2,baseH/2-2,0); sc.add(b1);
11915
+ var b2=new THREE.Mesh(new THREE.CylinderGeometry(0.6,0.6,Math.min(8,liftH),28),new THREE.MeshStandardMaterial({color:0x5fb3a3,emissive:0x0a1, transparent:true,opacity:0.9})); b2.position.set(2,Math.min(8,liftH)/2-2,0); sc.add(b2);
11916
+ var grid=new THREE.GridHelper(14,14,0x223,0x152); grid.position.y=-2; sc.add(grid);
11917
+ var stop=false,a=0;
11918
+ function loop(){ if(stop||!ex('phi-3d')){ try{rnd.dispose();}catch(e){} return; } if(!RM){ a+=0.005; sc.rotation.y=a; } rnd.render(sc,cam); requestAnimationFrame(loop); }
11919
+ loop();
11920
+ window._tailTimers=window._tailTimers||[]; window._tailTimers.push(setInterval(function(){ if(!ex('phi-3d')) stop=true; },4000));
11921
+ }
11922
+ poll('phi-gate', async function(){
11923
+ var dw=await J(SAPI+'/scaling/unified?M=70&T=310&dp=121.5&tau_c=6.05');
11924
+ var dn=await J(SAPI+'/scaling/unified?M=70&T=310&dp=0&tau_c=6.05');
11925
+ if(ex('phi-raw')) ex('phi-raw').textContent=JSON.stringify({with_pmf:dw,no_pmf:dn},null,2);
11926
+ var pw=dw.phi||0, pn=dn.phi||0, lift=pn?pw/pn:0;
11927
+ E('phi-w').textContent=fmt(pw,1); E('phi-n').textContent=fmt(pn,1);
11928
+ E('phi-lift').textContent=(lift?('\u00d7'+fmt(lift,1)):'\u2014'); E('phi-lift').style.color=GOLD;
11929
+ E('phi-st').textContent=dw.status||'PROPOSED'; E('phi-st').style.color=WARN;
11930
+ var t=dw.terms||{};
11931
+ if(window.mkEchart) window.mkEchart('phi-chart',{backgroundColor:'transparent',tooltip:{trigger:'axis'},grid:{left:60,right:18,top:24,bottom:54},
11932
+ xAxis:{type:'category',data:['network M^\u00be','PMF enh.','coherence'],axisLabel:{color:'#A8B6CC',rotate:20,fontSize:10}},
11933
+ yAxis:{type:'value',name:'term value',nameTextStyle:{color:'#A8B6CC'},axisLabel:{color:'#A8B6CC'},splitLine:{lineStyle:{color:'#1c2230'}}},
11934
+ series:[{type:'bar',barWidth:'46%',data:[{value:Number((t['network_M^beta']||0).toFixed(3)),itemStyle:{color:INFO}},{value:Number((t['pmf_enhancement_exp(eta*dp/kT)']||0).toFixed(3)),itemStyle:{color:TEAL}},{value:Number((t['coherence_(tau_c/tau0)^0.25']||0).toFixed(3)),itemStyle:{color:VIOLET}}],label:{show:true,position:'top',color:'#cfcfcf',fontSize:10,formatter:'{c}'}}]});
11935
+ draw3d(lift);
11936
+ });
11937
+ }
11938
+
11939
+ // ───────────── VISUAL 4 — UNIVERSAL-EXPONENT COMPARATOR ─────────────
11940
+ function renderExponents(c){
11941
+ c.innerHTML='<div class="card"><div class="card-h"><span class="card-t">'+dot()+'Universal scaling exponents across domains (live)</span><span class="card-ep">'+autoPill('exp-gate')+'</span></div>'
11942
+ +'<div id="exp-chart" style="height:clamp(300px,46vh,440px);margin-top:.6rem"></div>'
11943
+ +'<div id="exp-table" class="mono" style="font-size:11px;margin-top:.6rem"></div></div>'
11944
+ +'<details class="raw"><summary>raw /scaling/exponents</summary><pre class="out" id="exp-raw">\u2014</pre></details>'
11945
+ +honesty('Each exponent is attributed to its source domain and author (biology: Kleiber/WBE/MTE; urban: Bettencourt-West 2007; compute: Kaplan 2020). SZL asserts none of these as its own discovery \u2014 the comparator simply renders the live endpoint.');
11946
+ poll('exp-gate', async function(){
11947
+ var d=await J(SAPI+'/scaling/exponents');
11948
+ if(ex('exp-raw')) ex('exp-raw').textContent=JSON.stringify(d,null,2);
11949
+ var rows=(d&&d.exponents)||[];
11950
+ var cats=rows.map(function(r){ return r.quantity; });
11951
+ var domColor={biology:TEAL,urban:GOLD,compute:VIOLET};
11952
+ if(window.mkEchart) window.mkEchart('exp-chart',{backgroundColor:'transparent',tooltip:{trigger:'item',formatter:function(p){ var r=rows[p.dataIndex]; return r.domain+': '+r.quantity+'<br/>exponent = '+r.exponent+'<br/>'+r.cite; }},
11953
+ grid:{left:200,right:30,top:20,bottom:40},
11954
+ xAxis:{type:'value',name:'scaling exponent',nameLocation:'middle',nameGap:26,nameTextStyle:{color:'#A8B6CC'},axisLabel:{color:'#A8B6CC'},splitLine:{lineStyle:{color:'#1c2230'}}},
11955
+ yAxis:{type:'category',data:cats,axisLabel:{color:'#A8B6CC',fontSize:10}},
11956
+ series:[{type:'bar',barWidth:'56%',data:rows.map(function(r){ return {value:r.exponent,itemStyle:{color:domColor[r.domain]||INFO}}; }),label:{show:true,position:'right',color:'#cfcfcf',fontSize:10,formatter:function(p){return p.value;}}}]});
11957
+ var html='<table style="width:100%;border-collapse:collapse"><tr style="color:'+DIM+'"><th style="text-align:left;padding:3px 6px">domain</th><th style="text-align:left;padding:3px 6px">quantity</th><th style="text-align:right;padding:3px 6px">exponent</th><th style="text-align:left;padding:3px 6px">cite</th></tr>';
11958
+ rows.forEach(function(r){ html+='<tr><td style="padding:3px 6px;color:'+(domColor[r.domain]||INFO)+'">'+esc(r.domain)+'</td><td style="padding:3px 6px">'+esc(r.quantity)+'</td><td style="padding:3px 6px;text-align:right;color:'+GOLD+'">'+esc(r.exponent)+'</td><td style="padding:3px 6px;color:'+DIM+'">'+esc(r.cite)+'</td></tr>'; });
11959
+ html+='</table>'; setHTML('exp-table',html);
11960
+ });
11961
+ }
11962
+
11963
+ // ───────────── VISUAL 5 — COMPUTE ALLOMETRY (Kaplan 2020) ─────────────
11964
+ function renderCompute(c){
11965
+ c.innerHTML='<div class="card"><div class="card-h"><span class="card-t">'+dot()+'Compute allometry \u2014 model loss vs parameters (live)</span><span class="card-ep">'+autoPill('cmp-gate')+'</span></div>'
11966
+ +'<div style="margin:.2rem 0 .7rem;padding:.5rem .7rem;border:1px solid '+WARN+';border-left:3px solid '+WARN+';border-radius:7px;background:'+WARN+'14;font-family:var(--mono,monospace);font-size:11px;color:'+WARN+'"><b>PROPOSED analogy.</b> SZL claims only the allometric <i>framing</i> (compute capability as a metabolic network), NOT the scaling law itself \u2014 that is Kaplan et al. 2020.</div>'
11967
+ +'<div class="kpis" id="cmp-gate">'+kpi('Exponent \u03b1','cmp-a','L \u221d N^(\u2212\u03b1)',TEAL)+kpi('7B loss','cmp-7','predicted',INFO)+kpi('70B loss','cmp-70','predicted',GOLD)+kpi('700B loss','cmp-700','predicted',VIOLET)+'</div>'
11968
+ +'<div id="cmp-chart" style="height:clamp(300px,44vh,420px);margin-top:.6rem"></div>'
11969
+ +'<div class="mono dim" style="font-size:11px;margin-top:.4rem">Each point is a live <code>/scaling/compute?params=</code> call. Bigger model \u2192 lower loss, the same diminishing-returns allometry biology shows.</div></div>'
11970
+ +'<div class="card" style="padding:.7rem .9rem"><span class="mono dim" style="font-size:11px">Formula author: </span>'+cite('https://arxiv.org/abs/2001.08361','Kaplan et al. 2020 \u2014 Scaling Laws for Neural Language Models, arXiv:2001.08361')+'</div>'
11971
+ +'<details class="raw"><summary>raw /scaling/compute samples</summary><pre class="out" id="cmp-raw">\u2014</pre></details>'
11972
+ +honesty('Predicted loss L(N) \u2248 L\u2080\u00b7N^(\u2212\u03b1), \u03b1\u22480.076 (<b>Kaplan et al. 2020</b>). The \u201ccapability metabolism\u201d framing is the SZL tie-in \u2014 a PROPOSED analogy, not a new law.');
11973
+ var PARAMS=[0.1,0.5,1,3,7,13,30,70,175,400,700];
11974
+ poll('cmp-gate', async function(){
11975
+ var pts=[]; var raw=[];
11976
+ for(var i=0;i<PARAMS.length;i++){ var d=await J(SAPI+'/scaling/compute?params='+PARAMS[i]); pts.push([d.params_billions, d.predicted_loss]); raw.push(d); }
11977
+ if(ex('cmp-raw')) ex('cmp-raw').textContent=JSON.stringify(raw,null,2);
11978
+ var alpha=raw.length?raw[0].exponent_alpha:null;
11979
+ E('cmp-a').textContent=fmt(alpha,3);
11980
+ function at(P){ for(var i=0;i<raw.length;i++){ if(Math.abs(raw[i].params_billions-P)<1e-9) return raw[i].predicted_loss; } return null; }
11981
+ E('cmp-7').textContent=fmt(at(7),3); E('cmp-70').textContent=fmt(at(70),3); E('cmp-700').textContent=fmt(at(700),3);
11982
+ if(window.mkEchart) window.mkEchart('cmp-chart',{backgroundColor:'transparent',tooltip:{trigger:'item',formatter:function(p){ return p.value[0]+'B params<br/>loss = '+fmt(p.value[1],4); }},
11983
+ grid:{left:64,right:24,top:24,bottom:48},
11984
+ xAxis:{type:'log',name:'parameters (billions)',nameLocation:'middle',nameGap:30,nameTextStyle:{color:'#A8B6CC'},axisLabel:{color:'#A8B6CC'},splitLine:{lineStyle:{color:'#1c2230'}}},
11985
+ yAxis:{type:'value',name:'predicted loss L(N)',nameTextStyle:{color:'#A8B6CC'},axisLabel:{color:'#A8B6CC'},splitLine:{lineStyle:{color:'#1c2230'}}},
11986
+ series:[{type:'line',smooth:true,symbolSize:9,data:pts,lineStyle:{color:VIOLET,width:2.4},itemStyle:{color:GOLD},areaStyle:{color:'rgba(183,155,214,0.12)'}}]});
11987
+ });
11988
+ }
11989
+
11990
+ function reg(key,title,badge,sub,fn){ if(!window.VIEWS) return; window.VIEWS[key]={title:title,badge:badge,sub:sub,render:async function(c){ fn(c); }}; }
11991
+ whenReady(function(){
11992
+ reg('scaling','Metabolic Scaling','EXPERIMENTAL \u00b7 KLEIBER/WBE/MTE \u00b7 SZL-\u03a6 PROPOSED',
11993
+ 'Living view of <b>allometric scaling</b>: Kleiber\u2019s 3/4-power metabolic law, the lifetime-heartbeats invariant, the PROPOSED <b>SZL-\u03a6</b> unification (network \u00d7 PMF activation \u00d7 coherence), the universal-exponent comparator, and the Kaplan-2020 compute-allometry analogue. All five visuals are recomputed live from <code>/api/a11oy/v1/scaling/*</code>. EXPERIMENTAL-tier \u2014 adds nothing to the locked 8; \u039b stays <b>Conjecture 1</b>; SZL-\u03a6 is a <b>PROPOSED engineering gate, NOT the formal \u039b</b>. Every borrowed law cited to its real author.',
11994
+ function(c){
11995
+ c.innerHTML='<div class="row" id="sca-tabs" style="gap:.4rem;flex-wrap:wrap;margin-bottom:.7rem"></div><div id="sca-body"></div>';
11996
+ var tabs=[['kleiber','Kleiber curve',renderKleiber],['heart','Lifetime heartbeats \u2605',renderHeart],['unified','SZL-\u03a6 unified',renderUnified],['exponents','Exponent comparator',renderExponents],['compute','Compute allometry',renderCompute]];
11997
+ function paint(idx){ var host=ex('sca-body'); if(!host) return; tabs.forEach(function(t,i){ var b=ex('sca-tab-'+i); if(b){ b.style.background=(i===idx)?TEAL+'22':'transparent'; b.style.color=(i===idx)?TEAL:DIM; b.style.borderColor=(i===idx)?TEAL:'#2a2a2a'; } }); host.innerHTML=''; var sub=document.createElement('div'); sub.id='sca-sub'; host.appendChild(sub); tabs[idx][2](sub); }
11998
+ var bar=ex('sca-tabs');
11999
+ tabs.forEach(function(t,i){ var b=document.createElement('button'); b.id='sca-tab-'+i; b.className='mono'; b.textContent=t[1]; b.style.cssText='border:1px solid #2a2a2a;border-radius:7px;padding:.4rem .8rem;cursor:pointer;font-size:12px;background:transparent;color:'+DIM; b.addEventListener('click',function(){ paint(i); }); if(bar) bar.appendChild(b); });
12000
+ paint(1); // open on the HERO (lifetime heartbeats) first
12001
+ });
12002
+ });
12003
+
12004
+ function injectNav(){
12005
+ var side=document.querySelector('.side .nav')||document.querySelector('.side');
12006
+ var anchor=document.querySelector('.nav-item[data-view="verticals"]')||document.querySelector('.nav-item');
12007
+ if(!side||!anchor){ return setTimeout(injectNav,250); }
12008
+ if(document.getElementById('scaling-nav-group')){ return; }
12009
+ var grp=document.createElement('div'); grp.className='nav-group'; grp.id='scaling-nav-group'; grp.textContent='Metabolic Scaling (EXPERIMENTAL)';
12010
+ var n=document.createElement('div'); n.className='nav-item'; n.id='scaling-nav-item'; n.setAttribute('data-view','scaling'); n.setAttribute('onclick',"go('scaling')");
12011
+ n.setAttribute('title','Allometric scaling: Kleiber 3/4 law, lifetime-heartbeats invariant, PROPOSED SZL-\u03a6 unification, universal-exponent comparator, Kaplan-2020 compute allometry. Live from /api/a11oy/v1/scaling/*. EXPERIMENTAL-tier; \u039b stays Conjecture 1.');
12012
+ n.innerHTML='<span class="ico">\u2696</span>Metabolic Scaling';
12013
+ var parent=anchor.parentNode; parent.appendChild(grp); parent.appendChild(n);
12014
+ try{ console.log('[a11oy] Scaling tab registered: scaling'); }catch(e){}
12015
+ }
12016
+ if(document.readyState==='loading'){ document.addEventListener('DOMContentLoaded',injectNav); } else { injectNav(); }
12017
+ })();
12018
+ </script>
12019
+
12020
  </body>
12021
  </html>