docs/plans/miner-ui-5.md (what is built, gate results, owed, the RPC fields the node does not expose yet, what the
site lane takes); docs/plans/miner-ui-5-shots/ (light and dark at 1440 and 390, the saved block card PNG);
docs/plans/miner-ui-5-first-share-runbook.md; docs/community/discord/ladder.md.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit f508274fe2)
View: poisson, ignPerDay, ladderRungs (every threshold from the node's params: dust, weightWindow, presenceWindow),
blockCard, earningsLines (IGN first, the typed price never fetched, the share and rank, IGN per kWh), cardIgnDay,
timeline, profileWords; FIELDS names every number's RPC field for the title on hover. Overview: the Poisson
count-up until the first block, the block card in place with Save the card (a canvas PNG, no network call), Copy the
link and the explorer, the ladder strip. Earnings: the six lines, the ladder card, Your first hour. Prove: the shard
card. Cards: IGN a day per card. Settings: Make my page public. The chain scene is the site lane's EMBER 02 pack
(live-dag.js and proof-core.js byte-identical): the compact card fed by the page's own api/live read, Inspect opens
the full scene with the block inspector in the site's words. ui-mock: scenarios firstwait, firstblock, ladder,
api/ladder, api/card. view.test.mjs: a Devnet 2 key walks every rung; 47 UI tests.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit 32793b686a)
src/ladder.rs: this machine's record (first block by card, hash joined to the miner's ACCEPTED line by nonce from the
node's PoW accepted line, blocks per UTC day, VOTE and LOCK lines as the signing record and streak, paid shards, the
milestone at 1, 100, 1,000, every 10,000th and the first block of a new card, the first-hour marks); persisted, in
api/state.ladder. src/chainfacts.rs: GET /api/ladder, getFinalityWeights through the node's EVM port when it answers
igneum_getFinalityWeights (owed), else the observer's relay plus /api/stats; this machine's keys ranked; the source
named. src/card.rs and POST /api/card: the page's 1200x630 PNG written under <data root>/cards/ and revealed.
settings.profile_public behind api/settings. Hooks in engine.rs (block, node line, vote, lock, synced, mining) and
prover.rs (paid shard). Box: 190 + 27 + 8 tests.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit 959c4a5fa9)
The fleet's 14 standing provers cut a different state root from the 0.3.17 node on every segment because their pair came from another tree (7 October 2026). The prover depends on vendor/igneum-node-exec's evm-types; this check compares that tree with the evm-types tree of the commit in packaging/windows/node-source.pin.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
renderer pack EMBER 02 supplied by the project lead, 7 Oct 2026: src/live-dag.js
and src/proof-core.js adopted byte for byte (sha256 582f2e73... and
c2a094a6...), reviewed as third-party code (one same-origin fetch of
/api/live when poll is on, no eval, no CDN, no font download, tokens
read from :root in both themes, checkpoints placed only on an exact
blue score, proof never implies inclusion, a lock only when reported),
its tests/verify.py run on this Mac (73 of 73) and the module mounted
against the real observer feed (state live, only /api/live requested,
zero records promoted). Home: the pack's full mode in the one-screen
fold with the legend row and the newest block's caption, fed by the
page's own reader. /live: the pack in the graph slot, the four miner
stats (blocks in window, your blocks, proven, latest checkpoint), the
All blocks / Selected chain / Your blocks tabs, Pause and Follow, the
window stepper, the inspector column with IgneumProof's shard scene,
the proof shards list, inclusion, miner key, blue score, DAA, parents,
header time, checkpoint, finality, and the three-beat Motion, with
meaning block; the observatory's six tiles, identities, event stream,
block activity, light client and table stay. site.css gains --included
and --excluded. The standalone demo is the pack's standalone.html; the
10-second recording is from this branch's /live.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
docs/plans/testnet-go.md, "Launch gates": LG-1 income per tier (done, re-generate at the cut), LG-2 hash origin on Devnet 2 for seven days, LG-3 signed and notarised installers, LG-4 first-share time per release, LG-5 the text on the site, LG-6 to LG-10 the community gates (first 100 keys, first outside block, first outside-reproduced benchmark, first attested outside pool, first 1,000 independent keys), LG-11 a signed proving customer as a MAINNET gate (the owner, 7 October 2026: a customer paying at a published rate or a letter of intent with a volume), LG-12 the report daily for 90 days, LG-13 the USD 50,000 disclosure prize (approved, staged until the entity address and the publish word). Each with its check, its state and its owner.
docs/plans/launch-pack.md: the Apple organisation and EV Authenticode runbooks (provider, cost, the entity's documents, where the keys live, never on the box), the signing step for the shipper (windows.yml before ISCC and the Inno SignTool directive, build-dmg.sh Developer ID plus notarytool and stapler, the manifest's signed_by and notarized fields, the shipper's fetch and verify checks), the first-share measurement specification, the hash-origin timer on the box and today's reading with its consequences, the handoff block for the site lane (the three wants on the front page, finality on page two, the block sentence, the eight sentences of future.md 8.3 verified and numbered under the label, the journey gate changes, the ledger rows X13, X37, X38, E23, L10), and the nine items that need the owner.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
tools/launch/income-tiers.mjs renders docs/analysis/income-tiers.md (public) from tools/launch/income-tiers.json: eleven measured cards (the 6 October rented-card rows, the 9070 XT telemetry run, the M5 Max Metal bench, each with its source), IGN a day at 1, 10 and 100 GH/s after the ramp on EmissionSchedule::TESTNET_1 (100 IGN a block, 90-day ramp from 10 percent, monthly 2^(-1/24), the 80 percent producer share), electricity a day and per mined IGN at USD 0.005, 0.02 and 0.10 a kWh, a rig and a pool-user line, the consequences per tier, the owed rows; --check fails CI when the page and its inputs disagree; the test pins the arithmetic (6,912 IGN a day for 100 MH/s on 100 GH/s at the launch rate, day 1 at 10 percent, one step at 2^(-1/24)).
tools/observer/hash-origin.mjs: once a day from the observer's tables, who found the blocks: keys with a block and above dust, attested pools against shared payout addresses (a multi-key machine is not a pool until its operator attests), the project fleet's share from the intake identity lines plus the fleet registry's key file, the ten largest keys, the 2x step since yesterday, the community gates (first 100 keys, first outside block, first attested outside pool at 10 percent for 7 days; the X5 count stays an upper bound until the two observer columns exist). --dry reads only; --write keeps hash_origin_days and hash_origin_reports and live_state.hash_origin; --post goes through the Discord poster's guard. Fixture, a known-finished and a known-failed day in the test. Ran read-only on the live devnet today: 113 keys, 0.76 GH/s, the fleet share wrong until the key file exists.
tools/ci/launch-gates-check.mjs (in pre-push.sh with the two test lines): every row of the Launch gates table in testnet-go.md has a check and every backticked path exists; the site-lane handoff and the income table carry no served-page or export pattern and no em dash; the eight regulatory sentences are present in order under the label. Self-test fires on each.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Only update.rs from 0f6b4650; its version bumps stay with the shipper's cut.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit 032e1f8717)
The reference page's composition in our tokens and words, every number
from the observer: the header row (eyebrow, the title with its ember
full stop, one sentence, two buttons, the state word), six tiles in one
hairline row each with a definition, the block graph panel (our
live-dag.js in the graph slot, the block-count chip, selected chain
only, pause and follow, the inspector column with hash, lane, time, blue
score, DAA, chain, colour word, shards, checkpoint and lock state, the
drag-to-explore line, the zoom control, the legend row and the blue
score range), the three panels (block activity with per-minute bars,
mining identities with share bars and the reader's own key marked when
set, the event stream), the blocks table, our footer. live-dag.js gains
an onSelect hook on click (additive; the app's copy unchanged).
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
remote-run.sh checkout_tree ran `git clean -fd` on the box mirror before every build from any agent, so the attack rows
lost attack-f3/, attack-f1-venv/ and tools/attack/*/target to each other's builds (7 October 2026, 09:2x UK). The clean now
also spares the fixed prefixes attack-*, scratch-*, target-attack-*, .build-remote.log and every glob in the mirror-local
.igneum-scratch-spare (one per line, # comments, the file itself spared), keeps the target and stamp excludes and still runs
without -x. The clean-tree test asks `git clean -nd` with the same excludes instead of filtering the status list, so a spared
dir is not "not clean". --self-test: a fixed-prefix dir at the root and nested, a declared dir and the spare file survive, an
undeclared dir is removed. tools/ci/scratch-spare-check.sh in the pre-push gate fails when the clean line loses the spare
arguments, spare_args stops reading the file, a fixed prefix goes, or -x appears. docs/plans/build-server.md R4a says how a
lane declares its prefix.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Light theme shows light screenshots on the miner and app pages (the
0.3.16 renders from the RTX 5090 Windows rig's live state, the 390 px
pair included). The X9 never shipped: pre-orders 26 December 2025,
withdrawn mid-May 2026 before any unit shipped, no benchmark; every
public sentence that had it shipping now says so, with k about 0.33
labelled as the claimed, unmeasured core; ledger X36, notes on X34, X35,
M34 and C2. Every public Discord link is https://discord.gg/igneum.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>