Counter ASIC 3.0 status: the rehearsal's CPU miners cannot mine the 2^27 genesis; CUDA workers; the clock from the first block
This commit is contained in:
parent
872e2a1b2f
commit
be2355ac97
1 changed files with 1 additions and 1 deletions
|
|
@ -226,7 +226,7 @@ Two preconditions on the cut, from main (17:0x UTC, both from today's incident),
|
|||
|
||||
| # | Precondition | What passes it | State |
|
||||
|---|---|---|---|
|
||||
| P1 | The cut rehearses first on the rented fleet as a staging network (the fleet agent owns the boxes; the node lane supplies the v4 override object and the rehearsal plan `docs/plans/counter-asic-3-rehearsal.md`) | a fleet-only chain crosses the v4 activation with every box switched: zero rejected blocks, blocks on both sides, the G4 id assertion live on every box, one sink, one digest; the stale-box case refused at the handshake with no fork | PLAN WRITTEN (ca3-v4-node f39a8eb, merged): fleet-only chain igneum-devnet-400 from its own genesis state, 12 or more mining boxes, a seed box, one stale 0.3.13 box; the signal flip at DAA 7,200 (the first full 3,600-DAA window) with the floor at 14,400 not reached; ten steps, the report fields and pass rules; the id assertion from the boxes' miner lines. Two objects as files in `docs/plans/counter-asic-3-gate/`: the publish object (the live 13 fields plus `program_class_v4_activation_daa` = N6, the floor, tip + 14,400 rounded up, 219,600 at the 16:57Z DAA of 202,919, and `program_class_v4_signal_window_daa` = 86,400; digest ac8e60ce...) and the rehearsal object (every earlier switch at 0, window 3,600, floor 14,400; digest bc2142b1...); the no-file devnet digest on this binary 7f2e49be... (3c505021 superseded: the window field joined the digest). THE RUN STARTED 18:22Z (the fleet agent): igneum-devnet-400 from the devnet genesis with the re-cut 1-block/s object `override-v4-rehearsal-1bps.json` (600-DAA epochs, lead 100, window 600, the flip at epoch 2 = DAA 1,200, the floor at 2,400; node digest d23394e7...; the file written byte for byte on every box) and the signalling fork's Linux binaries from PC 2 job build-20261006-174823 (igneumd 847ddfd1..., igneum-miner 37178aeb..., verified on the Mac and every box); the seed on the RunPod pod dn2-seed (public p2p 213.173.110.229:11927, no miner); 15 mining boxes beside their live-devnet nodes on separate ports with fresh appdirs and 1-thread CPU miners (dn2-1, dn2-2, dn2-3, hub-1, 3080, 4070, 4090, 5090, A5000, 3090-2, 3090-3, 4070-1, 4090-1b, 4090-3, the 8x 4090 rig); the stale box p2-3090-4 on 0.3.13's igneumd d6350586 with the same file and no miner, started last; the 38 wave pods join about 18:50Z. The clock from the seed's genesis at about 18:23Z: the window full 18:41Z, the flip about 18:43Z, the floor about 19:03Z (run to the floor so its line is exercised). A sampler on every box every 5 minutes; the id lines go to the node lane for the CLI check; the report in section 4's table plus rehearsal-<time>.json. FIRST READING (18:3xZ): all 16 v4 boxes print digest a15db4f0d6a5cc89... (not the node lane's documented d23394e7..., which came from its Mac build; the Linux igneumd 847ddfd1 of job 174823 is the binary that counts; the node lane found it (c541fcf): the digest folds the NETWORK ID in, and d23394e7 was read on a throwaway suffix 996; the same binary prints a15db4f0 at suffix 400, exactly the fleet's value, so the rehearsal runs on the right digest; the corrected values with their network ids are in counter-asic-3-rehearsal.md and node-gates.md: the 3,600-window object on devnet-400 aef46983..., the publish example (floor 219,600) on the DEVNET id with no suffix 65a42ab2... (ac8e60ce... was read at suffix 998 and does not apply), the no-file devnet digest 7f2e49be... confirmed; the shipper reads the live value from the 0.3.15 node), the node's start lines read the window 600 DAA, threshold 9,500 bps, the floor at epoch 4 (DAA 2,400), class v3 from epoch 0; the rehearsal continues on a15db4f0 (one digest on every box is its test). CUT-CRITICAL from the stale box: a 0.3.13 igneumd REFUSES THE 15-FIELD FILE AT PARSE ("unknown field program_class_v4_activation_daa") and exits before any handshake, so the live devnet's order is strictly binaries first on the 13-field file, the 15-field object second once every node runs 0.3.15 (told to the shipper); the stale box also runs on the file minus the two v4 fields for the handshake refusal by digest. The seed collided on port 26611 with the Devnet 2 seed on dn2-seed and died at 18:27:10Z (the 15 miners mined alone on their own genesis); Devnet 2's node stopped there, the seed restarted, every miner restarted from a fresh appdir: new T about 18:36Z, the flip about 18:52Z, the floor about 19:12Z |
|
||||
| P1 | The cut rehearses first on the rented fleet as a staging network (the fleet agent owns the boxes; the node lane supplies the v4 override object and the rehearsal plan `docs/plans/counter-asic-3-rehearsal.md`) | a fleet-only chain crosses the v4 activation with every box switched: zero rejected blocks, blocks on both sides, the G4 id assertion live on every box, one sink, one digest; the stale-box case refused at the handshake with no fork | PLAN WRITTEN (ca3-v4-node f39a8eb, merged): fleet-only chain igneum-devnet-400 from its own genesis state, 12 or more mining boxes, a seed box, one stale 0.3.13 box; the signal flip at DAA 7,200 (the first full 3,600-DAA window) with the floor at 14,400 not reached; ten steps, the report fields and pass rules; the id assertion from the boxes' miner lines. Two objects as files in `docs/plans/counter-asic-3-gate/`: the publish object (the live 13 fields plus `program_class_v4_activation_daa` = N6, the floor, tip + 14,400 rounded up, 219,600 at the 16:57Z DAA of 202,919, and `program_class_v4_signal_window_daa` = 86,400; digest ac8e60ce...) and the rehearsal object (every earlier switch at 0, window 3,600, floor 14,400; digest bc2142b1...); the no-file devnet digest on this binary 7f2e49be... (3c505021 superseded: the window field joined the digest). THE RUN STARTED 18:22Z (the fleet agent): igneum-devnet-400 from the devnet genesis with the re-cut 1-block/s object `override-v4-rehearsal-1bps.json` (600-DAA epochs, lead 100, window 600, the flip at epoch 2 = DAA 1,200, the floor at 2,400; node digest d23394e7...; the file written byte for byte on every box) and the signalling fork's Linux binaries from PC 2 job build-20261006-174823 (igneumd 847ddfd1..., igneum-miner 37178aeb..., verified on the Mac and every box); the seed on the RunPod pod dn2-seed (public p2p 213.173.110.229:11927, no miner); 15 mining boxes beside their live-devnet nodes on separate ports with fresh appdirs and 1-thread CPU miners (dn2-1, dn2-2, dn2-3, hub-1, 3080, 4070, 4090, 5090, A5000, 3090-2, 3090-3, 4070-1, 4090-1b, 4090-3, the 8x 4090 rig); the stale box p2-3090-4 on 0.3.13's igneumd d6350586 with the same file and no miner, started last; the 38 wave pods join about 18:50Z. The clock from the seed's genesis at about 18:23Z: the window full 18:41Z, the flip about 18:43Z, the floor about 19:03Z (run to the floor so its line is exercised). A sampler on every box every 5 minutes; the id lines go to the node lane for the CLI check; the report in section 4's table plus rehearsal-<time>.json. FIRST READING (18:3xZ): all 16 v4 boxes print digest a15db4f0d6a5cc89... (not the node lane's documented d23394e7..., which came from its Mac build; the Linux igneumd 847ddfd1 of job 174823 is the binary that counts; the node lane found it (c541fcf): the digest folds the NETWORK ID in, and d23394e7 was read on a throwaway suffix 996; the same binary prints a15db4f0 at suffix 400, exactly the fleet's value, so the rehearsal runs on the right digest; the corrected values with their network ids are in counter-asic-3-rehearsal.md and node-gates.md: the 3,600-window object on devnet-400 aef46983..., the publish example (floor 219,600) on the DEVNET id with no suffix 65a42ab2... (ac8e60ce... was read at suffix 998 and does not apply), the no-file devnet digest 7f2e49be... confirmed; the shipper reads the live value from the 0.3.15 node), the node's start lines read the window 600 DAA, threshold 9,500 bps, the floor at epoch 4 (DAA 2,400), class v3 from epoch 0; the rehearsal continues on a15db4f0 (one digest on every box is its test). CUT-CRITICAL from the stale box: a 0.3.13 igneumd REFUSES THE 15-FIELD FILE AT PARSE ("unknown field program_class_v4_activation_daa") and exits before any handshake, so the live devnet's order is strictly binaries first on the 13-field file, the 15-field object second once every node runs 0.3.15 (told to the shipper); the stale box also runs on the file minus the two v4 fields for the handshake refusal by digest. The seed collided on port 26611 with the Devnet 2 seed on dn2-seed and died at 18:27:10Z (the 15 miners mined alone on their own genesis); Devnet 2's node stopped there, the seed restarted, every miner restarted from a fresh appdir: new T about 18:36Z, the flip about 18:52Z, the floor about 19:12Z. 18:4xZ: the seed up since 18:31:15Z with 15 peers and the stale box refused, but height 0: the plan's 1-thread CPU miners (5 kH/s a box, 80 kH/s in all) cannot mine the devnet genesis difficulty of 2^27 (134 M hashes a block, about 28 minutes a block for the fleet), so every miner is switched to the package's CUDA worker, the app's shape; the flip 20 minutes and the floor 40 minutes after the first block, expected within 10 minutes; the plan's step 4 corrected by the node lane |
|
||||
| P2 | No fixed-height activation on the live devnet again: miner signalling for class changes as the v4 seam's activation rule (the block carries the miner's object version; the class flips at the first epoch boundary after 95 percent of mining weight over a window signals the new object, with a floor height after which it flips regardless), PROPOSED spec text in `counter-asic-3-node.md`, implemented behind the override, with the fast-time harness test (67 percent does not flip; 100 percent flips at the next boundary; nobody signals and the floor flips it; each with its failed case) and G6 again on PC 2 | the three harness runs PASS with their failed cases; G6 green on the fork change | GREEN (ca3-v4-node 0635c04 and 3892035, fork 0562a7f2 on 5f7e0543; PROPOSED text in `counter-asic-3-node.md` section 6: the header version's high byte carries the node's object version, the low byte stays the block version so later objects pass the version check; weight = blue blocks by the finality walk over the window ending at each epoch's seed block; 95 percent = 9,500 bps; window 86,400 DAA in the file and the digest, 0 = off; monotone, memoised per seed block; the fixed height stays as the floor; `IGNEUM_CLASS_SIGNAL` lowers a node's byte on devnet and simnet only; RPC fields 20 to 23). The fast-time gate `infra/fast-time/class-v4-signal.mjs` (three CPU miners, window 120, v3 from 60): two of three signalling PASS with no v4 epoch over epochs 0 to 7 (share 6,166 to 7,583 bps, 0 rejected, one sink 424/424/424); all three PASS with the flip at epoch 3, the first full window, 10,000 bps, 3 of 3 switch lines, 181 / 124 blocks, 0 rejected, one sink, the id assertion on epochs 3 to 5 (e3 e48e6be7c6699824 against the v3 6847355c88e8215f); nobody with the floor at 300 PASS, 0 bps, the flip at epoch 5 by the floor and not before; the failed case (two of three told to expect a flip) FAIL on eight checks. G6 on the signalling fork: three PC 2 jobs under the lock, prover on, app untouched (build-20261006-173017 hit 2.0's flake, 97 of 98; build-20261006-174027 kaspa-consensus alone exit 0; build-20261006-174823 the five crates exit 0 in 35 s with consensus-core 110 + 7, igneum-exec 18, kaspa-pow 15 with the v4 engine and the signal-rule tests, igneum-miner 18, p2p-flows 33, and the app 112 + 26 + 8 exit 0; its closing line "upload incomplete" is the relay blob fault after both test stages closed exit 0). Owed and named: a class-signal witness in the pruning-proof format (a proof-synced node falls back to the floor rule for epochs whose window reaches below its pruning point and logs it), the same class as the era witness |
|
||||
|
||||
Facts for the cut from the node lane (docs/plans/counter-asic-3-node.md): the devnet digest moves (c562d70e... to 3c505021...), so the cut is a one-sweep binary rollout and a 0.3.13 node is refused at the handshake afterwards (intended, fleet-wide); a 0.3.13 miner reads the v4 height as never (an optional proto field), so miners and nodes move together; `infra/fast-time/override-60x.json` as committed carried the proving-v1 block twice and lacked four 0.3.12 and 0.3.13 fields (the node refused the file; fixed, with a new CI check `override-json-check.sh`); the 48 GiB target clone `vendor/igneum-node-ca3v4/target-ca3v4` can go after the cut.
|
||||
|
|
|
|||
Loading…
Reference in a new issue