diff --git a/docs/plans/release-0.3.22.md b/docs/plans/release-0.3.22.md index aa3e4502b..c3a79e867 100644 --- a/docs/plans/release-0.3.22.md +++ b/docs/plans/release-0.3.22.md @@ -37,3 +37,7 @@ Three commits on 96161037: bd710a36 the sub-version 3 re-pin (byte 7, igneum-pow ## 3. Devnet 3's first node (the fleet, 16:50:21Z, 17:50 BST) The 21d8f454 pair pulled from /srv/artefacts/0322-21d8f454/ at 16:49:56Z (igneumd b96b424c…, the string read back on the Mac and the box; the miner c29f33bb…). dn3-g1 (the Devnet 3 hub, 64.119.209.250:21703): appdir wiped and the node up at 16:50:21Z, "igneumd/2.1.0-21d8f454", "Consensus params digest: ab9af79f40cd9b5fbed2577406d6b32e103bd86a7dd26df2aabceb7b673ced23" (the node lane's build-1 read agreed), "genesis a6fa348e2a0fc6a5fa0ae3cb080160f5e2be865af71bac0068ca2fb8d1fcfd7b executed: chain id 4463, registry at 0x…0210", "Program class signal active: object version 7 (block version 1794)", "Era VDF active from DAA 0: scheme 0, T 108000000, era 15552000 DAA, lead 7200", "Latency ladder active: rungs 27, 35, 53, [88], [173], [267] shadow passes, this node signals none", "Fees on igneum-devnet-3: pgas table v0 … calibrated v1 from DAA score 0", "exec sync: no snapshot to resume from; the follower starts at genesis"; network igneum-devnet-3, no override file. At 16:50:41Z blocks 0, daa 0, tips 1, peers 0; the miner started 16:50:42Z (unsynced mining on, the genesis box). dn3-g2 (154.64.230.67:27017) starting with dn3-g1 and build-1's seed as peers; next: the pair's digest agreement, their handshake, the first common lock (the genesis clock), then the late joiner. + +## 4. The start incident and the ruling (16:55Z; 17:5x BST) + +Two pairs sat under /srv/artefacts/0322-21d8f454/: at the root the node lane's gate build (igneumd b96b424c, 57,816,736 B, placed 16:45:30Z, the string 21d8f454 twice, ZERO igneum-pow/src/ paths) and under hands/ the build-server lane's pair built from 21d8f454 inside the app tree with igneum-pow at 017e7037 (igneumd d208b86721587484f8ab3cd6d73a417d14cdd879348daf652b75519ddd2c742b 57,817,120 B with 6 pow paths; igneum-miner 07246920fd9fe895ec0d9cf2e07e27663f69c2d0804a7ee20fb90c3689fe0299 with 9; the seed/ twin 50a56e9c37469940ccf7860c20425a5bc71fb2eb94c738a8038b09d678f9db11 / f8c40e1c7206e0ef9f38af30658c35b6b65f99e29e412806df8dd63437d512af, GLIBC_2.34). dn3-g1 started on the root pair at 16:50:21Z and rejected every block its own igneum-pow miner found ("Reject(BlockInvalid)" from 16:50:42Z, 0 PoW accepted in five minutes) while igneum_getNodeInfo printed powEngine "igneum-pow". The fleet stopped the go before dn3-g2 or the joiners started. **Main's ruling:** the root binaries are a stub-engine build and are deleted; the hands/ pair and its seed/ twin are the 0.3.22 artefact and the publish's sha lines name them; the engine link check becomes mechanical on every artefact fetch, canary start and fleet placement (release-rules.md 6a); the node lane never builds a release binary outside an app worktree. dn3-g1 wiped and restarted on the hands/ pair (sha, string and pow-path count read back first), the go rerun from there, the gate sequence unchanged; the genesis clock moves about ten minutes and is reported as a reading when the pair locks. The prover pair stands (evm-types fe4145b9). diff --git a/docs/plans/release-rules.md b/docs/plans/release-rules.md index ab655e14a..832984e56 100644 --- a/docs/plans/release-rules.md +++ b/docs/plans/release-rules.md @@ -9,6 +9,7 @@ Every cut of the Igneum Miner app and its node runs under these. The dated plan 4a. **Every gate starts on every candidate the moment its binary builds, never after the pin (the project lead, 7 October 2026).** The digest and mixed-version gates, the kept-datadir start, the relay and poison cases and the wipe canary all begin on each candidate binary as it lands; a struck candidate's runs are stopped and its successor's begin. The post-pin wait is then the longest single form (about 80 minutes, the wipe), not the sum. 4b. **Warm pods per gate class (the project lead, 7 October 2026, ordered to the fleet lane).** The fleet keeps synced pods warm for each gate class so a case form's target starts at the tip (a kept copy of the live line, caught up), never from a kept copy far behind it; the wipe canary is the only full IBD in the set. 5. **Rollout in waves, each box read back (the project lead, 7 October 2026, replacing one-box-at-a-time):** PC 1 first, then PC 2, the Mac, the seed, the hands and the fleet in parallel waves as the lock lines allow; a lock line from the hub between waves; hold if the frozen table's signed share reads under 75; every box read back by its commit string. When the publish moves the consensus floor (a new digest), every 0.3.x node on the old file refuses the new ones as peers until it is swept, so the seed, the hands and the fleet move in the first wave with the apps' pollers, not last. Every lock line of a sweep that replaces nodes carrying a consensus floor names the date the sweep must finish (0.3.20: before 13 October 2026 09:00 UK). +6a. **The engine link check is MECHANICAL on every artefact fetch, canary start and fleet placement (main, 7 October 2026, after the Devnet 3 start incident).** A binary without igneum-pow/src/ paths is refused before it is copied, started or placed; the node lane never builds a release binary outside an app worktree. Why: 21d8f454's gate build (a release build outside the app tree) carried the commit string and printed powEngine "igneum-pow" but held the stub engine; dn3-g1 started on it and rejected every block its own miner found. The check was a standing rule from 0.3.17 but was read by hand; from now build-remote, the canary script and the fleet's place step each refuse the bytes. 6. **Read-back is by commit string plus digest plus engine:** on 0.3.18+ nodes igneum_getNodeInfo powEngine must read "igneum-pow" ("stub" = FAIL); on earlier trees `strings igneumd | grep -c igneum-pow/src/` above zero. The miner embeds no commit string; its pairing is the build line and the sha. 7. **igneum-pow pairing:** a fork build takes igneum-pow by path from the igneum worktree it sits in; build each node tree inside its own app worktree whose igneum-pow is the pinned tree; the pairing log line names it. Master's build tools need rust-toolchain.toml in the tree (the app tree's pin applies to a vendor worktree under it; a standalone node checkout is unpinned until the node line carries its own file). 8. **glibc classes:** HiveOS 2.31 (`--ship hive`, smoke in ubuntu:20.04 on the box), seeds and generic 2.35 (`--ship seed`), fleet 24.04 boxes native 2.39.