/acceptance: the Test and Acceptance Standard 1.0, case by case, rendered from docs/plans/igneum-2.0-test-registry.json
The page shows each of the 128 cases in 16 suites as it is run, in the standard's words (NOT RUN, RUNNING, PASS, FAIL, BLOCKED, DEFERRED): a header with the approval line and a thin segmented count bar (never a percentage), G0 and the five gates G1 to G5 plus the three named gates as cards whose state follows the standard's rule, one section per suite with an expandable row per case (setup, steps, accept, required evidence, the run's evidence record when present), the profiles (approved as proposed, P13 deferred, the P04 line read as a FAIL to work against), the fixtures, and the closing notes. site/lib/acceptance-render.mjs is the one renderer: build.mjs imports it for the build-time page and prints the same functions into the page's inline script, which polls /api/acceptance (site/api/acceptance.mjs: the registry from git.igneum.network master, cached 60 s, ok:false with status 200 on failure) and re-renders in place when a case state or source_sha256 moves. Hooks: the Learn panel, the nav check, the sitemap, capture.sh, the og card row, a lead link on /scorecard, the facts rows 1 to 7 name the case that will prove each. The never-served check strips the plan's own marked never-served list. Node tests (known-failed first) run in the gate; the registry and the standard text land with the page. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
parent
303341ca55
commit
3f95c6fdef
49 changed files with 9843 additions and 88 deletions
File diff suppressed because one or more lines are too long
3998
docs/plans/igneum-2.0-test-registry.json
Normal file
3998
docs/plans/igneum-2.0-test-registry.json
Normal file
File diff suppressed because it is too large
Load diff
4315
docs/plans/igneum-2.0-test-standard.txt
Normal file
4315
docs/plans/igneum-2.0-test-standard.txt
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -117,7 +117,7 @@ main{flex:1}
|
|||
<div class="panel-list">
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
@ -157,7 +157,7 @@ main{flex:1}
|
|||
<div class="sheet-group"><div class="sheet-head">Learn</div>
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
|
|||
821
site/acceptance.html
Normal file
821
site/acceptance.html
Normal file
File diff suppressed because one or more lines are too long
|
|
@ -157,7 +157,7 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
|
|||
<div class="panel-list">
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
@ -197,7 +197,7 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
|
|||
<div class="sheet-group"><div class="sheet-head">Learn</div>
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
|
|||
45
site/api/acceptance.mjs
Normal file
45
site/api/acceptance.mjs
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
// The acceptance registry, live. GET /api/acceptance: docs/plans/igneum-2.0-test-registry.json as it stands on master on the
|
||||
// public git host (git.igneum.network), so /acceptance shows each case as it passes without a redeploy. The page renders its
|
||||
// build-time copy first and polls this every 60 seconds; it re-renders only when a case state or the registry's source_sha256
|
||||
// moves. Cached 60 s in this function instance and at the edge. On any failure the reply is { ok: false, reason } with
|
||||
// status 200, and the page keeps the copy it has.
|
||||
export const SOURCE_URL = 'https://git.igneum.network/api/v1/repos/igneum-network/igneum/contents/docs/plans/igneum-2.0-test-registry.json?ref=master';
|
||||
export const SOURCE = 'git.igneum.network master';
|
||||
export const TTL_MS = 60_000;
|
||||
|
||||
// the git host's contents reply: JSON with a base64 `content` field; the registry must carry its suites
|
||||
export function decode(reply) {
|
||||
if (!reply || typeof reply.content !== 'string') throw new Error('the git host reply has no content field');
|
||||
const b64 = reply.encoding === 'base64' || !reply.encoding;
|
||||
const text = b64 ? Buffer.from(reply.content.replace(/\s+/g, ''), 'base64').toString('utf8') : reply.content;
|
||||
const registry = JSON.parse(text);
|
||||
if (!registry || !Array.isArray(registry.suites)) throw new Error('the registry has no suites');
|
||||
return registry;
|
||||
}
|
||||
|
||||
export function createHandler({ fetchImpl = globalThis.fetch, now = () => Date.now() } = {}) {
|
||||
let cache = null; // { at, body }: one per function instance
|
||||
return async function handler(req, res) {
|
||||
res.setHeader('Cache-Control', 'public, max-age=30, s-maxage=60, stale-while-revalidate=60');
|
||||
res.setHeader('Access-Control-Allow-Origin', '*');
|
||||
if (req.method !== 'GET') { res.setHeader('Allow', 'GET'); return res.status(405).json({ ok: false, reason: 'method not allowed' }); }
|
||||
const t = now();
|
||||
if (cache && t - cache.at < TTL_MS) return res.status(200).json(cache.body);
|
||||
try {
|
||||
const ctl = typeof AbortController !== 'undefined' ? new AbortController() : null;
|
||||
const timer = ctl ? setTimeout(() => ctl.abort(), 8000) : null;
|
||||
let r;
|
||||
try { r = await fetchImpl(SOURCE_URL, { headers: { accept: 'application/json' }, signal: ctl ? ctl.signal : undefined }); }
|
||||
finally { if (timer) clearTimeout(timer); }
|
||||
if (!r.ok) throw new Error(`the git host answered ${r.status}`);
|
||||
const registry = decode(await r.json());
|
||||
const body = { ok: true, fetched_at: new Date(t).toISOString(), source: SOURCE, registry };
|
||||
cache = { at: t, body };
|
||||
return res.status(200).json(body);
|
||||
} catch (e) {
|
||||
res.setHeader('Cache-Control', 'no-store');
|
||||
return res.status(200).json({ ok: false, reason: String(e && e.message || e) });
|
||||
}
|
||||
};
|
||||
}
|
||||
export default createHandler();
|
||||
|
|
@ -125,7 +125,7 @@
|
|||
<div class="panel-list">
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
@ -165,7 +165,7 @@
|
|||
<div class="sheet-group"><div class="sheet-head">Learn</div>
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
|
|||
|
|
@ -157,7 +157,7 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
|
|||
<div class="panel-list">
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
@ -197,7 +197,7 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
|
|||
<div class="sheet-group"><div class="sheet-head">Learn</div>
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
|
|||
|
|
@ -130,7 +130,7 @@ table{min-width:560px}
|
|||
<div class="panel-list">
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
@ -170,7 +170,7 @@ table{min-width:560px}
|
|||
<div class="sheet-group"><div class="sheet-head">Learn</div>
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import { scrubBench } from './scrub.mjs';
|
|||
import { MARKS, VENDORS, tokensCss, markHtml } from './lib/marks.mjs';
|
||||
import { osHtml } from './lib/os-marks.mjs';
|
||||
import { shareHtml, checkShare } from './og/pages.mjs'; // the share cards and metas, one source for every page (8 October 2026)
|
||||
import { renderAcceptance } from './lib/acceptance-render.mjs'; // /acceptance, rendered from docs/plans/igneum-2.0-test-registry.json (8 October 2026)
|
||||
import { join, dirname } from 'node:path';
|
||||
import { fileURLToPath } from 'node:url';
|
||||
|
||||
|
|
@ -361,7 +362,7 @@ function injectShare(html, file) {
|
|||
return html.replace('<!-- head:start -->', () => block + '\n<!-- head:start -->');
|
||||
}
|
||||
|
||||
const PAGES = [['index.html', ''], ['download.html', 'download'], ['income.html', 'income'], ['economics.html', 'economics'], ['scorecard.html', 'scorecard'], ['litepaper.html', 'litepaper'], ['live.html', 'live'], ['evidence.html', 'evidence'], ['miner.html', 'miner'], ['app.html', 'app'], ['wallet.html', 'wallet'], ['ledger.html', 'ledger'], ['metamask.html', 'metamask'], ['faucet.html', 'faucet'], ['swap.html', 'swap'], ['404.html', ''],
|
||||
const PAGES = [['index.html', ''], ['download.html', 'download'], ['income.html', 'income'], ['economics.html', 'economics'], ['scorecard.html', 'scorecard'], ['acceptance.html', 'acceptance'], ['litepaper.html', 'litepaper'], ['live.html', 'live'], ['evidence.html', 'evidence'], ['miner.html', 'miner'], ['app.html', 'app'], ['wallet.html', 'wallet'], ['ledger.html', 'ledger'], ['metamask.html', 'metamask'], ['faucet.html', 'faucet'], ['swap.html', 'swap'], ['404.html', ''],
|
||||
// the Devnet 3 explorer (5 Oct 2026, extended 8 Oct 2026): /explorer, /block/<hash>, /address/<addr>, /tx/<hash> (vercel.json rewrites
|
||||
// the three) and /proving; the Explorer entry of the Network panel is the current one on all five
|
||||
['explorer.html', 'explorer'], ['block.html', 'explorer'], ['address.html', 'explorer'], ['tx.html', 'explorer'], ['proving.html', 'explorer'],
|
||||
|
|
@ -417,6 +418,13 @@ for (const [file, active] of PAGES) {
|
|||
.sort((a, b) => b.mh_s - a.mh_s);
|
||||
html = inject(html, 'income-data', `<script type="application/json" id="income-data">${JSON.stringify(list).replace(/</g, '\\u003c')}</script>`, file);
|
||||
}
|
||||
// /acceptance (8 October 2026): the Test and Acceptance Standard, case by case, rendered from the registry by
|
||||
// site/lib/acceptance-render.mjs (the same functions the page prints into its runtime script, which re-reads the registry on
|
||||
// the public git host through /api/acceptance every 60 seconds); the gate builds a copy of site/ alone: the committed page stands
|
||||
if (file === 'acceptance.html' && html.includes('<!-- acceptance:start -->')) {
|
||||
const rp = join(docs, 'plans', 'igneum-2.0-test-registry.json');
|
||||
if (existsSync(rp)) html = inject(html, 'acceptance', renderAcceptance(JSON.parse(readFileSync(rp, 'utf8'))), file);
|
||||
}
|
||||
writeFileSync(p, html);
|
||||
built.push(file);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -129,7 +129,7 @@
|
|||
<div class="panel-list">
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims" aria-current="page"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
@ -169,7 +169,7 @@
|
|||
<div class="sheet-group"><div class="sheet-head">Learn</div>
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims" aria-current="page"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
|
|||
|
|
@ -130,7 +130,7 @@ table{min-width:560px}
|
|||
<div class="panel-list">
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
@ -170,7 +170,7 @@ table{min-width:560px}
|
|||
<div class="sheet-group"><div class="sheet-head">Learn</div>
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
|
|||
|
|
@ -129,7 +129,7 @@
|
|||
<div class="panel-list">
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
@ -169,7 +169,7 @@
|
|||
<div class="sheet-group"><div class="sheet-head">Learn</div>
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
|
|||
|
|
@ -119,7 +119,7 @@
|
|||
<div class="panel-list">
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
@ -159,7 +159,7 @@
|
|||
<div class="sheet-group"><div class="sheet-head">Learn</div>
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
|
|||
|
|
@ -103,7 +103,7 @@
|
|||
<div class="panel-list">
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics" aria-current="page"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics" aria-current="page"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
@ -143,7 +143,7 @@
|
|||
<div class="sheet-group"><div class="sheet-head">Learn</div>
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics" aria-current="page"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics" aria-current="page"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -156,7 +156,7 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
|
|||
<div class="panel-list">
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
@ -196,7 +196,7 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
|
|||
<div class="sheet-group"><div class="sheet-head">Learn</div>
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
|
|||
|
|
@ -133,7 +133,7 @@ dt{color:var(--ash)}dd{margin:0;font-family:var(--f-mono);font-size:14px;overflo
|
|||
<div class="panel-list">
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
@ -173,7 +173,7 @@ dt{color:var(--ash)}dd{margin:0;font-family:var(--f-mono);font-size:14px;overflo
|
|||
<div class="sheet-group"><div class="sheet-head">Learn</div>
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
|
|||
|
|
@ -130,7 +130,7 @@ table{min-width:560px}
|
|||
<div class="panel-list">
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
@ -170,7 +170,7 @@ table{min-width:560px}
|
|||
<div class="sheet-group"><div class="sheet-head">Learn</div>
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
|
|||
|
|
@ -103,7 +103,7 @@
|
|||
<div class="panel-list">
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income" aria-current="page"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
@ -143,7 +143,7 @@
|
|||
<div class="sheet-group"><div class="sheet-head">Learn</div>
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income" aria-current="page"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
|
|||
|
|
@ -121,7 +121,7 @@
|
|||
<div class="panel-list">
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
@ -161,7 +161,7 @@
|
|||
<div class="sheet-group"><div class="sheet-head">Learn</div>
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
|
|||
|
|
@ -134,7 +134,7 @@ blockquote{margin:10px 0;padding:10px 14px;border-left:3px solid var(--line-2);c
|
|||
<div class="panel-list">
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger" aria-current="page"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
@ -174,7 +174,7 @@ blockquote{margin:10px 0;padding:10px 14px;border-left:3px solid var(--line-2);c
|
|||
<div class="sheet-group"><div class="sheet-head">Learn</div>
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger" aria-current="page"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
|
|||
471
site/lib/acceptance-render.mjs
Normal file
471
site/lib/acceptance-render.mjs
Normal file
|
|
@ -0,0 +1,471 @@
|
|||
// The /acceptance page (8 October 2026): the Test and Acceptance Standard 1.0, case by case, rendered from ONE file,
|
||||
// docs/plans/igneum-2.0-test-registry.json (128 cases in 16 suites, the profiles P00 onward, the fixtures F0 onward).
|
||||
//
|
||||
// One source of truth for both renders. Every function below is a plain, self-contained function declaration: site/build.mjs
|
||||
// imports them to write the page at build time, and runtimeSource() prints the same functions (Function.prototype.toString)
|
||||
// into the page's inline classic script, which polls /api/acceptance every 60 seconds and re-renders the page from the
|
||||
// registry on the public git host when a case status or the registry's source_sha256 moves. Nothing here may reference a
|
||||
// module-level binding: each function carries its own constants, so the printed copy runs unchanged in the browser.
|
||||
//
|
||||
// The states are the standard's words (section 02, execution rules): NOT RUN, BLOCKED, FAIL, PASS, plus RUNNING while a
|
||||
// packet is being produced, and EXCLUDED for an excluded optional feature (never PASS, never counted as an achievement).
|
||||
// A gate reads FAIL if any case it depends on is FAIL, else BLOCKED if any is BLOCKED, else RUNNING if any is RUNNING, else
|
||||
// PASS only when every case is PASS, else NOT RUN. The page is a checklist, never a completion dashboard: no percentage.
|
||||
|
||||
// the build-time constants the founder's approval of 8 October 2026 sets, used only where the registry does not carry the
|
||||
// approval block yet (reg.approval {by, at, word, profiles {P00..P16}, rules_in_force}); the approver is always printed as
|
||||
// "the founder", never a name. The P04 line is the coordinator's verbatim wording and is never softened.
|
||||
function overrides() {
|
||||
return {
|
||||
approval: { word: 'APPROVED AS PROPOSED', date: '2026-10-08' },
|
||||
profiles: { all: 'APPROVED AS PROPOSED', P13: 'DEFERRED' },
|
||||
notes: { P04: 'R_E target at most 1.5 at the same node and one node ahead; today\'s placed bracket 1.5x to 2.1x: FAIL' },
|
||||
};
|
||||
}
|
||||
|
||||
// a profile's approval word: the registry's approval block, else the profile's own status when it carries a decision, else
|
||||
// the build-time constant
|
||||
function profileWord(reg, id) {
|
||||
var a = reg && reg.approval && reg.approval.profiles;
|
||||
if (a && a[id]) return String(a[id]).toUpperCase();
|
||||
var raw = String(reg && reg.profiles && reg.profiles[id] && reg.profiles[id].status || '');
|
||||
if (/DEFERRED/i.test(raw)) return 'DEFERRED';
|
||||
if (/APPROVED/i.test(raw) && !/REQUIRES APPROVAL/i.test(raw)) return raw.toUpperCase();
|
||||
var o = overrides().profiles;
|
||||
return o[id] || o.all;
|
||||
}
|
||||
|
||||
// an anchor's opening, without its closing bracket: the target escaped; the attribute name is split so the site's link
|
||||
// check (which reads every href in a page, scripts included) does not take this concatenation for a literal target
|
||||
function linkOpen(u) {
|
||||
return '<a ' + 'href' + '="' + esc(u) + '"';
|
||||
}
|
||||
|
||||
function esc(s) {
|
||||
return String(s == null ? '' : s).replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"');
|
||||
}
|
||||
|
||||
// registry text as served: no em dash (a comma), no spaced hyphen as a dash (a comma), escaped
|
||||
function clean(s) {
|
||||
return esc(String(s == null ? '' : s).replace(/\s*\u2014\s*/g, ', ').replace(/\s+-\s+/g, ', ').replace(/,\s*,/g, ','));
|
||||
}
|
||||
|
||||
function fmtDate(iso) {
|
||||
var m = /^(\d{4})-(\d{2})-(\d{2})/.exec(String(iso || ''));
|
||||
if (!m) return clean(iso);
|
||||
var MON = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
|
||||
return Number(m[3]) + ' ' + MON[Number(m[2]) - 1] + ' ' + m[1];
|
||||
}
|
||||
|
||||
// a time as UK wall time (the site's rule: times read in UK time); a value that is not a time is shown as written
|
||||
function fmtWhen(v) {
|
||||
if (!v) return '';
|
||||
var d = new Date(v);
|
||||
if (isNaN(d.getTime()) || !/\d{4}-\d{2}-\d{2}T/.test(String(v))) return clean(v);
|
||||
try {
|
||||
return esc(d.toLocaleString('en-GB', { timeZone: 'Europe/London', day: 'numeric', month: 'short', year: 'numeric', hour: '2-digit', minute: '2-digit', hour12: false })) + ' UK';
|
||||
} catch (e) { return esc(d.toISOString().slice(0, 16).replace('T', ' ')) + ' UTC'; }
|
||||
}
|
||||
|
||||
// a case's state in the standard's words; an unknown word is BLOCKED (P00: unknown values are BLOCKED, not defaults)
|
||||
function normStatus(s) {
|
||||
var t = String(s == null ? '' : s).trim().toUpperCase().replace(/[_-]+/g, ' ');
|
||||
if (t === '' || t === 'NOT RUN' || t === 'NOTRUN') return 'NOT RUN';
|
||||
if (t === 'PASS' || t === 'PASSED') return 'PASS';
|
||||
if (t === 'FAIL' || t === 'FAILED') return 'FAIL';
|
||||
if (t === 'BLOCKED') return 'BLOCKED';
|
||||
if (t === 'RUNNING' || t === 'IN PROGRESS') return 'RUNNING';
|
||||
if (t === 'EXCLUDED') return 'EXCLUDED';
|
||||
if (t === 'DEFERRED') return 'DEFERRED';
|
||||
return 'BLOCKED';
|
||||
}
|
||||
|
||||
// the run state: run_status, else the design status (the registry before the run fields existed), else result.status
|
||||
function caseStatus(t) {
|
||||
if (!t) return 'NOT RUN';
|
||||
if (t.run_status != null) return normStatus(t.run_status);
|
||||
return normStatus(t.status != null ? t.status : (t.result && t.result.status));
|
||||
}
|
||||
|
||||
// the evidence link a case carries once it has run: evidence_path (a repository path, linked on the public git host), else
|
||||
// evidence_url, evidence_link or result.evidence(_url); https or site-relative only
|
||||
function caseEvidenceUrl(t) {
|
||||
if (!t) return null;
|
||||
var p = t.evidence_path;
|
||||
if (typeof p === 'string' && /^[A-Za-z0-9._\/-]+$/.test(p) && p.indexOf('..') < 0) return 'https://git.igneum.network/igneum-network/igneum/src/branch/master/' + p.replace(/^\/+/, '');
|
||||
var r = t.result || {};
|
||||
var cands = [t.evidence_url, t.evidence_link, r.evidence_url, r.evidence_link, r.evidence];
|
||||
for (var i = 0; i < cands.length; i++) {
|
||||
var u = cands[i];
|
||||
if (typeof u === 'string' && (/^https:\/\/[^\s"'<>]+$/.test(u) || /^\/[^\s"'<>]*$/.test(u))) return u;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
function caseLastRun(t) {
|
||||
var r = (t && t.result) || {};
|
||||
return (t && (t.updated || t.last_run || t.last_run_at || t.run_at)) || r.at || r.run_at || r.date || null;
|
||||
}
|
||||
|
||||
function profilesOf(t) {
|
||||
return String(t && t.profile || '').split(/;\s*/).map(function (x) { return x.trim(); }).filter(Boolean);
|
||||
}
|
||||
|
||||
function allCases(reg) {
|
||||
var out = [];
|
||||
(reg && reg.suites || []).forEach(function (s) { (s.tests || []).forEach(function (t) { out.push(t); }); });
|
||||
return out;
|
||||
}
|
||||
|
||||
function tally(cases) {
|
||||
var c = { total: 0, PASS: 0, FAIL: 0, BLOCKED: 0, RUNNING: 0, 'NOT RUN': 0, DEFERRED: 0, EXCLUDED: 0 };
|
||||
cases.forEach(function (t) { c.total++; c[caseStatus(t)]++; });
|
||||
return c;
|
||||
}
|
||||
|
||||
// the counts, in the standard's words; deferred and excluded cases are counted apart and never as passes
|
||||
function countStatuses(reg) {
|
||||
return tally(allCases(reg));
|
||||
}
|
||||
|
||||
// a gate or suite state: FAIL, else BLOCKED, else RUNNING, else PASS when every case (excluded ones aside) passed, else NOT RUN;
|
||||
// a deferred case is not a pass, so it holds its gate at NOT RUN
|
||||
function stateOf(cases) {
|
||||
var st = cases.map(caseStatus).filter(function (s) { return s !== 'EXCLUDED'; });
|
||||
if (!st.length) return 'NOT RUN';
|
||||
if (st.indexOf('FAIL') >= 0) return 'FAIL';
|
||||
if (st.indexOf('BLOCKED') >= 0) return 'BLOCKED';
|
||||
if (st.indexOf('RUNNING') >= 0) return 'RUNNING';
|
||||
if (st.every(function (s) { return s === 'PASS'; })) return 'PASS';
|
||||
return 'NOT RUN';
|
||||
}
|
||||
|
||||
// the standard's section 04: G1 to G5 keep the plan's names (the deliverables D1 to D5 by number); G0, technical readiness,
|
||||
// commercial evidence and the contender decision are its proposed execution controls
|
||||
function gateDefs() {
|
||||
return [
|
||||
{ id: 'G0', name: 'Freeze', d: 'Release identity', consequence: 'No formal run or public pass before approval.' },
|
||||
{ id: 'G1', name: 'Baseline', d: 'D1', consequence: 'No validated hardware claim without reproduction.' },
|
||||
{ id: 'G2', name: 'Experiments', d: 'D2', consequence: 'No improvement claim from a negative hypothesis.' },
|
||||
{ id: 'G3', name: 'Adversary', d: 'D3', consequence: 'No broad resistance claim from one weak design.' },
|
||||
{ id: 'G4', name: 'Coexistence', d: 'D4', consequence: 'No durability claim based on assumed chip expiry.' },
|
||||
{ id: 'G5', name: 'No rescue', d: 'D5', consequence: 'No no-rescue claim from a founder-supported demo.' },
|
||||
{ id: 'TR', name: 'Technical readiness', d: 'Execution control', consequence: 'No mainnet-ready claim with missing enforcement or safety.' },
|
||||
{ id: 'CE', name: 'Commercial evidence', d: 'Execution control', consequence: 'Devnet activity is insufficient.' },
|
||||
{ id: 'CD', name: 'Leadership-contender decision', d: 'Execution control', consequence: 'Supports a scoped contention assessment, not a guaranteed rank.' },
|
||||
];
|
||||
}
|
||||
|
||||
// a suite's "gate" string to the gates it names: "G0 / all gates" names G0 and every gate; "G2 / G3" names both; the
|
||||
// readiness, commercial and leadership words name the execution controls; the contender decision rests on all of them
|
||||
function gatesOf(gate) {
|
||||
var g = String(gate || ''), out = [];
|
||||
var re = /\bG([0-5])\b/g, m;
|
||||
while ((m = re.exec(g))) if (out.indexOf('G' + m[1]) < 0) out.push('G' + m[1]);
|
||||
if (/all gates/i.test(g)) ['G0', 'G1', 'G2', 'G3', 'G4', 'G5', 'TR', 'CE'].forEach(function (x) { if (out.indexOf(x) < 0) out.push(x); });
|
||||
if (/technical readiness|operator readiness/i.test(g) && out.indexOf('TR') < 0) out.push('TR');
|
||||
if (/commercial/i.test(g) && out.indexOf('CE') < 0) out.push('CE');
|
||||
if (out.indexOf('CD') < 0) out.push('CD');
|
||||
return out;
|
||||
}
|
||||
|
||||
function stateClass(s) {
|
||||
return { 'PASS': 'pass', 'FAIL': 'fail', 'BLOCKED': 'blocked', 'RUNNING': 'running', 'NOT RUN': 'notrun', 'DEFERRED': 'deferred', 'EXCLUDED': 'excluded' }[s] || 'notrun';
|
||||
}
|
||||
|
||||
function chipHtml(state) {
|
||||
var s = normStatus(state);
|
||||
return '<span class="acc-chip s-' + stateClass(s) + '" data-state="' + s + '">' + s + '</span>';
|
||||
}
|
||||
|
||||
// the thin segmented bar: one segment per state, its width the count of cases in that state; the numbers sit beside it
|
||||
function barHtml(c, label) {
|
||||
var order = ['PASS', 'FAIL', 'BLOCKED', 'RUNNING', 'NOT RUN', 'DEFERRED', 'EXCLUDED'];
|
||||
var segs = order.filter(function (o) { return c[o] > 0; }).map(function (o) {
|
||||
return '<span class="seg g-' + stateClass(o) + '" style="flex-grow:' + c[o] + '" title="' + c[o] + ' ' + o + '"></span>';
|
||||
}).join('');
|
||||
return '<div class="acc-bar" role="img" aria-label="' + esc(label || '') + '">' + segs + '</div>';
|
||||
}
|
||||
|
||||
// the counts as one line, in the coordinator's words: passed under the standard, running with team evidence, failed and blocked
|
||||
// when non-zero, not run, deferred
|
||||
function tallyText(c) {
|
||||
var parts = [c.PASS + ' passed under the standard', c.RUNNING + ' running with team evidence'];
|
||||
if (c.FAIL) parts.push(c.FAIL + ' failed');
|
||||
if (c.BLOCKED) parts.push(c.BLOCKED + ' blocked');
|
||||
parts.push(c['NOT RUN'] + ' not run');
|
||||
parts.push(c.DEFERRED + ' deferred');
|
||||
if (c.EXCLUDED) parts.push(c.EXCLUDED + ' excluded');
|
||||
return c.total + ' cases: ' + parts.join(', ');
|
||||
}
|
||||
|
||||
function tallyHtml(c) {
|
||||
var rows = [['PASS', 'pass'], ['FAIL', 'fail'], ['BLOCKED', 'blocked'], ['RUNNING', 'running'], ['NOT RUN', 'not run'], ['DEFERRED', 'deferred']];
|
||||
if (c.EXCLUDED) rows.push(['EXCLUDED', 'excluded']);
|
||||
return '<ul class="acc-legend">' + rows.map(function (r) {
|
||||
return '<li><i class="sw g-' + stateClass(r[0]) + '" aria-hidden="true"></i><b>' + c[r[0]] + '</b> ' + r[1] + '</li>';
|
||||
}).join('') + '</ul>';
|
||||
}
|
||||
|
||||
// the header's status words: the approval (the registry's approval block, else its status string when it says APPROVED, else the
|
||||
// build-time constant), the deferred profiles, and NOT EXECUTED while no case has run
|
||||
function statusWords(reg) {
|
||||
var raw = String(reg && reg.status || ''), a = (reg && reg.approval) || {}, o = overrides();
|
||||
var c = countStatuses(reg);
|
||||
var fileApproved = !!a.word || (/APPROVED/i.test(raw) && !/REQUIRES APPROVAL/i.test(raw));
|
||||
var word = a.word ? String(a.word).toUpperCase() : o.approval.word;
|
||||
var dm = /(\d{4}-\d{2}-\d{2})/.exec(String(a.at || '')) || (fileApproved ? /(\d{4}-\d{2}-\d{2})/.exec(String(reg.approved_date || reg.date || '')) : null);
|
||||
var date = dm ? dm[1] : o.approval.date;
|
||||
var deferred = Object.keys(reg && reg.profiles || {}).filter(function (id) { return /DEFERRED/.test(profileWord(reg, id)); });
|
||||
var ran = c.PASS + c.FAIL + c.BLOCKED + c.RUNNING;
|
||||
return { raw: raw, word: word, date: date, fromFile: fileApproved, deferred: deferred, execution: ran ? null : 'NOT EXECUTED' };
|
||||
}
|
||||
|
||||
// the header line, verbatim in the coordinator's words with the counts read from the file
|
||||
function headLine(reg) {
|
||||
var w = statusWords(reg), c = countStatuses(reg);
|
||||
var title = String(reg.title || 'Test and Acceptance Standard').replace(/^IGNEUM 2\.0\s*-\s*/i, '');
|
||||
var defs = w.deferred.map(function (id) {
|
||||
var t = reg.profiles[id] && reg.profiles[id].title ? String(reg.profiles[id].title).toLowerCase() : '';
|
||||
return id + (t ? ' (' + t + ')' : '') + ' DEFERRED';
|
||||
});
|
||||
return title + ' ' + (reg.version || '') + ': ' + w.word + ' by the founder, ' + fmtDate(w.date).replace(/&/g, '&') + '; ' + (defs.length ? defs.join('; ') + '; ' : '') + tallyText(c);
|
||||
}
|
||||
|
||||
function headHtml(reg) {
|
||||
var title = String(reg.title || 'Test and Acceptance Standard').replace(/^IGNEUM 2\.0\s*-\s*/i, '');
|
||||
var w = statusWords(reg), c = countStatuses(reg);
|
||||
return '<section class="page-hero acc-hero"><div class="container">'
|
||||
+ '<div class="eyebrow"><span class="line"></span>Igneum 2.0 acceptance</div>'
|
||||
+ '<h1 class="acc-title">' + clean(title) + ' ' + clean(reg.version) + '</h1>'
|
||||
+ '<p class="lead">Every case of the standard, shown as it is run, in the standard’s own words. A checklist, never a completion score: a gate passes only when every case it depends on has passed.</p>'
|
||||
+ '<p class="acc-basis"><span>Basis</span> ' + clean(reg.basis) + '. ' + (reg.manual_page_count ? 'The standard runs to ' + esc(reg.manual_page_count) + ' pages. ' : '') + 'Registry dated ' + fmtDate(reg.date) + '.</p>'
|
||||
+ '<div class="acc-tally" id="acc-tally">'
|
||||
+ '<div class="acc-words"><span class="acc-word approved">' + esc(w.word) + ' ' + esc(fmtDate(w.date).toUpperCase()) + '</span>'
|
||||
+ w.deferred.map(function (id) { return '<span class="acc-word deferred">' + esc(id) + ' DEFERRED</span>'; }).join('')
|
||||
+ (w.execution ? '<span class="acc-word exec">' + esc(w.execution) + '</span>' : '') + '</div>'
|
||||
+ '<p class="acc-line">' + clean(headLine(reg)) + '</p>'
|
||||
+ barHtml(c, tallyText(c)) + tallyHtml(c)
|
||||
+ '</div>'
|
||||
+ '</div></section>';
|
||||
}
|
||||
|
||||
function gateCardHtml(def, reg, small) {
|
||||
var suites = (reg.suites || []).filter(function (s) { return gatesOf(s.gate).indexOf(def.id) >= 0; });
|
||||
var cases = [];
|
||||
suites.forEach(function (s) { (s.tests || []).forEach(function (t) { cases.push(t); }); });
|
||||
var st = stateOf(cases), c = tally(cases);
|
||||
var list = suites.map(function (s) {
|
||||
return '<li>' + linkOpen('#suite-' + s.code) + '>' + esc(s.code) + '</a><span class="acc-gs-n">' + (s.tests || []).length + ' cases</span>' + chipHtml(stateOf(s.tests || [])) + '</li>';
|
||||
}).join('');
|
||||
return '<article class="acc-gate st-' + stateClass(st) + (small ? ' small' : '') + '" id="gate-' + def.id + '" data-gate-state="' + st + '">'
|
||||
+ '<div class="acc-gate-top"><span class="acc-gate-id">' + (/^G[0-5]$/.test(def.id) ? def.id : '') + '</span>' + chipHtml(st) + '</div>'
|
||||
+ '<h3>' + esc(def.name) + '</h3>'
|
||||
+ '<p class="acc-gate-d">' + esc(def.d) + '</p>'
|
||||
+ '<p class="acc-gate-c">' + esc(def.consequence) + '</p>'
|
||||
+ barHtml(c, def.name + ': ' + tallyText(c))
|
||||
+ '<p class="acc-gate-n">' + esc(tallyText(c)) + '</p>'
|
||||
+ (list ? '<ul class="acc-gs">' + list + '</ul>' : '<p class="acc-gate-n">No suite names this gate.</p>')
|
||||
+ '</article>';
|
||||
}
|
||||
|
||||
function gatesHtml(reg) {
|
||||
var d = gateDefs();
|
||||
var g0 = d.filter(function (x) { return x.id === 'G0'; })[0];
|
||||
var five = d.filter(function (x) { return /^G[1-5]$/.test(x.id); });
|
||||
var tracks = d.filter(function (x) { return /^(TR|CE|CD)$/.test(x.id); });
|
||||
return '<section class="section acc-gates-sec" id="gates"><div class="container">'
|
||||
+ '<div class="eyebrow"><span class="line"></span>The gates</div>'
|
||||
+ '<h2>Five gates, and the freeze before them.</h2>'
|
||||
+ '<p class="acc-sub">A gate reads NOT RUN until every case it depends on has run, RUNNING while any is running, BLOCKED if any is blocked, FAIL if any fails, and PASS only when every case passes. No gate is weighted into an average.</p>'
|
||||
+ '<div class="acc-g0">' + gateCardHtml(g0, reg, true) + '</div>'
|
||||
+ '<div class="acc-five">' + five.map(function (x) { return gateCardHtml(x, reg, false); }).join('') + '</div>'
|
||||
+ '<h3 class="acc-tracks-h">The three named gates</h3>'
|
||||
+ '<div class="acc-tracks">' + tracks.map(function (x) { return gateCardHtml(x, reg, true); }).join('') + '</div>'
|
||||
+ '</div></section>';
|
||||
}
|
||||
|
||||
function caseHtml(t) {
|
||||
var st = caseStatus(t), ev = caseEvidenceUrl(t), run = caseLastRun(t), er = t.evidence_record;
|
||||
var steps = (t.steps || []).map(function (s) { return '<li>' + clean(s) + '</li>'; }).join('');
|
||||
var meta = [];
|
||||
if (t.method) meta.push('<div><dt>Method</dt><dd>' + clean(t.method) + '</dd></div>');
|
||||
if (t.cadence) meta.push('<div><dt>Cadence</dt><dd>' + clean(t.cadence) + '</dd></div>');
|
||||
if (t.owner || t.owner_lane) meta.push('<div><dt>Owner</dt><dd>' + clean(t.owner_lane || t.owner) + '</dd></div>');
|
||||
if (t.run_id) meta.push('<div><dt>Run</dt><dd>' + clean(t.run_id) + '</dd></div>');
|
||||
if (t.run_status != null && t.status) meta.push('<div><dt>Design status</dt><dd>' + clean(t.status) + '</dd></div>');
|
||||
if (t.manual_page) meta.push('<div><dt>Standard page</dt><dd>' + esc(t.manual_page) + '</dd></div>');
|
||||
if (t.source && t.source.length) meta.push('<div><dt>Plan pages</dt><dd>' + esc([].concat(t.source).join(', ')) + '</dd></div>');
|
||||
var rec = '';
|
||||
if (er && typeof er === 'object') {
|
||||
var F = [['what_was_run', 'What was run'], ['run_by', 'Run by'], ['under_the_standard', 'Under the standard'], ['pass_or_fail_today', 'Pass or fail today']];
|
||||
var rows = F.filter(function (f) { return er[f[0]] != null && er[f[0]] !== ''; }).map(function (f) { return '<div><dt>' + f[1] + '</dt><dd>' + clean(er[f[0]]) + '</dd></div>'; });
|
||||
if (rows.length) rec = '<h4>Evidence record of the run</h4><dl class="acc-meta acc-rec">' + rows.join('') + '</dl>';
|
||||
}
|
||||
return '<details class="acc-case" id="case-' + esc(t.id) + '" data-case="' + esc(t.id) + '" data-state="' + st + '">'
|
||||
+ '<summary>'
|
||||
+ '<span class="c-id">' + esc(t.id) + '</span>'
|
||||
+ '<span class="c-title">' + clean(t.title) + '</span>'
|
||||
+ '<span class="c-pri"><span class="lbl">Priority </span>' + clean(t.priority) + '</span>'
|
||||
+ '<span class="c-prof"><span class="lbl">Profile </span>' + (profilesOf(t).map(function (p) { return esc(p); }).join(', ') || 'none') + '</span>'
|
||||
+ '<span class="c-st">' + chipHtml(st) + '</span>'
|
||||
+ '<span class="c-ev"><span class="lbl">Evidence </span>' + (ev ? linkOpen(ev) + (/^https:/.test(ev) ? ' rel="noopener"' : '') + '>record</a>' : '<span class="none">none yet</span>') + '</span>'
|
||||
+ '<span class="c-run"><span class="lbl">Last run </span>' + (run ? fmtWhen(run) : '<span class="none">none yet</span>') + '</span>'
|
||||
+ '<span class="c-caret" aria-hidden="true"></span>'
|
||||
+ '</summary>'
|
||||
+ '<div class="acc-panel"><blockquote>'
|
||||
+ '<h4>Setup</h4><p>' + clean(t.setup) + '</p>'
|
||||
+ '<h4>Steps</h4><ol>' + steps + '</ol>'
|
||||
+ '<h4>Accept</h4><p>' + clean(t.accept) + '</p>'
|
||||
+ '<h4>Evidence the case requires</h4><p>' + clean(t.evidence || 'not stated') + '</p>'
|
||||
+ '</blockquote>'
|
||||
+ rec
|
||||
+ (meta.length ? '<dl class="acc-meta">' + meta.join('') + '</dl>' : '')
|
||||
+ '</div>'
|
||||
+ '</details>';
|
||||
}
|
||||
|
||||
function suiteHtml(s, i) {
|
||||
var cases = s.tests || [], c = tally(cases);
|
||||
var gates = gatesOf(s.gate).filter(function (g) { return /^G[0-5]$/.test(g); });
|
||||
return '<section class="section acc-suite" id="suite-' + esc(s.code) + '"><div class="container">'
|
||||
+ '<div class="acc-suite-head">'
|
||||
+ '<div class="acc-suite-code"><span class="n">' + (i + 1 < 10 ? '0' : '') + (i + 1) + '</span>' + esc(s.code) + '</div>'
|
||||
+ '<div class="acc-suite-t"><h2>' + clean(s.title) + '</h2>' + (s.summary ? '<p class="acc-sub">' + clean(s.summary) + '</p>' : '') + '</div>'
|
||||
+ '<div class="acc-suite-st">' + chipHtml(stateOf(cases)) + '</div>'
|
||||
+ '</div>'
|
||||
+ '<dl class="acc-facts">'
|
||||
+ '<div><dt>Owner</dt><dd>' + clean(s.owner || 'not named') + '</dd></div>'
|
||||
+ '<div><dt>Gate</dt><dd>' + clean(s.gate) + (gates.length ? ' <span class="acc-gl">' + gates.map(function (g) { return linkOpen('#gate-' + g) + '>' + g + '</a>'; }).join(' ') + '</span>' : '') + '</dd></div>'
|
||||
+ (s.fixtures ? '<div><dt>Fixtures</dt><dd>' + clean(s.fixtures) + '</dd></div>' : '')
|
||||
+ (s.source && s.source.length ? '<div><dt>Plan pages</dt><dd>' + esc([].concat(s.source).join(', ')) + '</dd></div>' : '')
|
||||
+ '</dl>'
|
||||
+ '<div class="acc-suite-bar">' + barHtml(c, s.code + ': ' + tallyText(c)) + '<span>' + esc(tallyText(c)) + '</span></div>'
|
||||
+ '<div class="acc-cases">'
|
||||
+ '<div class="acc-cases-h" aria-hidden="true"><span>Case</span><span>Title</span><span>Priority</span><span>Profile</span><span>Status</span><span>Evidence</span><span>Last run</span><span></span></div>'
|
||||
+ cases.map(caseHtml).join('')
|
||||
+ '</div>'
|
||||
+ '</div></section>';
|
||||
}
|
||||
|
||||
function profileHtml(id, p, reg) {
|
||||
var o = overrides(), raw = String(p.status || ''), word = profileWord(reg, id);
|
||||
var used = allCases(reg).filter(function (t) { return profilesOf(t).indexOf(id) >= 0; }).length;
|
||||
var deferred = /DEFERRED/.test(word), cls = deferred ? 'deferred' : (/APPROVED/.test(word) ? 'approved' : 'proposed');
|
||||
var text = deferred ? 'Deferred by the founder' : (/APPROVED AS PROPOSED/.test(word) ? 'Approved as proposed' : (/APPROVED/.test(word) ? 'Approved' : clean(word)));
|
||||
var note = o.notes[id];
|
||||
return '<article class="acc-prof ' + cls + '" id="profile-' + esc(id) + '">'
|
||||
+ '<div class="acc-prof-top"><span class="acc-prof-id">' + esc(id) + '</span><span class="acc-pstate ' + cls + '">' + text + '</span></div>'
|
||||
+ '<h3>' + clean(p.title) + '</h3>'
|
||||
+ '<ol class="acc-req">' + (p.requirements || []).map(function (r) { return '<li>' + clean(r) + '</li>'; }).join('') + '</ol>'
|
||||
+ (note ? '<p class="acc-note">' + chipHtml('FAIL') + ' <span>' + esc(note) + '</span></p>' : '')
|
||||
+ '<p class="acc-prof-n">Cited by ' + used + ' case' + (used === 1 ? '' : 's') + '. ' + (raw ? 'The profile’s own line in the registry: ' + clean(raw) + '.' : '') + '</p>'
|
||||
+ '</article>';
|
||||
}
|
||||
|
||||
function profilesHtml(reg) {
|
||||
var ps = reg.profiles || {};
|
||||
var ids = Object.keys(ps);
|
||||
return '<section class="section acc-profiles" id="profiles"><div class="container">'
|
||||
+ '<div class="eyebrow"><span class="line"></span>Profiles</div>'
|
||||
+ '<h2>The numbers each case is held to.</h2>'
|
||||
+ '<p class="acc-sub">' + ids.length + ' profiles, P00 to P' + (ids.length - 1 < 10 ? '0' : '') + (ids.length - 1) + '. A profile is frozen before the confirmatory run; weakening a target after a failure creates a different claim.</p>'
|
||||
+ '<div class="acc-prof-grid">' + ids.map(function (id) { return profileHtml(id, ps[id], reg); }).join('') + '</div>'
|
||||
+ '</div></section>';
|
||||
}
|
||||
|
||||
function fixturesHtml(reg) {
|
||||
var fs = reg.fixtures || [];
|
||||
if (!fs.length) return '';
|
||||
return '<section class="section acc-fixtures" id="fixtures"><div class="container">'
|
||||
+ '<div class="eyebrow"><span class="line"></span>Fixtures</div>'
|
||||
+ '<h2>What every run is built on.</h2>'
|
||||
+ '<div class="acc-fix-grid">' + fs.map(function (f) {
|
||||
return '<article class="acc-fix" id="fixture-' + esc(f.id) + '"><span class="acc-fix-id">' + esc(f.id) + '</span><h3>' + clean(f.title) + '</h3><p>' + clean(f.contents) + '</p></article>';
|
||||
}).join('') + '</div>'
|
||||
+ '</div></section>';
|
||||
}
|
||||
|
||||
function footHtml(reg) {
|
||||
var rules = reg.approval && reg.approval.rules_in_force;
|
||||
var rulesHtml = '';
|
||||
if (Array.isArray(rules) && rules.length) rulesHtml = '<h3>Rules in force</h3><ul class="acc-rules">' + rules.map(function (r) { return '<li>' + clean(typeof r === 'string' ? r : JSON.stringify(r)) + '</li>'; }).join('') + '</ul>';
|
||||
else if (typeof rules === 'string' && rules) rulesHtml = '<h3>Rules in force</h3><p>' + clean(rules) + '</p>';
|
||||
return '<section class="section acc-foot" id="notes"><div class="container"><div class="acc-foot-card">'
|
||||
+ '<div class="eyebrow"><span class="line"></span>What a full pass means</div>'
|
||||
+ (reg.all_pass_note ? '<p class="acc-allpass">' + clean(reg.all_pass_note) + '</p>' : '')
|
||||
+ (reg.scope_note ? '<p>' + clean(reg.scope_note) + '</p>' : '')
|
||||
+ rulesHtml
|
||||
+ '<p class="acc-never" data-never-served>Never served: guaranteed chip death, a universal ASIC-efficiency ceiling, chip-arrival probabilities, guaranteed profits, Ethereum security by compatibility, privacy from ZK, a numerical rank.</p>'
|
||||
+ '<p class="acc-src"><b>Source:</b> <code>docs/plans/igneum-2.0-test-registry.json</code>, version ' + clean(reg.version) + ', dated ' + fmtDate(reg.date) + (reg.source_sha256 ? ', plan sha256 <code>' + esc(String(reg.source_sha256).slice(0, 16)) + '</code>' : '') + '. <span id="acc-live">This copy was written when the page was built; the page checks the registry on the public git host every 60 seconds.</span></p>'
|
||||
+ '</div></div></section>';
|
||||
}
|
||||
|
||||
function suiteNavHtml(reg) {
|
||||
return '<nav class="acc-jump container" aria-label="Suites"><a href="#gates">Gates</a>' + (reg.suites || []).map(function (s) {
|
||||
return linkOpen('#suite-' + s.code) + '>' + esc(s.code) + '</a>';
|
||||
}).join('') + '<a href="#profiles">Profiles</a><a href="#fixtures">Fixtures</a></nav>';
|
||||
}
|
||||
|
||||
// the page body inside #acc-root (the same at build and at runtime)
|
||||
function renderBody(reg) {
|
||||
return headHtml(reg) + suiteNavHtml(reg) + gatesHtml(reg)
|
||||
+ (reg.suites || []).map(function (s, i) { return suiteHtml(s, i); }).join('')
|
||||
+ profilesHtml(reg) + fixturesHtml(reg) + footHtml(reg);
|
||||
}
|
||||
|
||||
// a key that moves when any case's state, evidence or run time moves
|
||||
function statusKey(reg) {
|
||||
return String(reg && reg.source_sha256 || '') + '|' + String(reg && reg.status || '') + '|' + allCases(reg).map(function (t) {
|
||||
return t.id + ':' + caseStatus(t) + ':' + (caseEvidenceUrl(t) || '') + ':' + (caseLastRun(t) || '');
|
||||
}).join(',');
|
||||
}
|
||||
|
||||
// the runtime: read the build-time copy, poll /api/acceptance every 60 seconds, re-render in place when the key moves,
|
||||
// keeping the open cases open and the focus where it was
|
||||
function boot() {
|
||||
var root = document.getElementById('acc-root'), data = document.getElementById('acceptance-data');
|
||||
if (!root || !data) return;
|
||||
var cur; try { cur = JSON.parse(data.textContent); } catch (e) { return; }
|
||||
var key = statusKey(cur);
|
||||
function live(text) { var l = document.getElementById('acc-live'); if (l) l.textContent = text; }
|
||||
function apply(reg) {
|
||||
var open = [].map.call(root.querySelectorAll('details[open]'), function (d) { return d.id; });
|
||||
var f = document.activeElement, fid = f && f.closest && f.closest('details') ? f.closest('details').id : null;
|
||||
root.innerHTML = renderBody(reg);
|
||||
open.forEach(function (id) { var d = document.getElementById(id); if (d) d.open = true; });
|
||||
if (fid) { var s = document.querySelector('#' + fid + ' > summary'); if (s) s.focus({ preventScroll: true }); }
|
||||
}
|
||||
function poll() {
|
||||
if (document.hidden) return;
|
||||
fetch('/api/acceptance', { cache: 'no-store' }).then(function (r) { return r.json(); }).then(function (d) {
|
||||
if (!d || !d.ok || !d.registry || !d.registry.suites) return;
|
||||
var k = statusKey(d.registry);
|
||||
if (k !== key) { cur = d.registry; key = k; apply(cur); }
|
||||
live('Checked against ' + (d.source || 'the git host') + ' at ' + fmtWhen(d.fetched_at).replace(/&/g, '&') + '; the page re-reads it every 60 seconds.');
|
||||
}).catch(function () { /* the build-time copy stands */ });
|
||||
}
|
||||
setTimeout(poll, 4000);
|
||||
setInterval(poll, 60000);
|
||||
document.addEventListener('visibilitychange', function () { if (!document.hidden) poll(); });
|
||||
}
|
||||
|
||||
// the page's <main> content: the rendered body in #acc-root, the registry as data, the runtime script
|
||||
function renderAcceptance(reg) {
|
||||
return '<div id="acc-root">' + renderBody(reg) + '</div>\n'
|
||||
+ '<script type="application/json" id="acceptance-data">' + JSON.stringify(reg).replace(/</g, '\\u003c').replace(/\u2014/g, '\\u2014') + '</script>\n'
|
||||
+ '<script>\n' + runtimeSource() + '\n</script>';
|
||||
}
|
||||
|
||||
// the inline classic script: the same functions, printed, then boot()
|
||||
function runtimeSource() {
|
||||
var fns = [overrides, profileWord, linkOpen, esc, clean, fmtDate, fmtWhen, normStatus, caseStatus, caseEvidenceUrl, caseLastRun, profilesOf, allCases, tally, countStatuses, stateOf, gateDefs, gatesOf,
|
||||
stateClass, chipHtml, barHtml, tallyText, tallyHtml, statusWords, headLine, headHtml, gateCardHtml, gatesHtml, caseHtml, suiteHtml, profileHtml, profilesHtml, fixturesHtml,
|
||||
footHtml, suiteNavHtml, renderBody, statusKey, boot];
|
||||
return '/* /acceptance runtime: printed at build from site/lib/acceptance-render.mjs (one source for both renders) */\n(function(){\n'
|
||||
+ fns.map(function (f) { return String(f); }).join('\n') + '\nif (document.readyState === "loading") document.addEventListener("DOMContentLoaded", boot); else boot();\n})();';
|
||||
}
|
||||
|
||||
export { overrides, profileWord, linkOpen, profilesOf, tally, stateClass, headLine, esc, clean, fmtDate, fmtWhen, normStatus, caseStatus, caseEvidenceUrl, caseLastRun, allCases, countStatuses, stateOf, gateDefs, gatesOf,
|
||||
chipHtml, barHtml, tallyText, statusWords, gateCardHtml, gatesHtml, caseHtml, suiteHtml, profilesHtml, fixturesHtml, footHtml, renderBody, statusKey,
|
||||
renderAcceptance, runtimeSource };
|
||||
89
site/lib/acceptance-render.test.mjs
Normal file
89
site/lib/acceptance-render.test.mjs
Normal file
|
|
@ -0,0 +1,89 @@
|
|||
// node --test site/lib/acceptance-render.test.mjs: the /acceptance renderer (8 October 2026). Known-failed first: a registry
|
||||
// with one FAIL case must render a molten FAIL chip and read FAIL on the gate that case belongs to; then a clean fixture of
|
||||
// 128 cases counts 128 NOT RUN, the runtime copy printed into the page renders the same bytes as the build, and the API
|
||||
// decodes the git host's base64 reply and answers ok:false (status 200) when the host fails.
|
||||
import test from 'node:test';
|
||||
import assert from 'node:assert/strict';
|
||||
import * as R from './acceptance-render.mjs';
|
||||
import { createHandler, decode } from '../api/acceptance.mjs';
|
||||
|
||||
// a clean fixture in the registry's shape: 16 suites of 8 cases, every case NOT RUN
|
||||
function fixture() {
|
||||
const gates = ['G0 / all gates', 'G1 / G2', 'G2 / technical readiness', 'G3', 'G5 / G2', 'G4', 'Technical readiness', 'Technical readiness / G5',
|
||||
'Technical readiness / commercial track', 'G4 / G5', 'G5 / technical readiness', 'Technical readiness / claimed options', 'G5', 'Operator readiness / G5',
|
||||
'Commercial evidence', 'Leadership-contender decision'];
|
||||
const codes = ['GOV', 'GPU', 'POW', 'ADV', 'ROT', 'ECO', 'EVM', 'ZKP', 'CAP', 'INC', 'FIN', 'VER', 'OPS', 'UX', 'COM', 'LEAD'];
|
||||
return {
|
||||
title: 'IGNEUM 2.0 - Test and Acceptance Standard', version: '1.0', date: '2026-10-08', status: 'PROPOSED - NOT EXECUTED', basis: 'the plan',
|
||||
suites: codes.map((code, i) => ({ code, title: code + ' suite', gate: gates[i], owner: 'a lead', fixtures: 'F0', summary: 'One line.',
|
||||
tests: Array.from({ length: 8 }, (_, j) => ({ id: `${code}-0${j + 1}`, title: 'A case', setup: 's', steps: ['a', 'b'], accept: 'x', evidence: 'e', priority: 'GATE', profile: 'P01; P04', status: 'NOT RUN' })) })),
|
||||
profiles: { P04: { title: 'Scoped specialist-competition target', requirements: ['R_E at most 1.5.'], status: 'PROPOSED - REQUIRES APPROVAL' }, P13: { title: 'Maintenance continuity', requirements: ['r'], status: 'PROPOSED - REQUIRES APPROVAL' } },
|
||||
fixtures: [{ id: 'F0', title: 'Manifest', contents: 'c' }],
|
||||
source_sha256: 'ab', scope_note: 'Scope.', all_pass_note: 'All pass.',
|
||||
};
|
||||
}
|
||||
|
||||
test('known-failed: one FAIL case renders a molten FAIL chip and a FAIL gate', () => {
|
||||
const reg = fixture();
|
||||
reg.suites[3].tests[2].run_status = 'FAIL'; // ADV-03, suite gate "G3"
|
||||
const html = R.renderBody(reg);
|
||||
assert.match(html, /<details class="acc-case" id="case-ADV-03" data-case="ADV-03" data-state="FAIL">[\s\S]*?<span class="acc-chip s-fail" data-state="FAIL">FAIL<\/span>/);
|
||||
assert.match(html, /<article class="acc-gate st-fail" id="gate-G3" data-gate-state="FAIL">/);
|
||||
assert.match(html, /<article class="acc-gate st-notrun" id="gate-G1" data-gate-state="NOT RUN">/);
|
||||
assert.equal(R.countStatuses(reg).FAIL, 1);
|
||||
assert.match(R.headLine(reg), /1 failed/);
|
||||
});
|
||||
|
||||
test('a clean fixture counts 128 NOT RUN and every gate reads NOT RUN', () => {
|
||||
const reg = fixture();
|
||||
const c = R.countStatuses(reg);
|
||||
assert.equal(c.total, 128); assert.equal(c['NOT RUN'], 128); assert.equal(c.PASS + c.FAIL + c.BLOCKED + c.RUNNING + c.DEFERRED, 0);
|
||||
const html = R.renderBody(reg);
|
||||
for (const g of ['G0', 'G1', 'G2', 'G3', 'G4', 'G5']) assert.match(html, new RegExp(`id="gate-${g}" data-gate-state="NOT RUN"`));
|
||||
assert.match(R.headLine(reg), /^Test and Acceptance Standard 1\.0: APPROVED AS PROPOSED by the founder, 8 October 2026; P13 \(maintenance continuity\) DEFERRED; 128 cases: 0 passed under the standard, 0 running with team evidence, 128 not run, 0 deferred$/);
|
||||
assert.match(html, /NOT EXECUTED/);
|
||||
assert.doesNotMatch(html, /percent|%/);
|
||||
});
|
||||
|
||||
test('the gate rule: FAIL over BLOCKED over RUNNING; PASS only when every case passes', () => {
|
||||
const t = (s) => ({ run_status: s });
|
||||
assert.equal(R.stateOf([t('PASS'), t('PASS')]), 'PASS');
|
||||
assert.equal(R.stateOf([t('PASS'), t('NOT RUN')]), 'NOT RUN');
|
||||
assert.equal(R.stateOf([t('PASS'), t('RUNNING')]), 'RUNNING');
|
||||
assert.equal(R.stateOf([t('RUNNING'), t('BLOCKED')]), 'BLOCKED');
|
||||
assert.equal(R.stateOf([t('BLOCKED'), t('FAIL')]), 'FAIL');
|
||||
assert.equal(R.stateOf([t('PASS'), t('DEFERRED')]), 'NOT RUN');
|
||||
assert.equal(R.normStatus('something new'), 'BLOCKED');
|
||||
assert.deepEqual(R.gatesOf('G0 / all gates').slice(0, 6), ['G0', 'G1', 'G2', 'G3', 'G4', 'G5']);
|
||||
assert.deepEqual(R.gatesOf('G2 / G3'), ['G2', 'G3', 'CD']);
|
||||
});
|
||||
|
||||
test('run fields: run_status over status, evidence_path linked on the git host, updated as the last run, no em dash served', () => {
|
||||
const reg = fixture();
|
||||
Object.assign(reg.suites[1].tests[0], { run_status: 'PASS', evidence_path: 'docs/runs/gpu-01.md', updated: '2026-10-08T18:05:00Z', title: 'A case \u2014 with a dash' });
|
||||
const html = R.renderBody(reg);
|
||||
assert.match(html, /href="https:\/\/git\.igneum\.network\/igneum-network\/igneum\/src\/branch\/master\/docs\/runs\/gpu-01\.md"/);
|
||||
assert.match(html, /8 Oct 2026, 19:05 UK/);
|
||||
assert.doesNotMatch(R.renderAcceptance(reg), /\u2014/);
|
||||
assert.match(html, /id="profile-P04"[\s\S]*?R_E target at most 1\.5 at the same node and one node ahead; today's placed bracket 1\.5x to 2\.1x: FAIL/);
|
||||
assert.match(html, /id="profile-P13"[\s\S]*?Deferred by the founder/);
|
||||
});
|
||||
|
||||
test('the runtime copy printed into the page renders the same body as the build', () => {
|
||||
const reg = fixture(); reg.suites[0].tests[0].run_status = 'RUNNING';
|
||||
const src = R.runtimeSource().replace('(function(){', 'return (function(){').replace(/if \(document\.readyState[^\n]*\n\}\)\(\);$/, 'return renderBody;\n})();');
|
||||
const renderBody = new Function(src)();
|
||||
assert.equal(renderBody(reg), R.renderBody(reg));
|
||||
});
|
||||
|
||||
test('the API decodes the git host reply and keeps ok:false on failure', async () => {
|
||||
const reg = fixture();
|
||||
assert.equal(decode({ content: Buffer.from(JSON.stringify(reg)).toString('base64'), encoding: 'base64' }).suites.length, 16);
|
||||
const res = () => { const r = { headers: {}, code: 0, body: null }; r.setHeader = (k, v) => { r.headers[k] = v; }; r.status = (c) => { r.code = c; return r; }; r.json = (b) => { r.body = b; return r; }; return r; };
|
||||
const ok = createHandler({ fetchImpl: async () => ({ ok: true, json: async () => ({ content: Buffer.from(JSON.stringify(reg)).toString('base64'), encoding: 'base64' }) }) });
|
||||
const a = res(); await ok({ method: 'GET' }, a);
|
||||
assert.equal(a.code, 200); assert.equal(a.body.ok, true); assert.equal(a.body.source, 'git.igneum.network master'); assert.equal(a.body.registry.suites.length, 16);
|
||||
const bad = createHandler({ fetchImpl: async () => ({ ok: false, status: 502 }) });
|
||||
const b = res(); await bad({ method: 'GET' }, b);
|
||||
assert.equal(b.code, 200); assert.equal(b.body.ok, false); assert.match(b.body.reason, /502/);
|
||||
});
|
||||
|
|
@ -137,7 +137,7 @@
|
|||
<div class="panel-list">
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
@ -177,7 +177,7 @@
|
|||
<div class="sheet-group"><div class="sheet-head">Learn</div>
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
|
|||
|
|
@ -186,7 +186,7 @@ body.all .pager{display:none}
|
|||
<div class="panel-list">
|
||||
<a href="/litepaper" data-nav="litepaper" aria-current="page"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
@ -226,7 +226,7 @@ body.all .pager{display:none}
|
|||
<div class="sheet-group"><div class="sheet-head">Learn</div>
|
||||
<a href="/litepaper" data-nav="litepaper" aria-current="page"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
|
|||
|
|
@ -270,7 +270,7 @@ details.tablebar summary{display:flex;align-items:center}
|
|||
<div class="panel-list">
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
@ -310,7 +310,7 @@ details.tablebar summary{display:flex;align-items:center}
|
|||
<div class="sheet-group"><div class="sheet-head">Learn</div>
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
|
|||
|
|
@ -131,7 +131,7 @@ ol{margin:0 0 14px;padding-left:22px}li{margin-bottom:6px}
|
|||
<div class="panel-list">
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
@ -171,7 +171,7 @@ ol{margin:0 0 14px;padding-left:22px}li{margin-bottom:6px}
|
|||
<div class="sheet-group"><div class="sheet-head">Learn</div>
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
|
|||
|
|
@ -126,7 +126,7 @@ pre b{color:var(--molten-text);font-weight:500}
|
|||
<div class="panel-list">
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
@ -166,7 +166,7 @@ pre b{color:var(--molten-text);font-weight:500}
|
|||
<div class="sheet-group"><div class="sheet-head">Learn</div>
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
|
|||
|
|
@ -130,7 +130,7 @@ table{min-width:560px}
|
|||
<div class="panel-list">
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
@ -170,7 +170,7 @@ table{min-width:560px}
|
|||
<div class="sheet-group"><div class="sheet-head">Learn</div>
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ export const CARDS = {
|
|||
faucet: { kicker: 'Devnet faucet', title: 'Test IGN, for building.', sub: 'Paste an address. Get a transaction hash.', route: 'igneum.network/faucet' },
|
||||
economics: { kicker: 'Economics', title: 'The economics, as the node encodes them.', sub: 'The emission, the split, the fees, each with its file and line.', route: 'igneum.network/economics' },
|
||||
scorecard: { kicker: 'Scorecard', title: 'Evidence for every gate.', sub: 'Twelve acceptance gates, the evidence each needs, what never stands in for it.', route: 'igneum.network/scorecard' },
|
||||
acceptance: { kicker: 'Acceptance', title: 'Shown as they pass.', sub: 'The Test and Acceptance Standard, 128 cases in 16 suites, case by case.', route: 'igneum.network/acceptance' },
|
||||
litepaper: { kicker: 'Litepaper', title: 'Mined by GPUs. Proven by fire.', sub: 'The hourly GPU lottery, blocks proven by miners, miner-only finality.', route: 'igneum.network/litepaper' },
|
||||
light: { kicker: 'Light wallet', title: 'A balance your browser proves.', sub: 'Certificate, headers and account proof, recomputed in the tab.', route: 'igneum.network/light' },
|
||||
receipt: { kicker: 'Inclusion receipt', title: 'A receipt any third party re-verifies.', sub: 'Proven against the finality certificate. Checked offline with one file.', route: 'igneum.network/receipt' },
|
||||
|
|
|
|||
|
|
@ -137,7 +137,7 @@
|
|||
<div class="panel-list">
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
@ -177,7 +177,7 @@
|
|||
<div class="sheet-group"><div class="sheet-head">Learn</div>
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@
|
|||
<div class="panel-list">
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
@ -85,7 +85,7 @@
|
|||
<div class="sheet-group"><div class="sheet-head">Learn</div>
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
|
|||
|
|
@ -130,7 +130,7 @@ table{min-width:560px}
|
|||
<div class="panel-list">
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
@ -170,7 +170,7 @@ table{min-width:560px}
|
|||
<div class="sheet-group"><div class="sheet-head">Learn</div>
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
|
|||
|
|
@ -156,7 +156,7 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
|
|||
<div class="panel-list">
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
@ -196,7 +196,7 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
|
|||
<div class="sheet-group"><div class="sheet-head">Learn</div>
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
|
|||
|
|
@ -129,7 +129,7 @@
|
|||
<div class="panel-list">
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx" aria-current="page"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
@ -169,7 +169,7 @@
|
|||
<div class="sheet-group"><div class="sheet-head">Learn</div>
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx" aria-current="page"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
|
|||
|
|
@ -135,7 +135,7 @@
|
|||
<div class="panel-list">
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
@ -175,7 +175,7 @@
|
|||
<div class="sheet-group"><div class="sheet-head">Learn</div>
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
|
|||
|
|
@ -121,7 +121,7 @@
|
|||
<div class="panel-list">
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
@ -161,7 +161,7 @@
|
|||
<div class="sheet-group"><div class="sheet-head">Learn</div>
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
|
|||
|
|
@ -103,7 +103,7 @@
|
|||
<div class="panel-list">
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard" aria-current="page"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard" aria-current="page"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
@ -143,7 +143,7 @@
|
|||
<div class="sheet-group"><div class="sheet-head">Learn</div>
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard" aria-current="page"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard" aria-current="page"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
@ -213,6 +213,7 @@
|
|||
<section class="page-hero"><div class="container">
|
||||
<div class="eyebrow">Acceptance scorecard</div>
|
||||
<h1>Evidence for every gate.</h1>
|
||||
<p class="home-quiet"><a href="/acceptance">The Test and Acceptance Standard, case by case: /acceptance</a></p>
|
||||
<p class="lead">A GPU-secured network for Ethereum-compatible applications and verifiable computation. This is an acceptance checklist, not a completion dashboard: twelve gates from the Igneum 2.0 plan (page 25), the evidence each requires, what may never stand in for it, and where each gate stands today, read from the <a href="/evidence">facts page</a>. Nothing on this site stands above team-tested; every chip row is modelled.</p>
|
||||
</div></section>
|
||||
<section class="section"><div class="container">
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<url><loc>https://igneum.network/</loc><lastmod>2026-10-07</lastmod><changefreq>weekly</changefreq><priority>1.0</priority></url>
|
||||
<url><loc>https://igneum.network/litepaper</loc></url><url><loc>https://igneum.network/economics</loc><lastmod>2026-10-07</lastmod><changefreq>monthly</changefreq><priority>0.9</priority></url><url><loc>https://igneum.network/scorecard</loc><lastmod>2026-10-08</lastmod><changefreq>monthly</changefreq><priority>0.9</priority></url>
|
||||
<url><loc>https://igneum.network/litepaper</loc></url><url><loc>https://igneum.network/economics</loc><lastmod>2026-10-07</lastmod><changefreq>monthly</changefreq><priority>0.9</priority></url><url><loc>https://igneum.network/scorecard</loc><lastmod>2026-10-08</lastmod><changefreq>monthly</changefreq><priority>0.9</priority></url><url><loc>https://igneum.network/acceptance</loc><lastmod>2026-10-08</lastmod><changefreq>monthly</changefreq><priority>0.9</priority></url>
|
||||
<url><loc>https://igneum.network/miner</loc><lastmod>2026-10-07</lastmod><changefreq>weekly</changefreq><priority>0.8</priority></url>
|
||||
<url><loc>https://igneum.network/app</loc><lastmod>2026-10-07</lastmod><changefreq>weekly</changefreq><priority>0.8</priority></url>
|
||||
<url><loc>https://igneum.network/wallet</loc><lastmod>2026-10-07</lastmod><changefreq>monthly</changefreq><priority>0.6</priority></url>
|
||||
|
|
|
|||
|
|
@ -140,7 +140,7 @@ dt{color:var(--ash)}dd{margin:0;font-family:var(--f-mono);font-size:13px;overflo
|
|||
<div class="panel-list">
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
@ -180,7 +180,7 @@ dt{color:var(--ash)}dd{margin:0;font-family:var(--f-mono);font-size:13px;overflo
|
|||
<div class="sheet-group"><div class="sheet-head">Learn</div>
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
|
|||
|
|
@ -157,7 +157,7 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
|
|||
<div class="panel-list">
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
@ -197,7 +197,7 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
|
|||
<div class="sheet-group"><div class="sheet-head">Learn</div>
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
|
|||
|
|
@ -139,7 +139,7 @@
|
|||
<div class="panel-list">
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
@ -179,7 +179,7 @@
|
|||
<div class="sheet-group"><div class="sheet-head">Learn</div>
|
||||
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
|
||||
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a>
|
||||
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a><a href="/scorecard" data-nav="scorecard"><b>Scorecard</b><span>The twelve acceptance gates, their evidence and where each stands.</span></a><a href="/acceptance" data-nav="acceptance"><b>Acceptance</b><span>The Test and Acceptance Standard, case by case, as each one passes.</span></a>
|
||||
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
|
||||
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
|
||||
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
|
||||
|
|
|
|||
|
|
@ -58,6 +58,7 @@ chain scene: the live feed contract (the recorded reply validates; a rewritten m
|
|||
chain scene parity: one recorded feed through the home fold, /live and the app's Inspect view on build-2, three frames each pixel-equal apart from the app's own-key overlay (a changed token fails first; skipped with no box and no Playwright; one retry)
|
||||
no text overlaps: every served page at 390 to 1600 px, light and dark, the hero at each step (self-test first; IGNEUM_OVERLAP_APPS=1 adds the miner and wallet UIs)
|
||||
explorer, emission, income calculator and public stats unit tests
|
||||
the /acceptance renderer and its API unit tests
|
||||
ship tool self-test
|
||||
relay unit tests
|
||||
miner app notice strip and update card tests
|
||||
|
|
|
|||
|
|
@ -17,14 +17,18 @@ const RULES = [
|
|||
['a workbook threshold served as a boundary', /USD 340 ?M\b|USD 23 ?M\b|USD 20 to 75 ?M\b/],
|
||||
];
|
||||
// a quoted challenge on the ledger page (<blockquote>, the entry title) and a limits item that negates the claim ("X. No.") are not the
|
||||
// project's claims: they are stripped before the scan, so the pages may refute a line they never make
|
||||
const text = (html) => html.replace(/<script[\s\S]*?<\/script>|<style[\s\S]*?<\/style>|<blockquote>[\s\S]*?<\/blockquote>|<h3>[^<]*<\/h3>|<strong>[^<]*<\/strong>\s*No\.|<span class="did">[^<]*<\/span>/g, ' ').replace(/<[^>]+>/g, ' ').replace(/&[a-z]+;|&#\d+;/g, ' ');
|
||||
// project's claims: they are stripped before the scan, so the pages may refute a line they never make; so is the plan's own list of what
|
||||
// is never served, printed once on /acceptance in <p class="acc-never" data-never-served>Never served: ...</p> (8 October 2026)
|
||||
const text = (html) => html.replace(/<script[\s\S]*?<\/script>|<style[\s\S]*?<\/style>|<blockquote>[\s\S]*?<\/blockquote>|<p class="acc-never" data-never-served>Never served:[^<]*<\/p>|<h3>[^<]*<\/h3>|<strong>[^<]*<\/strong>\s*No\.|<span class="did">[^<]*<\/span>/g, ' ').replace(/<[^>]+>/g, ' ').replace(/&[a-z]+;|&#\d+;/g, ' ');
|
||||
const scan = (name, html) => { const t = text(html); const hits = []; for (const [what, re] of RULES) { const m = re.exec(t); if (m) hits.push(`${name}: ${what} ("${t.slice(Math.max(0, m.index - 40), m.index + m[0].length + 40).replace(/\s+/g, ' ').trim()}")`); } return hits; };
|
||||
// self-test: a known-failed fixture per rule, then a clean one
|
||||
const fixtures = ['every chip dies within a year', 'a universal ASIC-efficiency ceiling of 2x', 'a 30 percent chance of a chip by 2027', 'guaranteed profits for miners', 'the chain inherits Ethereum security', 'ZK makes transactions private', 'the number one GPU chain', 'the capex wall at USD 340 M'];
|
||||
let bad = 0;
|
||||
fixtures.forEach((f, i) => { if (!RULES[i][1].test(f)) { console.error(`self-test: rule ${i} missed "${f}"`); bad++; } });
|
||||
if (scan('clean', '<p>A GPU-secured network for Ethereum-compatible applications and verifiable computation. ZK is not privacy. EVM compatibility is not Ethereum security.</p>').length) { console.error('self-test: the clean fixture was flagged'); bad++; }
|
||||
const NEVER = 'Never served: guaranteed chip death, a universal ASIC-efficiency ceiling, chip-arrival probabilities, guaranteed profits, Ethereum security by compatibility, privacy from ZK, a numerical rank.';
|
||||
if (scan('list', `<p class="acc-never" data-never-served>${NEVER}</p>`).length) { console.error('self-test: the never-served list in its marked element was flagged'); bad++; }
|
||||
if (!scan('list', `<p>${NEVER}</p>`).length) { console.error('self-test: the same list outside its marked element was not flagged'); bad++; }
|
||||
if (bad) process.exit(1);
|
||||
const hits = [];
|
||||
for (const f of readdirSync(site).filter(f => f.endsWith('.html'))) hits.push(...scan(f, readFileSync(join(site, f), 'utf8')));
|
||||
|
|
|
|||
|
|
@ -157,6 +157,7 @@ tree_checks() {
|
|||
run "chain scene parity: one recorded feed through the home fold, /live and the app's Inspect view on build-2, three frames each pixel-equal apart from the app's own-key overlay (a changed token fails first; skipped with no box and no Playwright; one retry)" bash tools/ci/retry-once.sh scene-parity bash tools/scene/parity-remote.sh
|
||||
run "no text overlaps: every served page at 390 to 1600 px, light and dark, the hero at each step (self-test first; IGNEUM_OVERLAP_APPS=1 adds the miner and wallet UIs)" overlap_sweep
|
||||
run "explorer, emission, income calculator and public stats unit tests" node --test site/lib/explorer.test.mjs site/lib/emission.test.mjs site/lib/income-calc.test.mjs site/lib/money.test.mjs site/lib/leaderboard.test.mjs site/api/public-stats.test.mjs site/lib/proving-health.test.mjs
|
||||
run "the /acceptance renderer and its API unit tests" node --test site/lib/acceptance-render.test.mjs
|
||||
run "ship tool self-test" node tools/ship-app.mjs --self-test
|
||||
run "relay unit tests" node --test relay/test/parse.test.mjs relay/test/auth.test.mjs relay/test/wake.test.mjs relay/test/ember.test.mjs
|
||||
run "miner app notice strip and update card tests" node --test app/igneum-app/ui/notices.test.mjs app/igneum-app/ui/update-card.test.mjs app/igneum-app/ui/view.test.mjs app/igneum-app/ui/tune-line.test.mjs
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ const here = dirname(fileURLToPath(import.meta.url));
|
|||
const GROUPS = {
|
||||
mine: ['/miner', '/download', '/app', '/wallet', '/miners', '/dev-fee', '/metamask'],
|
||||
network: ['/live', '/explorer', '/evidence', '/light', '/receipt', '/oracle'],
|
||||
learn: ['/litepaper', '/income', '/economics', '/scorecard', '/ledger', '/claims', '/randomx', '/provenance'],
|
||||
learn: ['/litepaper', '/income', '/economics', '/scorecard', '/acceptance', '/ledger', '/claims', '/randomx', '/provenance'],
|
||||
build: ['/build', '/faucet', '/swap', '/grants', '/compatibility'], // the builder programme (8 October 2026): the developer entry page, the Devnet 3 faucet, the swap, the grants
|
||||
};
|
||||
const ROUTES = Object.values(GROUPS).flat();
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ SRV=$!
|
|||
trap 'kill "$SRV" 2>/dev/null || true' EXIT
|
||||
for i in $(seq 1 40); do curl -fsS "http://127.0.0.1:$PORT/" > /dev/null 2>&1 && break; sleep 0.25; done
|
||||
curl -fsS "http://127.0.0.1:$PORT/" > /dev/null || { echo "the site did not answer on $PORT" >&2; cat "$OUT/serve.log" >&2; exit 3; }
|
||||
ROUTES="${ROUTES:-/ /download /miner /app /wallet /live /explorer /evidence /litepaper /income /economics /scorecard /ledger /claims /randomx /provenance /miners /dev-fee /faucet /metamask /404}"
|
||||
ROUTES="${ROUTES:-/ /download /miner /app /wallet /live /explorer /evidence /litepaper /income /economics /scorecard /acceptance /ledger /claims /randomx /provenance /miners /dev-fee /faucet /metamask /404}"
|
||||
WIDTHS="${WIDTHS:-390 1440}"; THEMES="${THEMES:-dark light}"
|
||||
shot() { # <route> <width> <theme>
|
||||
local route="$1" width="$2" theme="$3" name height
|
||||
|
|
|
|||
Loading…
Reference in a new issue