diff --git a/docs/plans/counter-asic-3-gate/class-v4-20261006-1553Z-cpu.json b/docs/plans/counter-asic-3-gate/class-v4-20261006-1553Z-cpu.json new file mode 100644 index 000000000..b81cb9973 --- /dev/null +++ b/docs/plans/counter-asic-3-gate/class-v4-20261006-1553Z-cpu.json @@ -0,0 +1,384 @@ +{ + "pass": true, + "checks": { + "v4_switch_line_on_every_node": true, + "v4_switch_line_names_the_rounded_epoch": true, + "v3_switch_line_on_every_node": true, + "template_switched_at_the_first_v4_epoch": true, + "template_switched_at_the_first_v3_epoch": true, + "blocks_before_the_boundary": true, + "blocks_after_the_boundary": true, + "v3_and_v4_programs_seen": true, + "v2_programs_seen_when_v3_starts_later": true, + "program_ids_differ_across_the_switch": true, + "miners_agree_on_every_program": true, + "zero_rejected_by_miners": true, + "zero_rejected_by_nodes": true, + "sinks_agree": true, + "block_counts_agree": true + }, + "activation": 150, + "v3_activation": 60, + "epoch_blocks": 60, + "first_v3_epoch": 1, + "first_v4_epoch": 3, + "boundary_daa": 180, + "secs": 420, + "threads": 1, + "node": "/Users/joshm/Projects/igneum-wt-ca3-v4-node/vendor/igneum-node-ca3v4/target-ca3v4/release/igneumd", + "miner": "/Users/joshm/Projects/igneum-wt-ca3-v4-node/vendor/igneum-node-ca3v4/target-ca3v4/release/igneum-miner", + "metal_worker": null, + "genesis_bits": "0x1f010000", + "template_switch_v3": { + "epoch": 1, + "daa": 60, + "at": 25.7 + }, + "template_switch": { + "epoch": 3, + "daa": 180, + "at": 163.9 + }, + "run_ended_at_s": 285, + "final_daa": 304, + "blocks": { + "total": 309, + "before_boundary": 181, + "after_boundary": 128, + "chain_before": 177, + "chain_after": 127 + }, + "programs": [ + { + "epoch": 0, + "class": "v2", + "program_id": "8f8806638d59850f", + "seed": "234e082d653dc69d", + "miners": 3, + "disagree": false, + "ready_ms": [ + 198, + 199, + 199 + ] + }, + { + "epoch": 1, + "class": "v3", + "program_id": "29ced0d031cc121b", + "seed": "bb01d0cccbc2ea2e", + "miners": 3, + "disagree": false, + "ready_ms": [ + 187, + 186, + 187 + ] + }, + { + "epoch": 2, + "class": "v3", + "program_id": "341fd4076256cd7b", + "seed": "060caf3a3e006592", + "miners": 3, + "disagree": false, + "ready_ms": [ + 2, + 2, + 2 + ] + }, + { + "epoch": 3, + "class": "v4", + "program_id": "070ca0f94e7f8f88", + "seed": "cc9d1bb4443c3028", + "miners": 3, + "disagree": false, + "ready_ms": [ + 2, + 2, + 2 + ] + }, + { + "epoch": 4, + "class": "v4", + "program_id": "b8cbe1ef7ab1d748", + "seed": "54e2edcfe251360c", + "miners": 3, + "disagree": false, + "ready_ms": [ + 2, + 2, + 2 + ] + }, + { + "epoch": 5, + "class": "v4", + "program_id": "9321cbd9c54c0b83", + "seed": "53a2fe6ce1308fb3", + "miners": 3, + "disagree": false, + "ready_ms": [ + 2, + 2, + 2 + ] + } + ], + "accepted_per_miner": [ + 103, + 103, + 102 + ], + "rejected_by_miners": [ + 0, + 0, + 0 + ], + "rejected_by_nodes": [ + 0, + 0, + 0 + ], + "rejected_lines": [], + "sinks": [ + "4da9ac669effdfab", + "4da9ac669effdfab", + "4da9ac669effdfab" + ], + "block_counts": [ + 308, + 308, + 308 + ], + "tips_per_node": [ + 1, + 1, + 1 + ], + "switch_lines": [ + "Program class v4 from the override file: active from epoch 3 (DAA score 150 rounded up to the epoch boundary at 180, epochs of 60 DAA)", + "Program class v4 from the override file: active from epoch 3 (DAA score 150 rounded up to the epoch boundary at 180, epochs of 60 DAA)", + "Program class v4 from the override file: active from epoch 3 (DAA score 150 rounded up to the epoch boundary at 180, epochs of 60 DAA)" + ], + "v3_switch_lines": [ + "Program class v3 from the override file: active from epoch 1 (DAA score 60 rounded up to the epoch boundary at 60, epochs of 60 DAA)", + "Program class v3 from the override file: active from epoch 1 (DAA score 60 rounded up to the epoch boundary at 60, epochs of 60 DAA)", + "Program class v3 from the override file: active from epoch 1 (DAA score 60 rounded up to the epoch boundary at 60, epochs of 60 DAA)" + ], + "samples": [ + { + "t": 4.6, + "daa": 0, + "epoch": 0, + "class": 2, + "nodes": [ + "0/234e082d", + "0/234e082d", + "0/234e082d" + ] + }, + { + "t": 19.7, + "daa": 51, + "epoch": 0, + "class": 2, + "nodes": [ + "51/b6699ac7", + "51/b6699ac7", + "51/b6699ac7" + ] + }, + { + "t": 34.7, + "daa": 62, + "epoch": 1, + "class": 3, + "nodes": [ + "62/50a9cf7a", + "62/50a9cf7a", + "62/50a9cf7a" + ] + }, + { + "t": 49.7, + "daa": 68, + "epoch": 1, + "class": 3, + "nodes": [ + "68/e0145a0c", + "68/e0145a0c", + "68/e0145a0c" + ] + }, + { + "t": 64.7, + "daa": 76, + "epoch": 1, + "class": 3, + "nodes": [ + "76/c23ad948", + "76/c23ad948", + "76/c23ad948" + ] + }, + { + "t": 79.8, + "daa": 97, + "epoch": 1, + "class": 3, + "nodes": [ + "97/b039ce4c", + "97/b039ce4c", + "97/b039ce4c" + ] + }, + { + "t": 94.8, + "daa": 113, + "epoch": 1, + "class": 3, + "nodes": [ + "113/ae890f91", + "113/ae890f91", + "113/ae890f91" + ] + }, + { + "t": 109.8, + "daa": 128, + "epoch": 2, + "class": 3, + "nodes": [ + "128/3545bd70", + "128/3545bd70", + "128/3545bd70" + ] + }, + { + "t": 124.8, + "daa": 138, + "epoch": 2, + "class": 3, + "nodes": [ + "138/5e342f39", + "138/5e342f39", + "138/5e342f39" + ] + }, + { + "t": 139.8, + "daa": 152, + "epoch": 2, + "class": 3, + "nodes": [ + "152/f376cfe3", + "152/f376cfe3", + "152/f376cfe3" + ] + }, + { + "t": 154.9, + "daa": 168, + "epoch": 2, + "class": 3, + "nodes": [ + "168/18974e58", + "168/18974e58", + "168/18974e58" + ] + }, + { + "t": 169.9, + "daa": 189, + "epoch": 3, + "class": 4, + "nodes": [ + "189/2efab18a", + "189/2efab18a", + "189/2efab18a" + ] + }, + { + "t": 184.9, + "daa": 203, + "epoch": 3, + "class": 4, + "nodes": [ + "203/024556df", + "203/024556df", + "203/024556df" + ] + }, + { + "t": 199.9, + "daa": 215, + "epoch": 3, + "class": 4, + "nodes": [ + "215/6aa4e4c9", + "215/6aa4e4c9", + "215/6aa4e4c9" + ] + }, + { + "t": 214.9, + "daa": 230, + "epoch": 3, + "class": 4, + "nodes": [ + "230/54e2edcf", + "230/54e2edcf", + "230/54e2edcf" + ] + }, + { + "t": 230, + "daa": 245, + "epoch": 4, + "class": 4, + "nodes": [ + "245/f5fc54f8", + "245/f5fc54f8", + "245/f5fc54f8" + ] + }, + { + "t": 245, + "daa": 265, + "epoch": 4, + "class": 4, + "nodes": [ + "265/7fe10368", + "265/7fe10368", + "265/7fe10368" + ] + }, + { + "t": 260, + "daa": 278, + "epoch": 4, + "class": 4, + "nodes": [ + "278/d50d4e8e", + "278/d50d4e8e", + "278/d50d4e8e" + ] + }, + { + "t": 275, + "daa": 287, + "epoch": 4, + "class": 4, + "nodes": [ + "287/83dc90ba", + "287/83dc90ba", + "287/83dc90ba" + ] + } + ], + "metal": null +} \ No newline at end of file diff --git a/docs/plans/counter-asic-3-gate/class-v4-20261006-metal.json b/docs/plans/counter-asic-3-gate/class-v4-20261006-metal.json new file mode 100644 index 000000000..7848160e1 --- /dev/null +++ b/docs/plans/counter-asic-3-gate/class-v4-20261006-metal.json @@ -0,0 +1,447 @@ +{ + "pass": true, + "checks": { + "v4_switch_line_on_every_node": true, + "v4_switch_line_names_the_rounded_epoch": true, + "v3_switch_line_on_every_node": true, + "template_switched_at_the_first_v4_epoch": true, + "template_switched_at_the_first_v3_epoch": true, + "blocks_before_the_boundary": true, + "blocks_after_the_boundary": true, + "v3_and_v4_programs_seen": true, + "v2_programs_seen_when_v3_starts_later": true, + "program_ids_differ_across_the_switch": true, + "miners_agree_on_every_program": true, + "zero_rejected_by_miners": true, + "zero_rejected_by_nodes": true, + "sinks_agree": true, + "block_counts_agree": true, + "metal_prepare_sent_for_v4": true, + "metal_worker_prepared_v4_pack": true, + "metal_no_need_or_mismatch": true, + "metal_accepted_blocks_after_switch": true, + "metal_cpu_recheck_clean": true, + "metal_swapped_without_pause": true + }, + "activation": 150, + "v3_activation": 60, + "epoch_blocks": 60, + "first_v3_epoch": 1, + "first_v4_epoch": 3, + "boundary_daa": 180, + "secs": 480, + "threads": 1, + "node": "/Users/joshm/Projects/igneum-wt-ca3-v4-node/vendor/igneum-node-ca3v4/target-ca3v4/release/igneumd", + "miner": "/Users/joshm/Projects/igneum-wt-ca3-v4-node/vendor/igneum-node-ca3v4/target-ca3v4/release/igneum-miner", + "metal_worker": "/Users/joshm/Projects/igneum-wt-ca3-v4-node/proto-metal/igneum-bench", + "genesis_bits": "0x1e010000", + "template_switch_v3": { + "epoch": 1, + "daa": 60, + "at": 83.1 + }, + "template_switch": { + "epoch": 3, + "daa": 180, + "at": 191.7 + }, + "run_ended_at_s": 317.5, + "final_daa": 300, + "blocks": { + "total": 304, + "before_boundary": 182, + "after_boundary": 122, + "chain_before": 93, + "chain_after": 63 + }, + "programs": [ + { + "epoch": 0, + "class": "v2", + "program_id": "3e974094b5ce543f", + "seed": "130e3b7d568db07a", + "miners": 2, + "disagree": false, + "ready_ms": [ + 179, + 180 + ] + }, + { + "epoch": 1, + "class": "v3", + "program_id": "8ef0132ff054616a", + "seed": "b515430faf46fda8", + "miners": 2, + "disagree": false, + "ready_ms": [ + 291, + 290 + ] + }, + { + "epoch": 2, + "class": "v3", + "program_id": "d3da91ec49682ce1", + "seed": "9cbe1982e1eaf9df", + "miners": 2, + "disagree": false, + "ready_ms": [ + 7, + 7 + ] + }, + { + "epoch": 3, + "class": "v4", + "program_id": "2bcecca6f867c3b5", + "seed": "ca4245b598fcbeb4", + "miners": 2, + "disagree": false, + "ready_ms": [ + 7, + 7 + ] + }, + { + "epoch": 4, + "class": "v4", + "program_id": "21b78e63fc0e9251", + "seed": "3b6cfced206edf85", + "miners": 2, + "disagree": false, + "ready_ms": [ + 8, + 7 + ] + }, + { + "epoch": 5, + "class": "v4", + "program_id": "3855570a5ba12fc9", + "seed": "343510d7149dcf50", + "miners": 2, + "disagree": false, + "ready_ms": [ + 7, + 7 + ] + } + ], + "accepted_per_miner": [ + 301, + 1, + 1 + ], + "rejected_by_miners": [ + 0, + 0, + 0 + ], + "rejected_by_nodes": [ + 0, + 0, + 0 + ], + "rejected_lines": [], + "sinks": [ + "4e1aa3fbf1f4a54b", + "4e1aa3fbf1f4a54b", + "4e1aa3fbf1f4a54b" + ], + "block_counts": [ + 303, + 303, + 303 + ], + "tips_per_node": [ + 2, + 2, + 2 + ], + "switch_lines": [ + "Program class v4 from the override file: active from epoch 3 (DAA score 150 rounded up to the epoch boundary at 180, epochs of 60 DAA)", + "Program class v4 from the override file: active from epoch 3 (DAA score 150 rounded up to the epoch boundary at 180, epochs of 60 DAA)", + "Program class v4 from the override file: active from epoch 3 (DAA score 150 rounded up to the epoch boundary at 180, epochs of 60 DAA)" + ], + "v3_switch_lines": [ + "Program class v3 from the override file: active from epoch 1 (DAA score 60 rounded up to the epoch boundary at 60, epochs of 60 DAA)", + "Program class v3 from the override file: active from epoch 1 (DAA score 60 rounded up to the epoch boundary at 60, epochs of 60 DAA)", + "Program class v3 from the override file: active from epoch 1 (DAA score 60 rounded up to the epoch boundary at 60, epochs of 60 DAA)" + ], + "samples": [ + { + "t": 4.6, + "daa": 0, + "epoch": 0, + "class": 2, + "nodes": [ + "0/130e3b7d", + "0/130e3b7d", + "0/130e3b7d" + ] + }, + { + "t": 19.7, + "daa": 2, + "epoch": 0, + "class": 2, + "nodes": [ + "2/a26633e3", + "2/a26633e3", + "2/a26633e3" + ] + }, + { + "t": 34.7, + "daa": 4, + "epoch": 0, + "class": 2, + "nodes": [ + "4/2e80b7f2", + "4/2e80b7f2", + "4/2e80b7f2" + ] + }, + { + "t": 49.7, + "daa": 14, + "epoch": 0, + "class": 2, + "nodes": [ + "14/b6297491", + "14/b6297491", + "14/b6297491" + ] + }, + { + "t": 64.9, + "daa": 33, + "epoch": 0, + "class": 2, + "nodes": [ + "33/41f3c99e", + "33/41f3c99e", + "33/41f3c99e" + ] + }, + { + "t": 80.1, + "daa": 54, + "epoch": 0, + "class": 2, + "nodes": [ + "54/e14baafe", + "54/e14baafe", + "54/e14baafe" + ] + }, + { + "t": 95.1, + "daa": 76, + "epoch": 1, + "class": 3, + "nodes": [ + "76/31410d82", + "76/31410d82", + "76/31410d82" + ] + }, + { + "t": 110.2, + "daa": 94, + "epoch": 1, + "class": 3, + "nodes": [ + "94/f17df5db", + "94/f17df5db", + "94/f17df5db" + ] + }, + { + "t": 125.3, + "daa": 111, + "epoch": 1, + "class": 3, + "nodes": [ + "111/9cbe1982", + "111/9cbe1982", + "111/9cbe1982" + ] + }, + { + "t": 140.5, + "daa": 125, + "epoch": 2, + "class": 3, + "nodes": [ + "125/185ebceb", + "125/185ebceb", + "125/185ebceb" + ] + }, + { + "t": 155.8, + "daa": 144, + "epoch": 2, + "class": 3, + "nodes": [ + "144/904395a2", + "144/904395a2", + "144/904395a2" + ] + }, + { + "t": 171.2, + "daa": 158, + "epoch": 2, + "class": 3, + "nodes": [ + "158/e5faf4c5", + "158/e5faf4c5", + "158/e5faf4c5" + ] + }, + { + "t": 186.6, + "daa": 174, + "epoch": 2, + "class": 3, + "nodes": [ + "174/1a963704", + "174/1a963704", + "174/1a963704" + ] + }, + { + "t": 201.8, + "daa": 190, + "epoch": 3, + "class": 4, + "nodes": [ + "190/51e300b8", + "190/51e300b8", + "190/51e300b8" + ] + }, + { + "t": 217, + "daa": 205, + "epoch": 3, + "class": 4, + "nodes": [ + "205/251d965c", + "205/251d965c", + "205/251d965c" + ] + }, + { + "t": 232.1, + "daa": 219, + "epoch": 3, + "class": 4, + "nodes": [ + "219/0ecdb99f", + "219/0ecdb99f", + "219/0ecdb99f" + ] + }, + { + "t": 247.3, + "daa": 234, + "epoch": 3, + "class": 4, + "nodes": [ + "234/9f6a3235", + "233/686123b5", + "233/686123b5" + ] + }, + { + "t": 262.4, + "daa": 247, + "epoch": 4, + "class": 4, + "nodes": [ + "247/da402167", + "247/da402167", + "247/da402167" + ] + }, + { + "t": 277.6, + "daa": 263, + "epoch": 4, + "class": 4, + "nodes": [ + "263/86fe7193", + "263/86fe7193", + "263/86fe7193" + ] + }, + { + "t": 292.8, + "daa": 278, + "epoch": 4, + "class": 4, + "nodes": [ + "278/6f950a2e", + "278/6f950a2e", + "278/6f950a2e" + ] + }, + { + "t": 308.3, + "daa": 293, + "epoch": 4, + "class": 4, + "nodes": [ + "293/c29bced3", + "293/c29bced3", + "293/c29bced3" + ] + } + ], + "metal": { + "worker": "/Users/joshm/Projects/igneum-wt-ca3-v4-node/proto-metal/igneum-bench", + "prepares": [ + "PREPARE sent for epoch seed b515430faf46fda81a323a803d58c5f3ef6a6777d1ca2b83cbd41ca0e45fe51d day 1243960 class v3 (6 DAA blocks before the boundary at 60; CPU side ready in 2280 ms)", + "PREPARE sent for epoch seed 9cbe1982e1eaf9df5c1a9dbbf870ca7016987c4594cd3cd47505f9827d1bed70 day 1243960 class v3 (6 DAA blocks before the boundary at 120; CPU side ready in 2071 ms)", + "PREPARE sent for epoch seed ca4245b598fcbeb49449c5072ae0cc6d3803eeb21f75da1eed5a56e8439bdb91 day 1243960 class v4 (6 DAA blocks before the boundary at 180; CPU side ready in 2599 ms)", + "PREPARE sent for epoch seed 3b6cfced206edf85aa0e643ee81c4c01c9a21a3de16e0c2d7347da27540867fa day 1243960 class v4 (6 DAA blocks before the boundary at 240; CPU side ready in 2325 ms)", + "PREPARE sent for epoch seed 343510d7149dcf50f3d302d9e7ed8cd0526dcadf4904ceafa74506e438c49031 day 1243960 class v4 (5 DAA blocks before the boundary at 300; CPU side ready in 2168 ms)" + ], + "prepared": [ + "worker: prepared b515430faf46fda81a323a803d58c5f3ef6a6777d1ca2b83cbd41ca0e45fe51d 69676e65756d2d6461792f38fb120000000000 396.1 program 62.9 dataset 333.1 race 0.0 variant base class v3 loads/hash 128 cache-fill 0.8 build 174.9 resident 2 programs 2 datasets (prepare answered 0.4 s after it was sent)", + "worker: prepared 9cbe1982e1eaf9df5c1a9dbbf870ca7016987c4594cd3cd47505f9827d1bed70 69676e65756d2d6461792f38fb120000000000 61.7 program 61.7 dataset 0.0 race 0.0 variant base class v3 loads/hash 128 cache-fill 0.8 build 174.9 resident 2 programs 2 datasets (prepare answered 0.1 s after it was sent)", + "worker: prepared ca4245b598fcbeb49449c5072ae0cc6d3803eeb21f75da1eed5a56e8439bdb91 69676e65756d2d6461792f38fb120000000000 430.2 program 193.9 dataset 236.2 race 0.0 variant base class v4 loads/hash 128 cache-fill 1.4 build 70.1 resident 2 programs 3 datasets (prepare answered 0.4 s after it was sent)", + "worker: prepared 3b6cfced206edf85aa0e643ee81c4c01c9a21a3de16e0c2d7347da27540867fa 69676e65756d2d6461792f38fb120000000000 138.6 program 138.5 dataset 0.0 race 0.0 variant base class v4 loads/hash 128 cache-fill 1.4 build 70.1 resident 2 programs 3 datasets (prepare answered 0.1 s after it was sent)", + "worker: prepared 343510d7149dcf50f3d302d9e7ed8cd0526dcadf4904ceafa74506e438c49031 69676e65756d2d6461792f38fb120000000000 175.3 program 175.3 dataset 0.0 race 0.0 variant base class v4 loads/hash 128 cache-fill 1.4 build 70.1 resident 2 programs 3 datasets (prepare answered 0.2 s after it was sent)" + ], + "prepared_v4": [ + "worker: prepared ca4245b598fcbeb49449c5072ae0cc6d3803eeb21f75da1eed5a56e8439bdb91 69676e65756d2d6461792f38fb120000000000 430.2 program 193.9 dataset 236.2 race 0.0 variant base class v4 loads/hash 128 cache-fill 1.4 build 70.1 resident 2 programs 3 datasets (prepare answered 0.4 s after it was sent)", + "worker: prepared 3b6cfced206edf85aa0e643ee81c4c01c9a21a3de16e0c2d7347da27540867fa 69676e65756d2d6461792f38fb120000000000 138.6 program 138.5 dataset 0.0 race 0.0 variant base class v4 loads/hash 128 cache-fill 1.4 build 70.1 resident 2 programs 3 datasets (prepare answered 0.1 s after it was sent)", + "worker: prepared 343510d7149dcf50f3d302d9e7ed8cd0526dcadf4904ceafa74506e438c49031 69676e65756d2d6461792f38fb120000000000 175.3 program 175.3 dataset 0.0 race 0.0 variant base class v4 loads/hash 128 cache-fill 1.4 build 70.1 resident 2 programs 3 datasets (prepare answered 0.2 s after it was sent)" + ], + "prepared_v3": [ + "worker: prepared b515430faf46fda81a323a803d58c5f3ef6a6777d1ca2b83cbd41ca0e45fe51d 69676e65756d2d6461792f38fb120000000000 396.1 program 62.9 dataset 333.1 race 0.0 variant base class v3 loads/hash 128 cache-fill 0.8 build 174.9 resident 2 programs 2 datasets (prepare answered 0.4 s after it was sent)", + "worker: prepared 9cbe1982e1eaf9df5c1a9dbbf870ca7016987c4594cd3cd47505f9827d1bed70 69676e65756d2d6461792f38fb120000000000 61.7 program 61.7 dataset 0.0 race 0.0 variant base class v3 loads/hash 128 cache-fill 0.8 build 174.9 resident 2 programs 2 datasets (prepare answered 0.1 s after it was sent)" + ], + "need": 0, + "mismatch_lines": [], + "rebuild_lines_before_v4": [], + "refused": [], + "swaps": [ + "SEED CHANGE at daa 60: epoch seed 130e3b7d568db07aad638f67b2ac26e7cf93c51e4f564d45c6724fc4b2d3da65 -> b515430faf46fda81a323a803d58c5f3ef6a6777d1ca2b83cbd41ca0e45fe51d, day 1243960 -> 1243960 (epoch 1): swapped with no pause (prepared 2 s ago, prepare took 396 ms)", + "SEED CHANGE at daa 120: epoch seed b515430faf46fda81a323a803d58c5f3ef6a6777d1ca2b83cbd41ca0e45fe51d -> 9cbe1982e1eaf9df5c1a9dbbf870ca7016987c4594cd3cd47505f9827d1bed70, day 1243960 -> 1243960 (epoch 2): swapped with no pause (prepared 4 s ago, prepare took 62 ms)", + "SEED CHANGE at daa 180: epoch seed 9cbe1982e1eaf9df5c1a9dbbf870ca7016987c4594cd3cd47505f9827d1bed70 -> ca4245b598fcbeb49449c5072ae0cc6d3803eeb21f75da1eed5a56e8439bdb91, day 1243960 -> 1243960 (epoch 3): swapped with no pause (prepared 3 s ago, prepare took 430 ms)", + "SEED CHANGE at daa 240: epoch seed ca4245b598fcbeb49449c5072ae0cc6d3803eeb21f75da1eed5a56e8439bdb91 -> 3b6cfced206edf85aa0e643ee81c4c01c9a21a3de16e0c2d7347da27540867fa, day 1243960 -> 1243960 (epoch 4): swapped with no pause (prepared 4 s ago, prepare took 139 ms)", + "SEED CHANGE at daa 300: epoch seed 3b6cfced206edf85aa0e643ee81c4c01c9a21a3de16e0c2d7347da27540867fa -> 343510d7149dcf50f3d302d9e7ed8cd0526dcadf4904ceafa74506e438c49031, day 1243960 -> 1243960 (epoch 5): swapped with no pause (prepared 5 s ago, prepare took 175 ms)" + ], + "accepted_total": 301, + "accepted_after_switch": 123, + "found_lines": 0, + "cpu_recheck_mismatched": 0, + "last_status": "" + } +} \ No newline at end of file diff --git a/docs/plans/counter-asic-3-gate/class-v4-20261006-never-failed-case.json b/docs/plans/counter-asic-3-gate/class-v4-20261006-never-failed-case.json new file mode 100644 index 000000000..b3eb74b2f --- /dev/null +++ b/docs/plans/counter-asic-3-gate/class-v4-20261006-never-failed-case.json @@ -0,0 +1,245 @@ +{ + "pass": false, + "checks": { + "v4_switch_line_on_every_node": true, + "v4_switch_line_names_the_rounded_epoch": false, + "v3_switch_line_on_every_node": true, + "template_switched_at_the_first_v4_epoch": false, + "template_switched_at_the_first_v3_epoch": true, + "blocks_before_the_boundary": true, + "blocks_after_the_boundary": false, + "v3_and_v4_programs_seen": false, + "v2_programs_seen_when_v3_starts_later": true, + "program_ids_differ_across_the_switch": false, + "miners_agree_on_every_program": true, + "zero_rejected_by_miners": true, + "zero_rejected_by_nodes": true, + "sinks_agree": true, + "block_counts_agree": true + }, + "activation": "never", + "v3_activation": 60, + "epoch_blocks": 60, + "first_v3_epoch": 1, + "first_v4_epoch": null, + "boundary_daa": "never", + "secs": 150, + "threads": 1, + "node": "/Users/joshm/Projects/igneum-wt-ca3-v4-node/vendor/igneum-node-ca3v4/target-ca3v4/release/igneumd", + "miner": "/Users/joshm/Projects/igneum-wt-ca3-v4-node/vendor/igneum-node-ca3v4/target-ca3v4/release/igneum-miner", + "metal_worker": null, + "genesis_bits": "0x1f010000", + "template_switch_v3": { + "epoch": 1, + "daa": 60, + "at": 31.7 + }, + "template_switch": null, + "run_ended_at_s": null, + "final_daa": 164, + "blocks": { + "total": 167, + "before_boundary": 167, + "after_boundary": 0, + "chain_before": 165, + "chain_after": 0 + }, + "programs": [ + { + "epoch": 0, + "class": "v2", + "program_id": "8f8806638d59850f", + "seed": "234e082d653dc69d", + "miners": 3, + "disagree": false, + "ready_ms": [ + 209, + 203, + 208, + 206, + 209, + 203 + ] + }, + { + "epoch": 1, + "class": "v3", + "program_id": "89059149b7328e64", + "seed": "80127533e53a2df7", + "miners": 3, + "disagree": false, + "ready_ms": [ + 193, + 192, + 192 + ] + }, + { + "epoch": 2, + "class": "v3", + "program_id": "6da8a5eb4dff139a", + "seed": "0e93562ee5369f59", + "miners": 3, + "disagree": false, + "ready_ms": [ + 3, + 4, + 4 + ] + } + ], + "accepted_per_miner": [ + 46, + 59, + 61 + ], + "rejected_by_miners": [ + 0, + 0, + 0 + ], + "rejected_by_nodes": [ + 0, + 0, + 0 + ], + "rejected_lines": [], + "sinks": [ + "20e729b7e4ef8637", + "20e729b7e4ef8637", + "20e729b7e4ef8637" + ], + "block_counts": [ + 166, + 166, + 166 + ], + "tips_per_node": [ + 1, + 1, + 1 + ], + "switch_lines": [ + "Program class v4 from the override file: never", + "Program class v4 from the override file: never", + "Program class v4 from the override file: never" + ], + "v3_switch_lines": [ + "Program class v3 from the override file: active from epoch 1 (DAA score 60 rounded up to the epoch boundary at 60, epochs of 60 DAA)", + "Program class v3 from the override file: active from epoch 1 (DAA score 60 rounded up to the epoch boundary at 60, epochs of 60 DAA)", + "Program class v3 from the override file: active from epoch 1 (DAA score 60 rounded up to the epoch boundary at 60, epochs of 60 DAA)" + ], + "samples": [ + { + "t": 4.6, + "daa": 0, + "epoch": 0, + "class": 2, + "nodes": [ + "0/234e082d", + "0/234e082d", + "0/234e082d" + ] + }, + { + "t": 19.7, + "daa": 39, + "epoch": 0, + "class": 2, + "nodes": [ + "39/14b03ba6", + "39/14b03ba6", + "39/14b03ba6" + ] + }, + { + "t": 34.7, + "daa": 62, + "epoch": 1, + "class": 3, + "nodes": [ + "62/b22630fc", + "62/b22630fc", + "62/b22630fc" + ] + }, + { + "t": 49.7, + "daa": 68, + "epoch": 1, + "class": 3, + "nodes": [ + "68/c8bb2f04", + "68/c8bb2f04", + "68/c8bb2f04" + ] + }, + { + "t": 64.7, + "daa": 83, + "epoch": 1, + "class": 3, + "nodes": [ + "83/d2610654", + "83/d2610654", + "83/d2610654" + ] + }, + { + "t": 79.8, + "daa": 101, + "epoch": 1, + "class": 3, + "nodes": [ + "101/72beef65", + "101/72beef65", + "101/72beef65" + ] + }, + { + "t": 94.8, + "daa": 111, + "epoch": 1, + "class": 3, + "nodes": [ + "111/846008b8", + "111/846008b8", + "111/846008b8" + ] + }, + { + "t": 109.8, + "daa": 121, + "epoch": 2, + "class": 3, + "nodes": [ + "121/d4da8120", + "121/d4da8120", + "121/d4da8120" + ] + }, + { + "t": 124.8, + "daa": 134, + "epoch": 2, + "class": 3, + "nodes": [ + "134/c7e80324", + "134/c7e80324", + "134/c7e80324" + ] + }, + { + "t": 139.8, + "daa": 152, + "epoch": 2, + "class": 3, + "nodes": [ + "152/2a916f0d", + "152/2a916f0d", + "152/2a916f0d" + ] + } + ], + "metal": null +} \ No newline at end of file diff --git a/docs/plans/counter-asic-3-gate/node-gates.md b/docs/plans/counter-asic-3-gate/node-gates.md new file mode 100644 index 000000000..ce322a9b7 --- /dev/null +++ b/docs/plans/counter-asic-3-gate/node-gates.md @@ -0,0 +1,12 @@ +# Counter ASIC 3.0: the node-side gates for class v4 (`mx8+sh256x27`) + +6 October 2026, worker "ca3-v4-node". The rows in the shape of `docs/plans/counter-asic-2-rollout.md` section 7. Trees: main `ca3-v4-node` a522d04 (igneum-pow, the workers, the harness, on ca3-coord 3213ee9), fork `ca3-v4-node` 5f7e0543 (on release-0.3.13-node bb43e9a8, the current release tip, which contains release-0.3.12-node). Builds: the Mac built igneumd and igneum-miner (`target-ca3v4/release`, `--features kaspad/igneum-pow`, warm from an APFS clone of the 0.3.13 target dir, under `with-lock.sh build`, nice 19, 4 jobs) and `igneum-bench` (the Metal worker, `swiftc -O`); the suites went to PC 2. The Mac's installed app was not touched (its miner stays paused); nothing was published; the live devnet was not touched. The Mac's load average during the runs: 5 to 12 (other agents' builds); the gates here count blocks, lines and ids, not rates, so the load does not move them. + +| # | Gate | Evidence required | State | +|---|---|---|---| +| G4 | the fast-time 3-node network mining across a v4 activation | 0 rejected blocks, 0 forks, every node's first lines show the switch, blocks on both sides of the boundary; the gate fires on one finished and one failed case | GREEN. Run 1 (15:54:32 to 15:59:21Z, `node infra/fast-time/class-v4.mjs --secs 420 --activation 150 --v3-activation 60 --epochs-after 2` under `with-lock.sh run`; three nodes, one real CPU miner each with `--engine igneum-pow`, every node verifying the other two): 3 of 3 nodes print both switch lines (`Program class v4 from the override file: active from epoch 3 (DAA score 150 rounded up to the epoch boundary at 180, epochs of 60 DAA)` and the v3 line for epoch 1 at DAA 60); templates class 2 for epoch 0, class 3 for epochs 1 and 2, class 4 for epochs 3 to 5; the switch seen at DAA 180, 163.9 s wall; 181 blocks before and 128 after DAA 180 (309 in all, selected chain 177 / 127); program ids agree on all three miners (e0 v2 `8f8806638d59850f`, the same v2 id as 2.0's three runs; e1 v3 `29ced0d031cc121b`, e2 v3 `341fd4076256cd7b`, e3 v4 `070ca0f94e7f8f88`, e4 v4 `b8cbe1ef7ab1d748`, e5 v4 `9321cbd9c54c0b83`; no v2 or v3 id reappears under v4); rejected 0/0/0 on the miners and 0/0/0 on the nodes (103, 103, 102 accepted); one sink `4da9ac669effdfab` on all three at 308/308/308 blocks, one tip each; digest `59a3eb5383bfbf23...` on all three; program and cache ready on one core: v2 epoch 0 199 ms, the first v3 epoch 187 ms (its own day cache), the first v4 epoch 2 ms (the v3 day cache reused across the N5 boundary, no rebuild). Summary `class-v4-20261006-1553Z-cpu.json`. Run 2, the known-failed case (15:59:46 to 16:02:17Z, `--activation never --v3-activation 60 --secs 150`): every node prints `Program class v4 from the override file: never`; the harness reports `SUMMARY FAIL: NO v4 epoch seen` with five checks down (`v4_switch_line_names_the_rounded_epoch`, `template_switched_at_the_first_v4_epoch`, `blocks_after_the_boundary`, `v3_and_v4_programs_seen`, `program_ids_differ_across_the_switch`), exit 1; the v3 side of that run was clean (epochs 0 v2, 1 and 2 v3; 0 rejected; one sink 166/166/166). Summary `class-v4-20261006-never-failed-case.json` | +| G4b | the Mac mines v4: a real Metal miner across a v4 boundary through the miner's `--prepare-packs` flow, and the app passes that flag to the Metal worker | the prepare lines on both sides, the worker's `prepared` line for the v4 pack, found or accepted blocks on v4, no `need` or mismatch line, no exit 42 or 44; the app's `miner_args` pushes `--prepare-packs` for every worker | GREEN. Run 3 (16:02:37 to 16:07:58Z, `--metal proto-metal/igneum-bench --genesis-bits 0x1e010000 --secs 480 --activation 150 --v3-activation 60`; node 0's miner is `igneum-miner --worker igneum-bench --prepare-packs