release-0.3.5 plan: fud-consensus fork results, the scratch run, m20-pruning merged (final-round hashes to follow)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
igneum-labs 2026-10-05 02:43:56 +00:00
parent c6116c805a
commit 24e68edaf1

View file

@ -25,7 +25,7 @@ Master's fix 0d123b3 (OTA Windows helper: `CREATE_NO_WINDOW` only, no `DETACHED_
survived every merge: `grep -n 'creation_flags(0x0800_0000); // CREATE_NO_WINDOW' app/igneum-app/src/ota.rs` gives
one line on the final tip (checked after each merge).
Totals against origin/master: 67 files, 7,894 insertions, 353 deletions. Final tip: 33888fb plus this file.
Totals against origin/master: @@TOTALS@@. Final tip: @@TIP@@.
### 1b. The node fork (branch `release-0.3.5` in `vendor/igneum-node-release`)
@ -40,6 +40,7 @@ finality v3, so a release branch was made from `finality-fixes` and the miner br
| `miner-reliability` | 945153ab | 6ef230d5 | `igneum/miner/src/guard.rs` (fault guards as state machines: interval baseline per worker process, prepare rate limit, CPU re-check stop, restart back-off and exit 43), a dead worker's stdin no longer spins the fill loop, the worker line read waits one status interval | none |
| `bugfix-build-info-worktree` (local, worktree `vendor/igneum-node-bughunt`) | a498d1bf | 2e75a238 | `build-info/build.rs`: a worktree's `.git` is a file; the walk had climbed into the vendoring repository and embedded ITS commit, which is why 0.3.4 reports `igneumd/2.1.0-73fc2fd` (Windows) and `-1b65132` (Mac), neither a fork commit. Now the HEAD file comes from the checkout's own git dir and the ref from the common dir | none |
| `fud-consensus` (local, worktree `vendor/igneum-node-fud`, built on finality-fixes) | 977db931 | b2578ae7 | F23 chain-decided bans with the persisted finality state in layout 2 (a layout-1 blob is read and converted on start), F24 re-determination after reorgs (and un-determination when the new chain has not reached the index), G12/X18 env gate and the consensus params digest in the handshake with a devnet allowance for digest-less peers, M30 the PoW cache keyed by day (the live 270 MB per hour growth), M31 one coinbase payload limit on every network | none (auto-merged, including `igneum/miner/src/main.rs` and `proving.rs` next to the fee and guard changes; `consensus/src/processes/finality.rs` had no conflict with the base) |
| `m20-pruning` (local, worktree `vendor/igneum-node-m20`, based on release-0.3.5 2e75a238) | d35b00cf | 20139145 | pruning proofs checked with the Igneum lottery hash and the chain seeds (ledger M20): `pruning_proof/validate.rs`, the IBD proof flow and the p2p proof messages carry the seeds | none |
The first two touch the miner crate only; the third changes the commit every binary embeds; the fourth changes consensus (finality, pow, params, p2p handshake), so the consensus suites were rerun on it (3b). The finality v3 and
proving text is in every igneumd built below (checked with `strings`), and the embedded commit is now the fork's
@ -92,15 +93,18 @@ Mac build and tests in `vendor/igneum-node-release` with `CARGO_TARGET_DIR=vendo
| 6ef230d5 | `cargo test -p igneum-miner` | ok: 12 passed, 0 failed (the guard tests added), 23:29:40Z |
| 2e75a238 (build-info fix merged) | the same release build | ok, 9 min 39 s (01:12:42Z) |
| 2e75a238 | `cargo test -p igneum-miner` | ok: 12 passed, 0 failed, 01:12:48Z |
| b2578ae7 (fud-consensus merged) | the same release build | @@MAC4_BUILD@@ |
| b2578ae7 | `cargo test -p kaspa-consensus --features igneum-pow -- finality` | @@MAC4_FIN@@ |
| b2578ae7 | `cargo test -p kaspa-consensus --features igneum-pow -- difficulty` | @@MAC4_DIFF@@ |
| b2578ae7 | `cargo test -p kaspa-pow` | @@MAC4_POW@@ |
| b2578ae7 | `cargo test -p igneum-miner` | @@MAC4_MINER@@ |
| b2578ae7 | 6-s scratch run on devnet params over an appdir the 0.3.4 build (6aa69a45) had written | @@SCRATCH@@ |
| b2578ae7 (fud-consensus merged) | the same release build | ok, 16 min 58 s (02:36:58Z); igneumd ffbc9b17..., igneum-miner 4190bded... (superseded by the final round) |
| b2578ae7 | `cargo test -p kaspa-consensus --features igneum-pow -- finality` | ok: 8 passed, 0 failed (4 new tests with F23/F24), 02:41:04Z |
| b2578ae7 | `cargo test -p kaspa-consensus --features igneum-pow -- difficulty` | ok: 15 passed, 0 failed, 02:41:06Z |
| b2578ae7 | `cargo test -p kaspa-pow` | ok: 7 passed, 0 failed, 02:41:23Z |
| b2578ae7 | `cargo test -p igneum-miner` | ok: 12 passed, 0 failed, 02:42:08Z |
| b2578ae7 | 6-s scratch run on devnet params over an appdir the 0.3.4 build (6aa69a45) had written | header `igneumd/2.1.0-b2578ae7`; the digest line printed: `Consensus params digest: 9409dedac4bf9f0f20a54fb169b52a75a2903364909fe9ffd6fc5cdcd9d95d38 (exchanged in the p2p handshake; a peer with another digest is refused)`; the finality section line (rule v3 from checkpoint DAA never); clean start and clean stop over the appdir the 6aa69a45 build had written, no error line. The "state blob of layout 1 read and converted" line did NOT print because that appdir held no finality state blob (an 8-s run from genesis writes none); the conversion path is covered by the finality unit tests above, and the real proof is the first 0.3.5 node over a live 0.3.4 appdir (the Mac node 1 or the seed), which should log that line once |
| 20139145 (m20-pruning merged; the final fork tip) | the same release build | @@MAC5_BUILD@@ |
| 20139145 | finality / difficulty / kaspa-pow / igneum-miner suites | @@MAC5_SUITES@@ |
| 20139145 | `cargo test -p kaspa-consensus --features igneum-pow -- pruning_proof` (M20's crate) | @@MAC5_PRUNE@@ |
The consensus, difficulty and pow crates are untouched by the reliability merge (miner crate only) and by the
build-info fix (a build script that only changes the embedded commit string), so their 4d3c7482 results stood until fud-consensus, which changed all three; the b2578ae7 rows are the ones that count.
build-info fix (a build script that only changes the embedded commit string), so their 4d3c7482 results stood until fud-consensus, which changed all three; every suite was rerun on the final tip 20139145.
### 3c. The other checks, on the files each merge changed
@ -122,18 +126,18 @@ build-info fix (a build script that only changes the embedded commit string), so
## 4. The morning cut
### 4a. The binaries (built overnight from fork 2e75a238; the morning command points at them)
### 4a. The binaries (built overnight from fork 20139145; the morning command points at them)
| Platform | Path | sha256 | Size | Build |
|---|---|---|---|---|
| Mac arm64 igneumd | `vendor/igneum-node/target-release/release/igneumd` | fad0ef913371346298b00362764c8517076aafcad5dbff82a6469ba67c86aa9b | 40,699,824 | release build, 4 jobs at nice 19 |
| Mac arm64 igneum-miner | `vendor/igneum-node/target-release/release/igneum-miner` | 537cef5524c32b55ccf5fc985ff45a4f7e2016e7de1cf70195e9e0832669110c | 8,249,440 | same |
| Windows x86-64 igneumd.exe | `vendor/igneum-node/target-release-win/x86_64-pc-windows-gnu/release/igneumd.exe` | 5ea2957b545c222456bc906a541ef75eb158bce46b96aff9959b494b2c4784e4 | 50,484,224 | `proto-cuda/windows-node/cross-build.sh`, 9 min 42 s (mingw, static libgcc; `libstdc++-6.dll` in the import set as in 0.3.4, the payload carries it), target directory cloned from `target-finality-win` |
| Windows x86-64 igneum-miner.exe | `vendor/igneum-node/target-release-win/x86_64-pc-windows-gnu/release/igneum-miner.exe` | 2417bea7d84eb5b852890f84e58e9025359d13c73be50f9c393563654d44c2a2 | 10,439,680 | same |
| Linux x86-64 (glibc 2.36) igneumd | `infra/cross/out-release-0.3.5/igneumd` (from `vendor/igneum-node/target-release-linux`) | bd613d953858f97bfccc291796ad3148b9e0c823cbcd8dfe85829c8aeb9156e0 | 47,156,904 | `infra/cross/build-linux.sh` with cargo-zigbuild, 578 s, target directory cloned from `target-finality-linux`; for the seed and the HiveOS package, not part of the app |
| Linux x86-64 igneum-miner | `infra/cross/out-release-0.3.5/igneum-miner` | c7fb1806deeb97294a5645a5f1dd4f293c50e037218cecd9f7cc9d2465bcc1cd | 9,323,440 | same |
| Mac arm64 igneumd | `vendor/igneum-node/target-release/release/igneumd` | @@MAC_IGNEUMD@@ | @@MAC_IGNEUMD_SIZE@@ | release build, 4 jobs at nice 19 |
| Mac arm64 igneum-miner | `vendor/igneum-node/target-release/release/igneum-miner` | @@MAC_MINER@@ | @@MAC_MINER_SIZE@@ | same |
| Windows x86-64 igneumd.exe | `vendor/igneum-node/target-release-win/x86_64-pc-windows-gnu/release/igneumd.exe` | @@WIN_IGNEUMD@@ | @@WIN_IGNEUMD_SIZE@@ | `proto-cuda/windows-node/cross-build.sh`, 9 min 42 s (mingw, static libgcc; `libstdc++-6.dll` in the import set as in 0.3.4, the payload carries it), target directory cloned from `target-finality-win` |
| Windows x86-64 igneum-miner.exe | `vendor/igneum-node/target-release-win/x86_64-pc-windows-gnu/release/igneum-miner.exe` | @@WIN_MINER@@ | @@WIN_MINER_SIZE@@ | same |
| Linux x86-64 (glibc 2.36) igneumd | `infra/cross/out-release-0.3.5/igneumd` (from `vendor/igneum-node/target-release-linux`) | @@LINUX_IGNEUMD@@ | @@LINUX_IGNEUMD_SIZE@@ | `infra/cross/build-linux.sh` with cargo-zigbuild, 578 s, target directory cloned from `target-finality-linux`; for the seed and the HiveOS package, not part of the app |
| Linux x86-64 igneum-miner | `infra/cross/out-release-0.3.5/igneum-miner` | @@LINUX_MINER@@ | @@LINUX_MINER_SIZE@@ | same |
Earlier rounds, superseded by the table above. Round 2 (fork 6ef230d5, before the build-info fix): Windows igneumd.exe 09c80e20744c12cc71691aa349496dc54e92714f11258e840292e51441d4dca0 / igneum-miner.exe 2417bea7d84eb5b852890f84e58e9025359d13c73be50f9c393563654d44c2a2; Linux igneumd f2c2065a6dfb39ec2ef5b5fc9c4a5326441529b2690f732ef1f1ff59fff8b623 / igneum-miner c7fb1806deeb97294a5645a5f1dd4f293c50e037218cecd9f7cc9d2465bcc1cd; Mac igneumd cd1a5210dadc72d1e9b129c7065ee2c7dec28a4657efd099168d523828c32335 / igneum-miner 537cef5524c32b55ccf5fc985ff45a4f7e2016e7de1cf70195e9e0832669110c. Round 1 (fork 4d3c7482, dev-fee only): Windows igneumd.exe
Earlier rounds, superseded by the table above. Round 3 (fork 2e75a238, build-info fix): Windows igneumd.exe 5ea2957b545c222456bc906a541ef75eb158bce46b96aff9959b494b2c4784e4 / igneum-miner.exe 2417bea7d84eb5b852890f84e58e9025359d13c73be50f9c393563654d44c2a2; Linux igneumd bd613d953858f97bfccc291796ad3148b9e0c823cbcd8dfe85829c8aeb9156e0 / igneum-miner c7fb1806deeb97294a5645a5f1dd4f293c50e037218cecd9f7cc9d2465bcc1cd; Mac igneumd fad0ef913371346298b00362764c8517076aafcad5dbff82a6469ba67c86aa9b / igneum-miner 537cef5524c32b55ccf5fc985ff45a4f7e2016e7de1cf70195e9e0832669110c. Round 2 (fork 6ef230d5, before the build-info fix): Windows igneumd.exe 09c80e20744c12cc71691aa349496dc54e92714f11258e840292e51441d4dca0 / igneum-miner.exe 2417bea7d84eb5b852890f84e58e9025359d13c73be50f9c393563654d44c2a2; Linux igneumd f2c2065a6dfb39ec2ef5b5fc9c4a5326441529b2690f732ef1f1ff59fff8b623 / igneum-miner c7fb1806deeb97294a5645a5f1dd4f293c50e037218cecd9f7cc9d2465bcc1cd; Mac igneumd cd1a5210dadc72d1e9b129c7065ee2c7dec28a4657efd099168d523828c32335 / igneum-miner 537cef5524c32b55ccf5fc985ff45a4f7e2016e7de1cf70195e9e0832669110c. Round 1 (fork 4d3c7482, dev-fee only): Windows igneumd.exe
e34685d291646bbfb8317920ec19587cc74e69a0fd48c19009a2f55aabd9e31e / igneum-miner.exe
84fa01b9bd95f13c9574e2a26308338fe3c29fff7ec1e696c33ec8173d2ba76e (31 min 13 s); Linux igneumd
695e20fc8053cbecd35f392cf09b6b6155c4789cdb2342549185427ea5aca451 / igneum-miner
@ -164,9 +168,9 @@ Why these values:
| Item | Value | Checked |
|---|---|---|
| node fork worktree | `vendor/igneum-node-release`, branch `release-0.3.5`, commit 2e75a238 = `finality-fixes` 6aa69a45 + `dev-fee` + `miner-reliability` + `bugfix-build-info-worktree`; clean working tree | the ship script records the fork commit and branch in `~/.cache/igneum/ship/0.3.5.json` and in the console item |
| node fork worktree | `vendor/igneum-node-release`, branch `release-0.3.5`, commit 20139145 = `finality-fixes` 6aa69a45 + `dev-fee` + `miner-reliability` + `bugfix-build-info-worktree` + `fud-consensus` + `m20-pruning`; clean working tree | the ship script records the fork commit and branch in `~/.cache/igneum/ship/0.3.5.json` and in the console item |
| Windows node exes | `target-release-win/x86_64-pc-windows-gnu/release/{igneumd,igneum-miner}.exe` (4a) | the fork worktree has no `target/` of its own (its builds live under `vendor/igneum-node/target-release*`), hence the two `--*-release` flags; the `inputs` step sees the new miner hash and pushes a fresh `payload-inputs.zip` (one deploy of the downloads folder, as 0.3.4 did at 20:07Z) |
| Mac node binaries | `target-release/release/{igneumd,igneum-miner}` (4a) | `igneumd --version` = igneumd 2.1.0 (no commit in that line); the embedded commit (`igneumd/2.1.0-<short>` in the daemon header and the user agent) is `igneumd/2.1.0-2e75a238` (read from the header of a 6-s run on a scratch appdir and private ports, 02:13 BST); the full hash 2e75a238379b... is in every igneumd (`strings`), the old 73fc2fd/1b65132 in none. The miners embed no build info, so their hashes equal round 2; `igneum-miner --help` lists `--dev-fee` |
| Mac node binaries | `target-release/release/{igneumd,igneum-miner}` (4a) | `igneumd --version` = igneumd 2.1.0 (no commit in that line); the embedded commit (`igneumd/2.1.0-<short>` in the daemon header and the user agent) is @@EMBEDDED@@ (the build-info fix; 0.3.4 reported the vendoring repository's commits); `igneum-miner --help` lists `--dev-fee` |
| downloads folder | `~/.config/igneum/dlsite-dir` = `<scratchpad>/dlsite` of session cd75457f, linked to Vercel project prj_vxz8Hj... (`.vercel/project.json`); holds every DMG and installer from 0.1.0 to 0.3.4 and the live manifest | it is the real folder, 0.3.4 deployed from it; it lives in a session scratchpad, so move it somewhere permanent when there is a quiet moment |
| consensus override and tuning | the live 0.3.4 manifest has no `consensus.override` and no `tuning`; `ship-app.mjs` passes neither flag; `publish-manifest.sh` carries both over from the folder's manifest when present (nothing to carry today) | to publish a height switch with 0.3.5, run `packaging/ota/publish-manifest.sh --version 0.3.5 --override '{...every switch...}' --deploy` after the cut, or pass `--activation-height N --deadline-note "..."` to the ship command (those two it forwards) |
| prover in the DMG | `proving/igneum-prove/target/release/igneum-prove-host` and `-export` are absent in the release worktree; present or not in the main checkout decides | the DMG ships without the prover unless they are built first (the dry run notes it; 0.3.4 had the same note) |
@ -203,7 +207,7 @@ install from here. Untested with a right hash; the hand install is the known pat
## 6. State when this file was last written
- App branch `release-0.3.5` at 1b287d4 plus this file, pushed. Fork branch `release-0.3.5` at 2e75a238 in
- App branch `release-0.3.5` at 1b287d4 plus this file, pushed. Fork branch `release-0.3.5` at 20139145 in
`vendor/igneum-node-release` (local; the fork has no remote).
- The release worktree carries a built `app/igneum-app/target` (debug tests, the Windows check, the release
signer); the fork builds live in `vendor/igneum-node/target-release`, `target-release-linux`, `target-release-win`