igneum/docs/plans/release-0.3.17.md
igneum-labs f59fb2d05b release 0.3.17 plan: the decisive read passes (headers through in one session)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 04:32:01 +00:00

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)