From 235b10392848c41eae20df4b4973f58106c1b9ff Mon Sep 17 00:00:00 2001 From: igneum-labs <337424239+igneum-labs@users.noreply.github.com> Date: Wed, 7 Oct 2026 19:25:35 +0000 Subject: [PATCH 1/3] release 0.3.22 section 9: the 0.3.23 line tonight (no calendar waits), the heights 79,200 / 86,400 / 93,600, class v5 as 0.3.24, the one-crate-tree placements, the testnet text void until the re-cut, PC 1's slot order Co-Authored-By: Claude Fable 5.1 --- docs/plans/release-0.3.22.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/plans/release-0.3.22.md b/docs/plans/release-0.3.22.md index 5838c1f7..d5c230b7 100644 --- a/docs/plans/release-0.3.22.md +++ b/docs/plans/release-0.3.22.md @@ -85,3 +85,11 @@ Three commits on 96161037: bd710a36 the sub-version 3 re-pin (byte 7, igneum-pow **Rule from the pool lane (recorded here and in the pool plan):** a pool daemon is built from the same repo tree as the chain's node, never a release behind; the 0.3.21-tree daemon hashed class v4 sub-version 2 against Devnet 3's sub-version 3 and refused every share as WRONG HASH; the Devnet 3 pair runs the 0.3.22-tree daemon (c15b39b0) since 20:02 BST. Also: a template every second on a 1-block-a-second chain outlived the 12-job window (25,477 unknown_job shares); the daemon keeps jobs 60 s or 256 per member (9fd3b258, in 0.3.22). **Windows, in flight:** the 0.3.21 Windows entry is skipped in favour of 0.3.22's; window-22 changed host.cpp and the host gate refuses a host without the cut's version, so a fresh MSVC host builds on PC 1 in a slot after the hash lane's 5090 pass (about 20:20 BST, unelevated, no click), then host.sha256, the kit, the PC 2 installer job (--installs-app) and the smoke (0.3.21 to 0.3.22, the LG-4 timed steps as one measured row "one run, PC 2, not a fresh image"); reading about 21:30 BST. The rights-at-install step (3fbf4280) raises one UAC on a first install and the project lead's rule tonight is no click, so it rides 0.3.22 only with a "deferred in a job session" commit by 20:20 BST, else 0.3.23. PC 1's elevated passes cannot run under the no-click rule; the hash lane rebuilt the efficiency pass through the Power Helper task (unelevated). + +## 9. After the Mac entry: the 0.3.23 line tonight, the testnet text, the Windows host (20:1x to 20:3x BST) + +**the project lead's rule applied by main: no calendar waits.** The 0.3.23 node (release-0.3.23-node = 2720d8d2 = a099594f, the cache-rung digest fix with Devnet 3's digest 83eb50cd read back, + the three heights in devnet3_params(): difficulty_v3_activation_daa 79,200 about 16:01 BST 8 October, finality_daa_rule_activation_daa 86,400 about 18:01, finality_leave_activation_daa 93,600 about 20:01, one weight window apart, from the lock at DAA 7,298 at 20:02:46 BST; 72,000 refused as one minute above the floor) cuts tonight the minute its gates read green; the Devnet 3 sweep to it follows the 34a2dbaa sweep with no gap; the 0.3.23 apps go out on the pollers tonight. Class v5 is its own release, 0.3.24, cut the minute every v5 gate reads green at any hour (the v5 kit packs-ca3-v5-20261007T183921Z.zip e6c088bb, program id e5a4ac5978462156, fingerprint 82b19cbde8557ea5 on Metal, Apple OpenCL and CUDA; the class_signal under-window fix on class-v5-node-wire). The 34a2dbaa pin's last gate PASS at 20:07 BST (the dn3-c1 join-and-restart with the N15 line). One release is one crate tree: the rights step at install (boot-start-22 332b82eb, deferred in a job or session-less install; the WebView2 right webview2-runtime@109.0.1518.78, no bootstrapper until packaging/windows/webview2.sha256 names one) and the unattended driver install (driver-hold-22 50cdb8e4) landed after the 0.3.22 close, so they ride 0.3.23: release-0.3.23 opened on the mirrors at 4cdcab31, now 2f27ecb1 + check-labels-23 e6f9ef0b; app gate GREEN on build-2 (279 + 34 + 8). + +**The testnet text is VOID until the re-cut (main, 20:2x BST).** The testnet object on the 0.3.22 line (6ed56f63, in the pin 34a2dbaa) and on the 0.3.23 line carries the 4 October genesis message "igneum-testnet-1 | 2026-10-05 | proposed, not final | coins here have no value | resets are announced", hash 52a3e6a9; nobody reads 52a3e6a9 as the go object. The FINAL text ("igneum-testnet-1 | 2026-10-05 | coins here have no value | resets are announced") exists only on the testnet lane's tree testnet-genesis-2-node (59d05bf2, 18 decimals, the 16-byte subsidy layout). latency_ladder_cache_rung_activation_daa does not exist on the 0.3.22 line (predates the genesis-forward merge); the 0.3.23 line sets it at 0 for the testnet. Ruling (confirmed by main): the testnet object is re-cut on the 0.3.23 line after the project lead's decimals word at 21:40 BST (the decimals lane's code, the final text, the cache-rung field, a new testnet genesis hash and digest; Devnet 3 untouched), the seeds re-armed on it; if 2720d8d2 is green before his word, 0.3.23 ships tonight with the void testnet text (harmless: nothing mines there, the apps default to Devnet 3) and the re-cut is 0.3.24's second item. The node lane's scratch read cuts the object at 18 and 8 decimals (hash and digest of each) so his answer is a one-line switch. + +**PC 1 tonight (no click on any PC job, the project lead away two hours):** the 5090 efficiency pass through the Power Helper task exited 0 at 20:16:27 BST (the elevated form at 19:31 BST exited 251, the UAC prompt unanswered); the 0.3.22 MSVC window host job holds the slot from 20:17 BST (unelevated, nine seconds, from the installer kit at 4cdcab31; window-22 changed host.cpp and the host gate refuses a host without the cut's version); then main's order: the second 5090 pass 1,400 MHz to the driver floor, the 5080 pass, the measurement rows, the two tunes. The live page: live-dn3 (the UI lane, f449119e) deploys the minute its gate is green by the documented shape (the box builds and gates the export, the Mac's CLI uploads it). From 86ad8c56450c1d740ab1c0d0bad94b1d126e4d08 Mon Sep 17 00:00:00 2001 From: igneum-labs <337424239+igneum-labs@users.noreply.github.com> Date: Wed, 7 Oct 2026 19:44:44 +0000 Subject: [PATCH 2/3] release plans: the pre-public scrub (the founder, never the name) across the release notes and the pool plan; rule 7 extended to the pool daemon and the app's CPU re-check with the packs pin travelling with the generator Co-Authored-By: Claude Fable 5.1 --- docs/plans/release-0.3.22.md | 26 +++++++++++++------------- docs/plans/release-rules.md | 2 +- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/plans/release-0.3.22.md b/docs/plans/release-0.3.22.md index 68f2895f..2e3a152c 100644 --- a/docs/plans/release-0.3.22.md +++ b/docs/plans/release-0.3.22.md @@ -1,4 +1,4 @@ -# Release 0.3.22: Devnet 3 (ordered 7 October 2026, 17:2x BST; genesis by 18:30 BST on the project lead's word) +# Release 0.3.22: Devnet 3 (ordered 7 October 2026, 17:2x BST; genesis by 18:30 BST on the founder's word) Main's order (17:26 BST): Devnet 3 goes now, not after 0.3.21. 0.3.22's node = the release-0.3.21-node worktree on build-1 (96161037, both node gates PASS) + the sub-version 3 igneum-pow pin (the 017e7037 line, byte 7, pairing id a785001687d8688a; the Counter lane's handoff by 17:40 BST, else the node lane takes it from the audit-freeze-2026-10-07 tag) + the igneum-devnet-3 network object (its own network id and p2p port, every activation at 0: program_class_v4, difficulty_v2, finality_v3, fees_v1, proving_v1, latency_ladder rung 0; the genesis cut; NO override file on the new chain) + era VDF f2ecf452 only if its merge is clean and green in the same run (else 0.3.23 by an activation height; era_vdf_activation_daa stays at never on devnet-3 unless main's object names it). Built as an incremental on build-1's lease ahead of the 0.3.21 app gate. @@ -18,7 +18,7 @@ Three commits on 96161037: bd710a36 the sub-version 3 re-pin (byte 7, igneum-pow **build-1 for Devnet 3 (the build-server lane and the fleet, reconciled 17:40 BST), nothing started:** the seed a bare process on p2p 0.0.0.0:26631 (rpc 27630, json 27632, evm 27810, empty datadir /home/build/dn3seed); the observer node on Devnet 3 is the fleet's instance (/srv/hands/bin/run-observer-node-dn3.sh, appdir /srv/hands/observer-node-dn3, rpc 26650, json 28650, p2p 26651, evm 26850, its observer.mjs on dn3_ tables running); the second node1 on p2p 0.0.0.0:26671 (rpc 26670, json 28670, evm 26870, appdir /srv/hands/node1-dn3, --enable-unsynced-mining); ufw allows 26631, 26651 and 26671; four units installed and DISABLED (igneum-observer-node-dn3, igneum-observer-dn3, igneum-hash-origin-dn3.service and .timer at 08:30 UTC with --prefix dn3_). On the go, in order: the 0.3.22 pairs under /srv/artefacts/0322-fa7f854f/ with the evm-types read, devnet3.env and dn3.env pointed at that igneumd, then seed --go, node1 --go, observer-node --go, each read back by the first log line, the string count, the devnet-3 digest line, the genesis line and the server lines. -**Main (17:4x BST):** fa7f854f accepted; the nine switches at never stay at never for the genesis (nothing untested flips under this clock); Devnet 3 is the chain they go live on by activation height, one at a time, each after its own gate, no further reset; consensus proof verify stays off until the proven share reads one. After genesis: the table of the nine (built and gated, built and ungated, not built; the owning lane; the earliest height) for the project lead. +**Main (17:4x BST):** fa7f854f accepted; the nine switches at never stay at never for the genesis (nothing untested flips under this clock); Devnet 3 is the chain they go live on by activation height, one at a time, each after its own gate, no further reset; consensus proof verify stays off until the proven share reads one. After genesis: the table of the nine (built and gated, built and ungated, not built; the owning lane; the earliest height) for the founder. **The fleet's Devnet 3 set, STANDING at 16:44Z:** five boxes on five hosts (the hive package, the kill file, box-dn3.sh, a vote key each, the binary slot empty until the artefact lands): dn3-g1 RunPod 3070 (64.119.209.250, p2p mapped 21703) = the Devnet 3 HUB and default peer; dn3-g2 Vast 3070 Utah (154.64.230.67, p2p 27017) = the second genesis node; dn3-j1 Vast 3060 12 GB = the late joiner from empty; dn3-c1 Vast 3060 12 GB = the empty-datadir canary (12 GB, so the prover statement reads there); dn3-x1 Vast 3060 12 GB = spare and second joiner; hairpin checked (every Vast box reaches dn3-g1's mapped port and build-1's 26631). The cutover dn3-genesis.py (per box: the binary with its sha read back, box-dn3.sh with --devnet --devnet-suffix=3, appdir /root/fleet/dn3, no override, FRESH=1, UNSYNCED=1 on the two genesis boxes only, seeds dn3-g1, dn3-g2, build-1's 26631 and 26671; read back the string, the devnet-3 digest, the genesis hash line, synced, the first lock; nothing named on the old devnet), dry-tested. The gate dn3-gate.py: digest agreement g1/g2, the same first lock on both, the late joiner synced from them, the canary mining ten minutes with its blocks held by dn3-g1 and 0 rejects, shutdown under 1 s then the restart on the kept datadir, the proving ids on a bare node; one line per check with its UTC time, DN3 GATE PASS/FAIL. hub-1's second node staged (36610/36611/36790, outbound only, FRESH, MINE=0). Pay-by-key on the new chain through dn3-g1. The watcher on /srv/artefacts/0322-*/ starts the gate within the minute of the binary. Capacity for day one: a SECOND NODE PER STANDING BOX (box-dn3.sh on 36610/36611/36790, FRESH from empty, the box's existing key label on the new chain, MINE=1 with a second miner on the same card), rolled in three waves of 5/5/4 after the genesis pair locks, nothing stopped on the old chain; plus the five gate boxes and hub-1's and build-1's second nodes: about 22 voters; cost USD 9.2/day for the five gate boxes, the second nodes USD 0, the 0.3.21 warm set 11.52/day; the fallback a parallel set of fourteen 3070 pods (USD 44/day) only if the first wave shows card contention (the read: the live miner's rate and the dn3 node's template timing). Spend at 16:40Z: 406.49 of 1,000. @@ -52,29 +52,29 @@ Three commits on 96161037: bd710a36 the sub-version 3 re-pin (byte 7, igneum-pow **The 0.3.22 app tree and its order (accepted by main):** release-0.3.22 at 27ab317e on the box mirror = release-0.3.21 44b63ac9 merged (7f07a37f) + driver-check 46cc41e9 (27ab317e; the eGPU driver-install hold and warning); app gate GREEN on build-2 at 18:33 BST (259 + 33 + 8, pre-push 56). Missing, in closing order: (a) the node pin = N15 dfae08e5 rebased onto 69d1b56e on release-0.3.22-node, gated, plus whichever switch heights are green by the cut; (b) the Windows node pair from build-1's cross and the payload inputs, the installer by the PC 2 job shape while GitHub is out, the Mac node pair and DMG on the Mac under the lock; (c) the hive 0.3.22 package with the sub-version 3 kit inside; (d) the manifest on channel devnet-3, KEEPING the floor file for the 0.3.20 and 0.3.21 apps until the intake shows no app below 0.3.22 for 24 hours (main's ruling; the 0.3.22 app ignores the file by construction); (e) the app's vote key hash to the intake and the publisher's --public ui arm; (f) node_peers adds dn3-g1 64.119.209.250:21703 and dn3-g2 154.64.230.67:27017 beside build-1. -**the project lead's ruling on the nine switches (through main, 18:4x BST), executed by the node lane on Devnet 3 by activation height, each with its gate line and a read-back on every node, no reset, one at a time:** (1) peer directory, pool split, fork gate ON in that order, each height set the moment its 6.11 condition reads true; (2) difficulty v3, the finality DAA-seconds rule, finality leave up: mid-chain crossing tests on the fast-time harness tonight, each height set as its test goes green; (3) signing bonus: one paragraph for the project lead on whether it changes total minted supply or only who is paid, with the number; (4) mandatory proof verification ON after 24 hours of every Devnet 3 block proven on the hash-origin report, the fleet's provers on Devnet 3 from tonight, the share reported hourly; (5) exec restart never. **Mechanics (main):** a height is a constant in the igneum-devnet-3 Params of a node commit, rolled out by the sweep (one box at a time, commit string and height line read back, the hub first); never a file, no new signed-record mechanism; one commit may carry several heights staggered so the chain crosses them one at a time; a node that misses the commit forks off at the height, as designed, which is the test; each commit is a release of the node line (0.3.22, 0.3.23) and reaches the apps by the signed update. Recorded in 6.11 by the node lane as heights are set; each height to main as a clock reading. +**the founder's ruling on the nine switches (through main, 18:4x BST), executed by the node lane on Devnet 3 by activation height, each with its gate line and a read-back on every node, no reset, one at a time:** (1) peer directory, pool split, fork gate ON in that order, each height set the moment its 6.11 condition reads true; (2) difficulty v3, the finality DAA-seconds rule, finality leave up: mid-chain crossing tests on the fast-time harness tonight, each height set as its test goes green; (3) signing bonus: one paragraph for the founder on whether it changes total minted supply or only who is paid, with the number; (4) mandatory proof verification ON after 24 hours of every Devnet 3 block proven on the hash-origin report, the fleet's provers on Devnet 3 from tonight, the share reported hourly; (5) exec restart never. **Mechanics (main):** a height is a constant in the igneum-devnet-3 Params of a node commit, rolled out by the sweep (one box at a time, commit string and height line read back, the hub first); never a file, no new signed-record mechanism; one commit may carry several heights staggered so the chain crosses them one at a time; a node that misses the commit forks off at the height, as designed, which is the test; each commit is a release of the node line (0.3.22, 0.3.23) and reaches the apps by the signed update. Recorded in 6.11 by the node lane as heights are set; each height to main as a clock reading. -**Testnet re-arm (main, through the build-server lane):** the arming on fork e6dd3afd (digest 4fbb2152, genesis 01294fd3) is void (old object; a go on it hard-forks at sub-version 3). The node lane cuts a testnet genesis object on release-0.3.22-node in the Devnet 3 shape (byte 7 from genesis, every activation at 0 that Devnet 3 has at 0, era VDF at 0, a past genesis timestamp with the future-genesis test beside it, no override file, the testnet's seeds and chain id as they are); the build-server lane builds the seed-class pair under /srv/artefacts/testnet-/seed/ and dry-runs wave1-0320.sh against seed1/2/3 at height 0; nothing onto a seed and nothing mines before the project lead's word (not before 15 October, LG-2). +**Testnet re-arm (main, through the build-server lane):** the arming on fork e6dd3afd (digest 4fbb2152, genesis 01294fd3) is void (old object; a go on it hard-forks at sub-version 3). The node lane cuts a testnet genesis object on release-0.3.22-node in the Devnet 3 shape (byte 7 from genesis, every activation at 0 that Devnet 3 has at 0, era VDF at 0, a past genesis timestamp with the future-genesis test beside it, no override file, the testnet's seeds and chain id as they are); the build-server lane builds the seed-class pair under /srv/artefacts/testnet-/seed/ and dry-runs wave1-0320.sh against seed1/2/3 at height 0; nothing onto a seed and nothing mines before the founder's word (not before 15 October, LG-2). **0.3.21 Windows, the toolchain finding (18:37 BST):** PC 2's installer job (take 2, 68 s) verified the payload (igneum-app.exe 151803c7 prints "igneum-app 0.3.21", igneumd.exe 49502cc7 "igneumd 2.1.0") and stopped on PC 2's toolchain: no MSVC (no window host "Igneum Miner.exe", whose host.cpp changed in update-return-21) and no Inno Setup 6 (no installer; winget refused by the job as told). Three shapes put to main at 18:45 BST: the Mac entry now and Windows later (the manifest carries a platform that lands later; 0.3.20 Windows apps do nothing until their entry arrives); winget Inno Setup on PC 2 (still no 0.3.21 host); the host by mingw on the box (dry compile asked) or Windows held until GitHub returns and windows.yml runs. deploy.sh carries --mac-only for shape (1); the full preflight stands for the Windows entry. -**Proving on Devnet 3 opens (the fleet, 18:45 BST):** dn3-x1's first segment 1024..1031 claimed 18:44:23 BST and SUBMITTED 18:45:49 (8 of 8 shards accepted, proof 1,272,909 bytes, 86.1 s end to end, peak 8,534 MiB on a 3060 12 GB); its record waits in dn3-g1's pool for a carrier; the paid-by-key line opens the 24-hour window for the project lead's mandatory-verification rule. Sizing: about 42 segments an hour per 12 GB card against 450 an hour made, so 11 cards reach a share of one; 14 more 3060 pods renting (about USD 0.85/h together, 20 a day). The 0.3.21 warm cases (CASES-W21 END rc 0, 18:47 BST, on 96161037): the target refused every version-1026 block (44,081 seen, 0 accepted), restarted back at the tip, the hub holds 900 of its last 900; the relay cell again reads the target's own refusal, not a relayed poison block, so Devnet 3's relay run (relay on the hands pair synced before the window, the twin peered to the relay alone) is where that cell gets read, and its CASES END is the card's gate. +**Proving on Devnet 3 opens (the fleet, 18:45 BST):** dn3-x1's first segment 1024..1031 claimed 18:44:23 BST and SUBMITTED 18:45:49 (8 of 8 shards accepted, proof 1,272,909 bytes, 86.1 s end to end, peak 8,534 MiB on a 3060 12 GB); its record waits in dn3-g1's pool for a carrier; the paid-by-key line opens the 24-hour window for the founder's mandatory-verification rule. Sizing: about 42 segments an hour per 12 GB card against 450 an hour made, so 11 cards reach a share of one; 14 more 3060 pods renting (about USD 0.85/h together, 20 a day). The 0.3.21 warm cases (CASES-W21 END rc 0, 18:47 BST, on 96161037): the target refused every version-1026 block (44,081 seen, 0 accepted), restarted back at the tip, the hub holds 900 of its last 900; the relay cell again reads the target's own refusal, not a relayed poison block, so Devnet 3's relay run (relay on the hands pair synced before the window, the twin peered to the relay alone) is where that cell gets read, and its CASES END is the card's gate. -## 7. the project lead moves the apps to Devnet 3 tonight (19:1x BST): the pin, the tree, the clock +## 7. the founder moves the apps to Devnet 3 tonight (19:1x BST): the pin, the tree, the clock -**the project lead's word (through main, 19:10 BST):** the apps and the site's live page move to Devnet 3 now, not tomorrow. The clock: the 0.3.22 node pin at 19:15 BST; the Mac entry about 20:15 BST on channel devnet-3 (the floor file kept in the manifest for the 0.3.20 and 0.3.21 apps until the intake shows none below 0.3.22 for 24 hours); the Windows entry as its own entry when PC 2's smoke runs, about 21:00 BST, the 0.3.21 Windows entry skipped in its favour (said in the notes); the hive 0.3.22 package with the sub-version 3 kit published with the pin, the fleet's standing boxes moving in waves after the first lock; the site's live page pointed at the dn3 observer on build-1 after the first lock (about 20:10 BST), deployed from the box with the Vercel CLI as a site-only deploy of master's live tree (GitHub dark), edge time to main. Heights ride 0.3.23, set from the 0.3.23 sweep's finish with a two-hour margin (plan: 12:00 BST 8 October, difficulty v3 at the first multiple of 7,200 DAA at or after 14:00 BST, the other two 7,200 apart). +**the founder's word (through main, 19:10 BST):** the apps and the site's live page move to Devnet 3 now, not tomorrow. The clock: the 0.3.22 node pin at 19:15 BST; the Mac entry about 20:15 BST on channel devnet-3 (the floor file kept in the manifest for the 0.3.20 and 0.3.21 apps until the intake shows none below 0.3.22 for 24 hours); the Windows entry as its own entry when PC 2's smoke runs, about 21:00 BST, the 0.3.21 Windows entry skipped in its favour (said in the notes); the hive 0.3.22 package with the sub-version 3 kit published with the pin, the fleet's standing boxes moving in waves after the first lock; the site's live page pointed at the dn3 observer on build-1 after the first lock (about 20:10 BST), deployed from the box with the Vercel CLI as a site-only deploy of master's live tree (GitHub dark), edge time to main. Heights ride 0.3.23, set from the 0.3.23 sweep's finish with a two-hour margin (plan: 12:00 BST 8 October, difficulty v3 at the first multiple of 7,200 DAA at or after 14:00 BST, the other two 7,200 apart). **The pin: release-0.3.22-node = 34a2dbaa at 19:15 BST, no heights** (69d1b56e + the testnet object 6ed56f63 + the N15 kept-datadir fix dfae08e5; igneum-devnet-3 digest 83eb50cd unchanged, igneum-testnet-1 87d103b6 on the same binary). Gates on the exact commit: build-1 build 18:40:26 BST (igneumd bc25693c, node-lane pair under /srv/artefacts/0322-34a2dbaa/node-lane/); build-2 suites consensus 122, exec 37 (the new scan test), pow 17, miner 25, core 152 by 18:42:51; canary set green (shutdown 567 ms, override refused, handshake, mismatch rejection). The Devnet 3 join-and-restart read is the fleet's. Crossing cases on the fast-time harness: difficulty v3 pass GREEN 19:08 BST and known-failed FAIL as expected; the DAA-seconds rule and finality leave green on the chain's reading but the harness's checkpoint read used the wrong RPC parameter, rerun by 19:22 BST; no heights commit could carry gates by 19:15, so every height rides 0.3.23 (0.3.23 line: 18473645 = 43360992 + d840537b subsidy_per_block, gates green, digest edit list 25; daa61847 rebased by the genesis-forward lane). **The 0.3.22 app tree at 19:15 BST, release-0.3.22 c977786b on the box mirror:** 27ab317e (release-0.3.21 44b63ac9 + driver-check 46cc41e9) + pool-finish-21 8f2aae75 (the Devnet 3 split-read tool) + signing-22 e1b01654 (vote on by default pinned by test; Overview and Cards rows read signing or silent with the reason) + key-22 6501558f (scene/live-dag.js 2.0.5 legend, the app's chain card renders it, the site untouched) + c977786b (node_peers adds dn3-g1 64.119.209.250:21703 and dn3-g2 154.64.230.67:27017; self-test reads four). App gate on build-2 GREEN at every step (last 259 + 33 + 8, rc 0); pre-push 56 on each push. Riding if on the mirror by 19:45 BST, else 0.3.23: boot-start-22 (the engine starts at boot without a logon on Windows; a headless engine never reads a closed stdin as the host leaving), the export-wait reliability item (a worker never waits on the export past one retry interval), the driver-check hold-every-card-of-the-vendor rule, the UI lane's shard words. The Mac node pair builds on 34a2dbaa under the lock from 19:12 BST (r0322/mac-node-34a2dbaa.sh), then the DMG. -**PC 2 tonight:** the take-4 0.3.21 installer (mingw host, run-20261007-175020) was picked up at 18:51:57 BST before its removal deployed and the runner's abort ended the install in its first second (the build-server lane's fault, two rules added to the job tooling: an installs-app job is never removable without --force; never remove a published job without reading the machine's latest line); the update-return lane re-ran the kept installer at 19:07:56 BST and the 0.3.21 engine then restarted four times a minute apart and died ("quit requested by the window host went away (stdin closed)" 3 s after the node start: an engine started by a parent whose stdin closes at once); the project lead reinstalled PC 2 by hand with the public 0.3.20 installer (45b2f3fb, the MSVC host; the public alias confirmed as that file by hash at 19:12:54 BST). PC 2 is read-only for every lane until its app uploads as 0.3.20; then the 0.3.22 installer job (--installs-app) and the smoke, one job at a time; then the Intel lane's driver retry with the minidump copy folded in (one UAC click). PC 1: released to the Counter lane's queue at 19:04:37 BST (the 0.3.21 MSVC host e223db18 built there in 9 s, collected by the relay Blob); one slot for the 0.3.22 host (app/windows/version.h moved to 0.3.22, host.cpp untouched). +**PC 2 tonight:** the take-4 0.3.21 installer (mingw host, run-20261007-175020) was picked up at 18:51:57 BST before its removal deployed and the runner's abort ended the install in its first second (the build-server lane's fault, two rules added to the job tooling: an installs-app job is never removable without --force; never remove a published job without reading the machine's latest line); the update-return lane re-ran the kept installer at 19:07:56 BST and the 0.3.21 engine then restarted four times a minute apart and died ("quit requested by the window host went away (stdin closed)" 3 s after the node start: an engine started by a parent whose stdin closes at once); the founder reinstalled PC 2 by hand with the public 0.3.20 installer (45b2f3fb, the MSVC host; the public alias confirmed as that file by hash at 19:12:54 BST). PC 2 is read-only for every lane until its app uploads as 0.3.20; then the 0.3.22 installer job (--installs-app) and the smoke, one job at a time; then the Intel lane's driver retry with the minidump copy folded in (one UAC click). PC 1: released to the Counter lane's queue at 19:04:37 BST (the 0.3.21 MSVC host e223db18 built there in 9 s, collected by the relay Blob); one slot for the 0.3.22 host (app/windows/version.h moved to 0.3.22, host.cpp untouched). ## 8. Published: the Mac entry and the hive, both download folders (20:0x BST) **The 0.3.22 tree closed at 5a84925b (19:46 BST)** = c977786b + MF-14 7a9c8371 (export wait) + driver-hold-22 f8ed911e (every card of the vendor) + boot-start-22 345336d8 (boot start, headless engine, no stdin quit) + shards-22 9a4d3429 + the pool daemon fix 9fd3b258 + window-22 07a97c65 (the opening size from the primary monitor) + boot-start-22 8da235e6 (the window host gate) + ota-cut a4f58820 (ui/VERSION 1.0.2, the pair check) + driver-hold-22 d571a120 (Intel 6733 row); app gate GREEN on build-2 at every step (last 269 + 34 + 8), UI 83, pre-push 59; then 58409175 (the Windows node pin to 34a2dbaa) and 4cdcab31 (the pool split-read tool) on the packaging and tools side only. -**Interface 1.0.2 LIVE 19:45:33 BST** in the 0.3.21 manifest (the Prove switch fix, cut from the 0.3.22 UI tree at 1d975bcc, min_engine 0.3.21, bundle 84b679ce), after the project lead's Mac screenshot showed interface 1.0.1 (cut from 0.3.20) serving the pre-fix rules over the packaged 0.3.21 UI; the version-pair gate (pair-check.mjs) now refuses a manifest whose interface bundle is not from the app entry's tree. +**Interface 1.0.2 LIVE 19:45:33 BST** in the 0.3.21 manifest (the Prove switch fix, cut from the 0.3.22 UI tree at 1d975bcc, min_engine 0.3.21, bundle 84b679ce), after the founder's Mac screenshot showed interface 1.0.1 (cut from 0.3.20) serving the pre-fix rules over the packaged 0.3.21 UI; the version-pair gate (pair-check.mjs) now refuses a manifest whose interface bundle is not from the app entry's tree. **The token rotation (main's A, 19:5x BST):** the current dl token sits once in history (564acab5, a deleted bench log), so it rotates in 0.3.22: dl-token.next minted on the Mac (the first value voided at 19:54 BST after one tool trace printed it, its folder removed; the replacement's fingerprint 6a5f3d09, never printed), the new folder created, every cut from then reads the .next file (build-dmg.sh and make-payload.sh by default), the 0.3.22 manifests written in BOTH folders (publish-manifest.sh --dest and --base-url for the new one, the override, min_supported and the signed 1.0.2 interface entry carried by hand; the interface entry keeps its old-folder URL until 0.3.23 re-signs it in the new folder; the two manifests differ only in the folder inside the URLs), one deploy; the old value is refused 24 hours after the intake shows no header on the old path, the same clock as the floor file's removal; the history rewrite masks it. publish.mjs (ui-ota) reads dl-token directly and takes the .next rule on 0.3.23. The hive package carries no token. New jobs publish with URLs in the new folder. @@ -84,15 +84,15 @@ Three commits on 96161037: bd710a36 the sub-version 3 re-pin (byte 7, igneum-pow **Rule from the pool lane (recorded here and in the pool plan):** a pool daemon is built from the same repo tree as the chain's node, never a release behind; the 0.3.21-tree daemon hashed class v4 sub-version 2 against Devnet 3's sub-version 3 and refused every share as WRONG HASH; the Devnet 3 pair runs the 0.3.22-tree daemon (c15b39b0) since 20:02 BST. Also: a template every second on a 1-block-a-second chain outlived the 12-job window (25,477 unknown_job shares); the daemon keeps jobs 60 s or 256 per member (9fd3b258, in 0.3.22). -**Windows, in flight:** the 0.3.21 Windows entry is skipped in favour of 0.3.22's; window-22 changed host.cpp and the host gate refuses a host without the cut's version, so a fresh MSVC host builds on PC 1 in a slot after the hash lane's 5090 pass (about 20:20 BST, unelevated, no click), then host.sha256, the kit, the PC 2 installer job (--installs-app) and the smoke (0.3.21 to 0.3.22, the LG-4 timed steps as one measured row "one run, PC 2, not a fresh image"); reading about 21:30 BST. The rights-at-install step (3fbf4280) raises one UAC on a first install and the project lead's rule tonight is no click, so it rides 0.3.22 only with a "deferred in a job session" commit by 20:20 BST, else 0.3.23. PC 1's elevated passes cannot run under the no-click rule; the hash lane rebuilt the efficiency pass through the Power Helper task (unelevated). +**Windows, in flight:** the 0.3.21 Windows entry is skipped in favour of 0.3.22's; window-22 changed host.cpp and the host gate refuses a host without the cut's version, so a fresh MSVC host builds on PC 1 in a slot after the hash lane's 5090 pass (about 20:20 BST, unelevated, no click), then host.sha256, the kit, the PC 2 installer job (--installs-app) and the smoke (0.3.21 to 0.3.22, the LG-4 timed steps as one measured row "one run, PC 2, not a fresh image"); reading about 21:30 BST. The rights-at-install step (3fbf4280) raises one UAC on a first install and the founder's rule tonight is no click, so it rides 0.3.22 only with a "deferred in a job session" commit by 20:20 BST, else 0.3.23. PC 1's elevated passes cannot run under the no-click rule; the hash lane rebuilt the efficiency pass through the Power Helper task (unelevated). ## 9. After the Mac entry: the 0.3.23 line tonight, the testnet text, the Windows host (20:1x to 20:3x BST) -**the project lead's rule applied by main: no calendar waits.** The 0.3.23 node (release-0.3.23-node = 2720d8d2 = a099594f, the cache-rung digest fix with Devnet 3's digest 83eb50cd read back, + the three heights in devnet3_params(): difficulty_v3_activation_daa 79,200 about 16:01 BST 8 October, finality_daa_rule_activation_daa 86,400 about 18:01, finality_leave_activation_daa 93,600 about 20:01, one weight window apart, from the lock at DAA 7,298 at 20:02:46 BST; 72,000 refused as one minute above the floor) cuts tonight the minute its gates read green; the Devnet 3 sweep to it follows the 34a2dbaa sweep with no gap; the 0.3.23 apps go out on the pollers tonight. Class v5 is its own release, 0.3.24, cut the minute every v5 gate reads green at any hour (the v5 kit packs-ca3-v5-20261007T183921Z.zip e6c088bb, program id e5a4ac5978462156, fingerprint 82b19cbde8557ea5 on Metal, Apple OpenCL and CUDA; the class_signal under-window fix on class-v5-node-wire). The 34a2dbaa pin's last gate PASS at 20:07 BST (the dn3-c1 join-and-restart with the N15 line). One release is one crate tree: the rights step at install (boot-start-22 332b82eb, deferred in a job or session-less install; the WebView2 right webview2-runtime@109.0.1518.78, no bootstrapper until packaging/windows/webview2.sha256 names one) and the unattended driver install (driver-hold-22 50cdb8e4) landed after the 0.3.22 close, so they ride 0.3.23: release-0.3.23 opened on the mirrors at 4cdcab31, now 2f27ecb1 + check-labels-23 e6f9ef0b; app gate GREEN on build-2 (279 + 34 + 8). +**the founder's rule applied by main: no calendar waits.** The 0.3.23 node (release-0.3.23-node = 2720d8d2 = a099594f, the cache-rung digest fix with Devnet 3's digest 83eb50cd read back, + the three heights in devnet3_params(): difficulty_v3_activation_daa 79,200 about 16:01 BST 8 October, finality_daa_rule_activation_daa 86,400 about 18:01, finality_leave_activation_daa 93,600 about 20:01, one weight window apart, from the lock at DAA 7,298 at 20:02:46 BST; 72,000 refused as one minute above the floor) cuts tonight the minute its gates read green; the Devnet 3 sweep to it follows the 34a2dbaa sweep with no gap; the 0.3.23 apps go out on the pollers tonight. Class v5 is its own release, 0.3.24, cut the minute every v5 gate reads green at any hour (the v5 kit packs-ca3-v5-20261007T183921Z.zip e6c088bb, program id e5a4ac5978462156, fingerprint 82b19cbde8557ea5 on Metal, Apple OpenCL and CUDA; the class_signal under-window fix on class-v5-node-wire). The 34a2dbaa pin's last gate PASS at 20:07 BST (the dn3-c1 join-and-restart with the N15 line). One release is one crate tree: the rights step at install (boot-start-22 332b82eb, deferred in a job or session-less install; the WebView2 right webview2-runtime@109.0.1518.78, no bootstrapper until packaging/windows/webview2.sha256 names one) and the unattended driver install (driver-hold-22 50cdb8e4) landed after the 0.3.22 close, so they ride 0.3.23: release-0.3.23 opened on the mirrors at 4cdcab31, now 2f27ecb1 + check-labels-23 e6f9ef0b; app gate GREEN on build-2 (279 + 34 + 8). -**The testnet text is VOID until the re-cut (main, 20:2x BST).** The testnet object on the 0.3.22 line (6ed56f63, in the pin 34a2dbaa) and on the 0.3.23 line carries the 4 October genesis message "igneum-testnet-1 | 2026-10-05 | proposed, not final | coins here have no value | resets are announced", hash 52a3e6a9; nobody reads 52a3e6a9 as the go object. The FINAL text ("igneum-testnet-1 | 2026-10-05 | coins here have no value | resets are announced") exists only on the testnet lane's tree testnet-genesis-2-node (59d05bf2, 18 decimals, the 16-byte subsidy layout). latency_ladder_cache_rung_activation_daa does not exist on the 0.3.22 line (predates the genesis-forward merge); the 0.3.23 line sets it at 0 for the testnet. Ruling (confirmed by main): the testnet object is re-cut on the 0.3.23 line after the project lead's decimals word at 21:40 BST (the decimals lane's code, the final text, the cache-rung field, a new testnet genesis hash and digest; Devnet 3 untouched), the seeds re-armed on it; if 2720d8d2 is green before his word, 0.3.23 ships tonight with the void testnet text (harmless: nothing mines there, the apps default to Devnet 3) and the re-cut is 0.3.24's second item. The node lane's scratch read cuts the object at 18 and 8 decimals (hash and digest of each) so his answer is a one-line switch. +**The testnet text is VOID until the re-cut (main, 20:2x BST).** The testnet object on the 0.3.22 line (6ed56f63, in the pin 34a2dbaa) and on the 0.3.23 line carries the 4 October genesis message "igneum-testnet-1 | 2026-10-05 | proposed, not final | coins here have no value | resets are announced", hash 52a3e6a9; nobody reads 52a3e6a9 as the go object. The FINAL text ("igneum-testnet-1 | 2026-10-05 | coins here have no value | resets are announced") exists only on the testnet lane's tree testnet-genesis-2-node (59d05bf2, 18 decimals, the 16-byte subsidy layout). latency_ladder_cache_rung_activation_daa does not exist on the 0.3.22 line (predates the genesis-forward merge); the 0.3.23 line sets it at 0 for the testnet. Ruling (confirmed by main): the testnet object is re-cut on the 0.3.23 line after the founder's decimals word at 21:40 BST (the decimals lane's code, the final text, the cache-rung field, a new testnet genesis hash and digest; Devnet 3 untouched), the seeds re-armed on it; if 2720d8d2 is green before his word, 0.3.23 ships tonight with the void testnet text (harmless: nothing mines there, the apps default to Devnet 3) and the re-cut is 0.3.24's second item. The node lane's scratch read cuts the object at 18 and 8 decimals (hash and digest of each) so his answer is a one-line switch. -**PC 1 tonight (no click on any PC job, the project lead away two hours):** the 5090 efficiency pass through the Power Helper task exited 0 at 20:16:27 BST (the elevated form at 19:31 BST exited 251, the UAC prompt unanswered); the 0.3.22 MSVC window host job holds the slot from 20:17 BST (unelevated, nine seconds, from the installer kit at 4cdcab31; window-22 changed host.cpp and the host gate refuses a host without the cut's version); then main's order: the second 5090 pass 1,400 MHz to the driver floor, the 5080 pass, the measurement rows, the two tunes. The live page: live-dn3 (the UI lane, f449119e) deploys the minute its gate is green by the documented shape (the box builds and gates the export, the Mac's CLI uploads it). +**PC 1 tonight (no click on any PC job, the founder away two hours):** the 5090 efficiency pass through the Power Helper task exited 0 at 20:16:27 BST (the elevated form at 19:31 BST exited 251, the UAC prompt unanswered); the 0.3.22 MSVC window host job holds the slot from 20:17 BST (unelevated, nine seconds, from the installer kit at 4cdcab31; window-22 changed host.cpp and the host gate refuses a host without the cut's version); then main's order: the second 5090 pass 1,400 MHz to the driver floor, the 5080 pass, the measurement rows, the two tunes. The live page: live-dn3 (the UI lane, f449119e) deploys the minute its gate is green by the documented shape (the box builds and gates the export, the Mac's CLI uploads it). ## 7. The founder moves the apps to Devnet 3 tonight (19:1x BST): the pin, the tree, the clock diff --git a/docs/plans/release-rules.md b/docs/plans/release-rules.md index eedfcca6..cf01dd79 100644 --- a/docs/plans/release-rules.md +++ b/docs/plans/release-rules.md @@ -11,7 +11,7 @@ Every cut of the Igneum Miner app and its node runs under these. The dated plan 4b. **Warm pods per gate class (the founder, 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 founder, 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). The wave list is written, not remembered: every sweep's first wave names each Hetzner seed by address (188.245.5.161:26611 for the shared devnet; the testnet seeds when they move) beside the hands and the fleet, and the seed's row closes only on its own read-back line (string, digest, first accepted block) from the lane that holds its key (the build-server lane, infra/devnet/restart-seed.sh). Added 7 October 2026 after the 0.3.20 sweep left the seed on the old object for one hour forty, found by the 0.3.21 wipe canary's reject lines. 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). +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). Extended 7 October 2026 (the Devnet 3 pool pair, three WRONG HASH rounds each a tree a step behind the chain): the rule binds every crate that embeds kaspa-pow, the node, the pool daemon (igneum-pool) and the app's CPU re-check alike, each built against the pinned igneum-pow by path from the release worktree (017e7037 on 0.3.22 and 0.3.23), and the packs pin travels with the generator (the proto-cuda packs are the pin's export, never an older one); the read-back is the paired miner's "class v4 program id <16 hex>" line equal to the node's per epoch, and the daemon accepting its shares. 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. 9. **The Mac builds only the macOS binaries and the DMG,** one at a time under the build lock; every other build, suite and the Windows cross-build runs on the box or a PC; the app gate is `build-remote.sh -- test --release` from the crate dir. 10. **A pin is green on its own suites and gates.** Lines taken on one binary carry to another only when the code is byte-identical, stated in the tip. No known-red pins: a stale test takes a test-only commit on top. From 774deff40cbb6f55052a59a62d86163fe6a15fb1 Mon Sep 17 00:00:00 2001 From: igneum-labs <337424239+igneum-labs@users.noreply.github.com> Date: Wed, 7 Oct 2026 19:50:38 +0000 Subject: [PATCH 3/3] scroll-width-check: the pre-public scrub (the founder, never the name) in the header comment Co-Authored-By: Claude Fable 5.1 --- tools/ci/scroll-width-check.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/ci/scroll-width-check.mjs b/tools/ci/scroll-width-check.mjs index ae094489..00b75e92 100644 --- a/tools/ci/scroll-width-check.mjs +++ b/tools/ci/scroll-width-check.mjs @@ -1,5 +1,5 @@ #!/usr/bin/env node -// Lateral scroll (the project lead, 7 October 2026: "the website big container also has some lateral scroll movement that needs fixing"). +// Lateral scroll (the founder, 7 October 2026: "the website big container also has some lateral scroll movement that needs fixing"). // Renders every route at five widths in both themes and fails when document.documentElement.scrollWidth exceeds clientWidth: // the page itself must never scroll sideways; only a table, code or diagram may scroll inside its own overflow-x container. // On a failure it names the widest elements that run past the viewport, so the cause is fixed rather than the body clipped.