7.2 KiB
Release 0.3.17: the node-only fresh-join hotfix (7 October 2026)
Main's order, 03:3xZ: the canary of the feature tree (now 0.3.18, node 12153428) failed on two further node faults (the idle-peer guard closes every peer mid headers-proof IBD; a window-below-epoch log flood at 1,900 lines a minute), so tonight's cut is the 0.3.16 app tree with the node pin moved to f1ea7a38 plus the IBD-guard fix and nothing else that ships bytes. Fresh joins on the live devnet while the class v4 window is open are what it fixes (ledger N6). The version scheme is three-part everywhere (the app's parser returns None on a fourth part, so "0.3.16.1" would never be newer than 0.3.16); hence 0.3.17 here, the feature tree 0.3.18, decimals 0.3.19.
1. The trees
| tree | branch | commit | what |
|---|---|---|---|
| app | release-0.3.17 (origin), from release-0.3.15 a9eb58f1 | see git log | version 0.3.17 (ec5dba41), the hive tar without Mac metadata (00452001, from the 0.3.18 tree's c5187a70), the packaged object = the live sixteen-field object (5d118f58, from bd7b3076), rust-toolchain.toml (6551d341, from 29740ce6), the node pin to follow |
| node | release-0.3.17-node (box mirror) | 5899f603 | f1ea7a38 (the live 0.3.16 node) + b3c228fa (hand-port of ca3-v4-0317-fix 90aaf38e: header_version_acceptable gated on class_signal_active() alone since this tree has no ladder; the IBD guard and the consensus rule read it; unit test without the ladder assert) + 3dbcf209 (cc78a21f, the integration crate's test-only fixes, main's order) + 5899f603 (rust-toolchain.toml). Shipped bytes differ from f1ea7a38 by the port alone. |
The feature tree's node branch is release-0.3.18-node (12153428) on the mirror; its app branch release-0.3.18 (origin); its plan docs/plans/release-0.3.18.md.
2. Builds and gates
| piece | commit string | sha256 (first 8) | bytes | note |
|---|---|---|---|---|
| Linux igneumd, box native (glibc 2.39; the fleet's canary sha and the 24.04 boxes) | 5899f603 | d712b498 | 49,719,136 | 03:43Z |
| Linux igneum-miner, box native | (none in the miner) | 2d8d069f | 9,979,992 | the miner crate is unchanged from 0.3.15/0.3.16 |
| Windows igneumd.exe (cross, box) | 5899f603 | b6b3f417 | 51,894,272 | 03:45Z |
| Windows igneum-miner.exe | 47512bb1 | 11,130,368 | ||
| Mac igneumd (Apple Silicon) | 5899f603 | f3dcf310 | 41,803,104 | |
| Igneum-Miner-0.3.17.dmg | 75518e2c | 41,948,417 | packaged object = the live sixteen-field object; prover pair aboard; version 0.3.17 | |
| hands igneumd (box native, the build-server lane's tree, pairs with igneum 250fd371) | 5899f603 | 401bfd54 | 49,720,416 | not byte-equal to d712b498: prost's generated protowire.rs embeds OUT_DIR, and the two worktrees have different paths (the 0.3.14 repro's first class); same inputs otherwise. The "reproduced" row compares two builds in ONE tree. |
| seed igneumd (class seed, glibc 2.35 through zig, the build-server lane) | 5899f603 | 39165c1f | 48,437,456 | needs GLIBC_2.34; restart-seed.sh takes it as IGNEUMD_LINUX |
| hands / seed igneum-miner | cad0552f / d1446c13 | 9,979,544 / 10,002,816 | ||
| Windows inputs | 5899f603 | pushed 03:47Z, pin 74250f2c, windows.yml run 37568494498 dispatched 03:49Z |
Digests read directly on the Mac binary (digest.sh, each with the override file's own lines present): sixteen-field eada4bda, thirteen-field b18ed271, no file c562d70e. Unchanged from 0.3.16: the port changes no parameter.
Engine read-back on this tree: igneum_getNodeInfo does not exist on f1ea7a38 (it came with the 0.3.18 node; the hotfix RPC answers -32601), so the powEngine column is the binary's link: strings igneumd | grep -c igneum-pow/src/ above zero (Mac 8, Linux 6, Windows 9; a stub build carries none of the crate's source paths, since consensus/pow/src/igneum.rs picks HeavyHashEngine without the feature). Every build path (build-remote, cross-remote, build-linux.sh) passes --features kaspad/igneum-pow by default.
Found on the way: master's build tools ended silently on a tree without rust-toolchain.toml (the pin reader); the pin file was added to both hotfix trees (6551d341, 5899f603) and the build-server lane fixed the reader on master (607a7433).
| node suite on the box (six crates, --no-fail-fast, 03:45Z, box load 44 with two other lanes' suites) | kaspa-consensus 97 + 2 FAILED under load (antichain_merge_test, inactivity_shortcut_block_clamps_to_genesis_within_finality_depth), each 1/1 green alone at 03:53Z; consensus-core 112 + 7; the rest green | PASS (the two are the known load flakes of the 12153428 suite) |
| cargo check -p kaspa-testing-integration --tests (with cc78a21f) | rc 0, 03:50Z | PASS |
| generic Linux igneumd (class seed, glibc 2.35 through zig, my tree) | 5899f603 | 7b582125 | 48,437,392 | GLIBC_2.34; the devnet seed itself runs the build-server lane's 39165c1f (same inputs, other OUT_DIR) |
| HiveOS igneumd (class hive, glibc 2.31) | 5899f603 | f45c2014 | 48,438,096 | GLIBC_2.30; pow link 6 |
| igneum-hive-0.3.17.tar.gz | | b283ba0c | 24,719,145 | 2.31 node pair + the box's CUDA/OpenCL workers 193ec36f/7a35ff2a (unchanged from 0.3.16); no ._ entries; ubuntu:20.04 container smoke on the box (ldd 2.31): all four binaries load and answer |
| Windows run 37568494498 (release-0.3.17 at 74250f2c) | | | | green 03:55Z (engine, window host, payload, installer, smoke run); Igneum-Miner-Setup-0.3.17.exe 474a2070, 62,641,219 bytes |
| scratch manifest (r0317hf/dlsite-stage, token and public) | | | | version 0.3.17, mac 75518e2c, windows 474a2070, consensus.override = the live sixteen-field object, HiveOS alias held at 0.3.16 until its own row; written 03:57Z; the live folder holds no 0.3.17 file |
3. The canary (the fleet, c17-1, wiped datadir, node d712b498, live miner 3976c1b2)
-
03:50Z start (T0 03:50:02Z), headers-proof IBD from 213.173.107.74 on one session throughout; 04:07Z headers 61 percent (69,668), 4 peers, zero SendPingsFlow lines, zero "completed with error", zero reject or wrong-version lines (the one match is the digest banner). 12153428's guard fired at 12 minutes twice; this node was 5 minutes past that mark on one session. Clock: headers through about 04:17Z, blocks synced 04:35Z, ten minutes of mining reads to 04:45Z, then the relay and poison cases.
-
Fault 2 of the 12153428 canary (the "window below epoch 43 seed block ... incomplete" WARN flood) is f1ea7a38's own line (consensus/src/processes/class_signal.rs:217 in the 0.3.15 tree): live behaviour on every fresh headers IBD since publish 2, not a hotfix regression and not held against it. On this node 49,844 lines, 32 MB in 15 minutes, all epoch 43, bounded by the IBD (a one-time 30 to 60 MB on a fresh install; the supervisor trims node logs on standing boxes). The 0.3.18 node (6e4ace3f) says it once per epoch per process.
-
Headers through, 04:25:25Z: the decisive read PASSES. 100 percent (114,000 headers) in one IBD session from 213.173.107.74, pruning point proof and SMT state imported, SendPingsFlow 0 the whole 35 minutes (T0 03:50:02Z), three times the 12 minutes 12153428's guard allowed; the WARN flood held the pace to 40 to 110 headers a second. Block bodies next: synced about 04:45Z, then the ten minutes of mining reads and the cases.
(the remaining lines as they land; the deploy goes on the cases line)