igneum/docs/design/live-proving/README.md
igneum-labs 771e00c3e1 Live page: shards per block (proving v0), three strips on one time axis (blocks, finality bar, proving), observer proof feed, hero glint
Observer (tools/observer/observer.mjs): reads the execution layer's JSON-RPC of a node on the proving build
(IGNEUM_EVM_RPC, default the Mac app's node 26800): every chain block's shard plan as it joins the chain
(igneum_getShardPlan by blockHash, one live_proofs row per shard, planned), the proof records of the chain
blocks of the last 10 minutes polled in rotation (igneum_getProofRecords, four in flight, 40 blocks per tick
while active, 10 before activation): proving (in the pool), verified (SP1 proof verified, or carried and checked
by consensus), paid (a carrying segment paid it), with the prover's id8, the carrier, lag in DAA and the payout.
live_state.proving = {supported, active, activation_daa, tip_daa, verifier, pool, blocks_10m,
blocks_fully_proven_10m, shards_proven_10m, shards_paid_10m, median_proof_lag_s, provers_10m}. A node without
the RPCs gives supported false (rechecked every 5 min); an unreachable endpoint is retried every 20 s. Events:
proving (activation, first paid shard), prover_seen. Additive schema (live_proofs, live_state.proving).

API (site/api/live.mjs): proving, and per block shards: [{i, n, state, prover, lag, payout (IGN), pgas}] and
proven; ?window=N (30 to 300 s) for the page's diagnostic long view; LIVE_TABLE_PREFIX reads a test observer's
tables.

Live page (site/live.html), the design change of 4 Oct 2026: three thin strips sharing one time axis, newest at
the right. BLOCKS keeps the per-miner lanes, chain path, blue/red/pending colouring, arrival glow and tooltips;
the lock ring, dashed lock line and final band leave it. FINALITY is an 18 px bar: ember wash = final (up to the
newest locked checkpoint on screen), molten tick = locked checkpoint, faint = proposed, one label at the newest
lock ("locked #522, 12 s ago"); while finality is not active it reads "finality paused: N% of weight silent" and
nothing else (R4.6.3). PROVING shows one cell per shard under each chain block, outline (planned), molten
(proving), prover colour (verified), tick (paid), a dashed "proofs land N s behind the tip" line, or the one
honest line before activation ("Proving layer: not yet activated on this devnet; activation at DAA N" / "node
without proving"). Header stats: on screen, chain, identities, last lock, proven. Legend: one line per strip.
Hover and tap tooltips on blocks and cells (block, shard, prover, lag, payout). Lanes snap on resize (they used
to ease from a zero-height layout). Phone width, no horizontal scroll; draw 0.6 ms avg, 1 ms max with 110 blocks
on screen (playwright, 1280 px).

Hero (site/index.html): a faint second glint behind a real block once every shard of it is verified, only while
the proving layer is active; pace and sampling untouched.

Verified on the private 3-node proving network (tools/proving-v0/run.mjs --network-only, activation 60) with a
CPU prover loop signing as v0/v1/v2: records relayed, verified on node 0, carried and paid (block 155 by 405,
lag 259 DAA, 0.634 IGN); screenshots in docs/design/live-proving (devnet before activation at 1280 and 375 px,
test network active, the ?window=300 view with paid cells). The live devnet shows the "not yet activated;
activation not set" line once the observer runs this build.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 17:39:28 +00:00

1.9 KiB

Live page: blocks, finality and proving strips (4 October 2026)

Screenshots of site/live.html after the three-strip layout (one time axis, newest at the right: BLOCKS lanes, a FINALITY bar, a PROVING strip with one cell per shard of every chain block). Captured from the page served locally against two observers' tables, with the installed Chromium test build (never the owner's Chrome), device scale 2.

File What it shows
devnet-before-activation-desktop.png, devnet-before-activation-mobile.png The real devnet (a read-only second observer on the observer node 28640, proving data from the Mac app's node on the proving build, 26800): proving_v0_activation_daa unset, so the proving strip carries the one honest line "Proving layer: not yet activated on this devnet; activation not set". 1280 px and 375 px.
testnet-active-desktop.png The private 3-node proving network (tools/proving-v0/run.mjs --network-only, activation at DAA 60) at the default adaptive scale: every chain block's planned shard cell, the lag label at the left when proofs land beyond the visible window.
testnet-active-window300-desktop.png, testnet-active-window300-mobile.png The same network through the diagnostic ?window=300 view (300 s on the axis; the API returns the same span): paid cells in the prover's colour with the tick, the dashed "proofs land N behind the tip" line, the tooltip of a paid cell (block, shard, prover, lag, payout).

Frame budget (playwright, 6 s samples, requestAnimationFrame wrapped): 1280 px with 110 blocks on screen avg 0.63 ms, max 1.0 ms; 375 px avg 0.49 ms, max 0.9 ms. Budget 10 ms.

What the CPU test prover showed (observer rows, provtest_live_proofs): block 155 shard 0 paid by chain block 405, lag 259 DAA (the compressed proof took 252 s on the loaded Mac), payout 634,116,040,000,000,000 wei; block 154 in proving while node 0's verifier queued behind the same CPU. Nothing here is a proving-time number.