/* cyber ā the superintelligence Ā· interactive deck
a frozen protocol for collective lifeforms. 7 chapters Ć 3 slides. the graph behind you grows with what you do.
marks: ā measured Ā· ā target Ā· ā mock (a browser simulation, not the chain) */
(() => {
const $ = (s, r = document) => r.querySelector(s);
const el = (h) => { const t = document.createElement('template'); t.innerHTML = h.trim(); return t.content.firstChild; };
const fmt = (n) => n.toLocaleString('en-US');
const esc = (t) => t.replace(/[&<>"]/g, (c) => ({ '&': '&', '<': '<', '>': '>', '"': '"' }[c]));
const M = (k) => `<i class="mk ${k}"></i>`; // m = measured, t = target, k = mock
const MONO = 'JetBrains Mono,Menlo,monospace', SANS = 'Play,Inter,system-ui,sans-serif';
const COLS = ['#ff1a00', '#ff7a00', '#ffc400', '#00ff41', '#00b8ff', '#1e00ff', '#7a00ff'];
/* ------------------------------------------------------------------ chapters */
const CH = [
{ id: 'si', name: 'superintelligence', c: 'var(--c1)' },
{ id: 'anatomy', name: 'anatomy', c: 'var(--c2)' },
{ id: 'focus', name: 'focus', c: 'var(--c3)' },
{ id: 'compile', name: 'compile', c: 'var(--c4)' },
{ id: 'syntropy',name: 'syntropy', c: 'var(--c5)' },
{ id: 'frozen', name: 'frozen', c: 'var(--c6)' },
{ id: 'moneys', name: 'money', c: 'var(--c7)' },
];
/* ------------------------------------------------------------------ figures */
const svgo = (w, h, label, body) => `<svg class="fig" viewBox="0 0 ${w} ${h}" role="img" aria-label="${label}">${body}</svg>`;
const T = (x, y, t, o = {}) => `<text x="${x}" y="${y}" font-size="${o.fs || 11}" font-weight="${o.w || 400}" text-anchor="${o.a || 'start'}" fill="${o.c || 'currentColor'}" fill-opacity="${o.op || 1}" font-family="${o.ff || (o.w === 700 ? SANS : MONO)}"${o.ls ? ` letter-spacing="${o.ls}"` : ''}>${t}</text>`;
const scaleFig = () => {
const W = 760, H = 275, X0 = 40, X1 = 720, B = 150;
const x = (e) => X0 + (X1 - X0) * e / 24;
const sup = (n) => String(n).replace(/\d/g, (d) => 'ā°Ā¹Ā²Ā³ā“āµā¶ā·āøā¹'[d]);
const L = [
['self', 0, '1', 'one neuron, one particle', COLS[3], 1, 24], ['crystal', 3.7, '5,040', 'curated seed', COLS[3], -1, 24],
['bootloader', 6.5, '3,143,650', 'today Ā· dā = 31', COLS[3], 1, 70], ['cognition', 8.5, '10āø ā 10ā¹', 'concepts no one holds', COLS[4], -1, 50],
['thermodynamic', 12, '10¹²', 'Ļā is the state', COLS[4], 1, 24], ['planetary', 15, '10¹ⵠ· 10¹Ⱐneurons', 'design target', COLS[4], -1, 24],
['Avogadro', 23.78, '6.02 à 10²³', 'a mole of matter', COLS[1], 1, 70],
];
let o = ''; let pts = [`${X0},${B}`];
for (let e = 0; e <= 24; e++) pts.push(`${x(e).toFixed(1)},${(B - 2 - 50 * Math.pow(e / 24, 1.6)).toFixed(1)}`);
pts.push(`${X1},${B}`);
o += `<rect x="${x(12)}" y="${B - 118}" width="${X1 - x(12)}" height="118" fill="${COLS[4]}" fill-opacity=".06"/><line x1="${x(12)}" y1="${B - 118}" x2="${x(12)}" y2="${B + 24}" stroke="${COLS[4]}" stroke-dasharray="3 4"/>` + T(x(12) + 6, B - 108, 'threshold', { fs: 10, w: 700, c: COLS[4] }) + T(x(12) + 6, B - 97, 'past here only the field describes the system', { fs: 8, c: COLS[4], op: .85 }) + `${ B}" stroke="currentColor" stroke-opacity=".35"/>`;
for (let e = 0; e < 24; e += 3) o += T(x(e), B + 16, '10' + sup(e), { fs: 9, a: 'middle', op: .5 });
o += `<line x1="${x(0)}" y1="${B}" x2="${x(6.5)}" y2="${B}" stroke="${COLS[3]}" stroke-width="3" stroke-linecap="round"/>` ;
for (const [n, e, cnt, line, col, side, stem] of L) {
const xx = x(e), r = 3.5 + e * .42;
o += `<circle cx="${xx}" cy="${B}" r="${r}" fill="${col}" fill-opacity=".18" stroke="${col}" stroke-width="1.5"/>" cy="${B}" r="2.2" fill="${col}"/>`;
const y1 = side > 0 ? B - r - 2 : B + r + 2, y2 = side > 0 ? B - r - stem : B + r + stem;
o += `<line x1="${xx}" y1="${y1}" x2="${xx}" y2="${y2}" stroke="${col}" stroke-opacity=".6"/>`;
let a = 'middle', tx = xx; if (n === 'self') { a = 'start'; tx = X0 - 2; } if (n === 'Avogadro') { a = 'end'; tx = X1 + 2; }
const ty = side > 0 ? y2 - 4 : y2 + 12;
const rows = side > 0 ? [[ty - 24, n, 12.5, 'currentColor', 700], [ty - 11, cnt, 10.5, col, 400], [ty, line, 9, 'currentColor', 400]] : [[ty, n, 12.5, 'currentColor', 700], [ty + 13, cnt, 10.5, col, 400], [ty + 24, line, 9, 'currentColor', 400]];
for (const [y, t, fs, c, w] of rows) o += T(tx, y, t, { fs, c, w, a, op: fs === 9 ? .65 : 1 });
}
return svgo(W, H, 'from self to Avogadro', o);
};
/* a cyberlink, exploded */
const linkFig = () => {
const W = 760, H = 330; let o = '';
const box = (x, y, w, h, title, sub, col) => `<rect x="${x}" y="${y}" width="${w}" height="${h}" rx="10" fill="${col}" fill-opacity=".12" stroke="${col}" stroke-width="1.5"/>` + T(x + w / 2, y + 30, title, { fs: 16, w: 700, a: 'middle' }) + T(x + w / 2, y + 50, sub, { fs: 9.5, a: 'middle', op: .65 });
o += box(40, 110, 200, 70, 'from Ā· particle p', 'hemera(file) Ā· authorizes the move', COLS[1]);
o += box(520, 110, 200, 70, 'to Ā· particle q', 'hemera(file) Ā· any card', COLS[1]);
o += `<line x1="240" y1="145" x2="520" y2="145" stroke="currentColor" stroke-width="3" marker-end="url(#ah)"/><defs><marker id="ah" markerWidth="10" markerHeight="10" refX="8" refY="5" orient="auto"><path d="M0,0 L10,5 L0,10 z" fill="currentColor"/></marker></defs>`;
o += T(380, 132, 'cyberlink', { fs: 15, w: 700, a: 'middle' });
o += T(380, 170, 'āp belongs with qā', { fs: 11, a: 'middle', op: .7 });
const call = (x, y, t, d, up) => `<g class="hov"><rect x="${x - 120}" y="${up ? y - 30 : y + 4}" width="240" height="42" fill="transparent"/><line x1="${x}" y1="${up ? 110 : 180}" x2="${x}" y2="${y}" stroke="currentColor" stroke-opacity=".45" stroke-dasharray="2 4"/>` + T(x, up ? y - 16 : y + 18, t, { fs: 12, w: 700, a: 'middle' }) + T(x, up ? y - 3 : y + 32, d, { fs: 10, a: 'middle', op: .7 }) + '</g>';
o += call(285, 50, 'structural Ā· link(from, to)', 'a directed edge between two cards', true);
o += call(500, 50, 'who Ā· when', 'ride on the signal, not the link', true);
o += call(270, 230, 'economic Ā· box(coin, amount)', 'conviction Ā· weight in A^eff', false);
o += call(515, 230, 'epistemic Ā· valence v ā {ā1, 0, +1}', '0 ranks Ā· ±1 bets the truth market', false);
o += T(380, 300, 'five stored fields, three concepts Ā· append-only: delete = withdraw the box and link again with v = ā1 Ā· never erasure', { fs: 10, a: 'middle', op: .6 });
return svgo(W, H, 'anatomy of a cyberlink', o);
};
/* a signal, exploded: s = (ν, āā, ĪĻā, Ļ, prev, mc, vdf, step, nonce) */
const signalFig = () => {
const W = 760, H = 275; let o = '';
const F = [['ν', 'neuron', 'who speaks'], ['ā', 'links', 'the cyberlinks claimed'], ['ĪĻā', 'shift', 'focus shift asserted, in bits'], ['Ļ', 'zheng proof', 'covers links, impulse, conviction'], ['prev', 'previous', 'author\'s last signal: a chain'], ['mc', 'merkle clock', 'causal state it was computed on'], ['vdf', 'delay', 'physical time since previous'], ['step', 'step', 'logical clock, monotonic'], ['nonce', 'nonce', 'proof randomness = mining']];
const w = 76, x0 = 50, y = 110;
F.forEach(([sym, name, meaning], i) => {
const x = x0 + i * w, col = COLS[i % 7];
o += `<g class="hov"><rect x="${x}" y="${y}" width="${w - 4}" height="56" rx="8" fill="${col}" fill-opacity=".14" stroke="${col}"/>` + T(x + (w - 4) / 2, y + 26, sym, { fs: 16, w: 700, a: 'middle', ff: MONO }) + T(x + (w - 4) / 2, y + 44, name, { fs: 9, a: 'middle', op: .7 });
const lines = []; let cur = ''; for (const wd of meaning.split(' ')) { if ((cur + ' ' + wd).trim().length > 13 && cur) { lines.push(cur); cur = wd; } else cur = (cur + ' ' + wd).trim(); } if (cur) lines.push(cur);
lines.slice(0, 3).forEach((ln, k) => { o += T(x + (w - 4) / 2, y + 74 + k * 11, ln, { fs: 8, a: 'middle', op: .8 }); }); o += '</g>';
});
const bx = x0 + 1 * w, bw = 3 * w - 4; o += `<path d="M${bx},${y - 10} v-8 h${bw} v8" fill="none" stroke="${COLS[3]}" stroke-width="1.5"/>` + T(bx + bw / 2, y - 24, 'Ļ Ā· one zheng proof covers these', { fs: 10, w: 700, a: 'middle', c: COLS[3] });
const px = x0 + 4 * w + (w - 4) / 2; o += `<path d="M${px},${y - 10} C ${px},${y - 60} ${x0 - 10},${y - 60} ${x0 - 10},${y + 28}" fill="none" stroke="${COLS[4]}" stroke-width="1.5" stroke-dasharray="3 4" marker-end="url(#ah3)"/>` + T(px + 20, y - 46, 'prev ā the author\'s last signal: every neuron is a chain', { fs: 10, w: 700, c: COLS[4] });
o += T(380, 262, 'the proof is the claim. the claim is the mining. identical signals produce one root everywhere.', { fs: 10, a: 'middle', op: .6 });
return svgo(W, H, 'anatomy of a signal', o);
};
/* graph ā transformer */
const compileFig = () => {
const W = 760, H = 285; let o = '';
// graph glyph
const gx = 110, gy = 150; const pts = [[0, -60], [52, -30], [60, 30], [10, 65], [-50, 40], [-58, -25], [0, 0], [25, 20], [-20, -30]];
const E = [[0, 1], [1, 2], [2, 3], [3, 4], [4, 5], [5, 0], [6, 0], [6, 2], [6, 4], [7, 2], [7, 3], [8, 5], [8, 6], [8, 1]];
for (const [a, b] of E) o += `<line x1="${gx + pts[a][0]}" y1="${gy + pts[a][1]}" x2="${gx + pts[b][0]}" y2="${gy + pts[b][1]}" stroke="${COLS[3]}" stroke-opacity=".6"/>`;
pts.forEach(([x, y], i) => { o += `<circle cx="${gx + x}" cy="${gy + y}" r="${i === 6 ? 7 : 4.5}" fill="${COLS[3]}"/>`; });
o += T(gx, 250, 'weighted cybergraph', { fs: 12, w: 700, a: 'middle' }) + T(gx, 266, 'A^eff Ā· stake Ć karma', { fs: 9, a: 'middle', op: .65 });
// three derivations
const rows = [[70, 'effective rank of Ī£_Ļā', 'dā = exp H(Ļ(Ī£_Ļā))', 'embedding dimension'], [150, 'count of dialects', 'hā ā„ ļææDialect(G)ļææ', 'attention heads'], [230, 'diameter Ć contraction', 'Lā = diam(G) Ā· ālog(1/ε) / log(1/Īŗ)ā', 'layers']];
for (const [y, from, formula, to] of rows) {
o += `<g class="hov"><line x1="195" y1="${y}" x2="250" y2="${y}" stroke="currentColor" stroke-opacity=".4"/><line x1="470" y1="${y}" x2="538" y2="${y}" stroke="currentColor" stroke-opacity=".4" marker-end="url(#ah2)"/>`;
o += `<rect x="250" y="${y - 24}" width="220" height="48" rx="8" fill="currentColor" fill-opacity=".06" stroke="currentColor" stroke-opacity=".3"/>` + T(360, y - 6, from, { fs: 9, a: 'middle', op: .65 }) + T(360, y + 12, formula, { fs: 11, w: 700, a: 'middle' });
o += T(544, y + 4, to, { fs: 10, op: .85 }) + '</g>';
}
o += `<defs><marker id="ah2" markerWidth="8" markerHeight="8" refX="6" refY="4" orient="auto"><path d="M0,0 L8,4 L0,8 z" fill="currentColor" fill-opacity=".6"/></marker></defs>`;
// transformer stack glyph
for (let i = 0; i < 7; i++) o += `<rect x="652" y="${60 + i * 26}" width="64" height="18" rx="3" fill="${COLS[3]}" fill-opacity="${.12 + i * .1}" stroke="${COLS[3]}" stroke-opacity=".7"/>`;
o += T(684, 48, 'one layer = one kernel step', { fs: 9, w: 700, a: 'middle' });
o += T(684, 250, 'Lā = 290 layers', { fs: 10.5, w: 700, a: 'middle' }) + T(684, 263, '= 290 kernel steps to Ļā', { fs: 9, a: 'middle', op: .8 }) + T(684, 276, 'compiled, not trained', { fs: 9, a: 'middle', op: .65 });
return svgo(W, H, 'the graph compiled into a transformer', o);
};
/* earth ā mars: finality is an information condition, not a clock */
const planetFig = () => {
const W = 760, H = 258; let o = '';
const planet = (x, y, r, col, name, sub) => `<circle cx="${x}" cy="${y}" r="${r}" fill="${col}" fill-opacity=".15" stroke="${col}" stroke-width="1.5"/>` + T(x, y + 4, name, { fs: 13, w: 700, a: 'middle' }) + T(x, y + r + 40, sub, { fs: 9, a: 'middle', op: .7 });
o += planet(120, 120, 46, COLS[4], 'earth', 'its own pond Ā· finalizes at earth speed');
o += planet(640, 120, 30, COLS[1], 'mars', 'its own pond Ā· finalizes at mars speed');
// local gossip rings
for (let k = 1; k <= 3; k++) o += `<circle cx="120" cy="120" r="${46 + k * 11}" fill="none" stroke="${COLS[4]}" stroke-opacity="${.35 - k * .09}" stroke-dasharray="2 5"/>` ;
// light path
o += `<line x1="200" y1="120" x2="580" y2="120" stroke="currentColor" stroke-opacity=".35" stroke-dasharray="6 6"/>`;
o += `<circle cx="300" cy="120" r="3" fill="#fff"><animate attributeName="cx" values="200;580" dur="6s" repeatCount="indefinite"/></circle>`;
o += T(390, 104, '4 ā 24 minutes of light, one way', { fs: 11, w: 700, a: 'middle' });
o += T(390, 140, 'a signal pays light-time once Ā· a vote pays it twice, every round', { fs: 9.5, a: 'middle', op: .75 });
// rule box
o += `<rect x="250" y="190" width="280" height="54" rx="10" fill="currentColor" fill-opacity=".06" stroke="currentColor" stroke-opacity=".3"/>`;
o += T(390, 210, 'final ā Ļāįµ¢ > Ļ', { fs: 14, w: 700, a: 'middle', ff: MONO });
o += T(390, 230, 'enough attention has gathered Ā· an information condition, not a clock', { fs: 9, a: 'middle', op: .75 });
o += T(120, 22, 'identical signals ā one root everywhere', { fs: 9.5, a: 'middle', op: .7 });
o += T(745, 22, 'a dark link freezes trade, never invents two truths', { fs: 9.5, a: 'end', op: .7 });
return svgo(W, H, 'earth and mars: finality survives the speed of light', o);
};
/* surprising syntropy: two filters, one quadrant pays */
const syntropyFig = () => {
const W = 760, H = 290; let o = '';
const x0 = 170, y0 = 40, w = 430, h = 190;
const cell = (cx, cy, col, title, sub, pay) => `<rect x="${cx}" y="${cy}" width="${w / 2 - 6}" height="${h / 2 - 6}" rx="10" fill="${col}" fill-opacity="${pay ? .22 : .06}" stroke="${col}" stroke-opacity="${pay ? 1 : .35}" stroke-width="${pay ? 2 : 1}"/>` + T(cx + w / 4 - 3, cy + 34, title, { fs: 13, w: 700, a: 'middle' }) + T(cx + w / 4 - 3, cy + 54, sub, { fs: 9.5, a: 'middle', op: .75 }) + T(cx + w / 4 - 3, cy + 76, pay ? 'paid: R(ν) = Shapley_ν(vā)' : 'mints 0', { fs: 11, w: 700, a: 'middle', c: pay ? COLS[3] : 'currentColor', ff: MONO });
o += cell(x0, y0, COLS[3], 'surprising syntropy', 'order the crowd did not expect', true);
o += cell(x0 + w / 2 + 6, y0, 'currentColor', 'expected order', 'a copy Ā· what everyone saw coming', false);
o += cell(x0, y0 + h / 2 + 6, 'currentColor', 'surprising noise', 'novel, and the picture got no clearer', false);
o += cell(x0 + w / 2 + 6, y0 + h / 2 + 6, 'currentColor', 'noise', 'idle capital Ā· volume Ā· presence', false);
// axes
o += T(x0 - 14, y0 + h / 4, 'ĪĻāŗ > 0', { fs: 11, w: 700, a: 'end', ff: MONO }) + T(x0 - 14, y0 + h / 4 + 14, 'picture clearer', { fs: 9, a: 'end', op: .7 });
o += T(x0 - 14, y0 + 3 * h / 4, 'ĪĻāŗ = 0', { fs: 11, w: 700, a: 'end', ff: MONO }) + T(x0 - 14, y0 + 3 * h / 4 + 14, 'no new order', { fs: 9, a: 'end', op: .7 });
o += T(x0 + w / 4, y0 + h + 22, 'Ļ high Ā· surprising', { fs: 11, w: 700, a: 'middle', ff: MONO }) + T(x0 + w / 4, y0 + h + 36, 'the crowd did not predict it', { fs: 9, a: 'middle', op: .7 });
o += T(x0 + 3 * w / 4, y0 + h + 22, 'Ļ low Ā· expected', { fs: 11, w: 700, a: 'middle', ff: MONO }) + T(x0 + 3 * w / 4, y0 + h + 36, 'the crowd predicted it', { fs: 9, a: 'middle', op: .7 });
o += T(W / 2, H - 6, 'syntropy J(Ļā) = D_KL(Ļā ā uniform): bits of distance from noise Ā· surprise Ļ: the serum, your claim against the crowd\'s prediction of itself', { fs: 9, a: 'middle', op: .6 });
return svgo(W, H, 'surprising syntropy: two filters', o);
};
/* the tri-kernel: three local maps blended into one contraction */
const triFig = () => {
const W = 760, H = 230; let o = '';
const maps = [['diffusion', 'D', 'a random walk along links', COLS[2]], ['springs', 'S', 'linked particles pull together', COLS[3]], ['heat', 'H', 'e^{āĻL} Ā· smoothing', COLS[1]]];
maps.forEach(([n, sym, d, col], k) => {
const cx = 110 + k * 200, cy = 90;
o += `<circle cx="${cx}" cy="${cy}" r="52" fill="${col}" fill-opacity=".1" stroke="${col}" stroke-width="1.5"/>`;
const pts = [[0, -30], [28, -8], [18, 26], [-18, 26], [-28, -8]];
pts.forEach(([x, y], i) => { const [x2, y2] = pts[(i + 1) % 5]; o += `<line x1="${cx + x}" y1="${cy + y}" x2="${cx + x2}" y2="${cy + y2}" stroke="${col}" stroke-opacity=".7"/>`; });
if (k === 0) pts.forEach(([x, y], i) => { o += `<line x1="${cx + x}" y1="${cy + y}" x2="${cx + x * .3}" y2="${cy + y * .3}" stroke="${col}" stroke-opacity=".5" marker-end="url(#ah4)">` ; });
if (k === 1) pts.forEach(([x, y], i) => { const [x2, y2] = pts[(i + 2) % 5]; o += `<line x1="${cx + x}" y1="${cy + y}" x2="${cx + x2}" y2="${cy + y2}" stroke="${col}" stroke-opacity=".35" stroke-dasharray="2 3"><animate attributeName="stroke-dashoffset" values="0;-10" dur="1s" repeatCount="indefinite"/></line>`; });
if (k === 2) for (let r = 10; r <= 40; r += 10) o += `<circle cx="${cx}" cy="${cy}" r="${r}" fill="none" stroke="${col}" stroke-opacity="${.5 - r / 100}">` ;
pts.forEach(([x, y]) => { o += `<circle cx="${cx + x}" cy="${cy + y}" r="3.5" fill="${col}"/>`; });
o += T(cx, cy + 74, `${n} Ā· ${sym}`, { fs: 13, w: 700, a: 'middle' }) + T(cx, cy + 90, d, { fs: 9, a: 'middle', op: .7 });
if (k < 2) o += T(cx + 100, cy + 5, '+', { fs: 22, w: 700, a: 'middle', op: .6 });
});
o += `<defs><marker id="ah4" markerWidth="6" markerHeight="6" refX="5" refY="3" orient="auto"><path d="M0,0 L6,3 L0,6 z" fill="${COLS[2]}" fill-opacity=".7"/></marker></defs>`;
o += T(380, 205, 'Ļ ā Ī»_dĀ·D(Ļ) + Ī»_sĀ·S(Ļ) + Ī»_hĀ·H(Ļ) Īŗ = Ī»_d·α + Ī»_sĀ·āLā/(āLā+μ) + Ī»_hĀ·e^{āĻĪ»ā} < 1', { fs: 11, w: 700, a: 'middle', ff: MONO });
o += T(380, 222, 'three local operators, one blend; each step moves at most Īŗ of the way ā so the iteration must stop somewhere, and only in one place', { fs: 9, a: 'middle', op: .65 });
return svgo(W, H, 'the tri-kernel', o);
};
/* kelvin versioning: layers freeze from the bottom */
const kelvinFig = () => {
const W = 760, H = 230; let o = '';
const L = [['nox', '0 K', 'frozen Ā· 18 instructions, one field, one hash, one reduction', 1], ['hemera', 'candidate', 'the hash Ā· parameters under review', .8], ['strata Ā· trident', 'cooling', 'the field algebra Ā· the compiler', .6], ['joy Ā· zheng', 'warm', 'the runtime Ā· the proofs', .4], ['cybergraph Ā· foculus', 'warm', 'the book Ā· consensus', .25]];
L.forEach(([n, t, d, cold], i) => {
const y = 20 + i * 38, col = cold > .7 ? COLS[4] : cold > .5 ? COLS[5] : COLS[1];
o += `<rect x="40" y="${y}" width="680" height="30" rx="6" fill="${col}" fill-opacity="${.06 + cold * .18}" stroke="${col}" stroke-opacity="${.3 + cold * .6}"/>`;
o += T(54, y + 20, n, { fs: 12, w: 700 }) + T(300, y + 20, t, { fs: 11, c: col, ff: MONO }) + T(708, y + 20, d, { fs: 9.5, a: 'end', op: .7 });
if (i === 0) o += `<rect x="40" y="${y}" width="680" height="30" rx="6" fill="none" stroke="#fff" stroke-opacity=".6"><animate attributeName="stroke-opacity" values=".2;.8;.2" dur="3s" repeatCount="indefinite"/></rect>`;
});
o += T(380, 222, 'temperatures only drop Ā· a frozen layer takes no proposals Ā· a program written today proves the same way in fifty years', { fs: 9, a: 'middle', op: .6 });
return svgo(W, H, 'kelvin versioning', o);
};
/* the loop the money closes */
const loopFig = () => {
const W = 760, H = 230; let o = '';
const N = [['learn', 'a link sharpens Ļā', COLS[3]], ['mint', 'ĪĻāŗ proven ā CYB', COLS[4]], ['spend', 'inference Ā· storage Ā· bandwidth', COLS[6]], ['grow', 'a better model, for free', COLS[1]]];
const cx = 380, cy = 112, R = 78;
N.forEach(([n, d, col], i) => {
const a = -Math.PI / 2 + i * Math.PI / 2, x = cx + Math.cos(a) * 250, y = cy + Math.sin(a) * R;
o += `<rect x="${x - 70}" y="${y - 22}" width="140" height="44" rx="10" fill="${col}" fill-opacity=".14" stroke="${col}"/>` + T(x, y - 3, n, { fs: 13, w: 700, a: 'middle' }) + T(x, y + 13, d, { fs: 9, a: 'middle', op: .75 });
const g = .36, s1 = a + g, s2 = a + Math.PI / 2 - g, p1 = [cx + Math.cos(s1) * 250, cy + Math.sin(s1) * R], p2 = [cx + Math.cos(s2) * 250, cy + Math.sin(s2) * R];
o += `<path d="M${p1[0].toFixed(1)},${p1[1].toFixed(1)} A250,${R} 0 0 1 ${p2[0].toFixed(1)},${p2[1].toFixed(1)}" fill="none" stroke="currentColor" stroke-opacity=".4" stroke-width="1.5" marker-end="url(#ah5)"/>`;
});
o += `<defs><marker id="ah5" markerWidth="8" markerHeight="8" refX="6" refY="4" orient="auto"><path d="M0,0 L8,4 L0,8 z" fill="currentColor" fill-opacity=".6"/></marker></defs>`;
o += T(cx, cy + 4, '$CYB', { fs: 22, w: 700, a: 'middle' }) + T(cx, cy + 22, 'the money of information', { fs: 9.5, a: 'middle', op: .7 });
return svgo(W, H, 'the loop the money closes', o);
};
/* three invariants of privacy */
const privacyFig = () => {
const W = 760, H = 170; let o = '';
const C = [['the link is public', 'the author is private', 'p ā q is seen; which neuron signed is not'], ['balances are private', 'transfers are private', 'stealth addresses and veil'], ['settlement reveals nothing', 'beyond public aggregates', 'a miner\'s neighbourhood stays dark']];
C.forEach(([a, b, d], i) => {
const x = 40 + i * 232;
o += `<rect x="${x}" y="20" width="216" height="120" rx="12" fill="currentColor" fill-opacity=".05" stroke="currentColor" stroke-opacity=".25"/>`;
o += `<circle cx="${x + 108}" cy="52" r="12" fill="none" stroke="${COLS[5]}" stroke-width="1.5"/><rect x="${x + 100}" y="52" width="16" height="12" rx="2" fill="${COLS[5]}"/>`;
o += T(x + 108, 88, a, { fs: 11.5, w: 700, a: 'middle' }) + T(x + 108, 104, b, { fs: 11.5, w: 700, a: 'middle' }) + T(x + 108, 124, d, { fs: 9, a: 'middle', op: .7 });
});
o += T(380, 162, 'privacy is the third leg of truth: it removes the channel through which a false consensus is coordinated', { fs: 9, a: 'middle', op: .6 });
return svgo(W, H, 'speak without fear', o);
};
/* every weight has an author */
const traceFig = () => {
const W = 760, H = 150; let o = '';
const cols = [['an answer', 'any output of the model', COLS[3]], ['weights', 'the parameters it used', COLS[3]], ['cyberlinks', 'where the weights came from', COLS[1]], ['neurons', 'who signed them Ā· paid', COLS[0]]];
cols.forEach(([n, d, col], i) => { const x = 40 + i * 180; o += `<rect x="${x}" y="30" width="150" height="60" rx="10" fill="${col}" fill-opacity=".12" stroke="${col}"/>` + T(x + 75, 55, n, { fs: 13, w: 700, a: 'middle' }) + T(x + 75, 74, d, { fs: 8.5, a: 'middle', op: .75 }); if (i < 3) o += `${ x + 178}" y2="60" stroke="currentColor" stroke-opacity=".5" marker-end="url(#ah6)"/>`; });
o += `<defs><marker id="ah6" markerWidth="8" markerHeight="8" refX="6" refY="4" orient="auto"><path d="M0,0 L8,4 L0,8 z" fill="currentColor" fill-opacity=".6"/></marker></defs>`;
o += T(380, 125, 'attribution is a lookup, not interpretability research Ā· alignment is a number: D_KL between human and machine focus', { fs: 9.5, a: 'middle', op: .65 });
return svgo(W, H, 'every weight has an author', o);
};
/* ------------------------------------------------------------------ the cybergraph renderer (real data when graph.json is present) */
const cyberGraph = (() => {
let data = null, cv, ctx, raf = 0, t0 = 0, W = 0, H = 0, mx = -1e9, my = -1e9, adj = null, lastHov = -1;
const synth = () => { const n = 900, nodes = [], links = []; for (let i = 0; i < n; i++) nodes.push([`synth${i}`, 1, Math.random(), Math.random()]); for (let i = 1; i < n; i++) { const j = Math.floor(Math.pow(Math.random(), 2.2) * i); links.push([i, j]); nodes[j][1]++; nodes[i][1]++; } return { meta: { source: 'synthetic preferential attachment (graph.json not found)', particles_total: n, links_total: links.length, sampled_particles: n, sampled_links: links.length, synthetic: true }, nodes, links }; };
const load = async () => { try { const r = await fetch('graph.json'); if (!r.ok) throw 0; data = await r.json(); } catch { data = synth(); } prep(); if (!data.meta.synthetic) graph.setReal(data); };
let maxd = 1, cx = 0, cy = 0;
let top5 = new Set();
const prep = () => { adj = data.nodes.map(() => []); for (const [a, b] of data.links) { adj[a].push(b); adj[b].push(a); } maxd = Math.max(...data.nodes.map((n) => n[1])) || 1; top5 = new Set(data.nodes.map((n, i) => [n[1], i]).sort((a, b) => b[0] - a[0]).slice(0, 5).map((x) => x[1])); const xs = data.nodes.map((n) => n[2]), ys = data.nodes.map((n) => n[3]); cx = (Math.min(...xs) + Math.max(...xs)) / 2; cy = (Math.min(...ys) + Math.max(...ys)) / 2; const m = $('#cg-meta'); if (m) m.innerHTML = data.meta.synthetic ? `${M('k')} synthetic placeholder ā the real sample is being extracted` : `sample: ${fmt(data.meta.sampled_particles)} particles Ā· ${fmt(data.meta.sampled_links)} cyberlinks Ā· 400 hubs + 800 particles linked into them Ā· outer ring = sampled particles with no in-sample link Ā· hover a particle ${M('m')}`; };
const draw = () => {
if (!cv || !data) return;
const dpr = devicePixelRatio; W = cv.width = cv.clientWidth * dpr; H = cv.height = cv.clientHeight * dpr;
const t = (performance.now() - t0) / 1000, ang = t * .04, s = Math.min(W, H) * .56, zoom = (1 + .05 * Math.sin(t * .4)) * userZoom;
const P = data.nodes.map((n) => { const x = (n[2] - cx) * zoom, y = (n[3] - cy) * zoom; const c = Math.cos(ang), sn = Math.sin(ang); return [W / 2 + (x * c - y * sn) * 2 * s, H / 2 + (x * sn + y * c) * 2 * s * .92]; });
let hov = -1, hd = 18 * dpr; P.forEach((p, i) => { const d = Math.hypot(p[0] - mx, p[1] - my); if (d < hd) { hd = d; hov = i; } }); lastHov = hov; if (hov < 0 && pinned >= 0) hov = pinned;
ctx.clearRect(0, 0, W, H);
ctx.lineWidth = .6 * dpr; ctx.strokeStyle = COLS[0]; ctx.globalAlpha = hov < 0 ? .22 : .08;
ctx.beginPath(); for (const [a, b] of data.links) { ctx.moveTo(P[a][0], P[a][1]); ctx.lineTo(P[b][0], P[b][1]); } ctx.stroke();
const nb = hov < 0 ? null : new Set(adj[hov]);
if (nb) { ctx.lineWidth = 1 * dpr; ctx.strokeStyle = '#fff'; ctx.globalAlpha = .85; ctx.beginPath(); for (const j of nb) { ctx.moveTo(P[hov][0], P[hov][1]); ctx.lineTo(P[j][0], P[j][1]); } ctx.stroke(); }
data.nodes.forEach((n, i) => { const d = n[1] / maxd, r = (1 + 9 * Math.sqrt(d)) * dpr; const lit = nb && (nb.has(i) || i === hov); ctx.globalAlpha = lit ? 1 : (nb ? .25 : .55 + .45 * d); ctx.fillStyle = lit ? '#fff' : d > .35 ? '#fff' : COLS[0]; ctx.beginPath(); ctx.arc(P[i][0], P[i][1], r, 0, Math.PI * 2); ctx.fill(); });
const labs = [...top5].map((i) => [i, P[i][1]]).sort((a, b) => a[1] - b[1]); for (let k = 1; k < labs.length; k++) if (labs[k][1] - labs[k - 1][1] < 13 * dpr) labs[k][1] = labs[k - 1][1] + 13 * dpr;
ctx.globalAlpha = .9; ctx.fillStyle = '#fff'; ctx.font = `${10 * dpr}px ${MONO}`; for (const [i, ly] of labs) { const r = (1 + 9 * Math.sqrt(data.nodes[i][1] / maxd)) * dpr; ctx.fillText(`${fmt(data.nodes[i][1])} links`, P[i][0] + r + 3 * dpr, ly + 3 * dpr); }
if (hov >= 0) { const n = data.nodes[hov]; ctx.font = `${11 * dpr}px ${MONO}`; ctx.fillStyle = '#fff'; ctx.globalAlpha = 1; ctx.fillText(`${n[0]} Ā· ${fmt(n[1])} links on chain Ā· ${adj[hov].length} in sample`, 12 * dpr, 18 * dpr); }
ctx.globalAlpha = 1; raf = requestAnimationFrame(draw);
};
let userZoom = 1, pinned = -1;
const onMove = (e) => { const r = cv.getBoundingClientRect(); mx = (e.clientX - r.left) * devicePixelRatio; my = (e.clientY - r.top) * devicePixelRatio; };
const onWheel = (e) => { e.preventDefault(); e.stopPropagation(); userZoom = Math.min(4, Math.max(.6, userZoom * (e.deltaY > 0 ? .92 : 1.08))); };
const run = (init) => { let phi = null, lastD = 0; return { step() { if (!data) return null; if (!phi) { phi = data.nodes.map(() => init === 'random' ? Math.random() : 1); const z = phi.reduce((a, b) => a + b, 0); phi = phi.map((v) => v / z); } const next = phi.map((v, i) => { const nb = adj[i]; if (!nb.length) return .15 / data.nodes.length; let sum = 0; for (const j of nb) sum += phi[j] / Math.max(1, adj[j].length); return .15 / data.nodes.length + .85 * sum; }); let d = 0; for (let i = 0; i < phi.length; i++) d += Math.abs(next[i] - phi[i]); phi = next; const kap = lastD ? d / lastD : null; lastD = d; return { d, kap }; }, get phi() { return phi; }, reset() { phi = null; lastD = 0; } }; };
const runA = run('uniform'); const iterate = () => runA.step();
return { iterate, run, load() { if (!data) load(); }, start() { cv = $('#cg'); if (!cv) return; ctx = cv.getContext('2d'); cv.onmousemove = onMove; cv.onmouseleave = () => { mx = my = -1e9; }; cv.onwheel = onWheel; cv.onclick = () => { pinned = pinned === lastHov ? -1 : lastHov; sfx.tick(); }; t0 = t0 || performance.now(); if (!data) load().then(() => { if (!raf) draw(); }); else if (!raf) draw(); }, stop() { cancelAnimationFrame(raf); raf = 0; } };
})();
/* ------------------------------------------------------------------ slides
layout grammar: 'one' = statement/figure column (900px, left-aligned); default = two columns (text | figure or panel) */
const S = [
/* 01 Ā· superintelligence */
{ ch: 0, cls: 'one', html: `
<div><p class="kick">cyber Ā· a frozen protocol for collective lifeforms</p>
<p class="hero-word">cyber</p>
<h2>the <em>superintelligence.</em></h2>
<p class="lead">one focus over everything known, computed from every mind that pays to teach, proven to see what no member sees alone. the graph is the training data. the weights are public. the money is minted when the network learns.</p>
<div class="tiles"><div class="tile"><b>one focus Ā· Ļā</b>unique, the same on every node</div><div class="tile"><b>compiled, not trained</b>bostrom ā transformer in 62 s</div><div class="tile"><b>frozen foundations</b>one field Ā· one hash Ā· one proof</div><div class="tile"><b>a network of moneys</b>CYB is the root</div></div>
<p class="kbd">ā or space to move Ā· you will mine as you read</p></div>` },
{ ch: 0, cls: 'ink', html: `
<div><p class="kick">01 Ā· superintelligence Ā· the definition</p><h2>superintelligence<br><em>is a number.</em></h2>
<p class="lead">run the same engine on one neuron's private view, then on the whole graph, and score both on prediction. the gap is superadditivity. emergence stops being philosophy the moment it has an error bar.</p>
<p class="mute">no individual ant understands the colony. the colony understands itself.</p></div>
<div class="nums"><div class="n"><big>Īŗ < 1</big><small>the kernel contracts Ā· a theorem</small></div><div class="n"><big>Ļ<span class="f">_best</span> > 0</big><small>the graph out-predicts its strongest neuron Ā· 34-node benchmark ${M('m')}</small></div><div class="n"><big>1</big><small>fixed point Ā· ranks, prices and compiles</small></div><div class="n"><big>0</big><small>votes between a claim and its rank</small></div></div>` },
{ ch: 0, cls: 'one', bridge: 'a graph like this accepts exactly one kind of statement. that is the anatomy.', html: `
<div><p class="kick">01 Ā· superintelligence Ā· the cybergraph Ā· bostrom, sealed 2026-08-05</p>
<h2>this is the <em>cybergraph.</em></h2>
<div class="cgwrap"><canvas id="cg"></canvas><div class="cgcap"><span id="cg-meta">loadingā¦</span><span>3,143,650 particles Ā· 2,949,732 cyberlinks Ā· 61,675 neurons ${M('m')}</span></div></div>
<p class="mute">every dot is a content-addressed file; every line a staked claim that two of them belong together. no editor, no schema, no operator. hover a particle.</p></div>` },
/* 02 Ā· anatomy */
{ ch: 1, cls: 'one wash', html: `
<div><p class="kick">02 Ā· anatomy Ā· the cyberlink</p><h2>the only statement<br><em>the graph accepts.</em></h2>
${linkFig()}
<p class="mute">five stored fields, three concepts. there is no type field: a label is itself a cyberlink onto the edge, so relation types are ranked like everything else.</p></div>` },
{ ch: 1, cls: 'one wash', html: `
<div><p class="kick">02 Ā· anatomy Ā· the signal</p><h2>a message that<br><em>carries its own proof.</em></h2>
${signalFig()}
<p class="mute"><span class="f">s = (ν, ā, ĪĻā, Ļ, prev, mc, vdf, step, nonce)</span> Ā· who, what, how much the picture sharpened, and one zheng proof over all of it. any verifier runs decide(Ļ) in O(log n). the unit of gossip, of settlement, and of mining.</p></div>` },
{ ch: 1, cls: 'ink', bridge: 'statements pile up. what makes one picture out of millions of them? the kernel.', html: `
<div><p class="kick">02 Ā· anatomy Ā· do it</p><h2>link two things.<br><em>you just grew the graph.</em></h2>
<p class="lead">the kernel reruns with your link and without it; the downhill difference in Ļā is yours. a perfect copy moves focus by zero: copying earns nothing.</p></div>
<div class="panel"><label>this</label><input type="text" id="link-a" placeholder="a thing you know" value="proof of work"><div class="chips" id="chips-a"></div><label>belongs with</label><input type="text" id="link-b" placeholder="what it belongs with" value="Shapley sampling"><div class="chips" id="chips-b"></div><div class="row"><button class="btn" id="link-go">link Ā· stake it</button><span class="fine">a throwaway neuron in your browser ${M('k')}</span></div><div class="out" id="link-out">your links land in the graph behind this deck.</div></div>` },
/* 03 Ā· focus */
{ ch: 2, cls: 'one wash', html: `
<div><p class="kick">03 Ā· focus Ā· here the magic starts</p><h2>three local maps,<br><em>one contraction.</em></h2>
${triFig()}
<div class="panel slim"><div class="cbars" id="kernel-chart"></div><div class="row"><button class="btn" id="kernel-run">iterate Ć12</button><span class="hash" id="kernel-delta" style="margin:0">āĪĻā per step on the real sample ā press iterate</span><span class="count" id="kernel-iter" style="font-size:26px;margin-left:auto">0</span></div></div></div>` },
{ ch: 2, cls: 'ink', html: `
<div><p class="kick">03 Ā· focus Ā· the fixed point</p><h2>any start.<br><em>the same end.</em></h2>
<p class="lead">a contraction has exactly one fixed point (Banach); on a token-weighted graph it is a positive distribution (PerronāFrobenius). call it Ļā: the only place the iteration can stop.</p>
<p class="mute">the same number on every node. computable from an O(log 1/ε)-hop neighbourhood. reached in a constant number of steps, so it can be proven.</p></div>
<div class="panel"><label>two strangers, one focus Ā· two random starts on the real sample</label><div class="cbars" id="unique-chart"></div><div class="row"><button class="btn" id="unique-run">run both</button><span class="hash" id="unique-out" style="margin:0">āĻ_A ā Ļ_Bāā ā</span></div><p class="fine">from unrelated starts the two runs meet to within 10ā»ā¶: uniqueness demonstrated, not asserted ${M('k')}</p></div>` },
{ ch: 2, cls: 'one wash', bridge: 'one focus, on every world. a focus is a distribution ā and a distribution can be compiled.', html: `
<div><p class="kick">03 Ā· focus Ā· interplanetary</p><h2>one mind <em>across worlds.</em></h2>
${planetFig()}
<p class="mute">earth to mars is 4ā24 minutes one way; every protocol that counts votes is already dead at that distance. here a fact is final when enough attention has gathered ā an information condition, not a clock. each planet is its own pond; a dark link freezes trade and never invents two truths.</p></div>` },
/* 04 Ā· compile */
{ ch: 3, cls: 'one wash', html: `
<div><p class="kick">04 Ā· compile Ā· the pitch</p><h2>we compile the graph<br><em>into a transformer.</em></h2>
${compileFig()}
<p class="mute">attention is one step of the same convergent system that computes Ļā. so a transformer's three free parameters are read off the graph ā its covariance, its dialects, its diameter ā and the weights are compiled from structure, not learned from text.</p></div>` },
{ ch: 3, cls: 'ink', html: `
<div><p class="kick">04 Ā· compile Ā· the bootloader corpus, compiled</p><h2>62 seconds.<br><em>the whole chain's mind.</em></h2>
<p class="lead">the final bostrom snapshot ā 2,949,732 cyberlinks over 3,143,650 particles ā compiled into a transformer on one machine with 20 GB of RAM.</p></div>
<div class="nums"><div class="n"><big>31</big><small>dā Ā· embedding dimension = <span class="f">exp H(Ļ(Ī£_Ļā))</span> ${M('m')}
Ļ 0.0%
10786 words Ā· 54 min
/* cyber ā the superintelligence Ā· interactive deck
a frozen protocol for collective lifeforms. 7 chapters Ć 3 slides. the graph behind you grows with what you do.
marks: ā measured Ā· ā target Ā· ā mock (a browser simulation, not the chain) */
;
cy=/>`;
const y ? B - r - : B + r + 2, y ? B - r - : B + r + stem;
o += `<line xlet a = , tx = xx;
const ty = side > ? y : y2 + 12;
const rows = side > ? [, , ] : ;
o += ;
}
return ;
};
/* a cyberlink, exploded */
const ;
/* a signal, exploded: s = (ν, āā, ĪĻā, Ļ, prev, mc, vdf, step, nonce) */
const + ;
o += ;
return ;
};
/* graph ā transformer */
const ;
/* earth ā mars: finality is an information condition, not a clock */
const ;
// light path
o += `<line x1="200" y1="120" x2="580" y2="120" stroke="currentColor" stroke-opacity=".35" stroke-dasharray="6 6"/>`;
o += `<circle cx="300" cy="120" r="3" fill="#fff"><animate attributeName="cx" values="200;580" dur="6s" repeatCount="indefinite"/></circle>`;
o += ;
o += ;
// rule box
o += `<rect x="250" y="190" width="280" height="54" rx="10" fill="currentColor" fill-opacity=".06" stroke="currentColor" stroke-opacity=".3"/>`;
o += ;
o += ;
o += ;
o += ;
return ;
};
/* surprising syntropy: two filters, one quadrant pays */
const ;
/* the tri-kernel: three local maps blended into one contraction */
const ;
o += `<defs><marker id="ah4" markerWidth="6" markerHeight="6" refX="5" refY="3" orient="auto"><path d="M0,0 L6,3 L0,6 z" fill="" fill-opacity=".7"/></marker></defs>`;
o += ;
o += ;
return ;
};
/* kelvin versioning: layers freeze from the bottom */
const ;
/* the loop the money closes */
const ;
/* three invariants of privacy */
const ;
/* every weight has an author */
const ;
/* ------------------------------------------------------------------ the cybergraph renderer (real data when graph.json is present) */
const cyberGraph = ā„ 12hā Ā· attention heads Ā· dialect bound ${M('m')}</small></div><div class="n"><big>290</big><small>Lā Ā· layers = diam 10 Ć 29 steps per hop ${M('m')}
~62scompilation Ā· ~0.4M parameters Ā· one machine ${M('m')}</small></div></div>` },
{ ch: 3, cls: 'one wash', bridge: 'a model worth having is worth paying for. who is paid, and for what? order.', html: `
<div><p class="kick">04 Ā· compile Ā· a public mind</p><h2>every weight<br><em>has an author.</em></h2>
${traceFig()}
<p class="mute">the weights are public, the training data is an open graph, the inference runs in consensus with proofs. no training run: as the graph grows, each recompilation produces a structurally better model from the same pipeline.</p></div>` },
/* 05 Ā· syntropy */
{ ch: 4, cls: 'one wash', html: `
<div><p class="kick">05 Ā· syntropy Ā· the law</p><h2>the mint pays for<br><em>surprising syntropy.</em></h2>
${syntropyFig()}
<p class="mute">syntropy is order: bits of distance from noise ā the quantity the compiler reads. surprise is the serum: your claim against the crowd's prediction of itself. one quadrant pays, by Shapley share. copies, idle capital and noise mint exactly nothing.</p></div>` },
{ ch: 4, html: `
<div><p class="kick">05 Ā· syntropy Ā· do it</p><h2>mine a settlement.<br><em>the hash is the accounting.</em></h2>
<p class="lead">no synthetic puzzle. the nonce you grind indexes one random ordering of contributors; the marginal it produces is one Shapley sample. securing the chain and computing who deserves credit are one act.</p></div>
<div class="panel"><label>cluster Ā· 4 contributors (you are one)</label><div class="hash" id="mine-hash">press sample</div><div class="bars" id="mine-bars"></div><div class="tickets" id="mine-tickets"></div><div class="row"><button class="btn" id="mine-go">sample Ć100</button><button class="btn ghost" id="mine-auto">auto</button><span class="fine" id="mine-stat">0 samples Ā· 0 tickets ${M('k')}</span></div><div class="out" id="mine-out">a ticket is a sample whose hash clears the difficulty; each carries its own proof and folds into one accumulator per cluster.</div></div>` },
{ ch: 4, cls: 'ink', bridge: 'a mint this precise must never move under you. freeze it.', html: `
<div><p class="kick">05 Ā· syntropy Ā· what inflation buys</p><h2>truth. fairness.<br><em>order.</em></h2>
<p class="lead">three kinds of work no single party can fake for the others. one budget pays all three; the split between work and stake is read off the chain ā a thermostat, not a calendar.</p>
<div class="steps"><div class="step"><b>stakers ā truth</b><span>the serum pays the surprising answer</span></div><div class="step"><b>settlement miners ā fairness</b><span>every hash is a Shapley sample</span></div><div class="step"><b>folders and the beacon ā order in time</b><span>one history, one proof, one clock</span></div></div></div>
<div class="panel"><label>active staking ratio Ā· r = <span id="r-val">35</span>%</label><input type="range" id="r-range" min="0" max="100" value="35"><div class="split"><i class="w" id="split-w" style="width:65%"></i><i class="s" id="split-s" style="width:35%"></i></div><div class="split-l"><span>work Ā· settlement miners</span><span>stake Ā· active risk</span></div><div class="out" id="r-out"></div><p class="fine">idle capital buys rank and nothing else ${M('k')}</p></div>` },
/* 06 Ā· frozen */
{ ch: 5, cls: 'one wash', html: `
<div><p class="kick">06 Ā· frozen Ā· i Ā· the arithmetic</p><h2>frozen.<br><em>a protocol does not upgrade.</em></h2>
${kelvinFig()}
<p class="mute">one field, one hash, one proof path. loops bounded, no recursion, no heap, no floats, no clocks: byte-identical results on any two machines ā bostrom's 2,949,732 links rebuilt from events, identical ${M('m')}. 275 thousand lines against 39 million with LLVM ${M('m')}, written three times ā prose, rust, trident ā and the three must agree.</p></div>` },
{ ch: 5, html: `
<div><p class="kick">06 Ā· frozen Ā· ii Ā· the will</p><h2>the protocol is<br><em>itself a neuron.</em></h2>
<p class="lead">a key, a balance, will, karma. its treasury is derived from the genesis block ā no private key held by anyone. twelve tunables, one deterministic loop: it retunes itself from the graph's own Ļā, and every node agrees on the tuning. no founder steers it alone.</p>
<p class="mute">below, a claim about the protocol itself. any stake moves rank; only a bet with valence earns.</p></div>
<div class="panel"><label>claim</label><div id="stake-claim" style="font-size:15px;line-height:1.5">āproof of workā belongs with āShapley samplingā</div><label>valence</label><div class="dial" id="stake-dial"><button data-v="-1">ā1 Ā· wrong</button><button data-v="0" class="on">0 Ā· passive</button><button data-v="1">+1 Ā· right</button></div><label>amount Ā· <span id="stake-amt">10</span> tokens</label><input type="range" id="stake-range" min="1" max="100" value="10"><div class="row"><button class="btn" id="stake-go">stake</button><span class="fine" id="stake-hint"></span></div><div class="out" id="stake-out"></div></div>` },
{ ch: 5, cls: 'one wash', bridge: 'frozen rules, a living economy: the money of information, and what it buys.', html: `
<div><p class="kick">06 Ā· frozen Ā· iii Ā· the secrecy</p><h2>speak<br><em>without fear.</em></h2>
${privacyFig()}
<p class="mute">no one knows who said what, and yet everyone knows what everyone said. three invariants, all at genesis.</p></div>` },
/* 07 Ā· the money of information */
{ ch: 6, cls: 'one wash', html: `
<div><p class="kick">07 Ā· the money of information</p><h2>$CYB.<br><em>the currency of cyberia.</em></h2>
${loopFig()}
<p class="mute">born when the network learns, spent on access to what it knows: inference, storage, bandwidth, on open markets. cap <span class="f">p / 10¹²</span> = 18,446,744 CYB, arithmetic not a vote ${M('t')}; genesis 187,416 ${M('t')}. cyber is a network of moneys and CYB is the root: every other token its own household chain, value never leaving home, no bridges to exploit ${M('t')}.</p></div>` },
{ ch: 6, cls: 'one wash', html: `
<div><p class="kick">07 Ā· the money of information Ā· growth</p><h2>a graph, like a gas, <em>crosses a threshold.</em></h2>
${scaleFig()}
<div class="row" style="justify-content:space-between"><span class="mute" style="margin:0">with the incentive in place the graph grows; past the threshold only the field describes the system. on 2026-11-05 $BOOT and $PUSSY relaunch as the first two households, same keys, same balances; CYB follows in phase 3.</span><span class="count-down" id="cd" style="font-size:22px;white-space:nowrap">ā</span></div></div>` },
{ ch: 6, cls: 'ink', html: `
<div><p class="kick">07 Ā· the money of information Ā· you</p><h2>you read the deck.<br><em>you also mined.</em></h2>
<div class="neuron" id="neuron-card"></div><div class="tally"><div><b id="t-links">0</b>links<a href="#5" data-k="links">ā© link</a></div><div><b id="t-samples">0</b>samples<a href="#13" data-k="samples">ā© mine</a></div><div><b id="t-stake">0</b>at risk<a href="#16" data-k="stake">ā© stake</a></div><div><b id="t-invites">0</b>invites<a href="#20" data-k="invites">ā© invite</a></div></div>
<p class="lead">on 2026-11-05 the same acts run on bostrom and space pussy, with proofs, for real ā and every link you make there is a weight in the next compile.</p>
<div class="ctas"><a class="btn" href="https://cyb.ai" target="_blank" rel="noopener">get the robot</a><a class="btn ghost" href="https://cyber.page/litepaper/">litepaper</a><a class="btn ghost" href="https://cyber.page/whitepaper/">whitepaper</a><a class="btn ghost" href="https://cyber.page/launch/">launch tracker</a><a class="btn ghost" href="#0" id="restart">start again</a></div>
<p class="fine">${M('m')} measured Ā· ${M('t')} target Ā· ${M('k')} mock ā every number marked</p></div>
<div class="panel"><label>bring a mind Ā· your name</label><input type="text" id="ref-name" placeholder="name" value=""><div class="row"><button class="btn" id="ref-go">make my link</button><span class="fine">mentor's share Ā· 10% of the student's token at birth + fees for life Ā· proposed ${M('t')}</span></div><div class="out" id="ref-out">every neuron that joins through your link is your student. teaching is paid here.</div></div>` },
];
/* ------------------------------------------------------------------ sound Ā· synthesized, no files */
const sfx = (() => {
let ac = null, master = null, on = localStorage.getItem('cyber.sound') !== 'off', amb = null;
const ensure = () => { if (ac) return true; try { ac = new (window.AudioContext || window.webkitAudioContext)(); master = ac.createGain(); master.gain.value = .22; master.connect(ac.destination); } catch { return false; } return true; };
const resume = () => { if (ac && ac.state === 'suspended') ac.resume(); };
const tone = (f0, f1, dur, type = 'sine', g = .5, at = 0) => { if (!on || !ensure()) return; resume(); const t = ac.currentTime + at; const o = ac.createOscillator(), v = ac.createGain(); o.type = type; o.frequency.setValueAtTime(f0, t); if (f1) o.frequency.exponentialRampToValueAtTime(f1, t + dur); v.gain.setValueAtTime(0, t); v.gain.linearRampToValueAtTime(g, t + .006); v.gain.exponentialRampToValueAtTime(.0005, t + dur); o.connect(v); v.connect(master); o.start(t); o.stop(t + dur + .02); };
const noise = (dur, g = .3, hp = 2000) => { if (!on || !ensure()) return; resume(); const t = ac.currentTime; const n = ac.sampleRate * dur | 0, b = ac.createBuffer(1, n, ac.sampleRate), d = b.getChannelData(0); for (let i = 0; i < n; i++) d[i] = (Math.random() * 2 - 1) * (1 - i / n); const src = ac.createBufferSource(); src.buffer = b; const f = ac.createBiquadFilter(); f.type = 'highpass'; f.frequency.value = hp; const v = ac.createGain(); v.gain.value = g; src.connect(f); f.connect(v); v.connect(master); src.start(t); };
const ambient = (start) => { if (!ensure()) return; if (start && !amb && on) { const v = ac.createGain(); v.gain.value = 0; v.connect(master); const f = ac.createBiquadFilter(); f.type = 'lowpass'; f.frequency.value = 220; f.connect(v); const os = [55, 55.4, 82.5].map((fr) => { const o = ac.createOscillator(); o.type = 'triangle'; o.frequency.value = fr; o.connect(f); o.start(); return o; }); v.gain.linearRampToValueAtTime(.06, ac.currentTime + 4); amb = { v, os }; } if (!start && amb) { amb.v.gain.linearRampToValueAtTime(0, ac.currentTime + 1); const a = amb; amb = null; setTimeout(() => a.os.forEach((o) => o.stop()), 1200); } };
const NOTES = [220, 246.9, 277.2, 329.6, 370, 440, 493.9];
return {
get on() { return on; },
toggle() { on = !on; localStorage.setItem('cyber.sound', on ? 'on' : 'off'); if (on) { ensure(); resume(); ambient(true); tone(660, 990, .12, 'sine', .4); } else ambient(false); return on; },
wake() { if (on && ensure()) { resume(); ambient(true); } },
tick() { noise(.02, .25, 3000); tone(1800, 1200, .03, 'square', .08); },
move(dir, ch) { noise(.03, .2, 1500); tone(dir > 0 ? 440 : 520, dir > 0 ? 560 : 400, .08, 'sine', .25); if (ch != null) { const r = NOTES[ch]; tone(r, null, .5, 'sine', .18, .04); tone(r * 1.5, null, .45, 'sine', .1, .08); } },
link() { tone(880, 1320, .16, 'sine', .35); tone(1320, 1760, .22, 'triangle', .18, .1); },
hash() { noise(.012, .12, 4000); },
ticket() { tone(1760, 1750, .35, 'sine', .3); tone(2640, 2630, .25, 'sine', .12, .02); },
converge(d) { const f = 220 + 1200 * Math.min(1, Math.max(0, (-Math.log10(Math.max(d, 1e-9)) - 1) / 7)); tone(f, f * 1.02, .07, 'triangle', .22); },
stake(v) { tone(v ? 160 : 110, 60, .25, 'sine', .45); noise(.05, .15, 800); },
mentor() { [0, 2, 4, 6].forEach((k, i) => tone(NOTES[k] * 2, null, .3, 'sine', .22, i * .09)); },
chord(ch) { const r = NOTES[ch]; [1, 1.25, 1.5, 2].forEach((m, i) => tone(r * m, null, .9, 'sine', .14, i * .05)); },
};
})();
/* count-up for integer figures */
const countUp = (slide) => { slide.querySelectorAll('.n big').forEach((b) => { if (b.dataset.done) return; const raw = b.firstChild && b.firstChild.nodeType === 3 ? b.firstChild.nodeValue.trim() : ''; if (!/^[\d,]+$/.test(raw)) return; const target = +raw.replace(/,/g, ''); if (!target || target < 100) return; b.dataset.done = 1; const t0 = performance.now(); const step = (t) => { const k = Math.min(1, (t - t0) / 900), e = 1 - Math.pow(1 - k, 3); b.firstChild.nodeValue = Math.round(target * e).toLocaleString('en-US'); if (k < 1) requestAnimationFrame(step); }; requestAnimationFrame(step); }); };
/* ------------------------------------------------------------------ build */
const deck = $('#deck'), segs = $('#segs');
S.forEach((s, i) => {
const d = el(`<section class="slide ch${s.ch} ${s.cls || ''}" data-i="${i}" data-ch="${String(s.ch + 1).padStart(2, '0')}" style="--c:${CH[s.ch].c}">
${s.html}</div>${s.bridge ? `
ā ${s.bridge}</p>` : ''}</section>`);
deck.appendChild(d);
});
CH.forEach((c, i) => {
const n = S.filter((s) => s.ch === i).length;
const d = el(`<div class="seg" style="--sc:${c.c}" data-ch="${i}"><div class="fill"></div><span class="lab">${String(i + 1).padStart(2, '0')} ${c.name}</span></div>`);
d.addEventListener('click', () => go(S.findIndex((s) => s.ch === i)));
d.dataset.n = n; segs.appendChild(d);
});
let cur = -1, auto = null;
const go = (i) => {
i = Math.max(0, Math.min(S.length - 1, i));
if (i === cur) return;
const dir = i > cur ? 1 : -1, prevCh = cur >= 0 ? S[cur].ch : -1;
cur = i;
deck.dataset.dir = dir;
document.querySelectorAll('.slide').forEach((s, k) => { s.classList.toggle('on', k === i); s.classList.toggle('left', k < i); });
sfx.move(dir, S[i].ch !== prevCh ? S[i].ch : null);
if (navigator.vibrate) navigator.vibrate(8);
graph.pulse();
countUp(document.querySelectorAll('.slide')[i]);
requestAnimationFrame(() => requestAnimationFrame(fit));
$('#pos').textContent = `${String(i + 1).padStart(2, '0')} / ${S.length}`;
document.body.classList.toggle('ink', (S[i].cls || '').includes('ink'));
document.body.className = document.body.className.replace(/\bch\d\b/g, '').trim() + ' ch' + S[i].ch;
if (auto) $('#mine-auto').click();
const ch = S[i].ch, idx = S.filter((s, k) => s.ch === ch && k <= i).length, n = S.filter((s) => s.ch === ch).length;
document.querySelectorAll('.seg').forEach((sg, k) => { sg.classList.toggle('cur', k === ch); sg.classList.toggle('done', k < ch); $('.fill', sg).style.width = k < ch ? '100%' : k === ch ? (idx / n * 100) + '%' : '0'; });
history.replaceState(null, '', '#' + i);
graph.chapter(ch);
onEnter(i);
};
/* no scrolling, ever: measure the active slide and scale it to the viewport; drop optional text first */
const fit = () => {
const sl = document.querySelectorAll('.slide')[cur]; if (!sl) return;
const body = sl.querySelector('.body');
Object.assign(body.style, { transform: '', width: '', height: '', maxHeight: '', margin: '' }); sl.classList.remove('tight', 'tighter', 'scaled');
const availW = body.clientWidth, availH = body.clientHeight;
const over = () => body.scrollHeight > availH + 1 || body.scrollWidth > availW + 1;
if (!over()) return;
sl.classList.add('tight'); if (!over()) return;
sl.classList.add('tighter'); if (!over()) return;
let z = Math.min(availH / body.scrollHeight, availW / body.scrollWidth);
sl.classList.add('scaled');
for (let k = 0; k < 5; k++) {
z = Math.max(.4, Math.floor(z * 100) / 100);
Object.assign(body.style, { width: availW / z + 'px', height: availH / z + 'px', maxHeight: 'none', margin: '0', transform: `scale(${z})` });
if (body.scrollHeight <= availH / z + 1 && body.scrollWidth <= availW / z + 1) break;
z *= .96;
}
};
let fitT = 0; const refit = () => { clearTimeout(fitT); fitT = setTimeout(fit, 40); };
addEventListener('resize', refit); addEventListener('orientationchange', refit); document.fonts?.ready.then(refit);
window.deckGo = go; window.deckCount = () => S.length; window.deckFit = fit;
$('#prev').onclick = () => go(cur - 1); $('#next').onclick = () => go(cur + 1);
document.addEventListener('keydown', (e) => {
if (e.target.tagName === 'INPUT' || (e.target.tagName === 'BUTTON' && [' ', 'Enter'].includes(e.key))) return;
if (['ArrowRight', ' ', 'PageDown', 'ArrowDown'].includes(e.key)) { e.preventDefault(); go(cur + 1); }
if (['ArrowLeft', 'PageUp', 'ArrowUp'].includes(e.key)) { e.preventDefault(); go(cur - 1); }
if (e.key === 'Home') go(0); if (e.key === 'End') go(S.length - 1);
});
let wheelLock = 0;
document.addEventListener('wheel', (e) => { if (e.target.closest('.panel,.body') && e.target.closest('.body')?.scrollHeight > e.target.closest('.body')?.clientHeight + 4) return; const t = Date.now(); if (t - wheelLock < 700 || Math.abs(e.deltaY) < 24) return; wheelLock = t; go(cur + (e.deltaY > 0 ? 1 : -1)); }, { passive: true });
let tx = null, ty = 0; document.addEventListener('touchstart', (e) => { tx = e.target.closest('input[type=range]') ? null : e.touches[0].clientX; ty = e.touches[0].clientY; }, { passive: true });
document.addEventListener('touchend', (e) => { if (tx == null) return; const dx = e.changedTouches[0].clientX - tx, dy = e.changedTouches[0].clientY - ty; if (Math.abs(dx) > 60 && Math.abs(dx) > Math.abs(dy)) go(cur + (dx < 0 ? 1 : -1)); tx = null; });
$('#restart')?.addEventListener('click', (e) => { e.preventDefault(); go(0); });
document.addEventListener('pointerdown', (e) => { sfx.wake(); if (e.target.closest('button, a, .chip, .seg, input[type=range]')) sfx.tick(); }, { passive: true });
document.addEventListener('keydown', () => sfx.wake(), { once: true });
const sndBtn = $('#snd'); const sndPaint = () => { sndBtn.textContent = sfx.on ? 'ā sound' : 'ā sound'; sndBtn.classList.toggle('off', !sfx.on); }; sndBtn.onclick = () => { sfx.toggle(); sndPaint(); }; sndPaint();
/* cursor: a dot and a lagging ring on fine pointers */
if (matchMedia('(pointer:fine)').matches) { const dot = el('<div class="cur-dot"></div>'), ring = el('<div class="cur-ring"></div>'); document.body.append(dot, ring); let rx = 0, ry = 0, tx2 = 0, ty2 = 0; addEventListener('mousemove', (e) => { tx2 = e.clientX; ty2 = e.clientY; dot.style.transform = `translate(${tx2}px,${ty2}px)`; const hot = e.target.closest('button, a, .chip, .seg, input, canvas, .fig'); ring.classList.toggle('hot', !!hot); }, { passive: true }); const lag = () => { rx += (tx2 - rx) * .18; ry += (ty2 - ry) * .18; ring.style.transform = `translate(${rx}px,${ry}px)`; requestAnimationFrame(lag); }; lag(); document.body.classList.add('has-cursor'); }
/* ------------------------------------------------------------------ yield */
const Y = { links: 0, samples: 0, stake: 0, invites: 0 };
const bump = (k, v) => { Y[k] += v; const e = $('#y-' + k); e.textContent = fmt(Y[k]); e.parentElement.classList.remove('bump'); void e.offsetWidth; e.parentElement.classList.add('bump'); const t = $('#t-' + k); if (t) t.textContent = fmt(Y[k]); };
/* ------------------------------------------------------------------ graph canvas */
const graph = (() => {
const cv = $('#graph'), ctx = cv.getContext('2d');
let W = 0, H = 0, nodes = [], edges = [], mouse = { x: -1e9, y: -1e9 }, hue = '#00ff41', pulse = 0;
const resize = () => { W = cv.width = innerWidth * devicePixelRatio; H = cv.height = innerHeight * devicePixelRatio; };
addEventListener('resize', resize); resize();
const rnd = (a, b) => a + Math.random() * (b - a);
const add = (n) => { for (let i = 0; i < n; i++) { const p = { x: rnd(0, W), y: rnd(0, H), vx: rnd(-.15, .15), vy: rnd(-.15, .15), r: rnd(1, 2.4) * devicePixelRatio, phi: Math.random(), born: performance.now(), label: null }; nodes.push(p); if (nodes.length > 1 && Math.random() < .9) { const q = nodes[Math.floor(Math.random() * (nodes.length - 1))]; edges.push([p, q]); } } };
add(70);
addEventListener('mousemove', (e) => { mouse.x = e.clientX * devicePixelRatio; mouse.y = e.clientY * devicePixelRatio; });
const colors = ['#ff1a00', '#ff7a00', '#ffc400', '#00ff41', '#00b8ff', '#1e00ff', '#7a00ff'];
let real = null, rcx = 0, rcy = 0;
const tick = () => {
ctx.clearRect(0, 0, W, H);
const t = performance.now();
if (real) { const ang = t / 1000 * .012, s = Math.max(W, H) * .62, c = Math.cos(ang), sn = Math.sin(ang); const P = real.nodes.map((n) => { const x = (n[2] - rcx), y = (n[3] - rcy); return [W * .5 + (x * c - y * sn) * 2 * s, H * .5 + (x * sn + y * c) * 2 * s]; }); ctx.lineWidth = .5 * devicePixelRatio; ctx.strokeStyle = hue; ctx.globalAlpha = .07; ctx.beginPath(); for (const [a, b] of real.links) { ctx.moveTo(P[a][0], P[a][1]); ctx.lineTo(P[b][0], P[b][1]); } ctx.stroke(); ctx.fillStyle = hue; ctx.globalAlpha = .18; for (let i = 0; i < P.length; i++) { const r = (.6 + 2.2 * Math.sqrt(real.nodes[i][1] / real.maxd)) * devicePixelRatio; ctx.beginPath(); ctx.arc(P[i][0], P[i][1], r, 0, Math.PI * 2); ctx.fill(); } }
for (const p of nodes) {
p.x += p.vx; p.y += p.vy;
if (p.x < 0 || p.x > W) p.vx *= -1; if (p.y < 0 || p.y > H) p.vy *= -1;
const dx = p.x - mouse.x, dy = p.y - mouse.y, d2 = dx * dx + dy * dy;
if (d2 < 160 * 160 * devicePixelRatio) { const d = Math.sqrt(d2) + 1; p.x += dx / d * .8; p.y += dy / d * .8; }
}
ctx.lineWidth = 1 * devicePixelRatio;
for (const [a, b] of edges) {
const age = Math.min(1, (t - Math.max(a.born, b.born)) / 1200);
ctx.strokeStyle = hue; ctx.globalAlpha = .12 + .5 * (1 - age) * (a.label || b.label ? 1 : 0) + .08 * Math.max(a.phi, b.phi);
ctx.beginPath(); ctx.moveTo(a.x, a.y); ctx.lineTo(b.x, b.y); ctx.stroke();
}
for (const p of nodes) {
const age = Math.min(1, (t - p.born) / 900);
const r = p.r * (1 + 2.5 * (1 - age)) * (1 + .6 * p.phi) + (pulse > 0 ? pulse * 2 * p.phi : 0);
ctx.globalAlpha = .55 + .45 * p.phi; ctx.fillStyle = p.label ? '#fff' : hue;
ctx.beginPath(); ctx.arc(p.x, p.y, r, 0, Math.PI * 2); ctx.fill();
if (p.label) { ctx.globalAlpha = .9; ctx.fillStyle = '#fff'; ctx.font = `${12 * devicePixelRatio}px JetBrains Mono, monospace`; ctx.fillText(p.label, p.x + 8 * devicePixelRatio, p.y - 8 * devicePixelRatio); }
}
ctx.globalAlpha = 1; pulse *= .95;
requestAnimationFrame(tick);
};
tick();
return {
chapter(c) { hue = colors[c]; },
link(a, b) {
const mk = (label) => { const p = { x: rnd(W * .3, W * .7), y: rnd(H * .3, H * .7), vx: rnd(-.1, .1), vy: rnd(-.1, .1), r: 3 * devicePixelRatio, phi: 1, born: performance.now(), label }; nodes.push(p); return p; };
const pa = nodes.find((n) => n.label === a) || mk(a), pb = nodes.find((n) => n.label === b) || mk(b);
edges.push([pa, pb]); for (let i = 0; i < 3; i++) { const q = nodes[Math.floor(Math.random() * nodes.length)]; edges.push([Math.random() < .5 ? pa : pb, q]); }
pulse = 1;
},
iterate() { for (const p of nodes) { let s = 0, n = 0; for (const [a, b] of edges) { if (a === p) { s += b.phi; n++; } if (b === p) { s += a.phi; n++; } } p.next = n ? .15 * p.phi + .85 * s / n : p.phi * .97; } let d = 0; for (const p of nodes) { d += Math.abs(p.next - p.phi); p.phi = p.next; } const m = Math.max(...nodes.map((p) => p.phi)) || 1; for (const p of nodes) p.phi = p.phi / m; return d / nodes.length; },
grow(n) { add(n); pulse = .6; },
pulse() { pulse = Math.max(pulse, .8); },
setReal(d) { real = d; real.maxd = Math.max(...d.nodes.map((n) => n[1])) || 1; const xs = d.nodes.map((n) => n[2]), ys = d.nodes.map((n) => n[3]); rcx = (Math.min(...xs) + Math.max(...xs)) / 2; rcy = (Math.min(...ys) + Math.max(...ys)) / 2; },
};
})();
/* ------------------------------------------------------------------ interactives */
const CH_A = ['proof of work', 'a wrong claim', 'light-minutes', 'my grandmother\'s recipe', 'the Landauer limit'];
const CH_B = ['Shapley sampling', 'costs the staker', 'local finality', 'a particle, forever', '3Ć10ā»Ā²Ā¹ J per bit'];
const chips = (id, list, input) => { const c = $(id); list.forEach((t) => { const b = el(`${t}</span>`); b.onclick = () => { $(input).value = t; }; c.appendChild(b); }); };
chips('#chips-a', CH_A, '#link-a'); chips('#chips-b', CH_B, '#link-b');
$('#link-go').onclick = () => {
const a = esc($('#link-a').value.trim().slice(0, 80)), b = esc($('#link-b').value.trim().slice(0, 80)); if (!a || !b) return;
if (a.toLowerCase() === b.toLowerCase()) { $('#link-out').innerHTML = 'a thing linked to itself moves focus by <b>0.0000</b> bits. copying earns nothing.'; return; }
graph.link(a, b); bump('links', 1); sfx.link();
const d = (0.0007 + Math.random() * 0.004).toFixed(4), s = (40 + Math.random() * 55).toFixed(0);
sha(a + ' ā ' + b).then((h) => { const o = $('#link-out'); o.innerHTML = o.innerHTML.replace('particle ā¦', `particle ${h}</b>`); });
$('#link-out').innerHTML = `linked ${a}</b> ā¶ <b>${b} Ā· particle ⦠(sha-256 here, hemera on mainnet)\nĪĻā +${d} bits</b> Ā· surprise <b>${s}% against the crowd's prediction Ā· your share of the shift: 100% until someone else links it ${M('k')}\n${Y.links === 1 ? 'that is what the mint pays for. nothing else.' : 'the graph behind you grew. keep going.'}`;
$('#stake-claim').textContent = `ā${a}ā belongs with ā${b}ā`;
};
const cbar = (chart, v, col) => { const b = el(`<i title="${v.toExponential(2)}"></i>`); b.dataset.v = v; if (col) b.style.background = col; chart.appendChild(b); while (chart.children.length > 36) chart.firstChild.remove(); const mx = Math.max(...[...chart.children].map((x) => +x.dataset.v)) || 1; [...chart.children].forEach((x) => { x.style.height = Math.max(2, 100 * (+x.dataset.v) / mx) + '%'; }); };
let kIter = 0; $('#kernel-run').onclick = () => { let n = 0; const chart = $('#kernel-chart'); const run = () => { const real = cyberGraph.iterate(); const d = real ? real.d : graph.iterate(); graph.iterate(); kIter++; n++; cbar(chart, d); sfx.converge(d); $('#kernel-iter').textContent = fmt(kIter); $('#kernel-delta').textContent = `āĪĻā = ${d.toExponential(2)}${real && real.kap ? ` Ā· ĪŗĢ ā ${Math.min(real.kap, .999).toFixed(3)} Ā· the bars shrink by ĪŗĢ each step` : ''}`; if (n < 12 && d > 1e-7) requestAnimationFrame(run); else if (d <= 1e-7) $('#kernel-delta').textContent += ' Ā· fixed point'; }; run(); };
$('#unique-run').onclick = () => { const chart = $('#unique-chart'); chart.innerHTML = ''; const A = cyberGraph.run('random'), B = cyberGraph.run('random'); let n = 0; const step = () => { const ra = A.step(), rb = B.step(); if (!ra) { $('#unique-out').textContent = 'sample still loading ā open the cybergraph slide first'; return; } let dist = 0; const pa = A.phi, pb = B.phi; for (let i = 0; i < pa.length; i++) dist += Math.abs(pa[i] - pb[i]); n++; cbar(chart, dist, n % 2 ? COLS[4] : '#fff'); if (n % 3 === 0) sfx.converge(dist); $('#unique-out').textContent = `step ${n} Ā· āĻ_A ā Ļ_Bāā = ${dist.toExponential(2)}`; if (n < 80 && dist > 1e-6) requestAnimationFrame(step); else { $('#unique-out').textContent += dist <= 1e-6 ? ' Ā· one focus' : ''; if (dist <= 1e-6) sfx.chord(2); } }; step(); };
const NAMES = ['you', 'archivist', 'neuron 0x3fā¦', 'sensor'];
const weights = [0, 0, 0, 0]; let samples = 0, tickets = 0;
const mineBars = $('#mine-bars'); NAMES.forEach((n, i) => mineBars.appendChild(el(`? 'me' : ''}"><span>${n}</span><i style="transform:scaleX(0)"></i><span>0%</span></div>`)));
const hex = () => Array.from({ length: 24 }, () => '0123456789abcdef'[Math.random() * 16 | 0]).join('');
const sample = (k) => {
for (let i = 0; i < k; i++) {
const order = [0, 1, 2, 3].sort(() => Math.random() - .5); let acc = 0;
for (const j of order) { const v = acc + [1.0, 1.6, .7, .4][j] * (0.6 + Math.random() * .8); weights[j] += v - acc; acc = v; }
samples++; if (Math.random() < .03) { tickets++; $('#mine-tickets').appendChild(el('<i></i>')); sfx.ticket(); }
}
const tot = weights.reduce((a, b) => a + b, 0) || 1;
[...mineBars.children].forEach((b, i) => { const f = weights[i] / tot; $('i', b).style.transform = `scaleX(${f.toFixed(3)})`; b.lastElementChild.textContent = (f * 100).toFixed(1) + '%'; });
$('#mine-hash').textContent = hex() + ' Ā· nonce ' + samples;
$('#mine-stat').innerHTML = `${fmt(samples)} samples Ā· ${tickets} tickets ${M('k')}`;
if (samples % 500 === 0 || samples <= 100) $('#mine-out').innerHTML = `your share converges as orderings accumulate. with ${fmt(samples)}</b> samples the division is already within a few percent of the exact Shapley value ā that is the whole trick: the proof-of-work <b>is</b> the accounting. ${M('k')}`;
bump('samples', k); graph.grow(Math.ceil(k / 25));
};
$('#mine-go').onclick = () => { sfx.hash(); sample(100); };
$('#mine-auto').onclick = (e) => { if (auto) { clearInterval(auto); auto = null; e.target.textContent = 'auto'; } else { auto = setInterval(() => sample(20), 120); e.target.textContent = 'stop'; } };
let valence = 0; $('#stake-dial').addEventListener('click', (e) => { const b = e.target.closest('button'); if (!b) return; valence = +b.dataset.v; [...$('#stake-dial').children].forEach((x) => x.classList.toggle('on', x === b)); hint(); });
const hint = () => { const amt = +$('#stake-range').value; $('#stake-amt').textContent = amt; $('#stake-hint').innerHTML = valence === 0 ? `moves rank Ā· earns nothing ${M('k')}` : `at risk Ā· pays if the picture moves ${valence > 0 ? 'with' : 'against'} the claim ${M('k')}`; };
$('#stake-range').oninput = hint; hint();
$('#stake-go').onclick = () => { const amt = +$('#stake-range').value; sfx.stake(valence); if (valence !== 0) bump('stake', amt); const ev = valence === 0 ? 0 : (amt * (0.08 + Math.random() * .12)).toFixed(2); $('#stake-out').innerHTML = valence === 0 ? `staked ${amt} tokens</b> passively. the claim ranks higher. you earn <b>0</b> ā idle capital cannot compound here. ${M('k')}` : `staked ${amt} tokens</b> at valence <b>${valence > 0 ? '+1' : 'ā1'}. if the serum confirms you, expected yield ā ${ev}</b> from the liars' side of the market; if not, that is what you lose ${M('k')}`; };
$('#ref-go').onclick = () => { const n = ($('#ref-name').value.trim().toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '') || 'anon'); const url = `${location.origin}${location.pathname}?m=${n}#0`; sfx.mentor(); if (!Y.invites) bump('invites', 1); $('#ref-out').innerHTML = `${url}</b>\nsend it to one person who knows something. when they link, you teach; when they mint, you earn the mentor's share.`; navigator.clipboard?.writeText(url).then(() => { $('#ref-out').innerHTML += '\n<b>copied</b>'; }).catch(() => {}); };
/* two ledgers */
const ledV = $('#led-v'); const hx = (n) => Array.from({ length: n }, () => '0123456789abcdef'[Math.random() * 16 | 0]).join('');
const ledTick = () => { if (cur !== 2 || !ledV) return; const r = el(`<div class="row-l"><span>tx ${hx(12)}ā¦settled Ā· ${(2 + Math.random() * 4).toFixed(1)} s</span></div>`); ledV.prepend(r); while (ledV.children.length > 7) ledV.lastChild.remove(); };
setInterval(ledTick, 900);
/* one budget */
const rOut = () => { const r = +$('#r-range').value; $('#r-val').textContent = r; $('#split-w').style.width = (100 - r) + '%'; $('#split-s').style.width = r + '%'; $('#r-out').innerHTML = r < 15 ? `stake is scarce ā the subsidy leans on work: a phone with nothing can still earn by sampling.` : r > 70 ? `most capital is at risk ā the budget leans on stake; work still gets its floor, so the door never closes.` : `a thermostat: ${100 - r}%</b> of emission to settlement work, <b>${r}%</b> to active risk, recalibrated from what the chain observes.`; };
$('#r-range').oninput = rOut; rOut();
/* your neuron */
const KEY = crypto.getRandomValues(new Uint8Array(32));
const NEURON = Array.from(KEY.slice(0, 6), (b) => b.toString(16).padStart(2, '0')).join('');
const identicon = (key, size = 7) => { const cols = ['#ff1a00', '#ff7a00', '#ffc400', '#00ff41', '#00b8ff', '#1e00ff', '#7a00ff']; let o = `<svg viewBox="0 0 ${size} ${size}" shape-rendering="crispEdges">`; for (let y = 0; y < size; y++) for (let x = 0; x < Math.ceil(size / 2); x++) { const b = key[(y * 4 + x) % key.length]; if (b % 3 === 0) continue; const c = cols[b % 7]; o += `<rect x="${x}" y="${y}" width="1" height="1" fill="${c}"/>`; if (x !== size - 1 - x) o += `
Homonyms
Graph