counter-asic-2-node.md: gate G4 run 3 PASS on the final class (x8 with the era, d5070e7): 182 / 122 blocks, 0 rejected, 0 forks; suite job 4 green (G6)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
parent
37dab3f5a5
commit
104be2dbcf
2 changed files with 386 additions and 2 deletions
|
|
@ -0,0 +1,367 @@
|
|||
{
|
||||
"pass": true,
|
||||
"checks": {
|
||||
"switch_line_on_every_node": true,
|
||||
"switch_line_names_the_rounded_epoch": true,
|
||||
"template_switched_at_the_first_v3_epoch": true,
|
||||
"blocks_before_the_boundary": true,
|
||||
"blocks_after_the_boundary": true,
|
||||
"v2_and_v3_programs_seen": 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,
|
||||
"epoch_blocks": 60,
|
||||
"first_v3_epoch": 3,
|
||||
"boundary_daa": 180,
|
||||
"secs": 480,
|
||||
"threads": 1,
|
||||
"node": "/Users/joshm/Projects/igneum-wt-ca2-v3/vendor/igneum-node-ca2/target-ca2/release/igneumd",
|
||||
"miner": "/Users/joshm/Projects/igneum-wt-ca2-v3/vendor/igneum-node-ca2/target-ca2/release/igneum-miner",
|
||||
"genesis_bits": "0x1f010000",
|
||||
"template_switch": {
|
||||
"epoch": 3,
|
||||
"daa": 181,
|
||||
"at": 127.9
|
||||
},
|
||||
"run_ended_at_s": 280.2,
|
||||
"final_daa": 300,
|
||||
"blocks": {
|
||||
"total": 304,
|
||||
"before_boundary": 182,
|
||||
"after_boundary": 122,
|
||||
"chain_before": 180,
|
||||
"chain_after": 120
|
||||
},
|
||||
"programs": [
|
||||
{
|
||||
"epoch": 0,
|
||||
"class": "v2",
|
||||
"program_id": "8f8806638d59850f",
|
||||
"seed": "234e082d653dc69d",
|
||||
"miners": 3,
|
||||
"disagree": false,
|
||||
"ready_ms": [
|
||||
179,
|
||||
178,
|
||||
179
|
||||
]
|
||||
},
|
||||
{
|
||||
"epoch": 1,
|
||||
"class": "v2",
|
||||
"program_id": "e145305446a6b4ce",
|
||||
"seed": "09952ab515cc5a10",
|
||||
"miners": 3,
|
||||
"disagree": false,
|
||||
"ready_ms": [
|
||||
2,
|
||||
2,
|
||||
2
|
||||
]
|
||||
},
|
||||
{
|
||||
"epoch": 2,
|
||||
"class": "v2",
|
||||
"program_id": "743ad2a3cab0518a",
|
||||
"seed": "1812a8eabb5a452c",
|
||||
"miners": 3,
|
||||
"disagree": false,
|
||||
"ready_ms": [
|
||||
2,
|
||||
2,
|
||||
2
|
||||
]
|
||||
},
|
||||
{
|
||||
"epoch": 3,
|
||||
"class": "v3",
|
||||
"program_id": "a6523b90cff501e3",
|
||||
"seed": "6296e3d38df15872",
|
||||
"miners": 3,
|
||||
"disagree": false,
|
||||
"ready_ms": [
|
||||
191,
|
||||
191,
|
||||
191
|
||||
]
|
||||
},
|
||||
{
|
||||
"epoch": 4,
|
||||
"class": "v3",
|
||||
"program_id": "bc811b3c4b8b1ced",
|
||||
"seed": "a59152f149a517e0",
|
||||
"miners": 3,
|
||||
"disagree": false,
|
||||
"ready_ms": [
|
||||
2,
|
||||
2,
|
||||
2
|
||||
]
|
||||
},
|
||||
{
|
||||
"epoch": 5,
|
||||
"class": "v3",
|
||||
"program_id": "e784541f19cdebe5",
|
||||
"seed": "87ec7849fce0019f",
|
||||
"miners": 3,
|
||||
"disagree": false,
|
||||
"ready_ms": [
|
||||
2,
|
||||
2,
|
||||
2
|
||||
]
|
||||
}
|
||||
],
|
||||
"accepted_per_miner": [
|
||||
101,
|
||||
89,
|
||||
113
|
||||
],
|
||||
"rejected_by_miners": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"rejected_by_nodes": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"rejected_lines": [],
|
||||
"sinks": [
|
||||
"a9ce45df8beeaf13",
|
||||
"a9ce45df8beeaf13",
|
||||
"a9ce45df8beeaf13"
|
||||
],
|
||||
"block_counts": [
|
||||
303,
|
||||
303,
|
||||
303
|
||||
],
|
||||
"tips_per_node": [
|
||||
1,
|
||||
1,
|
||||
1
|
||||
],
|
||||
"switch_lines": [
|
||||
"Program class v3 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 v3 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 v3 from the override file: active from epoch 3 (DAA score 150 rounded up to the epoch boundary at 180, 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": 48,
|
||||
"epoch": 0,
|
||||
"class": 2,
|
||||
"nodes": [
|
||||
"48/78df0834",
|
||||
"48/78df0834",
|
||||
"48/78df0834"
|
||||
]
|
||||
},
|
||||
{
|
||||
"t": 34.7,
|
||||
"daa": 67,
|
||||
"epoch": 1,
|
||||
"class": 2,
|
||||
"nodes": [
|
||||
"67/0b934b49",
|
||||
"67/0b934b49",
|
||||
"67/0b934b49"
|
||||
]
|
||||
},
|
||||
{
|
||||
"t": 49.7,
|
||||
"daa": 84,
|
||||
"epoch": 1,
|
||||
"class": 2,
|
||||
"nodes": [
|
||||
"84/2ba5b427",
|
||||
"84/2ba5b427",
|
||||
"84/2ba5b427"
|
||||
]
|
||||
},
|
||||
{
|
||||
"t": 64.8,
|
||||
"daa": 101,
|
||||
"epoch": 1,
|
||||
"class": 2,
|
||||
"nodes": [
|
||||
"101/6574b577",
|
||||
"101/6574b577",
|
||||
"101/6574b577"
|
||||
]
|
||||
},
|
||||
{
|
||||
"t": 79.8,
|
||||
"daa": 123,
|
||||
"epoch": 2,
|
||||
"class": 2,
|
||||
"nodes": [
|
||||
"123/21e2b6ce",
|
||||
"123/21e2b6ce",
|
||||
"123/21e2b6ce"
|
||||
]
|
||||
},
|
||||
{
|
||||
"t": 94.8,
|
||||
"daa": 134,
|
||||
"epoch": 2,
|
||||
"class": 2,
|
||||
"nodes": [
|
||||
"134/74b83d55",
|
||||
"134/74b83d55",
|
||||
"134/74b83d55"
|
||||
]
|
||||
},
|
||||
{
|
||||
"t": 109.9,
|
||||
"daa": 153,
|
||||
"epoch": 2,
|
||||
"class": 2,
|
||||
"nodes": [
|
||||
"153/71b251a6",
|
||||
"153/71b251a6",
|
||||
"153/71b251a6"
|
||||
]
|
||||
},
|
||||
{
|
||||
"t": 124.9,
|
||||
"daa": 175,
|
||||
"epoch": 2,
|
||||
"class": 2,
|
||||
"nodes": [
|
||||
"175/b1500fb5",
|
||||
"175/b1500fb5",
|
||||
"175/b1500fb5"
|
||||
]
|
||||
},
|
||||
{
|
||||
"t": 139.9,
|
||||
"daa": 185,
|
||||
"epoch": 3,
|
||||
"class": 3,
|
||||
"nodes": [
|
||||
"185/dd8ff66c",
|
||||
"185/dd8ff66c",
|
||||
"185/dd8ff66c"
|
||||
]
|
||||
},
|
||||
{
|
||||
"t": 155,
|
||||
"daa": 191,
|
||||
"epoch": 3,
|
||||
"class": 3,
|
||||
"nodes": [
|
||||
"191/2ef77979",
|
||||
"191/2ef77979",
|
||||
"191/2ef77979"
|
||||
]
|
||||
},
|
||||
{
|
||||
"t": 170,
|
||||
"daa": 194,
|
||||
"epoch": 3,
|
||||
"class": 3,
|
||||
"nodes": [
|
||||
"194/1871cd31",
|
||||
"194/1871cd31",
|
||||
"194/1871cd31"
|
||||
]
|
||||
},
|
||||
{
|
||||
"t": 185,
|
||||
"daa": 206,
|
||||
"epoch": 3,
|
||||
"class": 3,
|
||||
"nodes": [
|
||||
"206/808070af",
|
||||
"206/808070af",
|
||||
"206/808070af"
|
||||
]
|
||||
},
|
||||
{
|
||||
"t": 200.1,
|
||||
"daa": 221,
|
||||
"epoch": 3,
|
||||
"class": 3,
|
||||
"nodes": [
|
||||
"221/1bccc51c",
|
||||
"221/1bccc51c",
|
||||
"221/1bccc51c"
|
||||
]
|
||||
},
|
||||
{
|
||||
"t": 215.1,
|
||||
"daa": 237,
|
||||
"epoch": 3,
|
||||
"class": 3,
|
||||
"nodes": [
|
||||
"237/d0bfaef8",
|
||||
"237/d0bfaef8",
|
||||
"237/d0bfaef8"
|
||||
]
|
||||
},
|
||||
{
|
||||
"t": 230.1,
|
||||
"daa": 253,
|
||||
"epoch": 4,
|
||||
"class": 3,
|
||||
"nodes": [
|
||||
"253/a4136a32",
|
||||
"253/a4136a32",
|
||||
"253/a4136a32"
|
||||
]
|
||||
},
|
||||
{
|
||||
"t": 245.2,
|
||||
"daa": 268,
|
||||
"epoch": 4,
|
||||
"class": 3,
|
||||
"nodes": [
|
||||
"268/51ef3166",
|
||||
"268/51ef3166",
|
||||
"268/51ef3166"
|
||||
]
|
||||
},
|
||||
{
|
||||
"t": 260.2,
|
||||
"daa": 277,
|
||||
"epoch": 4,
|
||||
"class": 3,
|
||||
"nodes": [
|
||||
"277/869d0dd3",
|
||||
"277/869d0dd3",
|
||||
"277/869d0dd3"
|
||||
]
|
||||
},
|
||||
{
|
||||
"t": 275.2,
|
||||
"daa": 292,
|
||||
"epoch": 4,
|
||||
"class": 3,
|
||||
"nodes": [
|
||||
"292/fe54acb8",
|
||||
"292/fe54acb8",
|
||||
"292/fe54acb8"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -120,13 +120,30 @@ The regression was `memhard::derive_items` at m = 1 (2.2x); the fix dispatches t
|
|||
|
||||
Epoch 0's v2 id is the same in both runs (`8f8806638d59850f`: a v2 program is untouched by the era code, on the chain as in the packs); the v3 ids differ from run 1 because the era draw is now inside the class.
|
||||
|
||||
### Result, run 3 (5 October 2026, 22:15:04Z to 22:19:44Z): the final class, x8 with the era
|
||||
|
||||
Binaries rebuilt on ca2-v3 d233fa1 (mixer x8, the era drawn inside the class, the verifier fix), fork 89dfcb95. Summary: `docs/plans/counter-asic-2-gate/class-v3-20261005-2215Z-era-mx8.json`. PASS: every check true.
|
||||
|
||||
| Check | Measured |
|
||||
|---|---|
|
||||
| Switch lines, digest | 3 of 3, the same line; digest `0186df7d0834d054...` |
|
||||
| Template class per epoch | epochs 0 to 2 class 2, 3 to 5 class 3; the switch seen at DAA 181, 127.9 s wall |
|
||||
| Blocks before / after the boundary | 182 / 122 (selected chain 180 / 120), 304 in all; 101, 89, 113 accepted per miner |
|
||||
| Program id per epoch, all three miners agreeing | e0 v2 `8f8806638d59850f`, e1 v2 `e145305446a6b4ce`, e2 v2 `743ad2a3cab0518a`, e3 v3 `a6523b90cff501e3`, e4 v3 `bc811b3c4b8b1ced`, e5 v3 `e784541f19cdebe5` |
|
||||
| Rejected blocks | miners 0 / 0 / 0, nodes 0 / 0 / 0 |
|
||||
| Forks | sinks `a9ce45df8beeaf13` on all three nodes, block counts 303 / 303 / 303, one tip each |
|
||||
| Program and cache ready, one CPU core | v2 epoch 0 179 ms, the first v3 epoch 191 ms (x8 construction: the cache fill is unchanged, the items are derived on demand), an in-day swap 2 ms |
|
||||
|
||||
Epoch 0's v2 id `8f8806638d59850f` is the same in all three runs. Three runs, three v3 classes (mixer x4; x4 with the era; x8 with the era), the same chain behaviour each time: the switch rounds up to epoch 3, no block rejected, one chain.
|
||||
|
||||
The PC 2 suite jobs for the same fork (79bd8e10), the G6 evidence (the coordinator's status file carries the SUMMARY lines):
|
||||
|
||||
| Job | Tree | What | Result |
|
||||
|---|---|---|---|
|
||||
| `build-20261005-215219` | main b105a55 | the Linux node, the six node suites, the app tests | Linux build and app tests passed; `kaspa-consensus` failed on the known flake (`ban_is_decided_by_the_carrying_block`, `UnexpectedDifficulty` in `mine_on_all`, the 0.3.10 cut's section 11 case) |
|
||||
| `build-20261005-215712` | main b105a55 | `kaspa-consensus` alone | 97 passed, 0 failed, 3 ignored, `ban_is_decided ...` ok, 21:59:45Z |
|
||||
| `build-20261005-220351` | main 8ea6740 | the other five crates (`kaspa-consensus-core igneum-exec kaspa-pow igneum-miner kaspa-p2p-flows`) and the app tests | 22:04 to 22:06:55Z: igneum-exec 17, igneum-miner 18, consensus-core and p2p-flows green, the app 78 + 26 + 8; `kaspa-pow` FAILED on `program_class_v3_seeds_hash_their_own_program_over_their_own_cache` (the fork test compared a chain v3 program's class to `V3_CLASS` with `era: None`; on the era-merged crate the class carries the drawn era inside). Fixed on the fork at 89dfcb95 (the class minus its era is `V3_CLASS`, the era is drawn, another era seed keeps the program id and hashes another program over the same day cache). Re-run owed with the mixer fix job |
|
||||
| `build-20261005-220351` | main 8ea6740 | the other five crates (`kaspa-consensus-core igneum-exec kaspa-pow igneum-miner kaspa-p2p-flows`) and the app tests | 22:04 to 22:06:55Z: igneum-exec 17, igneum-miner 18, consensus-core and p2p-flows green, the app 78 + 26 + 8; `kaspa-pow` FAILED on `program_class_v3_seeds_hash_their_own_program_over_their_own_cache` (the fork test compared a chain v3 program's class to `V3_CLASS` with `era: None`; on the era-merged crate the class carries the drawn era inside). Fixed on the fork at 89dfcb95 (the class minus its era is `V3_CLASS`, the era is drawn, another era seed keeps the program id and hashes another program over the same day cache). Re-run: job 4 |
|
||||
| `build-20261005-221237` | main d233fa1, fork 89dfcb95 | the five crates and the app | 22:12:37 to 22:15:44Z (185 s): every stage ok; kaspa-consensus-core 108 (2 ignored), igneum-exec 17, kaspa-pow 33 + 14 (the v3 engine test, with the igneum-pow feature), igneum-miner 18, kaspa-p2p-flows 7, igneum-app 78 + 26 + 8; 0 failed. With job 2, G6 is green |
|
||||
|
||||
The PC's test stage builds the fork's test binaries with the plan's feature set, so the v3 engine test DID run on PC 2 (the earlier reading that it was Mac-only is withdrawn): the PC job is the G6 evidence.
|
||||
|
||||
|
|
@ -137,7 +154,7 @@ The PC's test stage builds the fork's test binaries with the plan's feature set,
|
|||
| igneum-pow `cargo test --release` | 42 unit + 11 pack tests, including `program_classes`, `program_class_and_era_are_checked`, the pinned-pack diffs | pass (Mac, 5 Oct 2026) |
|
||||
| `proto-cuda/nvrtc/emu/packfile-test.sh` | 13 checks: the attempt rule, the generator rule, a v3 pack with its era, the token matcher | pass (Mac) |
|
||||
| `host.c`, `worker.cpp` (emulation), `main.swift` | syntax / compile | pass (Mac) |
|
||||
| fork `cargo test -p kaspa-pow --features igneum-pow` | 14 engine tests including `program_class_v3_seeds_hash_their_own_program_over_their_own_cache` (rewritten at 89dfcb95 for the era-in-class rule) | pass (Mac, fork 79bd8e10 on the pre-era crate; 89dfcb95 on the era crate: see the final report) |
|
||||
| fork `cargo test -p kaspa-pow --features igneum-pow` | 14 engine tests including `program_class_v3_seeds_hash_their_own_program_over_their_own_cache` (rewritten at 89dfcb95 for the era-in-class rule) | pass (Mac, 89dfcb95 against d233fa1; PC 2 job 4: 33 + 14) |
|
||||
| fork `cargo test -p kaspa-consensus-core` | 108 + 7: the switch rounding, the era clock, the params, digest and fast-time file tests | pass (Mac, fork 79bd8e10) |
|
||||
| PC 2 `build-job.mjs` suites | `kaspa-consensus-core igneum-exec kaspa-pow kaspa-consensus igneum-miner` + `igneum-app` | the coordinator publishes on its go |
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue