Spaces:
Running
Running
File size: 8,871 Bytes
a6a5d8e 5684452 55e5019 a6a5d8e 5684452 55e5019 a6a5d8e | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 | <!DOCTYPE html>
<!-- SPDX-License-Identifier: Apache-2.0 © 2026 Lutar, Stephen P. — SZL Holdings · Doctrine v11+ -->
<!-- AYNI-OS surface — reciprocity organism + event-sourced replay + Tinkuy flow. ADDITIVE. -->
<!-- HONEST: Ayni = game-theory primitive (Axelrod-Hamilton 1981). Replay = event-sourcing,
NOT time-travel. Tinkuy = Kuramoto 1975 order parameter. No mysticism. -->
<html lang="en">
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>a11oy · AYNI-OS — reciprocity organism & time-reversible replay</title>
<style>
:root{--bg:#0b0d12;--panel:#12151d;--ink:#e7ecf3;--mut:#8a93a6;--acc:#7cc4ff;--ok:#54d18c;--warn:#ffcf5c;--bad:#ff6b6b;--line:#222838;--mono:'SF Mono',ui-monospace,'JetBrains Mono',Menlo,Consolas,monospace}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.55 -apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif}
a{color:var(--acc)}
.wrap{max-width:1040px;margin:0 auto;padding:28px 20px 80px}
.top{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;border-bottom:1px solid var(--line);padding-bottom:16px}
.brand{font-weight:700;letter-spacing:.5px}.tag{font-size:12px;color:var(--mut)}
.nav a{margin-left:14px;font-size:13px;text-decoration:none;color:var(--mut)}.nav a:hover{color:var(--acc)}
h1{font-size:26px;margin:24px 0 6px}.sub{color:var(--mut);margin:0 0 18px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:18px;margin:14px 0;border-left:3px solid var(--ok)}
.card h2{margin:0 0 4px;font-size:17px}
.path{font-family:var(--mono);font-size:12.5px;color:var(--acc);margin:6px 0}
pre{width:100%;background:#0a0c11;color:var(--ink);border:1px solid var(--line);border-radius:8px;font-family:var(--mono);font-size:12px;padding:10px;overflow:auto;max-height:240px;white-space:pre-wrap;word-break:break-word}
button{background:var(--acc);color:#06121f;border:0;border-radius:8px;padding:9px 16px;font-weight:600;cursor:pointer;font-size:13px;margin:8px 8px 8px 0}
input[type=range]{width:100%}
.mut{color:var(--mut);font-size:13px}
.gauges{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin-top:10px}
.g{background:#0a0c11;border:1px solid var(--line);border-radius:10px;padding:10px}
.g .name{font-family:var(--mono);font-size:12px;color:var(--mut)}
.g .val{font-size:20px;font-weight:700;margin-top:2px}
.bar{height:8px;border-radius:5px;background:#1b2030;margin-top:6px;overflow:hidden}
.bar i{display:block;height:100%}
.meter{height:18px;border-radius:9px;background:#1b2030;overflow:hidden;margin:8px 0}
.meter i{display:block;height:100%;background:linear-gradient(90deg,#54d18c,#7cc4ff)}
.pill{display:inline-block;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600}
.pill.ok{background:rgba(84,209,140,.15);color:var(--ok)}
.pill.bad{background:rgba(255,107,107,.15);color:var(--bad)}
.row{display:flex;gap:16px;flex-wrap:wrap;align-items:center}
.cite{font-size:12px;color:var(--mut);border-top:1px solid var(--line);margin-top:18px;padding-top:12px}
</style>
<link rel="stylesheet" href="/assets/szl-flow.css" data-szl-flow-asset="style" />
<link rel="stylesheet" href="/assets/szl-holo-v2.css" data-szl-holo-asset="style-v2" />
</head>
<body>
<div class="wrap">
<div class="top">
<div><span class="brand">a11oy</span> <span class="tag">· AYNI-OS</span></div>
<div class="nav"><a href="/">home</a><a href="/chaski">chaski</a><a href="/ayni">ayni</a></div>
</div>
<h1>AYNI-OS — reciprocity organism & time-reversible replay</h1>
<p class="sub">A time-reversible (event-sourced), forkable runtime governed by an
<b>Ayni Conservation Law</b>. <b>Honest framing:</b> Ayni is a game-theory primitive
(Axelrod & Hamilton 1981; Trivers 1971), <i>not</i> mysticism;
"time-reversal" is <i>event-sourcing replay</i>, <i>not</i> time-travel; Tinkuy is the
Kuramoto (1975) order parameter. Locked Doctrine v11 numbers preserved
(749/14/163, 13-axis yuyay_v3, replay bacf5443…631fc5).</p>
<!-- AYNI GAUGES -->
<div class="card">
<h2>Ayni gauges — per-organ reciprocity coefficient α<sub>o</sub></h2>
<div class="path">GET /v1/ayni · α = In/(In+Out) · α<0.45 ⇒ HUKLLA T24 fires</div>
<div class="row"><span id="ayniStatus" class="pill ok">loading…</span>
<span class="mut">balanced α = 0.50 · deficit threshold 0.45</span></div>
<div id="gauges" class="gauges"></div>
</div>
<!-- REPLAY SCRUBBER -->
<div class="card">
<h2>Replay timeline scrubber — verifiable state at past moment T</h2>
<div class="path">GET /v1/replay?at=<timestamp> · mechanism = event-sourcing-replay</div>
<div class="row">
<span class="mut">T = <span id="tlabel" style="font-family:var(--mono)">—</span></span>
<span id="chainPill" class="pill ok">chain —</span>
</div>
<input id="scrub" type="range" min="0" max="100" value="100"/>
<pre id="replayOut">drag the scrubber to reconstruct empire state at past timestamp T…</pre>
</div>
<!-- TINKUY METER -->
<div class="card">
<h2>Tinkuy r meter — Kuramoto order parameter across organ phases</h2>
<div class="path">GET /v1/tinkuy · r = |1/N · Σ e^{iθ}| · r>0.85 ⇒ flow (suppress Reflexion)</div>
<div class="meter"><i id="rbar" style="width:0%"></i></div>
<div class="row"><span class="mut">r = <b id="rval">—</b></span>
<span id="flowPill" class="pill ok">—</span></div>
</div>
<div class="cite">
<b>Citations (peer-reviewed):</b>
Axelrod & Hamilton, "The Evolution of Cooperation," <i>Science</i> 211(4489):1390–1396, 1981 (DOI 10.1126/science.7466396).
Trivers, "The Evolution of Reciprocal Altruism," <i>Q. Rev. Biol.</i> 46(1):35–57, 1971 (DOI 10.1086/406755).
Kuramoto, Lecture Notes in Physics 39, Springer, 1975.
Csikszentmihalyi, <i>Beyond Boredom and Anxiety</i>, 1975. Strogatz, <i>Sync</i>, 2003.
Noether, "Invariante Variationsprobleme," Göttingen, 1918.
<br/>Signed — <b>Yachay</b> (CTO). ADDITIVE only; yuyay_v3 hash untouched.
</div>
</div>
<script>
const T0 = Math.floor(Date.now()/1000) - 3700; // window start (≈ seed)
const T1 = Math.floor(Date.now()/1000); // now
function color(a){ return a < 0.45 ? 'var(--bad)' : (a < 0.55 ? 'var(--warn)' : 'var(--ok)'); }
async function loadAyni(){
try{
const r = await fetch('/v1/ayni'); const d = await r.json();
const g = document.getElementById('gauges'); g.innerHTML='';
Object.entries(d.alphas||{}).forEach(([o,a])=>{
const c = color(a);
g.insertAdjacentHTML('beforeend',
`<div class="g"><div class="name">${o}</div>
<div class="val" style="color:${c}">${a.toFixed(2)}</div>
<div class="bar"><i style="width:${Math.round(a*100)}%;background:${c}"></i></div></div>`);
});
const s = document.getElementById('ayniStatus');
if(d.halt){ s.className='pill bad'; s.textContent='HUKLLA T24 — organ drained'; }
else { s.className='pill ok'; s.textContent='balanced — no deficit'; }
}catch(e){ document.getElementById('ayniStatus').textContent='offline'; }
}
async function loadReplay(frac){
const T = Math.round(T0 + (T1-T0)*frac);
document.getElementById('tlabel').textContent = new Date(T*1000).toISOString().replace('T',' ').slice(0,19);
try{
const r = await fetch('/v1/replay?at='+T); const d = await r.json();
document.getElementById('replayOut').textContent = JSON.stringify(d, null, 2);
const cp = document.getElementById('chainPill');
if(d.chain_verified){ cp.className='pill ok'; cp.textContent='chain verified'; }
else { cp.className='pill bad'; cp.textContent='chain BROKEN'; }
}catch(e){ document.getElementById('replayOut').textContent='replay offline'; }
}
async function loadTinkuy(){
try{
const r = await fetch('/v1/tinkuy'); const d = await r.json();
const pct = Math.round((d.r||0)*100);
document.getElementById('rbar').style.width = pct+'%';
document.getElementById('rval').textContent = (d.r||0).toFixed(3);
const p = document.getElementById('flowPill');
if(d.in_tinkuy){ p.className='pill ok'; p.textContent='TINKUY — flow (Reflexion suppressed)'; }
else { p.className='pill bad'; p.textContent='incoherent — no flow'; }
}catch(e){ document.getElementById('rval').textContent='offline'; }
}
document.getElementById('scrub').addEventListener('input', e=>loadReplay(e.target.value/100));
loadAyni(); loadReplay(1.0); loadTinkuy();
setInterval(loadAyni, 15000); setInterval(loadTinkuy, 15000);
</script>
<script src="/assets/szl-flow.js" defer data-szl-flow-asset="script"></script>
<script src="/assets/szl-holo-v2.js" defer data-szl-holo-asset="script-v2"></script>
</body>
</html>
|