From 59a77b5b4b2c99f10974e9ae12fcf0fc1b18b620 Mon Sep 17 00:00:00 2001 From: igneum-labs <337424239+igneum-labs@users.noreply.github.com> Date: Mon, 5 Oct 2026 01:04:17 +0000 Subject: [PATCH] release-0.3.5: master 00baf75 and bugfix-collect-exit merged, site rebuilt, plan rows (round-3 hashes to follow) Co-Authored-By: Claude Fable 5.1 --- docs/plans/release-0.3.5.md | 49 ++++++++++++++++++++---------------- site/index.html | 2 +- site/journey.json | 50 ++++++++++++++++++------------------- 3 files changed, 54 insertions(+), 47 deletions(-) diff --git a/docs/plans/release-0.3.5.md b/docs/plans/release-0.3.5.md index 5e9cc6af7..24c8d8032 100644 --- a/docs/plans/release-0.3.5.md +++ b/docs/plans/release-0.3.5.md @@ -17,13 +17,14 @@ node work sits on the fork branch `release-0.3.5` (local only; the fork has no r | `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` (5 commits after the branch point, merged as they landed) | e22068f | cc71ed6, ce74626, 5672a28 | console: the parsed app-log tail is 400 KB, the last OTA state per machine is remembered (`console_ota_memo`); bugs.md rows | none | +| `origin/master` (merged four times as it moved, 36 commits in all) | 2897e21 | cc71ed6, ce74626, 5672a28, 1c33898 | 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 | 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: 67 files, 7,844 insertions, 349 deletions. Final tip: 1b287d4. +Totals against origin/master: 67 files, 7,894 insertions, 353 deletions. Final tip: @@TIP@@. ### 1b. The node fork (branch `release-0.3.5` in `vendor/igneum-node-release`) @@ -36,9 +37,11 @@ finality v3, so a release branch was made from `finality-fixes` and the miner br |---|---|---|---|---| | `dev-fee` (local, created from the worktree change) | a2c7ba83 | 4d3c7482 | `igneum-miner --dev-fee ` (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 | -`igneumd` is unchanged by both (the miner crate only); the finality v3 and proving text is in every igneumd built -below (checked with `strings`). +The first two touch the miner crate only; the third changes the commit every binary embeds. 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 @@ -67,7 +70,8 @@ Homebrew's 1.69 cannot read the lock file. | 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 (final tip; no app source changed) | 1b287d4 | ok: 55 + 22, 0 failed, 23:17:28Z (tip bd57866 = 1b287d4 plus this file) | ok, 23:17:28Z | +| 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 (final tip) | e53d337 | ok: 56 + 22, 0 failed (the collect_done test among them), 01:03:02Z | ok, 01:03:02Z | ### 3b. The node fork @@ -83,14 +87,17 @@ Mac build and tests in `vendor/igneum-node-release` with `CARGO_TARGET_DIR=vendo | 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 | @@MAC3_BUILD@@ | +| 2e75a238 | `cargo test -p igneum-miner` | @@MAC3_TESTS@@ | -The consensus, difficulty and pow crates are untouched by the reliability merge (miner crate only), so their 4d3c7482 -results stand for 6ef230d5. +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 stand. ### 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) | @@ -106,28 +113,28 @@ results stand for 6ef230d5. ## 4. The morning cut -### 4a. The binaries (built overnight from fork 6ef230d5; the morning command points at them) +### 4a. The binaries (built overnight from fork 2e75a238; the morning command points at them) | Platform | Path | sha256 | Size | Build | |---|---|---|---|---| -| Mac arm64 igneumd | `vendor/igneum-node/target-release/release/igneumd` | cd1a5210dadc72d1e9b129c7065ee2c7dec28a4657efd099168d523828c32335 | 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` | 09c80e20744c12cc71691aa349496dc54e92714f11258e840292e51441d4dca0 | 50,483,200 | `proto-cuda/windows-node/cross-build.sh`, 11 min 13 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`) | f2c2065a6dfb39ec2ef5b5fc9c4a5326441529b2690f732ef1f1ff59fff8b623 | 47,156,648 | `infra/cross/build-linux.sh` with cargo-zigbuild, 684 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`, 11 min 13 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, 684 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 | -The first round (fork 4d3c7482, dev-fee only, before reliability landed): Windows igneumd.exe +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 e34685d291646bbfb8317920ec19587cc74e69a0fd48c19009a2f55aabd9e31e / igneum-miner.exe 84fa01b9bd95f13c9574e2a26308338fe3c29fff7ec1e696c33ec8173d2ba76e (31 min 13 s); Linux igneumd 695e20fc8053cbecd35f392cf09b6b6155c4789cdb2342549185427ea5aca451 / igneum-miner 9a8169272c87e1aa7ec7809fb5b6e3f55eab2ccb5fe0340ebf1442bf835f6df7 (1,947 s); Mac igneumd 743a56cf26370d5dfb22e4f7016e9bee57771078caead8c16fa6448ebf13e141 / igneum-miner -37d101a03754967b3f8bf3920c660ce0584358d6dc5fb5b3f58eaa06647fe3f1. Superseded by the table above. +37d101a03754967b3f8bf3920c660ce0584358d6dc5fb5b3f58eaa06647fe3f1. ### 4b. The command -From the MAIN checkout, on master. `release-0.3.5` contains origin/master as of e22068f, so the merge is a +From the MAIN checkout, on master. `release-0.3.5` contains origin/master as of 2897e21, 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). @@ -148,9 +155,9 @@ Why these values: | Item | Value | Checked | |---|---|---| -| node fork worktree | `vendor/igneum-node-release`, branch `release-0.3.5`, commit 6ef230d5 = `finality-fixes` 6aa69a45 + `dev-fee` + `miner-reliability`; 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 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 | | 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; `igneum-miner --help` lists `--dev-fee` | +| Mac node binaries | `target-release/release/{igneumd,igneum-miner}` (4a) | `igneumd --version` = igneumd 2.1.0; the embedded commit (`igneumd/2.1.0-` in the daemon header and the user agent) is @@EMBEDDED@@; `igneum-miner --help` lists `--dev-fee` | | downloads folder | `~/.config/igneum/dlsite-dir` = `/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) | @@ -187,11 +194,11 @@ 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 6ef230d5 in +- App branch `release-0.3.5` at 1b287d4 plus this file, pushed. Fork branch `release-0.3.5` at 2e75a238 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: all six 0.3.5 binaries built from fork 6ef230d5 (section 4a); the Windows and Mac pairs are what the morning command ships. +- 23:30 UTC: six binaries from fork 6ef230d5. @@ROUND3@@ diff --git a/site/index.html b/site/index.html index 9d6c2f405..cbd19cff0 100644 --- a/site/index.html +++ b/site/index.html @@ -561,7 +561,7 @@ pre{margin:0;font-family:var(--f-mono);font-size:13px;line-height:1.6;color:var( - +