release 0.3.13: the plan to the two-publish shape (the three exec-restart digest fields, protocol 16), the exec-sync merge a9dfe78e

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
igneum-labs 2026-10-06 14:53:04 +00:00
parent 0740e189fc
commit 253e8d0b01

View file

@ -13,25 +13,35 @@ today, and the follower, which walks from genesis in memory, can no longer start
| 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 execution layer follows again: the exec state persisted to the data dir every 5 min and at stop, resumed at start (`--igneum-exec-snapshot=<path>[,<sha256>]`, `igneum_exportExecSnapshot`, the loud "exec not synced" status); the snapshot served and fetched over p2p (protocol 16, messages 76 and 77); the archival walk through the ghostdag store when the virtual-chain query refuses a tip below the retention root; `exec_restart_number`, `exec_restart_hash` and `exec_restart_trust_daa` in the override object (in the digest once set: without them a node on this build stays blocked, the bodies below 27,276 being gone on every hand) | the proving agent's `exec-sync-0313` 05e93f0e (7 commits on 83089544) | merged onto the route fix as release-0.3.13-node **a9dfe78e** (clean, 23 files). Measured by its agent on a copy of node 1's data dir: 27,276 header-only records, the EVM state restarted at chain block 27,276 and re-executed to the sink (130,272) in 93 s; paidShards 1,482, paidWei 1,825.70 IGN; the state persisted (114.8 MB) and resumed in 9 s |
| 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` 5a339733 (the bench-log entry `fin-route` 05d0944, merged e6c939e) | in: p2p 33, flows 19, finality 12 tests green; harness s7 PASS |
| 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.
A consensus change after all: the three exec-restart fields enter the digest once set, so this is the 0.3.12 two-publish shape (section 2),
not the one carried-over publish first planned. The thirteen-field object (the packaged line 71cb8a4, publish 2, the hands' and the seed's
files at step 2; `exec_restart_trust_daa` 200,000 pending the coordinator's word):
```
<the ten-field object of 0.3.12> + "exec_restart_number":27276,"exec_restart_hash":"bb45cf0dd2d7cc97ebfa5a2701527c09a8ede5d32de74efead9caa293b15688a","exec_restart_trust_daa":200000
```
PROTOCOL_VERSION 15 to 16: the handshake takes the lower version, a 0.3.12 and a 0.3.13 node peer during the window.
## 2. The order at the go (the coordinator relays it; nothing below runs before)
Runbook: the session scratchpad's `r0313/rollout-0313.sh`.
Runbook: the session scratchpad's `r0313/rollout-0313.sh`. The 0.3.12 shape: publish 1 the binary with the TEN-field object (digest
7bd98cc4... unchanged, no window), publish 2 the THIRTEEN-field object (a new digest, one window per side).
| 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 '<ten>'`); 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 '<section 1>' --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 |
| 0 the baseline | `step_check_observer`: `eth_blockNumber` 0x0 and `igneum_getProvingStatus` inactive on the observer today; node 1 read 814.64 IGN over 663 shards at 00:3xZ and 1,573 over 1,261 at 08:30Z (it grows with the chain) | the numbers to beat after the switch: paidShards >= 1,482, paidWei >= 1,825 IGN |
| 1a the hand nodes, the seed | `step_1a_hand_nodes`, `step_1a_seed`: the 0.3.13 binary with the SAME ten-field file; `step_mac_miners` only if the Mac mines (paused on the project lead's order since 07:10Z) | each prints 7bd98cc4...; `igneum_getExecStatus.blocked` says why the exec layer waits (the three fields are not set yet) |
| 1b publish 1 | `step_1b_ship` (`--from ci`): consensus CARRIED OVER (the ten-field object), the DMG, the installer and zip from the Windows run, HiveOS with `--public` | the live manifest 0.3.13, digest unchanged |
| 1c update-now | Mac (its node is node 1: the engine alone), then PC 2 and PC 1 on the coordinator's word | each app's STATUS on 0.3.13, its node on 7bd98cc4 |
| 2a the hand nodes, the seed | `step_2b_hand_nodes`, `step_2b_seed`: the thirteen-field file | each prints the new digest; within about 2 minutes `eth_blockNumber` climbs to the sink, `igneum_getExecStatus` reads `startedFrom "restart at chain block 27276"` (then "snapshot" on every restart after), `blocked null`, and `igneum_getProvingStatus` reads active with paidShards >= 1,482 and paidWei >= 1,825 IGN |
| 2b publish 2 | `step_2b_manifest`: the thirteen-field object, `--activation-height 198000`, the note names the exec restart | the live manifest carries the three fields |
| 2c the switch jobs | `step_2b_update_now` Mac (nothing to restart: node 1), then PC 2, then PC 1, each on the coordinator's word | each PC's node restarts once (seconds), its `[proving]` lines resume within minutes, its digest the new one |
| 3 the sweep | every node on the new digest, exec climbing, proving active; the fleet's rented nodes take the thirteen-field object through their operator (the fleet agent) | the per-machine times in section 4 |
## 3. Builds and artefacts (to fill when the fork tip is set)