Commit graph

660 commits

Author SHA1 Message Date
igneum-labs
c7149bdd6a Ledger decisions: the project lead approves the emission schedule, the signing bonus, the ladder, the cryptanalysis engagement and the testnet genesis re-cut (7 October 2026, 09:3x UK)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 07:36:12 +00:00
igneum-labs
02d7f5ab81 Observer sync follows GitHub: the deploy-key probe captured before grep (ssh -T exits 1 under pipefail); plan 5c done
the project lead added the read-only deploy key on 7 October 2026 (SHA256:51ice3W8...). The sync still said 'mirror' because ssh -T to GitHub
exits 1 after its greeting and observer-sync.sh runs under pipefail, so su ... | grep -q reported failure although grep had
matched (the same line by hand, without pipefail, said authenticated; shown under the unit's environment with systemd-run -v).
The probe's output is captured first. First github pass 07:30:54 UTC: the clone moved from the mirror's d79f4a6 to origin/master
8b878ba4, the observer restarted on it.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 07:31:42 +00:00
igneum-labs
8b878ba43c Merge site-ui-3: the one-screen home page is back
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 07:14:26 +00:00
igneum-labs
fc77e88683 site: the one-screen home page is back (84b349e), with the wording that landed since
The owner's word this morning: the 56 px header, the eleven-word
statement, two buttons, the step scene full bleed, three facts, the
downloads and one line to the ledger. Kept from the nights since: the
X31 testnet sentence, the X35 chip range with k stated, the Discord
line. The RandomX correction (X34), G4, C2 and X8 stand on the
litepaper; the ledger notes and the text check say so. The app showcase
moves to the miner page in the next step.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 07:14:24 +00:00
igneum-labs
081f832b01 Hands plan: the 0.3.17 hotfix run log (hands and seed on 5899f603, read-backs, times, the pairs held for 0.3.18)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 05:33:45 +00:00
igneum-labs
3720c40bce glibc ceilings per artefact class: hive and rig 2.31, seed and linux 2.35, native unchecked; proven in ubuntu:20.04 and 22.04 on the box
Main's order of 7 October 2026 after RunPod's Ubuntu 22.04 canaries (glibc 2.35) refused the box's GLIBC_2.38 binaries and HiveOS
turned out Ubuntu 20.04 based (2.31). The table lives once, in tools/ci/glibc-ceiling-check.sh (--class, --ceiling-of; self-test
covers the table, an unknown class and a 2.34 need against hive); tools/build-remote.sh --ship hive|rig|seed|linux (default seed)
and tools/workers-remote.sh --class (default rig) build with zig at the class's glibc and check against it. provision.sh installs
docker.io (user build in the docker group) for the proof. Proof: fork 3bfe346f at class hive, igneumd and igneum-miner need
GLIBC_2.30; the workers at class rig need GLIBC_2.17; all four run in ubuntu:20.04 (ldd 2.31) and ubuntu:22.04 (ldd 2.35) and
print their version or usage lines (the OpenCL worker its own no-libOpenCL message, the binary running in a GPU-less container).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 00:35:18 +00:00
igneum-labs
01aa9fae83 Deploy key: the plan's section 5c (the project lead's four steps and the public half) that 9215d624 named but did not carry; observer-sync.sh runs git as build
The previous commit's plan edit aborted on a changed anchor, so section 5c was missing; written now with the public half
(ssh-ed25519 ... igneum-build-1 observer read-only) and the CI-runner row closed. observer-sync.sh ran git rev-parse as root
against the build-owned clone (safe.directory refused it, 'up to date at' with no commit); every git call runs as build now.
Verified on the box: one sync pass prints 'source: mirror (the deploy key is not accepted by GitHub yet ...)' and the commit.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 23:49:20 +00:00
igneum-labs
fff352e52f workers-remote.sh: the host's /usr/include stays out of the zig build (the OpenCL headers through a CL-only symlink dir); both workers proven at glibc 2.36
The previous commit's 'the workers at 2.36' was not yet true: the first zig build died on __isoc23_strtol because -I /usr/include
for CL/cl.h put Ubuntu's glibc 2.39 stdlib.h in front of zig's bundled 2.36 headers. Fixed; proof on the box (6 s):
igneum-worker-cuda 6,759,272 B sha256 690c8e91..., igneum-worker-opencl 307,264 B sha256 329fb6a9..., each needing GLIBC_2.34
and libc only, the ceiling check passing. The two static flags zig ignores are dropped on the zig path (zig links its libc++ in).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 23:40:14 +00:00
igneum-labs
7089aa161f Build server: zig and cargo-zigbuild on the box; build-remote.sh --ship builds glibc 2.36 Linux artefacts for seeds and HiveOS; the glibc ceiling check
Main's order of 7 October 2026 after a seed took 14 restarts and three minutes down on a glibc 2.39 binary. provision.sh:
step_zig (zig 0.17.0 from ziglang.org, sha256 from the official download index) and cargo-zigbuild 0.23.4 in the cargo tools.
tools/build-remote.sh --ship [--glibc 2.36]: cargo zigbuild --target x86_64-unknown-linux-gnu.2.36 with zig as the C/C++
toolchain (the Mac's infra/cross/build-linux.sh recipe), artefacts from the target-triple dir, each checked by
tools/ci/glibc-ceiling-check.sh (need at most the ceiling; self-test fires on 2.38 against 2.36, passes 2.34 and 2.36;
--symbols reads a saved objdump -T text so CI needs no ELF tools). tools/workers-remote.sh builds the two GPU workers with
zig at 2.36 by default (GLIBC=native for clang). Proof on the box: fork 3bfe346f igneumd needs GLIBC_2.34 (47,023,120 B,
sha256 345dfb95...), igneum-miner GLIBC_2.34 (9,248,808 B, d09dc27b...), 3 min 17 s cold through zig; the workers at 2.36.
Rule: anything that ships to a seed or a HiveOS rig is built with --ship; a plain build (glibc 2.39) is for the box and
Ubuntu 24.04 hosts only.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 23:37:33 +00:00
igneum-labs
2750361894 Merge remote-tracking branch 'origin/master' into HEAD 2026-10-06 23:35:37 +00:00
igneum-labs
95281941af Hands moved to igneum-build-1 (run log); the overlay carries directories a crate reaches by include_bytes!; two mover fixes
docs/plans/hands-on-build-1.md section 6: the move of 6 October 2026 23:06 to 23:22 UTC, observer node, observer, node 1, unload,
each hand's first executing line, digest eada4bda MATCH, IBD and acceptance, the open readback (the Mac's Miner app has not
started its own node since 26610/26611 were freed). lib.sh: the shipper's class from the 0.3.17 tree, the fork's igneum-exec
embeds proving/igneum-prove/elf/*.vk by include_bytes! five levels up, which is no path dependency; every .rs in the trees that
travel is scanned for include_bytes!/include_str! paths leaving the crate's repository and their directories join the overlay;
proving/igneum-prove/elf is the fixed fallback for a fork build. move-hand.sh: igneumd --version exits 1 (tolerated; it ended
the binary step before the override was written), and the launchd pid lookup used \s in macOS awk (printed 'pid none').

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 23:25:36 +00:00
igneum-labs
4d5b80f791 Merge gpu-fleet: the rented fleet's tooling (box library, standing supervisor and library, the 10 percent and 75 percent gates, the deploy gate, publish and canary scripts, Devnet 2 scripts and gate reader, the wind-down) and the night's analyses (prover tiers, block rate, the fleet night rows 1 to 18, the bench-log entries)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 23:23:46 +00:00
igneum-labs
c5ebf5cf7c Merge site-ui-3: chip headline range (X35) and the latency ladder on the site (M34)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 23:02:46 +00:00
igneum-labs
758f6f2e50 gpu-fleet.md clock: publish 1, the forced confirmation, publish 2 on the standing boxes
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 22:50:03 +00:00
igneum-labs
0e6f5bce6b Stale-overlay class closes with its check: tools/ci/mirror-reset-check.sh in the pre-push gate
The reset itself has been master's behaviour since 9df9688 (remote-run.sh checkout_tree: git checkout -- . and git clean of the
overlay files, target dirs and stamps kept, before the branch checkout); the UI lane met the class again from worktrees whose
tools predate it (remote-run.sh is piped to the box from each worktree per build). The check reads checkout_tree() and fails
when the reset and the clean do not both come before the branch checkout; self-test: the real script passes, a copy without the
reset fails, the same lines moved after the checkout fail. cargo-audit: already owned by provision.sh step_cargo_tools
(b2262e5), confirmed ok (0.22.2) on the box; nothing added. Gate GREEN, 33 checks.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 22:47:16 +00:00
igneum-labs
050927f5a6 docs: live light-theme captures of the showcase
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 22:43:17 +00:00
igneum-labs
c61b947e32 Merge site-ui-3: light-theme showcase renders
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 22:41:53 +00:00
igneum-labs
2cb7cada32 site: light-theme showcase renders from the RTX 5090 Windows rig's live state
The light variants of the Overview and Cards cards are the 0.3.16 UI
rendered from the rig's own api/state and api/live at 23:33 UK, captioned
as renders so nothing is passed off as a screen capture; the job strip is
cropped out and the machine's hostname painted over before serving. The
shipped Mine page shows its one real mining capture in both themes; the
idle light shot is no longer used here.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 22:41:51 +00:00
igneum-labs
89bb3bafa3 docs: live captures of the home fold and the app showcase after the two deploys
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 22:00:40 +00:00
igneum-labs
2b724114dd Fleet night rows 17 (two miners on one GPU after a restart) and 18 (two provers on one Devnet 2 box)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 21:59:01 +00:00
igneum-labs
606414392d Merge site-ui-3: miner app and wallet showcase on the home page
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 21:52:20 +00:00
igneum-labs
8d758bfa38 site: showcase the miner app and the wallet on the home page
A section between the live scene and Your card: three real screenshots
(the shipped Mine page of 0.3.14, and the next release's Overview and
Cards pages from the app in development), light and dark variants,
three lines (one click, every card tuned, the chain on your screen),
the download list repeated, and the wallet in one card.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 21:52:17 +00:00
igneum-labs
80c5618eb5 Merge site-ui-3 13fafe3338: the home page restored and polished for the miner (the step scene as the hero, the network strip, the measured card picker, the Discord line). The owner, 6 October 2026: "Ok new page approved".
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 21:42:16 +00:00
igneum-labs
437ca52ca8 Ledger decisions: the project lead's answers to the seven genesis questions (verification on, leave on, 18 decimals, cryptanalysis yes, date open, emission solution owed)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 21:41:25 +00:00
igneum-labs
62348832bd Merge horizon-close c8d6acb: the Horizon close, the one page for the project lead, the two standing decisions of 22:3x UK, ledger-decisions.md and lane 5's experiment onto master
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 21:39:23 +00:00
igneum-labs
13fafe3338 Home page restored and polished for the miner: the step scene with the shards, the glow and the final line brought up to date; live network strip; measured card picker; Discord; no calendar month
The owner, 6 October 2026: "Im not sure about the site can we revert it but polish it? minimal, simple but everything needed
for the dopamine and emotional triggers of the gpu miner", then "cant we have a dag animation like we had before? with the
shards making up the block, then the final line and the other bits that looked really cool but brought upto date?"

Restored (a new commit, no history rewrite): site/index.html as it stood at 14da2b8, the step-view page with its hero, facts,
scene, three things to check, downloads, build, wallet, journey, economics and the ledger band; nothing from tonight's other
work is undone (the litepaper, /live, the roadmap and benchmark wording, ledger X31 to X33, the scroll-zoom fix). Where the
page named a month it now carries tonight's sentences: the proofs card reads "Live rows arrive with the public testnet. The
public testnet is weeks away: three seed nodes and the public RPC are up, and it opens when the go checklist closes."; the
journey lead reads "Six phases, four public gates ... No calendar dates: each phase closes at its gate." and its inlined
phases are the gate-worded ones. No "August 2027", no month anywhere on the page.

The scene (site/live-steps.js): the original bits, every one driven by the live feed. A real block arrives from the right
with a glow and its chain number under it; its outline is grey while pending and ember once included; as its shards are
verified or paid, particles fly in from the edges and its quarter cells fill molten; when every shard is proven the block
turns ember and the caption says how many provers were paid; a locked checkpoint takes a ring and a ripple and the dashed
"final" line sweeps in from the right to it, drawn only while finality is active (the legend no longer says "final to its
left"; the wallet card's state word "final, checkpoint 5" is the wallet's own vocabulary and stays). A proof or a lock that
lands on a block already off screen re-enters from the right as its own event, so every step is seen when it happens. The
counters gain blocks per second. The caption follows the newest block that changed step.

The miner's triggers, each one element with live or measured numbers, none invented: a network strip under the facts
(hash rate, blocks in the last ten minutes, the latest block's age ticking every second with its chain number and word,
shards proven and paid with the last ten minutes), each value flashing molten when it changes; a card picker from the bench
table with the time a card alone takes to find a block at the live hash rate (RTX 5090 127.7 MH/s at 227 W and RTX 4070
28.8 MH/s at 76 W from the 6 October Ember Tune on the three-card Windows rig, RX 9070 XT 17.8 MH/s from the 5 October eGPU
entry, Apple M5 Max 26.7 MH/s from the first live swap; the RTX 4090 and RX 7900 XTX shown as not yet measured with the
bench table linked) with the pool note; the fairness line (graphics cards only, a new program every hour, your card proves
the blocks, 80% to the miner and 20% to the provers, nothing to anyone else); the download buttons with sizes; a Discord join
line (the standing invite, recorded in docs/community/discord-hooks.md so nobody asks again); the testnet sentence.

docs/fud-ledger.md: G4, C2 and X8 each gain a status line saying the restored home page carries their sentence again; the
ledger-text check guards them on the home page again (55 sentences, 0 missing).

Measured headless over 40 s against the live feed: 19 captioned transitions, the strip reading 2.3 GH/s, 562 blocks in ten
minutes, 8 s ago, 2,970 shards paid, the picker's times 18 s (5090), 79 s (4070), 2 min (9070 XT), 86 s (M5 Max) at that
hash rate, 0.92 blocks/s; no console errors at 1440 or 390 in either theme; no horizontal overflow. Captures in
docs/plans/site-ui-3-shots/after-v2/: home-{1440,390}-{dark,light}-fold.jpg, home-{1440,390}-{dark,light}.jpg and
home-steps-1440-dark.webm (ten seconds of the scene). Checks: identity grep 0 hits on served files, link check 934 links
across 16 pages 0 broken, ledger text 55 of 55, contrast 32 pairs 0 under 4.5:1, api tests 5 pass. Not deployed: the owner
sees it first.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 21:37:38 +00:00
igneum-labs
c8d6acbbc2 Horizon close: the one page for the project lead (597 words, every lane landed, each item marked done / in 0.3.16 / decision owed), the two standing decisions of 22:3x UK recorded in ledger-decisions.md, lane 5's experiment and ledger-decisions.md brought onto master
- docs/analysis/horizon-2026-10.md section 1 rewritten as a standalone page: the project lead's three lines verbatim (fees cannot fund security for a decade; miners need to be the security; wrong constants and claims in our own text) with the recorded meaning (miners are the security always, no time bound, no stake, no outside checkpoints or committee; emission plus fees pay the miners, nobody pays upkeep; emission never decays on a schedule that assumes fees take over); the nine items with what landed tonight (proof verification in consensus da2d17ec with the switch off by default; the leave item 766e70ca; seven-window signalling 0760b844; the peer-driven unwrap class 8e2f5cbe; the receive-side version gate f1ea7a38; Ember's pause wording and activation guard b43d329, e5e1e92, e54a87b; the export-disk cap f9ad70e; the nine ledger rows plus X31 to X33); lane 8's measured verdicts (B never as class content, C the class v5 candidate); lane 5's 1 block/s verdict with the three gates for 10; the four decisions still owed
- lanes table, section 4 (lanes 5, 6, 8) and section 5 (A2 dropped) brought current
- docs/plans/ledger-decisions.md: the fud-close file (c6b0bad) now on master, since docs/fud-ledger.md already points at it, with the standing decisions section appended
- docs/analysis/block-rate-devnet2.md: lane 5's experiment from gpu-fleet b965b64, unchanged

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 21:37:31 +00:00
igneum-labs
89391d0052 Merge box-capacity 58dacf6: the builder's background capacity layer (fuzz, sims, sweeps, clippy; yields to builds)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 21:35:54 +00:00
igneum-labs
f7389dd962 Fleet docs: the gpu-fleet clock (10 percent rule, the disk class, Devnet 2 standing); fleet night row 16 (the block rate)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 21:08:33 +00:00
igneum-labs
6836115d65 Capacity layer: idle-core background workload on igneum-build-1 that yields to builds
infra/build-server/capacity: igneum-capacity.service (user build, Nice 19, SCHED_IDLE,
CPUQuota leaving 8 threads free) runs run.sh, a controller over a priority queue of jobs
that pauses (SIGSTOP) the instant a build slot or the measure hold is taken (5 s poll of
/srv/builds/_locks) and resumes after. Jobs, each with a dry-run and a 10-min smoke:
pow fuzz (continuous, seed base advances), sync-request fuzz against a throwaway pruned
node on loopback (the Horizon 28-unwrap gate, igneum-p2p-probe sync-fuzz), GHOSTDAG and
finality sweeps seeds 1 to 1,000, model.py sweeps cached, clippy+audit per recent branch.
Summaries to /srv/workers/capacity.json; the worker dashboard gains a Background lane
(collect.mjs doc.background, page renderBackground). Night battery stops and restarts the
layer. docs/plans/build-server.md section 8. igneum-pow fuzz tests and ghostdag_sim.py /
attacks.py gain a seed-base knob for the continuous sweeps.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 20:58:42 +00:00
igneum-labs
853c0217d9 Fleet: disk sweep every five minutes (disk per box on the page, one #incidents line per box per hour at 85 percent); fleet night row 15 (the hub's three deaths)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 20:49:41 +00:00
igneum-labs
efa173ba4a Proving v1 plan: fleet night row 12 corrected (the pause was the fleet's weight removal), rows 13 (the 0.3.15 canary and its three findings) and 14 (the standing fleet)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 20:35:03 +00:00
igneum-labs
84b349e150 Home page redrawn: the scene is the page; a 56 px header, one statement, two buttons; three facts, the downloads, one line to the ledger
The owner, 6 October 2026, on the live home page: "too left and text heavy ... we want the home page to suck people in and let
the litepaper carry the weight; also minimise the header." The home page only; nothing else above the fold.

Header (this page only, a page-block override of the shared nav): the wordmark, Litepaper, Live devnet and Download the miner,
56 px, transparent over the hero; the phone sheet shows the same three.
Hero: one statement, eleven words ("A proof-of-work chain for graphics cards, whose miners prove the blocks."), two buttons,
then the step scene (site/live-steps.js on the shared feed) full bleed with its one caption line. Hero copy 17 words with the
buttons. At 1440 by 900 the hero ends at 849 px; at 390 by 844 at 699 px.
Below the fold: three facts, each one number and one sentence: the live hash rate with the vote keys of the last ten
minutes, the shards proven and paid on the chain (with the last ten minutes), and the chip model's one line with its link;
a note under them says the chain's state in the ledger's words (tonight: finality paused) and that the chip figures are a
cost model, not a measurement. Then the downloads row (three platforms) with the devnet and testnet notices and the dev-fee
sentence, then one line to the ledger and to what Igneum does not claim. The footer is unchanged.
Moved, nothing cut: the light-client card to /live (its verifier module with it); the testnet terms to the litepaper's For
miners section (with an id for the metamask page's link); "Live rows arrive with the public testnet, August 2027" to the
litepaper's proving section; "since 2019 (approximate)" onto the litepaper's RandomX date; the journey, economics, wallet,
build and RandomX sections were already in the litepaper (roadmap, economics, wallet, building, vs RandomX). The footer's
Journey link points at the litepaper's roadmap. tools/ci/ledger-text-check.mjs: the home page is checked for E5, X2 and
X7; G4, C2, X3 and X8 are checked on the litepaper (G4 and X8 were already there). The ledger's own "stated on" notes for
those four rows are owed an update by the ledger owner.
Polish lane Q5: the word "final" is drawn and captioned only while finality is active (site/live-steps.js), so nothing on
the page says final while finality is paused; the hero is under 40 words; the Open Graph card is the 1200 by 630 image.

Measured headless at 1440 and 390, dark and light: header 56 px with three items, no "final" anywhere, no horizontal
overflow, no console errors; the caption advanced on every capture. Captures: docs/plans/site-ui-3-shots/after/
home-{1440,390}-{dark,light}.jpg (full page) and home-{1440,390}-{dark,light}-fold.jpg (above the fold).
Checks: link check 912 links across 16 pages 0 broken, ledger text 50 of 50, contrast 32 pairs 0 under 4.5:1, orphan check
0 site headings, api tests 5 pass. The identity grep's one hit is docs/analysis/horizon/polish.md line 433 on master,
untouched here (the polish lane's own table of regex literals); it is main's to route.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 20:30:09 +00:00
igneum-labs
aa805567b5 Merge box-work 43f33fd: the repro script re-stamps its clones; sccache really off in the repro; the MATCH rows stand
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 20:23:00 +00:00
igneum-labs
43f33fde48 Repro 0.3.14 and 0.3.15 re-run with sccache off (RUSTC_WRAPPER pass-through): A vs B MATCH on all eight artefacts, hashes unchanged; evidence files regenerated
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 20:22:06 +00:00
igneum-labs
14da2b88f4 Merge site-ui-3 bbb22eb: the step view returns to the home page on live blocks, each transition captioned; the /scenes orphan fixed
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 20:18:48 +00:00
igneum-labs
780eda7cff Rename nine screenshot files whose names carried a colon (Windows cannot check them out)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 20:18:27 +00:00
igneum-labs
bbb22eb986 Home scene: the step view returns, with real blocks, animated transitions and a one-line caption
The owner, 6 October 2026: "I liked it when we could see each step of the algo working." The home page's scene is again the
lane chart where a square moves through mined, shards being proven, proven and locked checkpoint, now as site/live-steps.js on
the shared feed (site/scenes/feed.js, which gains onData):
- every square is a real block from /api/live (a 300 s window so late proofs still reach the caption), released one every
  2.5 s so a square crosses the scene in about 34 s; the chain merges a pending block in about 10 s, so its step changes
  while it is still on screen (at the original 10 s crossing most transitions landed after the square had left). The feed is
  sampled for the stream; item 0's counters read the chain. The first reply seeds the scene across its width, so nothing
  starts empty;
- each step is drawn as before: an outline (grey while pending, ember once included), molten quarter cells filling as shards
  are verified or paid, an ember fill when proven, a ring on a locked checkpoint with the dashed "final" line to its left,
  excluded blocks dimmed; every transition glows for a second and a lock ripples;
- one caption line under the scene for the newest block that changed step, e.g. "block 144,564: mined 21:16:03, on the
  selected chain; 1 shard planned", or with its shards "8 shards on 3 cards; proven in 48 s" and "locked at checkpoint 7,084".
  /api/live now carries each block's chain number for it. When no block changes step for a minute the caption says why in
  the ledger's words: finality paused (under two thirds of the weight signing), no proof landed in the last 10 minutes
  (with the median lag), or no block changed step;
- the wheel is never touched: the module has no wheel handler, so the page scrolls through the scene;
- light and dark from the tokens, 390 px, a still frame under reduced motion. The DAG module stays as /live's scene and the
  three scenes stay unlinked on /scenes.

Proved headless over 40 s against the live feed: thirteen captioned transitions, no console errors at 1440 or 390, no
overflow. Captures: docs/plans/site-ui-3-shots/after/index-steps-1440-dark-clip.jpg, index-steps-390-dark-clip.jpg and
index-steps-1440-dark.webm (ten seconds of blocks moving through the steps). Checks: identity grep 0 hits, link check 931
links 0 broken, ledger text 43 of 43, contrast 32 pairs 0 under 4.5:1, api tests pass.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 20:17:47 +00:00
igneum-labs
a3bd0a2132 Public text: the proving price as a formula in network hash, one threshold sentence, the carried-proof caveat, the dev fee's share, the stranded pool (Horizon economy and security lanes)
From docs/analysis/horizon/economy-and-utility.md (sections 3.1, 4.1 to 4.4, proposals 2, 3, 4, 7) and
docs/analysis/horizon/consensus-security.md (finding 3, proposal 1), both on master.
(a) The litepaper's "proofs at the cost of power" and the customer brief's "priced in dollars per proof" are
conditioned: electricity is close to power, the price a prover must charge is the subsidy it forgoes, published as a
formula with network hash as the input (per shard, card hash over network hash x 0.8 x 31.688 IGN x shard seconds,
plus electricity), never a number; 100 to 300x the published market rate at the devnet's 1.16 GH/s, competitive near
100 GH/s beside the miner, approximate beyond the one card measured. Six litepaper passages and two brief rows. The
text check's P6 sentence moves to the conditioned form. Ledger E20.
(b) One threshold sentence in Governance and Mining: 60 percent of blue blocks over two weeks for a parameter genesis
leaves open, 90 percent for an upgrade (new code), 95 percent with a floor height for a class change (the Mining
section had said a 90 percent signal turns a spare defence on, which is a class change). Ledger G15.
(c) The 20% proving-pool row carries the caveat that consensus does not yet verify the carried proof, so a block
producer could claim shard pay with a false proof today (P21; the 0.3.16 fix). Ledger P24.
(d) The dev fee reads "default-on, switchable, 1 percent of the producer share" in the payment-routes row and the
Ember section; docs/plans/funding.md section 4's ceiling is 1 percent of the producer share, USD 38,520 / 154,080 /
770,400 at the three prices, corrected from 48,000 / 193,000 / 963,000. Ledger E21.
(e) The pool row's note: unclaimed pool credit is today stranded in the escrow, no rule returns it; the fix rolls it
into the next proven segment (0.3.16). Ledger P25.
site/ledger.html regenerated (176 entries); tools/ci/ledger-text-check.mjs carries the five new sentences (53, 0 missing).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 20:16:05 +00:00
igneum-labs
67ae1e4c6d Reproducible builds: SOURCE_DATE_EPOCH from the commit's author time, TZ=UTC and one fixed target path in every build path; self-test
Main's rule of 6 October 2026 from the 0.3.14 repro (docs/evidence/reproduced/0.3.14.md): prost's protowire.rs embeds OUT_DIR,
libmimalloc-sys embeds __DATE__/__TIME__, sccache hid both. lib.sh bs_repro_env exports SOURCE_DATE_EPOCH=<author time> TZ=UTC in
front of every remote command (build-remote.sh, cross-remote.sh, workers-remote.sh); remote-run.sh exports BR_SDE too and logs it
as source_date_epoch; proto-cuda/windows-node/cross-build.sh exports the same; the PC job carries node.commit_time in the manifest
(push-build-inputs.sh) and exports it before every cargo build of a stage (jobbuild.rs, unit test asserts it; 4 of 4 pass on the
box). Target dirs stay one fixed path per target. tools/build-remote.sh --self-test-repro [--full] from a fork worktree, run on
the box: igneum-miner twice a minute apart without sccache (RUSTC_WRAPPER=/usr/bin/env, an empty value is unset to cargo) MATCH
91e130f5..., a per-run target path differs (OUT_DIR shown); --full: kaspad with libmimalloc-sys recompiled a minute later MATCH
70219bc2..., without the epoch differs (__DATE__ shown).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 20:09:23 +00:00
igneum-labs
adf6f1f54b Merge box-work 56282f9: the 0.3.15 repro evidence, the reason column read off both binaries
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 20:05:06 +00:00
igneum-labs
8d0024fef6 Merge site-ui-3 5751534: the /scenes lab, three animated chain scenes on one live feed (Forge, Lattice, Pulse), unlinked, for the project lead to pick
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 20:04:33 +00:00
igneum-labs
56282f9ce6 Repro 0.3.15: the box matches itself on all four again; the shipped HiveOS pair is the Mac's zig build (GLIBC_2.34, /Users paths, a build clock); the reason column reads facts off both binaries
- rebuild-on-box.sh: the DIFFER reason comes from the binaries (glibc need of both, the build path each embeds, the
  mimalloc clock string, the PE timestamp, the commit string), never from an assumed story; the three string helpers run
  their producer under `|| true` so a consumer that stops early (grep -m1, awk exit) no longer trips pipefail into the
  fallback and a second line in a table cell.
- docs/evidence/reproduced/0.3.15.md, and the 0.3.14 file re-reported with the same column.
- docs/plans/build-server.md 7.3: the 0.3.15 row and what the two files mean for shipping from the box.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 20:04:14 +00:00
igneum-labs
575153408a Scenes lab: three animated views of the live feed on /scenes (Forge, Lattice, Pulse), unlinked, with captures and ten-second recordings
the project lead, 6 October 2026, item 3: three alternative scenes for the same live data, side by side at 1440, each a self-contained
module on one shared feed, the ledger's words in the legend (pending, included, excluded, proven, locked).

site/scenes/feed.js polls /api/live every 2 s and pushes the reply to every scene; it carries the site's state words
(connecting, live devnet, observer offline with the age, live feed unavailable) and the shared helpers (theme tokens from
CSS, the word for a block, DPR-sharp sizing, a frame loop that stops when hidden or off screen and draws a still frame under
reduced motion). Every mark in every scene is a block the observer stored; nothing is invented.

A, Forge (site/scenes/forge.js): blocks rise from the hearth as embers, one column per miner, at the height of their header
age over a 120 s window; a block cools as its word changes (pending molten, included ember, proven bone, excluded ash);
a new arrival glows for a second; a lock is a dark band that sweeps up the scene at the newest locked checkpoint, and
everything under it is final and settles to ash.

B, Lattice (site/scenes/lattice.js): a slow isometric DAG, time left to right, the selected chain as the lit spine in the
front lane, the other miners one shallow step deeper each (ranked by blocks, the shear capped to a third of the width so a
narrow card keeps its time axis), parent threads reaching forward, chain edges heavy with a soft halo, checkpoints as rings
that close around the spine when they lock with the lock weight beside them, new blocks glowing in; the camera drifts at
chain speed.

C, Pulse (site/scenes/pulse.js): the tip at the centre breathing, time outward with a ring every 30 s, each miner a ray,
each block a bead on its ray drifting outward, filling when proven, hollow while pending; the selected chain as short arcs
winding between consecutive beads (never a chord through the centre); a checkpoint is a ring that hardens from dashed to
solid when it locks.

site/scenes.html: the three cards side by side at 1440 and stacked under 1000 px, the shared legend, a note on the window
and reduced motion; ?only=a|b|c shows one scene full width (the card filter copies the children before removing, so the
right card survives). noindex, not linked from any page; registered in the build's PAGES so it takes the shared chrome.

Captures (docs/plans/site-ui-3-shots/scenes/, one niced headless Chromium): scenes-1440-dark.jpg (the three side by side),
scene-{a,b,c}-1440-dark.jpg and scene-{a,b,c}-390-dark.jpg, and scene-{a,b,c}-1440-dark.webm, ten seconds each at 1440 by
900 (VP8, recorded by Playwright and cut with its ffmpeg, which has no mp4 muxer). No console errors on any scene at either
width; no horizontal overflow at 390. Tonight's chain shows in all three: finality paused, so no band, closed ring or hardened
ring appears, and the checkpoint marks read pending.

Checks: identity grep 0 hits over 232 export files and 33 served site files, link check 931 links across 16 pages 0 broken,
ledger text 43 of 43, contrast 32 pairs 0 under 4.5:1.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 20:02:57 +00:00
igneum-labs
b67ce48554 Standing fleet: the 10 percent weight rule (gpu-fleet.md, lib/standing.py weight_check), the supervisor's node pattern narrowed to the live node
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 19:59:40 +00:00
igneum-labs
4b20822174 Merge box-work 1c8b656: the night battery and reproducible-rebuild scripts; the 0.3.14 repro evidence (two non-determinism classes found and fixed in the check)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 19:56:01 +00:00
igneum-labs
1c8b6563ce Repro 0.3.14: the box reproduces itself on all four artefacts (A vs B MATCH), the shipped bytes DIFFER by toolchain; two non-determinisms found and fixed in the check; night battery dry run recorded
- infra/build-server/repro/rebuild-on-box.sh: one target path per target with each pass's artefacts copied aside (prost's
  protowire.rs embeds its OUT_DIR path, so a pass in a dir of another name differs), SOURCE_DATE_EPOCH from the node commit
  and TZ=UTC (libmimalloc-sys compiles mimalloc's C with __DATE__ and __TIME__), --reuse for a re-report, reason text
  for a shipped file that is not on hand (innoextract 1.9 cannot open the Inno Setup 6 installer; the 0.3.14 HiveOS
  tarball left dl/public when 0.3.15 published).
- tools/repro/rebuild-release.sh: the plan's hashes always travel (the miners' 8-hex prefixes too), bash 3.2 empty-array
  fix, the box half's exit code is the script's.
- docs/evidence/reproduced/0.3.14.md: igneumd 03f35e05..., igneum-miner 900c1f0b..., igneumd.exe 166e604e...,
  igneum-miner.exe fefd266c... identical across two clean passes; DIFFER against the shipped 934f393c... (zig, glibc 2.36)
  and 44fa74c0... (Homebrew mingw before the timestamp fix, from a worktree).
- docs/plans/build-server.md 7.2 (night battery: timer, dry run 3 min 54 s, 10 pass, the fork's 22 cargo-audit
  advisories as the one FAIL and what follows) and 7.3 (repro: results, the two classes, SOURCE_DATE_EPOCH proposed for
  every build script).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 19:55:09 +00:00
igneum-labs
4fbaabbde9 Proving v1 plan: fleet night rows 8 to 12 (finality at 93 voters, pool-v0 under load, the 0.3.14 canary, the class v4 rehearsal, the finality pause)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 19:48:55 +00:00
igneum-labs
87427b70aa Fleet: the class v4 rehearsal tooling (CUDA worker wrapper, generator-4 worker, pack re-export), the standing-fleet rule (supervisor, library, page block, gpu-fleet.md), the 0.3.15 publish script, the Devnet 2 script's ports and bps knobs, the collector's seed knobs
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 19:46:32 +00:00
igneum-labs
be6209557d Live page: miners as one compact strip, events as the last five lines
the project lead, 6 October 2026: the miners table and the events feed were too long for the story. The miners card is now a strip:
the count ("66 vote keys in 10 min"), the top five lanes by blocks with a bar each and the last-seen time, and "and N more"
with the bench table linked. The events card shows the last five, one line each, with the count of the rest in the note.
Two columns from 900 px. Measured headless: at 1440 both cards end at 1.9 screens (the scene fills the first); at 390 the
miners card ends at 2.5 screens and events at 2.95; no horizontal overflow, no console errors. Captures replaced in
docs/plans/site-ui-3-shots/after/live-1440-dark.jpg and live-390-dark.jpg.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 19:41:04 +00:00