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 |