diff --git a/docs/plans/release-0.3.22.md b/docs/plans/release-0.3.22.md index ea0107ca5..be4aefc3e 100644 --- a/docs/plans/release-0.3.22.md +++ b/docs/plans/release-0.3.22.md @@ -198,3 +198,31 @@ Main's word on route (A) or (B) did not come (asked 01:41, 01:50, 01:53, 01:56 B **The knob:** the hash lane's 74585c91 (main's order of 7 October: the Ember clock ladder continues below 45 percent in 100 MHz steps to a 20 percent floor; the search stops at the knee, the first row more than the tolerance under the cap point's rate, or on a faulted row, the fingerprint check; the best MH per watt within tolerance is the point; lock_result and the card's lock_* fields for the UI; tests known-failed first on a fake helper) sat on the mirror's master, not on the release line; cherry-picked onto release-0.3.24 as e181f497 with ember.rs resolved as the union (the knob's floor and fine step beside the efficient-point ceiling of 7 October: EFFICIENT_W, DEFAULT_CAP_PCT, power_ceiling), the plan-count test updated to the knob's ladder on the 5090 (1 + 6 + 7; b6e2845f); app gate GREEN on build-1 (294 + 35 + 8), pre-push 60; the DMG re-cut under the lock on b6e2845f; the UI lane's drawing of the lock fields asked onto that tip. The rule: the knob never sets a lock below the knee without the user's own choice. **The measured Ember line (the Counter lane, read on PC 1 overnight):** the installed app's stock power-limit climb on the RTX 5080 lands at 60.3 MH/s at 123 W (0.489 MH/W, clock_cap 2,936; run-ca3-pc1-ember-5080-20261007 at 07:05 BST, the app's own tune complete before the script's cast fault), while the clock-lock grid on the same card gives 71.1 MH/s at 103.7 W at the 1,000 MHz lock (0.686 MH/W) and 71.2 at 146.6 W at 1,100 on class v4 (0.486) (run-ca3-pc1-v4-eff-5080-20261007-d at 02:54 BST), so the core-clock lock is worth about 40 percent more per watt and 18 percent more rate than the climb alone on the 5080; on the 5090 the knob's reference rows are class v4 at 1,200 MHz (133.8 MH/s at 305 W, 0.439) and class v3 at 1,300 (134.6 at 223 W, 0.603), the knee at 1,300 on both, measured four times (docs/bench-log.md, the 7 to 8 October entry). The 9070 XT tune row follows. Nothing else changes in the cut: the pin dfbd1e10 and the kit e6c088bb stand; the move on main's morning minute. + +## 22. The morning: main's word, the fifth cut, the move staged (09:3x to 09:5x BST, 8 October) + +**The night's silence** was the harness: main's command failed at 23:36 BST and it got no turn until 09:3x; the build-server lane and the fleet lane sat on backgrounded chains from 22:54 and 22:58 BST with nothing lost on the boxes (both idle); all three answered at 09:31 to 09:34. **Main's word (09:3x BST):** route (A) by the shipper (the node lane re-cuts the floor from the minute 10:45 BST; the shipper applies the pack-gate line with the fleet's tooling, places the signed move file at at_epoch 0 the moment the pin is green, names the minute, restarts build-1's three nodes and publishes the Mac entry at the minute; a pin not green by 10:35 slides the minute to the pin plus 25; the ceiling 12:50); the build-server lane builds the seed, Windows and hive pairs on the morning pin under lease class release and hands them over; the Windows app chain is the shipper's after the move (0.3.23 take 3 skipped as moot); "PC 2 clear" for the hash lane's Arc job; the two lanes respawned (the new fleet lane takes the readings after the move, not the move). Then (09:5x): the founder's word, get it live now: the minute is the last FETCHED plus ten, 10:45 the ceiling not the target; everything but the crossing done by 11:00 BST, the Windows chain in parallel. **Standing authority from main:** if the reachable boxes have not all FETCHED by 10:35 the shipper says "slide" itself; when the margin to a floor's publish ceiling falls under 15 minutes, re-cut without asking. **The founder's rule ("this cannot happen again"):** every ask to main carries a default action and a deadline, silence at the deadline means the default, never a stand-down; the Counter lane mirrors every clock the shipper holds today from the shipper's runbook (scratch r0324/RUNBOOK-0324-move.md, twelve steps with commands, hosts, keys and read-backs). + +**The fifth cut, the pin: release-0.3.24-node = 5b673577** (dfbd1e10 with program_class_v5_activation_daa 68,400, epoch 19, nothing else; cut at 09:33:18 BST from build-1's seed at DAA 56,329, the chain at 1.0 DAA/s all night; the publish DAA at 10:45 about 60,630, the floor about 12:54 BST, the three heights under it; the floor holds for a publish up to DAA 61,200, about 10:54 BST); every gate green at 09:39:15 BST (build at gate priority, core 175, exec 47, miner 28, p2p-flows 38, pow 19, consensus 134 at gate priority; the Devnet 3 canary with digest cc9026909eddbadb and the mixed-version refusal against a 2720d8d2 node both ways; the testnet canary on b2e856ed); the node-lane pair igneumd a3b1a2c9 / igneum-miner cfa9f5ca under /srv/artefacts/0324-5b673577/node-lane, igneum-pow-v5 8 paths; the fast-time SUMMARY on it due about 09:55. The app side: release-0.3.24 = 0c47b59a (the knob's display knob-24 2c4dc617 merged, UI 88; the Windows pin to 5b673577 at ebbdbc32); the Mac node pair (igneumd aee81264, igneum-miner 129275ef) and the DMG 7e6e3eb3 built under the lock, the Mac entry re-staged in both folders. + +**The move staged (09:42 to 09:44 BST):** the tarball fleet/5b673577-node-lane.tgz (c5b85b09, 27,495,480 B) served from build-1; the move file m5b67-1 (commit 5b673577, want_version igneumd/2.1.0-5b673577, want_digest cc9026909eddbadb, both pair slots on the tarball, at_epoch 0) signed with the fleet key and placed at 09:42:14 BST, the served file's signature verified; the pack-gate line (cfa9f5ca into PAIR_MINER_SHA16 in env-last and box-dn3.sh's default) applied on 32 of 32 reachable boxes at 09:43:34 with each gate read back (unreachable dn3-relay and p2-4090-1b behind dead Vast proxies; dn3-pool-a destroyed by the fleet's hourly waste pass at 09:02 BST, "exited" on Vast, so the open pool is dn3-pool-b alone until a second member is rented); build-1's three nodes (the seed, node1-dn3 down since the night, the observer: a plain process, not a unit) restart by the shipper's script at the minute, dry-run clean. The fleet's morning reading: the eight boxes it read as "bc5945fe" had NO Devnet 3 node (its reader hashed its own bash); dn3-g2's node died 23:49 BST, dn3-g1's 01:46, the others overnight, no shutdown lines (the death evidence being read); all eight restarted on 2720d8d2 before the minute so they fetch and move with the rest. The eleven prover boxes read "pair ok" at the tip all night; hub-1 at DAA 56,281 with 2 peers at 09:34. + +**The Arc B580 (09:36 to 09:5x BST):** the class v5 kit worker (27faa253) failed its self-test on PC 2's Arc on both the v5 pack and the v4 control (96 of 96 lanes bad; the cache and dataset FNVs right); the Intel lane answered from the app's own log: the installed 0.3.21 worker's self-test PASSED on the Arc with the devnet pack (96 of 96 at 21:23 BST, then 54 blocks accepted with the CPU re-check at 10.58 MH/s), so the /miners row stands as a measurement; the kit worker regressed because class-v5 1095eaa8 (and master) lack proto-opencl/intel_rotr.h (26e135a3), which release-0.3.23 and 0.3.24 carry; the Intel lane lands it on the mirror's master; the Intel kit holds out of 0.3.24 (main's rule), the crossing time 09:36 BST on the page row. + +**THE MINUTE: 10:05:00 BST on 8 October (09:05:00Z),** set in the signed move file m5b67-1 at 09:48:12 BST and read back served (commit 5b673577, want_digest cc9026909eddbadb, at_utc 2026-10-08T09:05:00Z, the signature good), 49 minutes inside the 10:54 ceiling, after the fast-time SUMMARY PASS on 5b673577 at 09:47:45 BST (rung 1 by signal at epoch 6, class v5 by signal at byte 6 from epoch 8, the stale node refused, 0 rejections, the restart across the boundary resynced in 12.1 s, four sinks equal) and FETCHED 35 of 39 at 09:46 (dn3-relay and p2-4090-1b behind dead Vast proxies, p2-3090-1 refusing ssh since last night, dn3-agg48 the new 48 GB aggregator prover renting: the first three fall off onto ba75bf6f and rejoin by the pull, the fourth fetches with its bring-up; named in the file's note); dn3-g1 and g2 back on 2720d8d2 at 09:43 and 09:44 with their miners on and no panic or OOM on either, the other six dead nodes restarting in the same pass. **The pairs on the pin (the build-server lane, 09:43 to 09:47 BST):** seed igneumd 3a204fd9 / igneum-miner 464dca07 (glibc 2.34, the string twice), win igneumd.exe 0b144d7d / igneum-miner.exe 0cc68d9e, the hive package igneum-hive-0.3.24-5b673577.tar.gz 025bf01f (29,876,121 B, the three kit zips, smoked in ubuntu:20.04), all under /srv/artefacts/0324-5b673577/ beside the node lane's hands pair a3b1a2c9 / cfa9f5ca; the engine strings read igneum-pow/src/ (the worktree's path) where the node lane's read igneum-pow-v5/src/, the same code at 1c420786, rule 6a's pattern taking both. At the minute: the pullers restart node and miner from the pair; build-1's seed, node1-dn3 and observer by the shipper's script (dry-run clean; the observer a plain process, restarted with its own command line); the Mac entry (DMG 7e6e3eb3: app 0c47b59a with the knob and its display, the Mac node pair aee81264/129275ef, interface 1.0.2, the floor file kept) and the hive 025bf01f into both token folders with the public Mac and HiveOS aliases, one deploy; "PC 2 go" for the Windows chain (installer-kit-0c47b59a.zip b03fba28 cut, the app cross running, the PC 1 host job publishing). The 0.3.25 line opened by the update-return lane: amd-clock-25 a002732a (the AMD core-clock knob through ADLX manual tuning in the telemetry tool; the exe must be rebuilt for the kit), its default at 13:00 BST. + +## 23. The move executed: 0.3.24 Mac and HiveOS LIVE (10:05 to 10:09 BST, 8 October) + +**THE MINUTE 10:05:00 BST** fired on the signed file m5b67-1 (FETCHED 36 of 39 at 10:00: dn3-agg48 the 48 GB aggregator prover still renting, p2-3090-1 refusing ssh since the night, p2-4090-1b behind the dead proxy ssh2; all eight nodes dead overnight back on 2720d8d2 and fetched by 09:53, dn3-r03 and r04 given a saved environment by hand). **build-1's three on the pin:** node1-dn3 (26671, JSON 28670) and the observer (26651, JSON 28650) up at 10:08 on "igneumd/2.1.0-5b673577", digest cc902690, object version 6, the N15 line ("the 15611 records up to the tip 15611 are continuous"); the seed (26631, JSON 27632) at 10:09 after a first start at 10:08 panicked on the old process's RocksDB lock (meta/LOCK "Resource temporarily unavailable"), up on cc902690 with 3 outgoing connections. The shipper's fault, two parts: the three-node script's --go branch did not execute at 10:05 (the dry-run text printed and it exited: the kill pattern `pgrep -f appdir=...` matched the ssh shell carrying the script, the fleet's fault class of 22:34 the night before), so the move ran by hand at 10:07 with the victims found by process name and cmdline; and the seed restarted before the old process had released its datadir (rule 11 extended). **The 0.3.24 Mac entry LIVE at 10:08:35 BST** (the copy at 10:05:01, one Vercel deploy), both token folders, channel devnet-3: Igneum-Miner-0.3.24-5b673577.dmg 7e6e3eb3 (45,652,380 B; app 0c47b59a: the core-clock knob and its display, the Power Helper unattended, the dashboard caps, the pool daemon's reconnect, the testnet re-cut; the Mac node pair aee81264/129275ef from 5b673577), interface 1.0.2, the floor file kept for the apps below 0.3.22, read back from both folders and the public Mac alias; **the HiveOS package igneum-hive-0.3.24.tar.gz 025bf01f** (the 5b673577 hive pair, the two sub-version 3 kits and the v5 kit e6c088bb) in both folders and on the public alias at the same deploy; dl/public/igneum-downloads.json names 0.3.24 for Mac and HiveOS. The notes carry the knob, the floor from the minute and "update before the move minute or the node stops following Devnet 3". Owed from the fleet: the APPLIED count per box, the chain rate at 10:08 and 10:12, the first lock on cc902690. The Windows chain: "PC 2 go" at 10:07 (the installer job from the a4c5a855 kit, sha ad7a50e8, and the payload igneum-windows-app-0.3.24-a4c5a855-msvc.zip 7f12cbe3 with the PC 1 host 0e241c94 built at 09:50 in 7 s, the 5b673577 Windows pair 0b144d7d/0cc68d9e, the 0c47b59a app exes ce7f82a6/99edc6aa/d035368e; host.sha256 at a4c5a855), the rule 14 smoke as the gate, then the Windows entry into both folders with the public alias and the card ("Mac, HiveOS and Windows now"); the hash lane's Arc re-read on the rotate-fold kit (packs-ca3-v5-20261008T085619Z.zip 65b47211) and the update-return lane's PC 1 re-probe and PC 2 S4U proof after the smoke. The crossing at DAA 68,400 about 12:54 BST (the node lane's watch on build-1's seed). + +## 24. After the move; 0.3.25 opened the same morning (10:06 to 11:05 BST, 8 October) + +**The first lock on cc902690:** checkpoint 1931, blue score 57,930, at 10:06:32 BST on dn3-g1, 92 seconds after the minute. The move's count: 25 boxes APPLIED by the puller, 11 moved by hand (the three puller faults: the miner sha missing from box-dn3.sh's gate list on 18 miners, the MINE=0 boxes with no env on 11 nodes, the unquoted env-last that took 9 nodes down), p2-3090-1 and p2-4090-1b unreachable, dn3-agg48 joining with its bring-up. The three faults are closed on every box before the next move (the fleet lane, 10:41 BST): the gate list is a file the puller appends to at fetch time, every box holds move/env-last, the puller writes a quoted copy of the environment before sourcing it; a dry move file read FETCHED 38 of 39 at 10:39 BST. + +**0.3.24 Windows did not ship.** Take 2 on PC 2 (installer 2b8774b1 from kit 45836da4, the TDateTime line gone) ran silent without /IGNOTA=1: the stop step closed the 0.3.21 app, then Inno copied no file (every exe still 0.3.21, install-running.flag PRESENT from 09:24:17Z, so the abort fell between PrepareToInstall and the copy), and nothing relaunched the app (the installer's own relaunch is postinstall skipifsilent, or OtaRelaunch on /IGNOTA=1), which left PC 2 without its job runner for 16 minutes until the relay's igneum-agent started the app. Two rules from it: every install job carries /VERYSILENT /NORESTART /IGNOTA=1 and ends on the new engine's --version; the Inno log's reason is the update-return lane's fix on release-0.3.25, known-failed first. The 0.3.24 Windows entry is skipped; the Windows line lands with 0.3.25; the Devnet 3 card publishes on the 0.3.25 Windows entry. + +**0.3.25 opened at 10:2x BST on the founder's word "push 0.3.25 everywhere asap".** release-0.3.25 from release-0.3.24's final tip 45836da4, the version bump first (rule 15): amd-clock-25 e2962b89 (the AMD core-clock ladder; the ADLX telemetry exe 1d8e055d a kit input), tiers-25 d3d0704a (the three-tier Ember Tune, both halves), the Intel rotate-fold header already in the tree through tiers-25 (9088293a), the node-source pin and host.sha256 bc8d4f79 (PC 1, MSVC, 10:37 BST; the one-line form was not read by host-gate.py, so the sha on its own line, the note a comment line above it). Crate gate on build-1 GREEN at e0d4425f (303+35+8, 10:29 BST) and unchanged since; the tip 9b93e649 at 10:58 BST. The node line moved twice under it: 7bd2940f (c6629572 plus unpaid proof records re-announced every 120 s, nothing consensus), then the ceiling cut **e0644958** (proving_fee_ceiling_activation_daa 82,800 in the Devnet 3 object, four gwei per pgas; every gate green 10:53 BST, fast-time SUMMARY PASS 10:54 on the same object; digest 1b37cb9da3911c2e; the 0.3.24 nodes and it refuse each other both ways, so the move is the one-minute form; DAA 82,800 about 16:53 BST; a publish up to DAA 75,600 = 14:53 BST needs no second cut). The Mac pair and DMG on e0644958: Igneum-Miner-0.3.25-e0644958.dmg 501ba293 (45,780,063 B; node pair 556926b1/d2dfe966), staged in both token folders at 11:00 BST; the pair tarball fleet/e0644958-node-lane.tgz fed2f4d6 served. The clock: the pin named at 13:00 BST after the 68,400 crossing reads clean (about 12:54), the fleet publishes m0644-1 on that line, the minute = last FETCHED + 10 (13:40 provisional, never past 14:53), Mac and HiveOS at the minute, Windows within the hour behind on a clean take 3, the card after. + +**The tiers at the class flip (main, 10:4x BST):** a power-capped A4000 reads 17 percent under class v4 at an equal fingerprint under class v5 (the A100 1.3, uncapped consumer cards level), so the engine half gains a class key (a class change invalidates the stored tiers and re-runs the search within ten minutes) and the UI half shows "re-measuring for class v5" and never applies v4 tiers as current after the flip (tiers-class-25 d949e274, green, inert alone). Both ride 0.3.25 only if green together on the release tip by the 13:00 pin, else the tiers ship as gated at d3d0704a and this record states that the v4 tiers may be off by the measured percentage until the re-tune. The knee: the hash lane's 5090 rows at the 1,300 lock under v5 against v4 by 12:30; over 2 percent loss and the knee is re-found under v5 with the percentage, else the v4 knee stands. + +**Signed apps (main's order, built 09:40 to 10:43 BST, signing-pipeline-25 at 075fb413):** packaging/mac/sign-notarize.sh inside build-dmg.sh (Developer ID over the ad hoc signature, hardened runtime, timestamp, notarytool --wait, stapler, spctl read-back; config dir ~/.config/igneum/apple-notary) and packaging/windows/sign.ps1 inside build-installer.ps1 (signtool through a cloud CSP or SSL.com's CodeSignTool; the payload exes before ISCC, Setup and the uninstaller through Inno's SignTool line; config ~/.config/igneum/win-codesign). Every artefact ends in "signed: " or "unsigned: " in the log and in .signing, never silent; a present but broken config stops the build; the publisher lives once in packaging/sign/publisher.txt, **Igneum Labs LLC** (the signing entity, Wyoming, filed 8 October 2026; the app's display name stays Igneum Miner). Known-failed self-tests on the pre-push gate (9 Mac cases; the 7 Windows cases run as a PC 2 job). Both config paths absent at the commit; the branch lands on master on PC 2's "7 of 7" line, else 15:00 BST. diff --git a/docs/plans/release-rules.md b/docs/plans/release-rules.md index 9f9282b2d..75ec9ad16 100644 --- a/docs/plans/release-rules.md +++ b/docs/plans/release-rules.md @@ -15,7 +15,7 @@ Every cut of the Igneum Miner app and its node runs under these. The dated plan 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. -11. **Kill by pid, never by name,** on the shared Mac; a merge worktree never checks out master. +11. **Kill by pid, never by name,** on the shared Mac; a merge worktree never checks out master. Extended 8 October 2026 (twice in one night: the fleet's rescue script at 22:34 BST and the shipper's three-node move at 10:07): a kill or a pgrep by a pattern that the calling shell's own command line carries matches that shell and kills the script before its work; find the victims by process name (pgrep -x igneumd) and the appdir in /proc//cmdline, never by `pgrep -f `; and a node restarted onto a kept datadir waits for the old process to release its RocksDB locks (the seed's first start panicked on meta/LOCK at 10:08 BST; the retry at 10:09 was clean). 12. **The Discord card only when every platform is live.** Live manifest changes beyond the binaries (a moved consensus floor) go out only on the founder's explicit word, staged beside the release with their digest and a one-line diff. 13. **Ship on green:** no calendar waits; when the gates are green, publish and state the clock time (UK). Checkpoints are for slips, not for waiting. 15. **The version bump is the release branch's first commit (7 October 2026, after the 0.3.23 miss).** When a release-0.3.N branch opens, its first commit moves the six version places (app/igneum-app/Cargo.toml and Cargo.lock, app/windows/version.h, app/igneum-app/resources/igneum-app.rc's four fields, packaging/mac/app/Info.plist, the installer's AppVersion), never left to the cut: release-0.3.23 opened at 4cdcab31 and carried 0.3.22 in every place until 21:26 BST, so the app exes and the window host crossed from its first closed tip read 0.3.22 and were void. Gate check: on a push to release-0.3.N the pre-push gate (tools/ci/release-version-check.sh, self-test on tonight's shape first) reads all six places against the branch name and goes red on any mismatch; the .rc was the second layer of the same miss (the box cross failed in build.rs at 21:30 BST).