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 <noreply@anthropic.com>
This commit is contained in:
igneum-labs 2026-10-05 01:04:17 +00:00
parent 7a81dc73f7
commit 59a77b5b4b
3 changed files with 54 additions and 47 deletions

View file

@ -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 <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 |
`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-<short>` in the daemon header and the user agent) is @@EMBEDDED@@; `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) |
@ -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@@

File diff suppressed because one or more lines are too long

View file

@ -200,6 +200,31 @@
"text": "Devnet-v4 integration: nine branches merged, 3-node test network on the merged node, Windows cross-build",
"short": "Devnet v4: nine branches merged into one node"
},
{
"date": "2026-10-03",
"text": "Windows node package: igneumd cross-compiled for x86_64-pc-windows-gnu, two-peer sync test",
"short": "Windows node package: cross-compiled, two-peer sync"
},
{
"date": "2026-10-03",
"text": "Igneum-node devnet v2: sustained-mining finality rule v2 on a four-miner test network, and as a follower of the live devnet",
"short": "Finality rule v2 live on a four-miner test network"
},
{
"date": "2026-10-03",
"text": "Execution layer devnet v3: revm over the selected chain, 3-node simnet, viem smoke test",
"short": "EVM execution layer: identical state on three nodes"
},
{
"date": "2026-10-03",
"text": "Weak-program census: 400,000 program runs through the CPU reference, the redundant-load finding, and the rules for M5 and M6",
"short": "Census of 400,000 programs: redundant loads found"
},
{
"date": "2026-10-03",
"text": "Proving v0: first SP1 proof of an Igneum block, Apple M5 Max CPU, loaded machine",
"short": "First SP1 proof of an Igneum block, on a laptop CPU"
},
{
"date": "2026-10-03",
"text": "Proto-opencl: OpenCL path built and proven without AMD silicon",
@ -224,31 +249,6 @@
"date": "2026-10-03",
"text": "AMD gfx1036 , AMD OpenCL 2.1 driver 3652.0",
"short": "AMD integrated GPU runs the hash through OpenCL"
},
{
"date": "2026-10-03",
"text": "RTX 5090 through NVIDIA OpenCL",
"short": "RTX 5090 through NVIDIA OpenCL"
},
{
"date": "2026-10-03",
"text": "Igneum-node devnet v0: 3-node igneum-devnet at 1 BPS with the 80/20 coinbase and vote_key_hash",
"short": "Devnet v0: three nodes at one block per second"
},
{
"date": "2026-10-03",
"text": "RTX 5090 first run",
"short": "RTX 5090 first run"
},
{
"date": "2026-10-03",
"text": "RTX 5090, memory-hard dataset",
"short": "RTX 5090 on the memory-hard dataset"
},
{
"date": "2026-10-03",
"text": "Per-identity hash rate \"decay\" on the RTX 5090: diagnosis and Metal reproduction",
"short": "RTX 5090 hash-rate decay diagnosed: a miner bug, fixed"
}
]
}