28 KiB
Igneum Miner 0.3.5: the merge, staged overnight (4 to 5 October 2026)
Prepared by the integration agent while the owner slept. Nothing was deployed, published or merged to master. The
app work sits on branch release-0.3.5 (pushed to origin), worktree /Users/joshm/Projects/igneum-wt-release; the
node work sits on the fork branch release-0.3.5 (local only; the fork has no remote), worktree
vendor/igneum-node-release. The morning cut is one command (section 4) after a fast-forward of master.
1. What is in
1a. The app repository (branch release-0.3.5)
| Merged, in this order | Branch head | Merge commit | What it carries | Conflicts and how they were resolved |
|---|---|---|---|---|
origin/miner-eff |
b80d4c9 | fcadcc5 | hash-per-watt sweep in the app engine (src/sweep.rs, config, detect, server, state, UI), relay/playbooks/sweep-5090.ps1, docs/plans/miner-eff.md |
none |
origin/app-ui |
80c99a8 | 112b496 | the log drawer rebuilt, every screen on one type scale, idle canvas and polling when hidden; tools/ui-mock/ (a recorded-state mock server for UI work) |
ui/app.css: both sides kept; .power .pv takes app-ui's var(--t-sm), the sweep rules from miner-eff stay, .pin moved onto the scale (var(--t-xs)) |
origin/miner-perf |
e9f8847 | 98726f0 | variant racing in proto-cuda/nvrtc/worker.cpp and proto-metal/main.swift, TUNING records in the engine, the manifest's tuning object (manifest.rs, ota.rs), tools/tuning.mjs, relay/playbooks/race-5090.ps1, docs/design/miner-tuning.md, docs/plans/miner-perf.md, bench-log entries |
state.rs: both field blocks kept (sweep fields, race fields). docs/bench-log.md: both appended entries kept. packaging/ota/publish-manifest.sh: ONE implementation. Master's --override (b84644c: the object carries every height switch; --verify-only, --tries, the retrying byte-identical live check) is the base; miner-perf's --tuning <file> / --no-tuning added, plus its carry-over of consensus.override and tuning from the manifest already in the folder when neither is given. The duplicate --override case the auto-merge produced was removed |
origin/build-job |
4e94f27 | 7eb83ff | job kind build (jobs.rs, jobrun.rs, new jobbuild.rs): a PC builds the node and the app engine for Linux and Windows inside WSL2; publish-jobs.sh add --kind build, packaging/windows/push-build-inputs.sh, tools/build-job.mjs, tools/relay.mjs |
publish-jobs.sh: master's verify command and --tries kept next to the build kind's arguments; the usage range widened to the merged header |
origin/dev-fee (merged twice: 6b4ec59, then its later tip) |
293fc0b | 49f95de, 1b287d4 | the miner software's dev fee on the app side: the dev_fee setting (default on, --dev-fee 0 passed when off), DevFeeState and the UI line, fee_total across runs, dev-fee block events; the HiveOS package (packaging/hive/), infra/cross/build-workers-linux.sh, tools/dev-fee/run.mjs, docs/design/miner-dev-fee.md, ledger and site text |
config.rs, state.rs, engine.rs: both sides kept (the sweep fields and installed_at from miner-eff next to dev_fee and fee_total; the engine's settings snapshot sets both and the DevFeeState line stays). The generated site pages were rebuilt afterwards (a91ff81). The second merge (161e48c, 293fc0b: the test-network measurement in the bench log, run.mjs waits for the nodes) conflicted only in bench-log.md and the generated pages: both entries kept, pages rebuilt |
origin/miner-reliability |
59d843f | f7d2af7 | the app watchdog per card and per node (src/watchdog.rs), WORKER FAULT and mismatched= read from the miner, the reliability test harness (tools/reliability/), the public GPU bench table (site/miners.html from site/miner-bench.json), bench-log and ledger entries |
engine.rs: the sweep state (miner-eff) and the node watchdog kept together; the STATUS line goes through watchdog::parse_status and still feeds the sweep's rate sample. main.rs: both modules. bench-log.md: both entries. site/build.mjs: master's partial-injected pages kept, the /miners table added through the same page() with active: 'miners'; the Miners link added to site/partials/nav.html; /miners added to the sitemap; every generated page rebuilt (node site/build.mjs) |
origin/master (merged five times as it moved, 37 commits in all) |
c40fd86 | cc71ed6, ce74626, 5672a28, 1c33898, and the last | the bug hunter's night: console parsers in relay/lib/parse.mjs with node --test relay/test, the identity-scrub fix 2996cca (CI green), publish-jobs and publish-manifest verify changes, autosync, console_ota_memo, bugs.md rows |
none (the publish-manifest.sh and publish-jobs.sh reconciliations of this branch sit on top of master's verify changes; --tuning and verify both present on the tip) |
origin/bugfix-collect-exit |
35ccdc8 | e53d337 | a collect job whose command exits non-zero is failed with that code (collect_done, unit test); collect-pc1-board3 had reported done over exit 1 |
none |
origin/fud-consensus (carries the redteam branch) |
0420c88 | 7abce72 | round-4 consensus items on the app side: tools/finality-attacks/fud.mjs and the red-team runners, harness s8 steady state and port/data-dir overrides, specs 02/03/08, ledger F23 F24 G12 X18 M30 M31 F25, docs/review/redteam-2026-10-04.md, result files |
docs/bench-log.md: both appended entries kept. No app or site file changed |
Master's fix 0d123b3 (OTA Windows helper: CREATE_NO_WINDOW only, no DETACHED_PROCESS) is the branch point and
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: 107 files, 12,398 insertions, 387 deletions. Final tip: the last commit of this branch (the plan file follows the code; the last code merge is 7abce72, fud-consensus).
1b. The node fork (branch release-0.3.5 in vendor/igneum-node-release)
The shipping node is finality-fixes (6aa69a45: proving v0 plus finality v3, the fork 0.3.4 shipped from). The
miner changes of the night live on fork branches based on devnet-v4 (3bfe346f), which has neither proving nor
finality v3, so a release branch was made from finality-fixes and the miner branches merged into it. Neither
finality-fixes nor devnet-v4 was touched.
| Fork merge | Head | Merge commit | What it carries | Conflicts |
|---|---|---|---|---|
dev-fee (local, created from the worktree change) |
a2c7ba83 | 4d3c7482 | igneum-miner --dev-fee <percent> (default 1: one template in 100 is requested with the dev payout address, deterministic by counter; 0 off), dev-fee block lines, igneum-miner payouts (the audit) |
igneum/miner/src/main.rs: both kept, the pub(crate) visibility the proving modules need (finality-fixes) with the fee fields and parameters (fee_extra_data, Template.dev_fee, template(.., fee), submit(.., fee) -> bool); proving.rs: vmine calls both with fee = false |
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
(section 4a).
2. What is out, and why
| Branch | State at 23:05 UTC | Why |
|---|---|---|
miner-latency |
not on origin (local app branch at e7225b7 = its base, no commits); fork side vendor/igneum-node-latency branch miner-latency at 0f88b6d6 (one commit over devnet-v4: template subscription, node-side prewarm) |
nothing on origin to merge. If it lands before the cut: merge the app side the same way (section 3's checks), merge the fork branch into the fork's release-0.3.5, rebuild the miner for the three platforms (the scripts in section 4b take about 35 min for the three in parallel) |
Everything else the task named is in. The poller (git fetch every 10 minutes from 21:34 UTC) caught dev-fee at
21:48; miner-reliability (59d843f) was merged at 22:24 as soon as it was reported on origin.
3. Test results, with the command
Every build ran through the main checkout's lock, /Users/joshm/Projects/igneum/tools/lock/with-lock.sh build, at
nice -n 19 with -j 4. The app tests ran in /Users/joshm/Projects/igneum-wt-release/app/igneum-app (target
directory cloned by APFS from the main checkout's). The rustup cargo (1.99.0) is the one on ~/.cargo/bin;
Homebrew's 1.69 cannot read the lock file.
3a. The app engine, after every merge
| After merge | Tip | cargo test -p igneum-app |
cargo check --target x86_64-pc-windows-gnu -p igneum-app |
|---|---|---|---|
| miner-eff | fcadcc5 | ok: 36 passed (lib) + 19 passed (bin), 0 failed, 21:27:31Z | ok, 21:28:18Z |
| app-ui | 112b496 | ok: 36 + 19, 0 failed, 21:29:14Z | ok, 21:29:15Z |
| miner-perf | 98726f0 | ok: 38 + 20, 0 failed, 21:31:46Z | ok, 21:31:50Z |
| build-job | 7eb83ff | ok: 44 + 22, 0 failed, 21:33:07Z | ok, 21:33:12Z |
| origin/master | cc71ed6 | ok: 44 + 22, 0 failed, 21:35:34Z | ok, 21:35:35Z |
| dev-fee | 49f95de | ok: 44 + 22, 0 failed, 21:48:14Z | ok, 21:48:17Z |
| miner-reliability | f7d2af7 | ok: 55 + 22, 0 failed, 22:25:32Z | ok, 22:25:36Z |
| dev-fee second tip (no app source changed) | 1b287d4 | ok: 55 + 22, 0 failed, 23:17:28Z (tip bd57866 = 1b287d4 plus this file) | ok, 23:17:28Z |
| master 2897e21 + bugfix-collect-exit | e53d337 | ok: 56 + 22, 0 failed (the collect_done test among them), 01:03:02Z | ok, 01:03:02Z |
| fud-consensus (final tip; no app source changed) | 7abce72 | ok: 56 + 22, 0 failed, 02:20:01Z | ok, 02:20:01Z |
3b. The node fork
Mac build and tests in vendor/igneum-node-release with CARGO_TARGET_DIR=vendor/igneum-node/target-release
(APFS clone of target-finality, 91 s to clone):
| Fork tip | Command | Result |
|---|---|---|
| 4d3c7482 (dev-fee merged) | cargo build --release -j 4 -p kaspad -p igneum-miner --features kaspad/igneum-pow |
ok, 31 min 27 s (22:22:55Z) |
| 4d3c7482 | cargo test -p kaspa-consensus --features igneum-pow -- finality |
ok: 4 passed, 0 failed (88 filtered), 22:49:44Z |
| 4d3c7482 | cargo test -p kaspa-consensus --features igneum-pow -- difficulty |
ok: 15 passed, 0 failed, 22:49:50Z |
| 4d3c7482 | cargo test -p kaspa-pow (the igneum-pow crate) |
ok: 7 passed, 0 failed, 22:55:41Z |
| 4d3c7482 | cargo test -p igneum-miner |
ok: 5 passed, 0 failed (the dev-fee extra-data tests among them), 23:01:04Z |
| 6ef230d5 (miner-reliability merged) | the same release build | ok, 11 min 50 s (23:29:22Z) |
| 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 | 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 | ok, 26 min 27 s (03:09:38Z) |
| 20139145 | finality / difficulty / kaspa-pow / igneum-miner suites | finality ok 8 passed (03:13:42Z); difficulty ok 15 passed (03:13:44Z); kaspa-pow ok 7 passed (03:13:59Z); igneum-miner ok 12 passed (03:14:34Z); 0 failed |
| 20139145 | cargo test -p kaspa-consensus --features igneum-pow -- pruning_proof (M20's crate) |
ok: 4 passed, 0 failed, 03:15:51Z |
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; every suite was rerun on the final tip 20139145.
3c. The other checks, on the files each merge changed
| Check | Command | Result |
|---|---|---|
| Console parsers | node --test relay/test/parse.test.mjs relay/test/auth.test.mjs (the bug hunter's tests, as CI runs them) |
6 tests, 6 pass, 0 fail |
| JavaScript parses | node --check on tools/ui-mock/server.mjs, tools/tuning.mjs, tools/build-job.mjs, tools/relay.mjs, relay/api/console.mjs, tools/dev-fee/run.mjs, tools/reliability/*.mjs, site/build.mjs, app/igneum-app/ui/app.js |
all parse |
| Shell parses | bash -n on publish-manifest.sh, publish-jobs.sh, push-build-inputs.sh, infra/cross/build-workers-linux.sh, packaging/hive/*.sh |
ok |
PowerShell parse rule (no $var: inside double quotes; ${var} instead) |
a scanner over every tracked .ps1 and the PowerShell strings in ota.rs, jobrun.rs, jobbuild.rs (scratch script pscheck.py; tools/ci/windows/check-ps51.ps1 needs a PowerShell this Mac lacks) |
0 hits in sweep-5090.ps1, race-5090.ps1, jobrun.rs, jobbuild.rs; dev-fee and reliability changed no .ps1, ota.rs or jobrun.rs. The three hits in the tree are the unchanged baseline: two comments in check-ps51.ps1 that quote the rule, and ota.rs line 1190, the Mac helper's bash ($MODE: in bash is plain text) |
node site/build.mjs |
after dev-fee (site text) and after miner-reliability (the new /miners page) |
built: bench, journey (40 entries), index, litepaper, live, evidence, 404, miners (6 rows); miners.html carries the nav with aria-current on Miners |
publish-manifest.sh after the reconciliation |
four runs against a scratch --dest and --base-url with the real signing key: --override + --tuning given; nothing given (both carried over); --no-tuning; --override '[1]' (must fail) |
the four manifests came out as intended; the bad override exits 1; --verify-only --tries 1 still runs and fails on the unreachable base as it should |
publish-jobs.sh add --kind build |
against a scratch folder, with the signer rebuilt from the branch (cargo build --release --bin igneum-ota-sign; the old signer refused the kind) |
ok: one build job, signed, listed with its budget, targets and zip hash |
tools/ship-app.mjs --check and --self-test |
on the merged tree | 0.3.4 in all 6 version files; all self-test checks passed |
tools/ship-app.mjs 0.3.5 ... --dry-run |
from the release worktree with --branch release-0.3.5 (before the fork rebuild) |
preflight read everything and printed the plan |
| Swift worker typechecks | xcrun swiftc -typecheck proto-metal/main.swift |
0 errors |
| NVRTC worker | clang++ -std=c++17 -fsyntax-only proto-cuda/nvrtc/worker.cpp |
not checkable on this Mac (cuda.h is not installed); the PC compiles the worker itself at first start |
| Proto workers' Rust unit tests | none exist (proto-cuda/nvrtc is C++, proto-metal is Swift; proto-vdf untouched) |
n/a |
| Dev fee present in the built miners | strings -n 8 <miner> | grep -c dev-fee |
Mac, Linux and Windows miners: hits; the finality-fixes miner: 0. finality_v3_activation_daa present in every igneumd |
4. The morning cut
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 |
ac6b5c38933c934b3be4bbb3098e21cd013020e039e548f69e19a26fd6dd2ebe | 40,901,776 | release build, 4 jobs at nice 19 |
| Mac arm64 igneum-miner | vendor/igneum-node/target-release/release/igneum-miner |
aa57cefe68c837689c3b34c3a2cab2b7225f13231791fe2f59ecb06efa2c9dde | 8,249,776 | same |
| Windows x86-64 igneumd.exe | vendor/igneum-node/target-release-win/x86_64-pc-windows-gnu/release/igneumd.exe |
32fd3403fdf10ac6807aea26903e9b95d0939af5f543096cbaea8ff0dd003d8f | 50,709,504 | proto-cuda/windows-node/cross-build.sh, 26 min 4 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 |
c16dfbef2717639e592a99e33ee3c516adc3c779f1a02e1756d58ba0c3db6a19 | 10,447,872 | same |
| Linux x86-64 (glibc 2.36) igneumd | infra/cross/out-release-0.3.5/igneumd (from vendor/igneum-node/target-release-linux) |
c98a23da34327ddd0dde98736545eaffb8361d9b2f6a8d176529ca8b040835ed | 47,386,152 | infra/cross/build-linux.sh with cargo-zigbuild, 1,573 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 |
daf0e23ea6af525e3347e011e951d433352189c95c5df003a272ebb954b7d799 | 9,339,080 | same |
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 9a8169272c87e1aa7ec7809fb5b6e3f55eab2ccb5fe0340ebf1442bf835f6df7 (1,947 s); Mac igneumd 743a56cf26370d5dfb22e4f7016e9bee57771078caead8c16fa6448ebf13e141 / igneum-miner 37d101a03754967b3f8bf3920c660ce0584358d6dc5fb5b3f58eaa06647fe3f1.
4b. The command
From the MAIN checkout, on master. release-0.3.5 contains origin/master as of c40fd86, so the merge is a
fast-forward unless master moved again overnight (then merge origin/master into release-0.3.5 first, rerun the
two cargo commands of 3a, and fast-forward).
cd /Users/joshm/Projects/igneum
gh auth switch --user igneum-labs
git fetch origin && git checkout master && git pull --ff-only
git merge --ff-only origin/release-0.3.5
node tools/ship-app.mjs --check # 0.3.4 in all 6 files
node tools/ship-app.mjs 0.3.5 \
--node vendor/igneum-node-release \
--win-release vendor/igneum-node/target-release-win/x86_64-pc-windows-gnu/release \
--mac-release vendor/igneum-node/target-release/release \
--notes "Miner dev fee (1 in 100, off in Settings), fault guards and watchdog, efficiency sweep, kernel variant racing, log drawer, build jobs; Windows OTA helper launch fixed"
Why these values:
| Item | Value | Checked |
|---|---|---|
| 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-20139145 (the header of an 8-s run on a scratch appdir and private ports, 04:10 BST; the digest line Consensus params digest: 9409dedac4bf... printed; clean stop, 0 error lines); the full hash 20139145... is in every igneumd (strings), the old 73fc2fd/1b65132 in none; the Windows igneumd.exe also carries the digest text. The miners embed no build info (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) |
| GPU workers for Windows | igneum-worker-cuda.exe / -opencl.exe are not in the tree |
the PC builds them itself (a note, not a problem) |
| dev fee default | the app passes nothing when the setting is on (the miner's default is 1%) and --dev-fee 0 when off; the devnet dev address is compiled into the miner (docs/design/miner-dev-fee.md) |
the start line dev fee 1% (1 block in 100) to 0x... shows in the app's log and Settings after the update |
Expected ship duration: the Windows CI run (about 10 to 15 min) and the DMG build under the lock (a few minutes with the engine target cloned; longer if the lock is busy) are the two waits.
5. The Windows machines (hand installs) and PC 2
Every Windows engine from 0.3.0 to 0.3.4 starts the update helper with DETACHED_PROCESS, so PowerShell exits
before ota-apply.ps1 runs and the update sits on "the installer is starting" (docs/bugs.md, 4 Oct 22:25 BST).
0.3.5 carries the fix, so the FIRST install of 0.3.5 on each Windows machine is by hand; every update after it goes
over the air.
| Machine | id | On | What to do |
|---|---|---|---|
| PC 1 | ae432dc7 | 0.3.3 | run Igneum-Miner-Setup-0.3.5.exe by hand (below) |
| US laptop (Intel UHD, OpenCL) | 37ba0461 | 0.3.3 | the same, by its user; send the link |
| PC 2 (the 0.3.4 canary) | 1ccfe586 | 0.3.4 | the same: 0.3.4's helper launch has the same flags, so its 0.3.5 update would also stall |
The hand install: download https://dl.igneum.network/dl/<token>/Igneum-Miner-Setup-0.3.5.exe (the link the
igneum.network download page carries once the cut is live) and run it. It is the per-user installer: no
administrator prompt, the running app is closed and restarted by the installer, the data folder
%LOCALAPPDATA%\igneum (chain, wallet, settings) is untouched. Check: Settings shows 0.3.5 and the console's
Machines card shows the machine back with its hash rate.
Without a keyboard at the machine: the remote run job path launched the helper fine on PC 2 (the dry run
run-ota-helper-dryrun-pc2 in bugs.md: it logged, checked the hash and refused the wrong one as designed), so a
publish-jobs.sh add --kind run --target ae432dc7,1ccfe586 --script <ps1> --stop-miners --deploy whose script
downloads the installer, checks its sha256 against the manifest and runs it with /VERYSILENT would do the
install from here. Untested with a right hash; the hand install is the known path.
6. State when this file was last written
- App branch
release-0.3.5at 1b287d4 plus this file, pushed. Fork branchrelease-0.3.5at 20139145 invendor/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 invendor/igneum-node/target-release,target-release-linux,target-release-win(clones; thetarget-finality*directories of 0.3.4 are untouched). After the cut:git worktree remove ../igneum-wt-release; keepvendor/igneum-node-releaseas the record of what 0.3.5's node was built from. miner-latencynever reached origin (section 2).- 23:30 UTC: six binaries from fork 6ef230d5. 01:13 UTC: six binaries from fork 2e75a238 (build-info fix). 02:42 UTC: fud-consensus built, all suites green. 03:16 UTC: fork 20139145 (fud-consensus and m20-pruning in) built for the three platforms, every suite green, header and digest confirmed in the scratch run: these are what the morning command ships (section 4a).