Commit graph

1363 commits

Author SHA1 Message Date
igneum-labs
31cec57eb6 Open pool on the renamed coinbase tags IGNH and IGNW (the fork's pool-tags-node 7455b8d5): the read tool, the chain's tests, README, pool.md and spec 09 follow
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 19:48:24 +00:00
igneum-labs
02a044f9b8 docs/plans/pool.md 10.5b: the Devnet 3 pair's two daemon faults and their rules (the job window; a daemon built from the chain's own tree), the fleet's swap lesson
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 19:01:39 +00:00
igneum-labs
79a6c9a762 Merge driver-hold-22 18c25b10 into release-0.3.22 (the Intel row takes min_version 32.0.101.6733: an Arc on the inbox driver reads fine, no button)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 18:46:31 +00:00
igneum-labs
18c25b10fe Driver table: 6733 is acceptable for the Arc B580 until an unattended install path exists (the project lead's rule, 7 October 2026 evening: no PC job needs a click or a UAC prompt; the 9034 retry on PC 2 cancelled)
The Intel row's min_version is 32.0.101.6733 (Windows' inbox driver, on which the worker mines at 11.0 MH/s with the Intel rotate rewrite); 9034 stays the version on offer for a card with no driver. Test known-failed first (the shipped table demanded 9034 of an Arc on 6733; red on build-2, then green). The mock's offer scenario shows an older 6600 so the Install row still renders. Plan 3c: the install path moves onto the app's Power Helper task next; the minidump waits for the same path.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 18:42:12 +00:00
igneum-labs
a45f631e66 Merge driver-hold-22 8b2c53e4 into release-0.3.22 (a driver install holds every enabled card of that vendor, the other vendors keep mining, each held card returns when the installer ends)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 18:26:04 +00:00
igneum-labs
8b2c53e48d Driver check: every card of the vendor stops for the install (0.3.22; PC 2's Arc in the Razer Core X V2 read kind=discrete on 0.3.21, so the external-kind hold alone missed the card that crashed the box at 16:27Z)
drivertable::install_hold_keys holds every enabled card of the vendor being installed (the other vendors' cards keep mining; a card already off has nothing to stop); the row says so before the click and while it runs, with the enclosure warning kept on an external row; the toast and the engine's event name the vendor. The x1 gen1 link signature is not on the card state and was not added. Test known-failed first (the 5090 inside the case was not held for an NVIDIA install; red on build-2, then green); box gate 259 + 33 + 8; UI 51.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 18:20:14 +00:00
igneum-labs
5d021c5e34 MF-14: a worker never waits on the program export longer than one retry interval without the reason shown
PC 2, 7 October 2026 18:34 BST: two rows sat on "exporting this hour's program" for 18 minutes while a third card
mined. The export ran on a thread per card under one lock with no bound on the wait, and a result that never came
left the slot in the building state for ever.
- watchdog::export_wait: inside one interval (the ladder rung, at least 30 s) the row keeps its word; past it the row
  names what blocks the export; past two intervals the wait ends and the worker retries on its own interval.
- engine: EXPORT_HOLDER names the card whose export holds the pack lock and for how long, EXPORT_LAST_ERROR the last
  failure (the node not at the epoch, no seeds.txt); export_blocker() reads them for the row; build_seq ignores a
  late result after the wait ended; a failed export retries on the ladder, never a flat five minutes.
- docs/plans/miner-faults.md: MF-14 with rule, test and gate line.
Test known-failed first: an export that never returns is named at one interval and given up at two.
Gates: app tests 260 + 33 + 8 green on igneum-build-2; the tree gate GREEN, 56 checks.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 18:18:43 +00:00
igneum-labs
11aeaf1d68 Merge driver-check f03b0e74 into release-0.3.22 (main: a 0.3.22 app item; the eGPU driver-install hold and warning)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 17:32:40 +00:00
igneum-labs
41caea6a89 Merge release-0.3.21 826dbf76 into release-0.3.22 (the 0.3.21 app tree as shipped over c4459193)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 17:32:40 +00:00
igneum-labs
f03b0e7415 Driver check: a card in an external enclosure has its worker stopped for the install (PC 2, 7 October 2026, 16:26Z: the Intel installer's display reset took the machine down with the app's worker mining on the Arc in the Razer Core X V2)
The rule (drivertable::install_hold_keys): a driver install on a card the app reads as external (the eGPU kind from update-return-21b) stops that card's worker before the installer starts, through the cards path with the restore choice kept (the --cards-off shape); the vendor's cards inside the case and every other vendor's card keep mining. The row says so before the click and while it runs (the display reset can take the machine for a minute and may need a restart; save your work first). When the installer ends the held card goes back as it was; a card the install took away comes back when the card does (driver_release_held on the detection that lists it again). The app never restarts the machine.

Tests: the known-failed rule test first (an install on an eGPU card with the worker still running held nothing: red on build-2, then green), the view test for the two sentences; box gate 258 + 33 + 8 (test --release on build-2). Mock scenarios drivers-egpu and drivers-egpu-running; captures 13 to 16 (light and dark). Branch rebased onto release-0.3.21, which already carries the driver-check commits; the earlier tip is kept as driver-check-0320.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 17:28:45 +00:00
igneum-labs
42787f7fbb Merge remote-tracking branch 'origin/scaling-21' into release-0.3.21 2026-10-07 17:01:49 +00:00
igneum-labs
ab8e23c8cc Scaling (the project lead, 7 October 2026: "the miner needs some scaling so more is visible in the initial window"): the window opens at about 80 percent of the screen's work area, capped at 1440 by 900 on a display up to 1920 wide and scaled up with the display beyond that, remembered per machine once the user resizes (the Mac window's frame autosave name; the Windows host's HKCU Software/Igneum/Miner WindowW and WindowH, written on WM_EXITSIZEMOVE and used while they fit the work area); the Overview's vertical rhythm tightened so the rate band, the big button, the ladder strip, the chain card and the node card's first row sit above the fold at 1280 by 800 (gaps, paddings and the scene's height 220 to 184 px; no type below 13 px; the live scene and the GPU marks keep their look); fold.test.mjs measures the Overview's key elements inside the viewport at 1280 by 800, 1440 by 900 and 1920 by 1080 and the first object of Cards, Earnings and Prove, with Playwright on build-2 (known-failed on 0.3.21: the chain card ended at 836 and the node row at 900 of 800), skipping where there is no Playwright env; tools/ui-mock/fold-measure.cjs prints the numbers; captures at 1280 by 800 and 1920 by 1080
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 16:58:40 +00:00
igneum-labs
647e4e8e5a release rules 6a (the engine link check mechanical on every fetch, start and placement); the 0.3.22 plan's start incident and ruling
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 16:56:05 +00:00
igneum-labs
fe7501974f release-0.3.22 plan: section 3, Devnet 3's first node up on dn3-g1 at 16:50:21Z
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 16:51:51 +00:00
igneum-labs
a025c5218b release-0.3.22 plan: section 2, 21d8f454 green on every box gate and the canary set; the app side's first commit and the packaged peers
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 16:51:08 +00:00
igneum-labs
19441689c3 release-0.3.22 plan: main's yes with two conditions; the app side's shape (the packaged devnet-3 suffix, no override file, a fresh node datadir)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 16:44:07 +00:00
igneum-labs
50b59f4762 release-0.3.22 plan: main's ruling on the nine switches; the fleet's Devnet 3 set standing, the cutover and gate scripts, the capacity plan
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 16:42:34 +00:00
igneum-labs
209d61a48f release-0.3.22 plan: section 1, the candidate fa7f854f and the Devnet 3 object; build-1's Devnet 3 processes staged
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 16:41:52 +00:00
igneum-labs
2d59725286 release-0.3.22 plan: the frozen sub-version 3 object (017e7037, byte 7, id a785001687d8688a, the fingerprints, both gates green)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 16:31:39 +00:00
igneum-labs
ec0d14c7c9 Merge remote-tracking branch 'origin/currency-21' into release-0.3.21 2026-10-07 16:29:12 +00:00
igneum-labs
852d3b3115 release-0.3.22 plan: Devnet 3 by 18:30 BST (main's order), the node line, the gates, the staged seed and hands, era VDF clean on 96161037
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 16:28:31 +00:00
igneum-labs
8a9132062f Site currency (currency-21): site/money.js is the app's currency rules for the site (tables generated from app.js, site/lib/money-regen.mjs rewrites them, site/lib/money.test.mjs fails on drift and runs in the pre-push gate); the card picker (yourcard.js, on /miner and /app) follows navigator.language, shows the card's electricity a day at the region's typical tariff through the one Intl formatter, with a currency switch saved in localStorage; watts per card from the Ember table and the bench log, Apple silicon says no power reading; the review shots from build-2 (Earnings in euro dark and light with de-DE placement, Settings with the picker, the first-run step on a fr-CA machine, the Overview in euro)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 16:27:27 +00:00
igneum-labs
9c53b3f8ac release-0.3.21 plan: 96161037's hands and seed pairs, the Mac's binaries and DMG
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 16:20:15 +00:00
igneum-labs
6ba0f00f4f release-0.3.21 plan: the injector's nine steps PASS on 0.3.21's binaries; the register merged
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 16:14:50 +00:00
igneum-labs
03608266ce Merge remote-tracking branch 'origin/miner-reliability-21' into release-0.3.21 2026-10-07 16:14:50 +00:00
igneum-labs
308837e87c miner-faults register: the 0.3.21 injector run (nine steps green on app 786c3d37 and node c4459193, kept-datadir included)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 16:14:03 +00:00
igneum-labs
3a955a0c7b release-0.3.21 plan: 96161037's two node gates PASS, the prover pair stands, the builds running
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 16:12:53 +00:00
igneum-labs
0e3156f137 release-0.3.21 plan: section 6, the node line staged at 96161037 with its suite lines and the two box-input rules
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 15:56:12 +00:00
igneum-labs
44abb3288c release-0.3.21 plan: the final node order with c631c64b first, the whole-crate suite rule
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 15:35:25 +00:00
igneum-labs
94c65549f9 release-0.3.21 plan: update-return-21b, first-block-21 (seen once), the reliability register in
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 15:21:50 +00:00
igneum-labs
d1683c22b3 Merge remote-tracking branch 'origin/miner-reliability-21' into release-0.3.21 2026-10-07 15:21:29 +00:00
igneum-labs
cb61192960 miner-faults: MF-11 in the update-return lane's words (the helper owns the return, the relay service, the ping, the tuner's ceiling) and MF-13 (the Power Helper's stale-command count); the external card kind noted
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 15:09:50 +00:00
igneum-labs
ad7cf4c672 release-0.3.21 plan: first-block-21 in
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 14:59:10 +00:00
igneum-labs
d45820cfe6 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
a36e4b76a1 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
3388e80c1c 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
db4212ca52 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
2b16427643 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
8332fc4ce2 Merge remote-tracking branch 'origin/pool-finish-21' into release-0.3.21 2026-10-07 14:05:59 +00:00
igneum-labs
5f9f785976 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
3707412416 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
ada78f8c45 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
39d48dfe64 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 d50511af3b)
2026-10-07 14:03:05 +00:00
igneum-labs
6f616d6fff 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 953bf4a239)
2026-10-07 14:03:05 +00:00
igneum-labs
c7309dcdf3 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 093f052c7e)
2026-10-07 14:03:05 +00:00
igneum-labs
49784e6e29 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 a25cc7a0b0)
2026-10-07 14:03:05 +00:00
igneum-labs
c83ea0f5d4 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 57954a43eb)
2026-10-07 14:03:05 +00:00
igneum-labs
17078e1721 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 918eef942f)
2026-10-07 14:03:05 +00:00
igneum-labs
6c793ced0f 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 6b05d53162)
2026-10-07 14:03:05 +00:00
igneum-labs
4042bca83e 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 90b5243e31)
2026-10-07 14:03:05 +00:00