217 lines
28 KiB
Markdown
217 lines
28 KiB
Markdown
# 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.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`
|
|
(clones; the `target-finality*` directories of 0.3.4 are untouched). After the cut: `git worktree remove
|
|
../igneum-wt-release`; keep `vendor/igneum-node-release` as the record of what 0.3.5's node was built from.
|
|
- `miner-latency` never 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).
|