diff --git a/docs/plans/release-0.3.13.md b/docs/plans/release-0.3.13.md new file mode 100644 index 00000000..f43d4d3e --- /dev/null +++ b/docs/plans/release-0.3.13.md @@ -0,0 +1,49 @@ +# Igneum Miner 0.3.13: node-only, the execution layer follows again and the finality route; prepared to the publish gate, 6 October 2026 + +Release engineer, from 13:05 UTC, on the coordinator's instruction: "prepare, so it ships the moment the fix lands: a release-0.3.13 branch, +NODE-ONLY". Worktree `/Users/joshm/Projects/igneum-wt-ship0313`, branch `release-0.3.13` from master 19edae0; the fork worktree +`vendor/igneum-node-0313`, branch `release-0.3.13-node`, at 83089544 (the 0.3.12 node) until the two node fixes land on it; `vendor/` +symlinked to the main checkout's. The 0.3.12 recipe throughout; igneum-labs commits; times UTC. + +## 1. Why, and what it carries + +Since the publish-2 restarts of 0.3.12 (about 11:37Z) the execution layer is dead on every node: `eth_blockNumber` answers `0x0` and +`igneum_getProvingStatus` reads `active: false, paidShards 0, paidWei 0x0` (the observer at 13:05Z). The devnet's pruning point left genesis +today, and the follower, which walks from genesis in memory, can no longer start; `--archival` does not help an existing datadir. + +| Change | Where | State | +|---|---|---| +| The follower rebuilds over the stored history where the datadir has it from genesis, and the exec state is persisted in `db_dir` | the proving agent's branch off 83089544 | (pending its tip) | +| The finality route (the fleet's finding, 26 fresh nodes): a certificate for an index below this node's window is ignored (the seed re-locked index 2954 2,811 times in seven minutes and the echo filled every fresh peer's route); the IgneumFinality route takes a checkpoint burst (4,096); a full route drops the message and keeps the peer; votes are skipped during IBD | fork branch `fin-route-0313` (worktree `vendor/igneum-node-finroute`) | (pending its tests; goes in when green) | +| The six version files | 7c9b00f (`--check`: 0.3.13 in all 6) | the app's version bump only, for the node payload | + +No consensus change: the override object stays the ten-field one of 0.3.12 (`proving_v1_fresh_rule_daa` 198,000), the digest +7bd98cc4118616455709d5e32a30b799e6e67caa42d2b5d09875cd49848a7ed7 on every node before and after. + +## 2. The order at the go (the coordinator relays it; nothing below runs before) + +Runbook: the session scratchpad's `r0313/rollout-0313.sh`. + +| Step | What | Check | +|---|---|---| +| 0 the baseline | `step_check_observer`: `eth_blockNumber` and `igneum_getProvingStatus` on the observer (0x0 and inactive today); node 1's paid-shard total before 11:37Z was 814.64 IGN over 663 shards (the proving-v1 entry of 00:4xZ) | the number to match after the swap | +| 1 the hand nodes | `step_hand_nodes`: the observer and node 1 on the 0.3.13 binary with the SAME ten-field file (`infra/devnet/restart-hand-nodes.sh ''`); then `step_mac_miners` only if the Mac's miner is on (it is paused on the project lead's order since 07:10Z) | each prints 7bd98cc4...; within a minute the observer's `eth_blockNumber` climbs and `igneum_getProvingStatus` reads active with paidShards at or above 663 and paidWei at or above 814.64 IGN (the stored history from genesis) | +| 1 the seed | `step_seed`: the zig node (`infra/cross/build-linux.sh` from the 0.3.13 fork) with the same file | the same digest; its follower active (journal `igneumd-v4`) | +| 2 the manifest | `step_ship`: `node tools/ship-app.mjs 0.3.13 --node vendor/igneum-node-0313 --branch release-0.3.13 --public --activation-height 198000 --deadline-note "proving v1 fresh-record rule" --notes '
' --from ci`: the consensus object CARRIED OVER (no new field, one publish), the DMG, the installer and zip from the Windows run on the branch | the live manifest 0.3.13 with the ten-field object; HiveOS rides with `--public` (rebuilt from the 0.3.13 Linux node) | +| 3 update-now | `step_update_now d937c69d` (the Mac: its node is node 1, already swapped; the engine alone restarts), then `1ccfe586` (PC 2, on the coordinator's word if a measurement is in flight), then `ae432dc7` (PC 1, last, on the coordinator's word) | each app's STATUS line on 0.3.13, its node on 7bd98cc4, and in its log the `[proving]` lines resuming (`block N shard M paid`) within minutes; a PC's `eth_blockNumber` through a run job against its 127.0.0.1:26790 if the log is not enough | +| 4 the sweep | every node: digest unchanged, exec climbing, proving active | the per-machine times in section 4 | + +## 3. Builds and artefacts (to fill when the fork tip is set) + +| What | Command | Result | +|---|---|---| +| The fork's Mac node | `CARGO_TARGET_DIR=vendor/igneum-node/target-0313 cargo build --release -j 4 -p kaspad -p igneum-miner --features kaspad/igneum-pow` from `vendor/igneum-node-0313`, under the lock | | +| The seed's Linux node | `NODE_SRC= TARGET_DIR=vendor/igneum-node/target-0313-linux OUT_DIR=/r0313/cross infra/cross/build-linux.sh` under the lock | | +| The Windows node exes | the Mac cross-build (`proto-cuda/windows-node/cross-build.sh 4`, `target-0313-win`) unless a PC is free for a build job | | +| The inputs, the pin | `push-inputs.sh` with the new exes and the unchanged workers and telemetry helper; `node-source.pin` committed | | +| The DMG, the Windows run, the HiveOS package | as 0.3.12 (the packaged line unchanged: the ten-field object) | | +| The node suites | the six crates on the Mac with the igneum-pow feature (the known M20 era fail, the flaky finality ban test, the fast-time file test) and on a PC if one is free | | + +## 4. The rollout (to fill at the go) + +## 5. Owed