From 5ec2bd20584d4d04eeacd9c50a1fcd75a1420283 Mon Sep 17 00:00:00 2001 From: igneum-labs <337424239+igneum-labs@users.noreply.github.com> Date: Wed, 7 Oct 2026 20:47:02 +0000 Subject: [PATCH] docs/plans/pool.md 10.5c and 10.5d: the Devnet 3 hour's read (1,278 chain blocks, 99 pool blocks under two keys, the hub's roots, the members' roots pending the tunnels, the implied height 20,409 and the shipper's ruling), the tag collision and its rename, the pairing rule, the sweep Co-Authored-By: Claude Fable 5.1 --- docs/plans/pool.md | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/docs/plans/pool.md b/docs/plans/pool.md index efae3b7f4..9210f8e5c 100644 --- a/docs/plans/pool.md +++ b/docs/plans/pool.md @@ -492,6 +492,39 @@ The fleet lane's own lesson beside them: its first swap killed a wrapper and not old binary ran on for 26 minutes under a new file; a swap reads the running exe's sha from `/proc//exe`, never the file's (the standing rule's shape: the chain-side or process-side fact, never a name). +### 10.5c The Devnet 3 hour (7 October 2026, 19:33:28Z to 20:33:28Z): the pool split's condition, read + +The condition (the project lead through main, 17:3xZ): one open pool of two or more members mining Devnet 3 for an hour with the +switch at never, the commitment and the split carried in every pool block, the exec roots agreeing. The pair: dn3-pool-a +and dn3-pool-b (the fleet lane's, 3070s on separate hosts, 0.3.22 nodes 69d1b56e at digest 83eb50cd, igneum-pool +a357c581 from pool-finish-22 17452d1e against igneum-pow 017e7037, the paired miner); the hour counts from the second +member's first `OPEN SHARE ... tip=true` at 19:33:28.252Z. Read at 20:35:51Z from build-1's own Devnet 3 node (the same +digest) with `pool/tools/dn3-split-read.mjs --tags IGNS,IGNP` (the pair's daemons stamp the old tags; the window is by +header time): `/srv/builds/igneum-wt-pool-finish-21/pl-dn3/read/hour-oldtags.json`. + +| Number | Value | Source | +|---|---|---| +| First chain block of the hour | DAA 9431, blue score 9257, 157fa3a120fa0a0d..., 19:33:29.353Z | `getVirtualChainFromBlock`, `getBlock` on build-1's node | +| Last chain block of the hour | DAA 13209, blue score 13001, bcd5d78c7cadfefe..., 20:33:24.162Z | the same | +| Chain blocks, blue blocks in the hour | 1,278 and 3,747 | the same | +| Pool blocks (both tags) | 99 blue blocks, 22 of them chain blocks, under 2 vote keys, every split 2 entries (the members' one wallet 0x8db0505b... and the dev entry) | the coinbase payloads | +| Other miners' blocks carrying one of the two byte strings | 288: the proving sections' trailing tags (the collision 10.5d names; none read as a split, the trailer's body is empty) | the same | +| The hub's execution | executed tip 4736 (DAA 13,36x) at the read, state root 0x88d0bd69e28919bd...; 0 lines about splits, payouts or coinbases in 16,227 journal lines of the hour; the only rejects are peers' digest-mismatch messages (10.5d) | `igneum_getExecStatus`, `eth_getBlockByNumber`, `journalctl -u igneum-observer-node-dn3` | +| The members' exec roots | PENDING: the fleet lane's tunnels to the member nodes (loopback-only RPCs) answered at 19:49Z with all three at executed tip 0xebb and had dropped by the read; the agreement line follows the tunnels' return | `igneum_getExecStatus` through the tunnels | +| The height the hour implies | 13209 + 7,200 = 20,409 | the rule of the condition | +| Verdict on the height | not set at 20,409: it lands before the 0.3.24 publish minute; the shipper's ruling (to main for confirmation) puts the pool split into the 0.3.24 object at or after the class v5 floor, on the renamed tags (10.5d) | the shipper, 20:4xZ | + +The daemons' own counts per box (STATUS, `/api/open`, OPEN SHARE lines) are the fleet lane's hour-end lines and join +this table when they arrive. + +### 10.5d Two faults found by the hour, and the sweep + +| Item | What | Rule or fact | +|---|---|---| +| The tags | the open pool's `IGNS` (commitment) and `IGNP` (split) were the proving sections' tags (`proving.rs` SECTION_TAG, SEGMENT_SECTION_TAG) and finality's ADDRESS_TAG is `IGNP` too; the hour's read found 288 blocks of other miners carrying one of them (the trailers). Safe on honest blocks (the trailer's body is empty, `payout_split_in` refuses), but a consensus rule never rides a shared tag | renamed to `IGNH` and `IGNW` (fork pool-tags-node 7455b8d5, cherry-picked by the node lane as 785dafb3 onto v5-object-0323, the 0.3.24 line; a test that no coinbase tag is shared); the pool crate, the tool and these docs on the new tags (pool-finish-22 bb0e4351 and after); a daemon on the renamed tags is staged on build-1 (igneum-pool-bb0e4351-seed-tags, sha cda57289...) and moves to the pair when a 0.3.24 node pair exists, since a 0.3.23 node reads the new tags as unknown and carries nothing of them; the 0.3.23 node carries b0444f51's shared-tag form at never | +| The daemon's hash tree | the first Devnet 3 daemon (0.3.21 repo tree, fork b0444f51) refused every share as WRONG HASH; the second (release-0.3.22 tree, fork 69d1b56e) too, with identical seeds on both sides: the release-0.3.22 repo tree's igneum-pow/src/generator.rs was 316 lines behind the re-pin 017e7037 the chain and the miner run, and the fork's kaspa-pow takes igneum-pow by path from the repo tree it is built in | the pairing rule reaches every crate that embeds the lottery engine (the node, the pool daemon, the app's CPU re-check): igneum-pow at the release's pin, and the proto-cuda packs with it (the recheck tests pin the pair; the release-0.3.22 tree's packs were the pre-amend export, program id 12071054473004869770 against the generator's 1892128023569472608); pool-finish-22 carries igneum-pow and the packs from 017e7037 (17452d1e, fed5772c) | +| The sweep | the 0.3.23 node 2720d8d2 moves Devnet 3's digest to ba75bf6f; a one-box-at-a-time sweep split the network (build-1's node at 83eb50cd read 27 "digest mismatch, local ba75bf6f" rejects between 20:19Z and 20:37Z); every Devnet 3 node restarts inside one minute at the fleet's clock, the member nodes among them, by the fleet lane on its boxes; the daemons stay (the pairing is unchanged on 2720d8d2) | a daemon row owed if a daemon's gRPC connection does not survive its node's restart (STATUS must return to "node ok" within a minute of templates) | + ### 10.6 Open after this round | Item | Why it is open | What closes it |