release 0.3.12: the plan's digests, the two-publish order, the line for Josh

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
igneum-josh 2026-10-06 09:45:23 +01:00
parent 4c63017031
commit ff6e624cd0

View file

@ -69,7 +69,49 @@ Checks on 81e4ecb before the rebase landed: the app `cargo test --release -p ign
| The Windows installer and zip, first run | `windows.yml` run 37435975425 on ebea8b6 (dispatched 08:25:10Z after the inputs push) | green 08:30:58Z, but its zip (f744bf90..., 72,131,710) and installer (f6bbf384..., 50,107,390) carry NO `igneum-gpu-telemetry.exe` (the make-payload glob, 6532adf): superseded, not shipped |
| The Windows installer and zip | `windows.yml` run 37436904041 on 6532adf (dispatched 08:33:28Z) | (section 4) |
## 4. CI
## 4. The override objects and the digests (the 0.3.12 Mac node 746a931f..., ports 60975/60976, 22 s each, under `run`)
| Override file | Lines | Digest |
|---|---|---|
| none | `igneumd/2.1.0-83089544`, no activation line | c562d70e1428c9789823cc40067623b4767f7c555ce7ff4ea11c1498f013ef6c, EQUAL to 0.3.11's no-file digest: the new field is never by default and leaves the digest alone until set |
| the fleet's live nine-field object | the six activation lines of 0.3.11, no fresh-rule line | **0139ab9dc2992d449ec787d8f021974933631eb55740ab4b6ce9d5c226e72888**, EQUAL to the fleet's digest today: publish 1 (the binary) changes no handshake, a 0.3.12 node and a 0.3.11 node on the nine-field file accept each other |
| the ten-field object (`proving_v1_fresh_rule_daa` 192000) | the six lines plus `Proving v1 fresh-record rule from the override file: from DAA score 192000 a fresh segment record is valid whenever the previous segment is not proven` | **bd786a4b521e87c05bce3da4c46b4f4696deb16dfbdc913f181c980a8eb51688** |
The ten-field object (the packaged line 7dd3ff7, the manifest of publish 2, the hand nodes' and the seed's files at step 2):
```
{"difficulty_v2_activation_daa":33000,"proving_v0_activation_daa":84100,"fees_v1_activation_daa":210000,"finality_v3_activation_daa":135200,"program_class_v3_activation_daa":154800,"proving_v1_activation_daa":154800,"proving_v1_segment_blocks":8,"proving_v1_unproven_daa":600,"proving_v1_aggregator_share_bps":1000,"proving_v1_fresh_rule_daa":192000}
```
N = 192,000 is tip + 14,400 for a publish near 10:15Z (tip 171,933 at 08:38:41Z, 0.97 to 0.99 DAA/s, so about 177,600 then); the floor
N - tip >= 10,800 holds while the tip is at or under 181,200 (about 11:15Z); past it N is re-pinned to tip + 14,400, the packaged line, the
DMG and the installer rebuilt (CI again), and the digest re-read. A 0.3.11 node given the ten-field file dies on the unknown field
(`deny_unknown_fields`), which is why publish 2 comes only after every node runs the 0.3.12 binary (the reviewer's C39, the 0.3.11 order).
## 5. The publish gate: what runs at Josh's go, in which order (the 0.3.11 two-publish shape)
Nothing below has run. Runbook: the session scratchpad's `r0312/rollout-0312.sh` (every step a function; `step_floor` before each publish).
| Step | What | Gate |
|---|---|---|
| 0 the floor | `step_floor`: 192,000 minus the tip's DAA at least 10,800 | read before publish 1 and again before publish 2 |
| 1a the hand nodes, the seed | the observer and node 1 on the 0.3.12 binary with the NINE-field file (`IGNEUMD=<fork>/target-integration/release/igneumd IGNEUMD_COMMIT=83089544 infra/devnet/restart-hand-nodes.sh '<nine>'`), then the seed (`IGNEUMD_LINUX=<scratch>/cross/igneumd IGNEUMD_LINUX_SHA256=4f142d51... infra/devnet/restart-seed.sh '<nine>'`); every one prints 0139ab9d..., nobody is refused; then `step_mac_miners` (the Mac's miner does not reconnect to a restarted node 1 by itself, C43) | Josh's go |
| 1b publish 1 | `node tools/ship-app.mjs 0.3.12 --node vendor/igneum-node-0312 --branch release-0.3.12 --public --activation-height 154800 --deadline-note "program class v3 + proving v1" --notes '<section 1>' --from ci`: ci "already" (the green Windows run), fetch, dmg "already", copy, manifest with `consensus` CARRIED OVER (the nine-field object; the digest stays 0139ab9d...), deploy, verify (`--from console` after the public index settles at the edge), the console item; `--public` carries the HiveOS package 7972af92... | after 1a |
| 1c update-now | the Mac (d937c69d) first; the laptop (37ba0461) with it if it is on the air; PC 2 (1ccfe586) on the Counter ASIC 3.0 coordinator's word (PC 2 is its this morning; the proving agent's constraints: the app's prover stays on, no quit or restart of anything but the update's own); PC 1 (ae432dc7) last, once Josh has relaunched its app (down since 22:31:06Z yesterday, on 0.3.10: it takes the nine-field object and 0.3.12 at its relaunch through the manifest; Power control is off by default so nothing asks for administrator rights) | each machine's STATUS line back on 0.3.12 with 0139ab9d... |
| 2a the floor again | `step_floor` | >= 10,800 or re-pin |
| 2b the hand nodes, the seed | the same two scripts with the TEN-field file; each prints bd786a4b... and refuses the nine-field side until it switches; `step_mac_miners` again | every app node on the 0.3.12 binary (1c) |
| 2b publish 2 | `publish-manifest.sh --version 0.3.12 --override '<ten>' --activation-height 192000 --deadline-note "proving v1 fresh-record rule" --notes '<section 1>' --public --deploy` | after the hand nodes |
| 2b update-now (switch) | the Mac and the laptop, then PC 2 on the 3.0 coordinator's word, then PC 1: each app writes the ten-field file at the manifest take and restarts its node at a safe moment (the Mac's node is node 1, already switched: nothing to restart) | |
| the sweep | every node prints bd786a4b521e87c05bce3da4c46b4f4696deb16dfbdc913f181c980a8eb51688; the fresh-record rule arms at DAA 192,000 | |
One line for Josh, per machine, when he says go: the Mac and PC 2 each restart their engine once for 0.3.12 (under a minute, the miner back on
the next template) and their node once more for the fresh-record switch (a few seconds, mining resumes on the same chain); PC 1 does the
same at its relaunch and, with Power control off by default, never asks for administrator rights again (its 5090 runs uncapped until he
switches Power control on in Settings); the observer, node 1 and the seed are restarted by hand twice; from DAA 192,000 (about 14:20Z) a
prover may file a fresh segment record whenever the previous segment is not proven, so paid segments stop stalling behind an unproven one;
until the switch nothing changes in consensus (digest 0139ab9d... through publish 1).
## 6. CI
| Run | On | Result |
|---|---|---|
@ -81,25 +123,7 @@ Checks on 81e4ecb before the rebase landed: the app `cargo test --release -p ign
The ship state file `~/.cache/igneum/ship/0.3.12.json` carries `sha` = 6532adf (the CI commit; the plan commits after it are docs only),
`forkCommit` 89dfcb95, `bumpedAt` before the DMG's mtime (so the dmg step reads "already"), and `runId` once the Windows run is green.
## 5. The publish gate: what runs at Josh's go, and in which order
Nothing below has run. At the go, from this worktree:
| Step | Command | What it does |
|---|---|---|
| the ship | `node tools/ship-app.mjs 0.3.12 --node vendor/igneum-node-0312 --branch release-0.3.12 --public --from ci --notes '<the changelog line of section 1>'` | preflight, ci "already" (37436904041), fetch (the installer and zip from that run), dmg "already", copy, manifest (`consensus` CARRIED OVER from the live 0.3.11 manifest: the nine-field object, `activation_height` 154800, the digest stays 0139ab9d...), deploy, verify (`--from console` after the public index settles at the edge, as 0.3.10 and 0.3.11 needed), console item; `--public` carries the HiveOS package (`packaging/ota/publish-public.sh --hive <scratch>/hive/igneum-hive-0.3.12.tar.gz` runs with it) |
| update-now, the Mac | `packaging/ota/publish-jobs.sh add --kind update-now --target d937c69d --id update-now-0312-d937c69d --title "Igneum Miner 0.3.12" --deploy` | the Mac's engine restarts with 0.3.12 within the minute (its node is node 1, untouched: no node restart, no digest change) |
| update-now, PC 2 | the same for 1ccfe586, on the Counter ASIC coordinator's "PC 2 clear" if a measurement is in flight | the engine restarts; its node restarts only if the app's override file changes, and it does not (the same nine fields) |
| update-now, PC 1 | last, `ae432dc7`, once Josh has relaunched its app (down since 22:31:06Z yesterday; it is on 0.3.10 and takes 0.3.11's override at the relaunch, then 0.3.12) | Power control is OFF by default in 0.3.12, so no administrator prompt on the relaunch or the update; the 5090's power cap is not applied until Josh switches Power control on in Settings |
| the laptop (37ba0461), Sam's Mac (3a9bf309) | no job: they take 0.3.12 through the manifest when they are next on the air (`min_supported` 0.3.0) | |
| the hand nodes, the seed | NOTHING: no node change, no override change | |
One line for Josh, per machine, when he says go: the Mac and PC 2 restart their engines once (under a minute each, the miner is back on the
next template; the node keeps running) and show the GPU list in performance order, the Ember Tune line and the new Power control switch
(off); PC 1 gets the same at its relaunch, and because Power control is off nothing asks for administrator rights on it any more, which also
means its 5090 runs uncapped until he switches Power control on; no node restarts, no digest change, no consensus change anywhere.
## 6. Owed to the next cut (0.3.13)
## 7. Owed to the next cut (0.3.13)
| Item | What |
|---|---|