Commit graph

1330 commits

Author SHA1 Message Date
igneum-labs
24ef8d6545 release-0.3.21 plan: update-return-21 in
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 14:32:15 +00:00
igneum-labs
3989a0cec9 release-0.3.21 plan: update-return's app half rides (main's word), the host.cpp compile as a named gate line, the relay half through master
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 14:30:38 +00:00
igneum-labs
687e6d02a2 release-0.3.21 plan: the app reports its vote key hashes to the intake (main's item)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 14:21:41 +00:00
igneum-labs
9e2926047b release-0.3.21 plan: the prove-instead switch in, N15 on the node line, the final node order
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 14:16:23 +00:00
igneum-labs
53919ce85b release-0.3.21 plan: pool-finish-21 in; the app side's state
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 14:06:21 +00:00
igneum-labs
682d9bc3a2 Merge remote-tracking branch 'origin/pool-finish-21' into release-0.3.21 2026-10-07 14:05:59 +00:00
igneum-labs
48085fc628 release-0.3.21 plan: scene-parity-21-sizing in (live-dag.js 2.0.4)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 14:04:32 +00:00
igneum-labs
7bf8717d6d release-0.3.21 plan: f95178a1 last in the node order, the overlap lane closed, the UI row updated
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 14:04:11 +00:00
igneum-labs
7fa81e8b28 Pool daemon: --template-parallel (default 2) bounds the template fetches in flight against the node (the ten-member window on pool-1, 7 October 2026: ten parallel getBlockTemplate calls on one gRPC connection queued past the client's request timeout from 12:54Z, no job for 36 minutes); pool.md 10.5a records the window's two stacked faults
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 14:03:05 +00:00
igneum-labs
46dd0b4214 docs/plans/pool.md 10.5: the open-pool gate on igneum-build-1 (100 members, 10 daemons, 4 nodes, PASS: 90 of 90 honest members paid by the coinbase rule, first payout p50 3.6 s p90 7.0 s after the first share, 0 withheld shares seen, 0 honest blocks paying a withheld address, stale 9.6 percent), the two failed runs and their lessons, consequences by tier
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit cb2c3ee0c7)
2026-10-07 14:03:05 +00:00
igneum-labs
271c89d31c Open pool: the seeds check accepts another node's view of an epoch when its seed is a block the member's node holds at the seed depth (a DAG settling below the lead), the node's epochs kept by span; the gate harness starts the nodes in sequence with --addpeer and reads their peers and DAA scores by RPC before and during the run (the first box run was three DAG partitions)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit 0a4437195c)
2026-10-07 14:03:05 +00:00
igneum-labs
6d21a512a1 Open pool: the retarget clamps against the window's mean (never compounded share by share), the ceiling in u128 (a 2^49 first target shifted by 20 wrapped to 0 on the box), a deeper reorg depth and a progressive sync when parents are missing; the fast-time file carries pool_split_activation_daa (never); the gate runs on build-1
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit af9849a618)
2026-10-07 14:03:05 +00:00
igneum-labs
77f1076d3e Open pool: the share chain's first target as a chain constant, the retarget on the window's mean target with a ceiling, withheld shares kept out of sync replies, the share line carries the cache rule for verify-share, the gate harness cleans up after itself and reads the first payout to 5 s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit 5f5be5676a)
2026-10-07 14:03:05 +00:00
igneum-labs
cadaed7fcd Pool finished (mission item 11): pool-0's fee published beside the dev fee, TLS 1.3 on the member port with the authorize binding (spec 9.3, O-9.7 closed), the page rows Q68 to Q73, and the open pool: a share sidechain with no operator (spec 9.12)
Pool-0: welcome carries software_dev_fee_percent beside the pool fee, the page's Fees row and site/miner.html say pool-0 charges the same 1 percent as the solo dev fee; jobs and seeds carry the latency ladder's rung for 0.3.19.

TLS (pool/src/tls.rs): --tls-cert/--tls-key or --tls-self-signed (a P-256 pair under the data dir, the certificate pin printed at start); the binding is the member's BLS signature over this connection's exporter (label EXPORTER-igneum-pool-binding, context the chain id), refused on any other connection; testnet and mainnet refuse the clear without --allow-plain. HiveOS: pools:// and POOL_PIN.

Page rows: node state in words (Q68), one formatter set and luck in MiningPoolStats' convention (Q69), samples and check costs persisted (Q70), payments under the lookup (Q71), hourly history with a sparkline, --alert-webhook, /metrics, /health on the node (Q72), the network's finality state beside "payouts follow blue confirmation, not finality" (Q73).

The open pool (pool/src/sidechain.rs, open.rs, p2p.rs; igneum-pool --open): the member's own node and daemon, no payout key, no balance; every coinbase carries the member's own address, the share chain's parent (IGNS) and the window's split (IGNP); templates re-stamped on a new chain tip without a node call; shares gossiped and checked by every member (structure, the node's seeds, the PoW); heaviest work wins, a fork's loser is stale; the dev fee as one split entry; shares.log and verify-share for the drop proof; the gate harness pool/tools/open-gate.mjs. The node side (the executor's split from pool_split_activation_daa) is on the fork branch pool-finish-node.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit 1cbafd7e74)
2026-10-07 14:03:05 +00:00
igneum-labs
5a50a7f0fd Pool vardiff: the idle easing no longer consumes the sized first correction; docs/plans/pool.md 9.3: the re-run's close and the member rows
pm-1, 7 October 2026: the member was idle for four intervals while its worker compiled, the first-phase idle easing
set first_done, and the measured 190 shares a second then walked down one step per 30 s for 5.5 minutes (the share
check at 10 to 11 ms on pool-1's cores). The sized correction now stays owed through idle easings (test
an_idle_easing_does_not_consume_the_sized_first_correction). Section 9.3: 207 found / 144 confirmed / 56 own orphans
under 2f6c0358, the residual as the node's 1 to 1.6 s template latency (a node-lane row), the member findings.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit 4f875dd868)
2026-10-07 14:03:05 +00:00
igneum-labs
8913282f4c Pool daemon: the confirmation walk on its own gRPC connection, never restarted from the pruning point, bounded per tick
7 October 2026, 06:01Z and 06:12:55Z on pool-1: confirm_loop restarted its chain walk from the pruning point on any
failed getVirtualChainFromBlock and then fetched every chain block since (about 120,000) over the one connection the
templates used; one timed-out request under four parallel template fetches started it, every template request after it
timed out, no job was issued, 105 blocks on stale templates were orphans. Now: a second GrpcClient (pool.walker) for the
walk and the network numbers; a failed chain call keeps its cursor (the sink only when the node no longer knows it;
cursor_after_failure, node::walk_tests); at most 600 chain blocks per tick with a line saying so; a start with pending
blocks walks from the sink and says that older ones resolve by the orphan rule. docs/plans/pool.md section 9.2: the
re-run's record (the class question closed on pm-1 and pm-2, 71,240 shares, 0 mismatches), the cause, what stays open.
Suite 24 of 24 on igneum-build-1. Protocol and API unchanged.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit c686d8fc2e)
2026-10-07 14:03:05 +00:00
igneum-labs
64be384d57 Pool daemon: refuses to start half-alive (listeners bound first, exit 2; a node that answers no template, exit 3; a STATUS line every 30 s)
The fleet agent's row from the 6 October night: the daemon ran 20 minutes as a process serving nothing while its node
answered no template and its member port had been held. Now main binds the member and API listeners before anything
else (server::bind_listener; a failure is "POOL NOT STARTED: cannot bind the members listener on <addr>: <os error>",
exit 2), probes the node for a template with pow_epoch, retried for --node-wait-secs (default 60) with a line per
attempt, else exit 3, and prints a STATUS line every 30 s (members, jobs issued, shares, blocks, template failures, the
node's state: ok, NODE NOT ANSWERING, NO TEMPLATE YET). fetch_job counts template failures and the last success.
Test server::bind_tests: a held port is refused with the address in the message, the freed port binds. Suite 23 of 23
on igneum-build-1. Protocol and API unchanged.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit 9473e01320)
2026-10-07 14:03:05 +00:00
igneum-labs
c3fb95e3be release-0.3.21 plan: scene-parity-21 in (live-dag.js 2.0.3, the parity gate)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 13:54:49 +00:00
igneum-labs
f63e6b67e7 release-0.3.21 plan: section 5, the first node candidate 55768f88 with both gates green
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 13:48:53 +00:00
igneum-labs
a8e9dcd187 release-0.3.21 plan: miner-reliability-21 7e1b7060 in (MF-10's capability check, MF-8's injector step, the register rows)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 13:46:39 +00:00
igneum-labs
773e1e063b Merge remote-tracking branch 'origin/miner-reliability-21' into release-0.3.21 2026-10-07 13:46:25 +00:00
igneum-labs
7e1b706016 miner-faults: MF-8's injector step and MF-10's capability check are code now, not owed
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 13:45:41 +00:00
igneum-labs
ee3240c9d5 miner-faults MF-11 corrected: the machine goes silent and nothing tells anyone (PC 2's power loss, not the update-now); the silence watch per machine and the relay agent as a service
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 13:44:51 +00:00
igneum-labs
326cde2a3b release-0.3.21 plan: earnings-tidy-21 in
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 13:42:56 +00:00
igneum-labs
f2ec05f376 Merge remote-tracking branch 'origin/earnings-tidy-21' into release-0.3.21 2026-10-07 13:42:53 +00:00
igneum-labs
c8e6322a5d release-0.3.21 plan: pool-finish-21 at 5e557171, ready to merge after the UI branches
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 13:42:11 +00:00
igneum-labs
434dea281e earnings-tidy captures from build-2: the Earnings page dark, light and a fresh miner (ladder and firstwait scenarios), 1280 wide at 2x
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 13:41:30 +00:00
igneum-labs
11f05ed93e release-0.3.21 plan: the ids commit first on the node line, the node order with horizon-node and peer-directory-node, pool-finish-21 and the template-parallel fix
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 13:39:18 +00:00
igneum-labs
4242ae849b release-0.3.21 plan: gpu-logos-21 in (the marks, the Prove switch fix)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 13:29:29 +00:00
igneum-labs
16a45243b4 Merge remote-tracking branch 'origin/gpu-logos-21' into release-0.3.21 2026-10-07 13:29:27 +00:00
igneum-labs
de52b2e061 brand/marks/vendor-marks.mjs: the app's vendor marks and tokens exported verbatim for the site (site-ui-5), with the Windows mark in the same treatment and macOS as the Apple glyph, regen.mjs to refresh it from app.js, a view test that fails on drift; the review shots re-taken on build-2 against gpu-logos-21 (the Prove page on, off and light added: the switch fix in the picture)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 13:28:36 +00:00
igneum-labs
210f0b92e8 gpu-logos captures from build-2 (tools/ui-mock/capture.sh with --force-prefers-reduced-motion so the page is drawn, not mid-fade): the Overview dark and light, the first-block card with the mini mark, the Mac row, the mixed rig on the Cards page and the first-run list, dark and light, 1280 wide at 2x
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 13:25:52 +00:00
igneum-labs
ca71410971 GPU vendor marks on every card row (gpu-logos, 7 October 2026): NVIDIA, AMD Radeon, Intel Arc and Apple as hand-drawn monochrome inline SVG glyphs (under 460 B each, currentColor), each in a soft rounded well tinted by its own --mark-* token (dark and light sets, ember never tints a brand), the series line under the name in mono (RTX 50 series · Blackwell, RX 9000 series · RDNA 4, Arc B series · Battlemage, M5 series · integrated), an integrated row keeps the same glyph with the integrated line, a neutral chip glyph for an unknown vendor, the block card's mini mark; one contiguous View block and one CSS block for the apps-harmony rebase; five view tests (every vendor, the fallback, never twice on a row, the series line, light contrast at 3:1 or better with app.css checked); the mock's rig scenario and tools/ui-mock/capture.sh for the box
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 13:25:52 +00:00
igneum-labs
3549a16e15 miner-faults MF-11 (the app not back after update-now: read-back line, FAULT home, the relay agent as a service) and MF-12 (the pool lane's epoch-boundary stall, renumbered from its MF-11)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 13:23:21 +00:00
igneum-labs
7ad98bdf87 release-0.3.21 plan: pool-finish rides it (main's word, the split switch at never), the four UI branches in order, MF-11
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 13:21:10 +00:00
igneum-labs
3c54d0cfc5 release-0.3.21 plan: what rides it, the under-12 GB prove-instead switch and the per-architecture prover server as designs, the gate clock
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 13:16:59 +00:00
igneum-labs
5e8df956f3 Merge remote-tracking branch 'origin/miner-reliability-21' into release-0.3.21 2026-10-07 13:16:12 +00:00
igneum-labs
d366f99ace miner-faults register: run 5 (card-appears green with the fixed listing); every class's injector step passes on engine 4daaa2cc
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit ee3d93386b7aabe8188fd2c8bd00c63a818ac2bf)
2026-10-07 13:12:08 +00:00
igneum-labs
93a1082f58 miner-faults register: the pod injector's run 4 lines (seven of eight steps pass on engine 4daaa2cc)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit 9a91ff57e1db5896f9f9016b7aadcc2ba27e5bff)
2026-10-07 13:12:08 +00:00
igneum-labs
20ff77922d miner-faults MF-10: a prover server built for another card's architecture (named symbol not found); the capability check at start and the per-architecture kit
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit 9d2c267af7a7b097199e6232b221b91081f52bca)
2026-10-07 13:12:08 +00:00
igneum-labs
8ed08e521a miner-faults MF-9: a node that stops slower than its restart (the listener watchdog's sleep-then-check); every poll loop returns on shutdown, a sub-second shutdown is a named release gate
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit 7a0115617b9fa7b7e8e9930c8cfb530af71d4d55)
2026-10-07 13:12:08 +00:00
igneum-labs
58c9d84dad miner-faults MF-8: the class in the shipper's words (node refuses its own kept datadir after an update), N13 b7cc37e7, the gate on both datadir shapes, the injector step owed
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit 612d524899)
2026-10-07 13:12:08 +00:00
igneum-labs
13911191d1 miner-faults MF-8: a node dying at start on a kept datadir (the serde(default) row, N13); the LG-4 job's tenth install keeps the datadir and a node restart loop fails the row
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit 625fc4e06d)
2026-10-07 13:12:08 +00:00
igneum-labs
ca47ed1e42 miner-faults register: the commits table and which side each class is on
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit ce971e1b08)
2026-10-07 13:12:08 +00:00
igneum-labs
f3238c9b3e Miner app: plug, tune, play (the project lead, 7 October 2026): node readiness gate, the retry ladder, no permanent fault, fault lines to the intake, the signed cards job, the fault-class register
docs/plans/miner-faults.md: MF-1 to MF-7, each with its rule, test and gate line.
- MF-1/MF-2: a worker starts and is judged only when the node is READY (synced and igneum_getExecStatus reports an
  executed tip; execrpc::probe every 5 s off the engine thread); the node watchdog never counts the catch-up (settled
  once read synced; 30 min cap before that; any RPC answer is a sign of life); the watchdog restarts on a ladder 10 s,
  30 s, 2 min, 5 min, then every 5 min for ever (watchdog::RETRY_LADDER_S); the faulted state and the one-restart
  budget are gone (tools/ci/permanent-fault-check.sh in the gate); a node-caused restart resets the ladder at sync.
- MF-3: the hot-plug pass starts a recovered or revived card's worker (unchanged rule, now in the register).
- MF-4: the status clock starts at ready (program loaded), loading bounded by 300 s; a self-test failure holds the
  card 30 min with the reason on its row, released on a driver change; a crash loop climbs the ladder; the pack is
  exported once a minute for every card (a refused pack forces one).
- MF-5: the app reads template_wait=, template_ms=, identities_active= from the 0.3.20 miner's STATUS; waiting on
  the node is never the card's fault; the row says node slow; every node-wait label clears on the first rate.
- MF-6: a miners hold belongs to the job that took it and releases when that job is gone or at its own cap.
- MF-7: the engine owns every igneum-miner it started: an untracked one on this engine's node RPC is killed at start,
  after every stop and every minute, one line and one fault report per kill; a restart kills the old process first.
- Every fault line posts one FAULT line to the log intake (label fault-<id8>, app and node version, 60/h cap).
- The signed cards job kind (per card enabled, identities, power_pct; refused for a card the machine lacks; applied
  through the app's own card path, persisted, read back): packaging/ota/publish-jobs.sh add --kind cards.
- LG-4 as a job: relay/playbooks/first-share.ps1 and tools/fleet/first-share-gate.mjs (no Windows box yet).
- tools/reliability: the fault injector with one step per class (catch-up, card-appears, own-restart, zero-ladder,
  no-status, node-silent, one-card-fails, orphan-miner); fake-worker.mjs lists devices and fails self-tests on command.
- master's build tooling (d4bc5a94) and release-0.3.20's igneum-pow taken into the worktree for the box routes.
Box: app 198 + 27 + 8 tests green on igneum-build-2; the tree gate green (33 checks).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 13:11:48 +00:00
igneum-labs
d18e7c4d36 Merge remote-tracking branch 'origin/master' into release-0.3.21 2026-10-07 13:11:18 +00:00
igneum-labs
f5d682e98e Driver table: the NVIDIA 617.42 and AMD 26.9.2 rows measured on igneum-build-2 (sha256, size, Authenticode subject from the vendors' own files); the stray #[test] above the Intel test's doc comment removed
NVIDIA GeForce Game Ready 617.42 WHQL (6 October 2026): us.download.nvidia.com/Windows/617.42/..., 990,853,168
bytes, sha256 f115c927..., subject CN=NVIDIA Corporation (DigiCert G4). AMD Software Adrenalin 26.9.2 WHQL
(29 September 2026, the win11-b build): drivers.amd.com/drivers/whql-amd-software-adrenalin-edition-26.9.2-win11-b.exe
(an amd.com Referer required), 1,000,800,840 bytes, sha256 593c1d73..., subject CN=Advanced Micro Devices (Sectigo).
Read on the box: curl, sha256sum, the PKCS7 out of the PE security directory through openssl pkcs7 -print_certs.
The table's placeholders are gone: every row installs. The drivertable test sample, the mock and the view test name
the real NVIDIA release. detect.rs:990 carried a #[test] above the doc comment of the Intel test from the cherry-pick,
the test build's one warning ("duplicated attribute"): removed.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit 4f8b37b6be)
2026-10-07 13:09:47 +00:00
igneum-labs
108624cb19 Driver check: the app detects a missing or old driver per card and installs it on one click from the vendor's own server (branch driver-check, 7 October 2026)
the project lead: can the drivers be packaged with the miner, for all cards, with the system knowing which to install if not
present. Not bundled: detected and installed on one click. A per-vendor table rides the signed manifest (drivers.json:
min_version, the version on offer, the vendor's URL, size, sha256 and its source page, the silent arguments, the
restart exit codes, the Authenticode signer, the Linux and HiveOS package), validated by the signer and the app alike
(src/drivertable.rs, shared), written to <app data>/drivers.json by ota.rs. Each card's driver version is read at
every detection (nvidia-smi's driver_version; Windows' DriverVersion for AMD and Intel) and compared; a missing or
old driver puts the offer on the card's row, on the dashboard and on the first-run list. The click downloads with
curl (resume), checks size, sha256 and the Authenticode subject, runs the installer through one elevated prompt
(platform::elevated_command, the PC 1 driver job's shape), reports restart required with a Restart now button, and
never restarts by itself; the miners keep mining. macOS: no step; Linux and HiveOS: the package line. Dry run through
IGNEUM_DRIVER_DRY_RUN or the table. Tests: the table, the versions, the offers per tier, the exit codes, the
Authenticode verdicts, the download against a mocked vendor server on 127.0.0.1, the UI's strip per state; the mock's
drivers scenarios; captures light and dark in docs/plans/driver-check-shots. publish-manifest.sh --drivers carries the
table. Also the doubled #[test] in detect.rs from the cherry-pick.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit a0b3982998)
2026-10-07 13:09:46 +00:00
igneum-labs
3d42a22e71 release-0.3.20 plan: section 35, the project lead's orders (the floor file publishes, the sweep in waves, the Arc-tested worker exe, 0.3.21 tonight)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 13:09:09 +00:00
igneum-labs
c73e943f2c Merge branch 'build-server' into HEAD 2026-10-07 13:08:22 +00:00