From de213c19b585d248f94e0ec6c9c04aaf1667d5c6 Mon Sep 17 00:00:00 2001 From: igneum-labs <337424239+igneum-labs@users.noreply.github.com> Date: Wed, 7 Oct 2026 20:08:49 +0000 Subject: [PATCH] fast-time, the matched pair 959b57c9 (igneumd 519ee6c4..., igneum-pow a2d333d6) under lease pool class v5: the crossing run 19:49:33Z to 20:04:00Z (the prelude reads v4 at epochs 0 and 1 on b1680b57; rung 1 by signal from epoch 6 at 19:56:38Z; class v5 by signal from epoch 8 at rung 1 at 19:58:31Z, 3 of 3, byte 6 at 9,985 bps; 11 of 11 program ids equal to the CPU verifier's; the stale node refused 122 of 122 after the first refresh; the restart step FAIL: the IBD catch-up engaged and did not complete, n2 on its own fork), the digest case PASS at 20:08:30Z (one digest c0d6998e for the v5 key absent, at never and on the 0.3.23 control 2720d8d2; the set key 8d8f6208 refused with the line in the control's log; 180 s of mixed mining, 79 new and 101 old blocks, 0 rejected, one sink at 180); the second-step check reads the rule (a step at or after the earliest allowed epoch is the rule, 12 here, decided after the window closed) Co-Authored-By: Claude Fable 5.1 --- .../fasttime/cross-959b57c9.json | 1584 +++++++++++++++++ .../fasttime/cross-959b57c9.log | 110 ++ .../fasttime/digest-959b57c9.json | 211 +++ .../fasttime/digest-959b57c9.log | 17 + infra/fast-time/class-v5-crossing.mjs | 16 +- 5 files changed, 1935 insertions(+), 3 deletions(-) create mode 100644 docs/design/class-v5-harness/fasttime/cross-959b57c9.json create mode 100644 docs/design/class-v5-harness/fasttime/cross-959b57c9.log create mode 100644 docs/design/class-v5-harness/fasttime/digest-959b57c9.json create mode 100644 docs/design/class-v5-harness/fasttime/digest-959b57c9.log diff --git a/docs/design/class-v5-harness/fasttime/cross-959b57c9.json b/docs/design/class-v5-harness/fasttime/cross-959b57c9.json new file mode 100644 index 00000000..62f45226 --- /dev/null +++ b/docs/design/class-v5-harness/fasttime/cross-959b57c9.json @@ -0,0 +1,1584 @@ +{ + "pass": false, + "case": "cross-959b57c9", + "utc": "2026-10-07T20:04:00.647Z", + "checks": { + "started_on_class_v4_at_rung_0": true, + "every_node_signals_its_byte": true, + "every_node_signals_its_ladder_bits": true, + "window_and_ladder_lines_on_every_node": true, + "v5_enabled_by_the_floor_on_every_node": true, + "chain_carries_the_bytes": true, + "cli_reproduces_the_devnet_3_genesis_id": true, + "template_stepped_to_rung_1": true, + "stepped_at_the_first_full_window_epoch": true, + "step_line_on_every_node_same_epoch": true, + "step_weakest_up_at_or_above_threshold": true, + "no_second_step": false, + "rung0_ids_equal_the_cli_rung0_id": true, + "rung1_ids_equal_the_cli_rung1_id": true, + "template_switched_to_v5": true, + "crossed_at_the_first_full_window_epoch": true, + "crossed_after_the_rung_step": true, + "crossed_before_the_floor": true, + "signal_line_on_every_honest_node_same_epoch": true, + "signal_weakest_at_or_above_threshold": true, + "byte_6_counted_exactly_on_chain": true, + "blocks_on_both_sides": true, + "v5_rides_at_rung_1": true, + "a_stream_for_every_v5_epoch": true, + "v5_ids_equal_the_cli_v5_id": true, + "v5_ids_differ_from_the_same_seed_v4_id": true, + "v5_ids_differ_from_the_rung0_v5_id": true, + "state_roots_agree_across_nodes": true, + "a_v5_epoch_per_window_refresh": true, + "zero_rejected_on_honest_nodes": true, + "zero_rejected_by_honest_miners": true, + "honest_miners_accepted_after_the_flip": true, + "sinks_agree": false, + "block_counts_agree": false, + "stale_node_refused_from_the_first_refresh": true, + "stale_node_mined_before_the_refresh": true, + "restarted_across_the_boundary": true, + "no_lock_fault_after_the_restart": true, + "restarted_node_resynced": false, + "restarted_node_ibd_not_refused": false, + "restarted_node_mines_v5_after_the_restart": true + }, + "signals": [ + 6, + 6, + 6, + 6 + ], + "ladder": [ + "up", + "up", + "up", + "up" + ], + "class_window": 60, + "ladder_window": 45, + "windows": 7, + "class_threshold_bps": 9500, + "ladder_threshold_bps": 9000, + "floor": 900, + "floor_epoch": 15, + "epoch_blocks": 60, + "lead": 10, + "first_step_epoch": 6, + "first_flip_epoch": 8, + "boundary_daa": 480, + "node": "/srv/artefacts/v5-pair-959b57c9/igneumd", + "miner": "/srv/artefacts/v5-pair-959b57c9/igneum-miner", + "pow": "/srv/builds/igneum-wt-v5-fasttime/igneum-pow/target/release/igneum-pow", + "override_keys_dropped": [], + "dn3_genesis_check": { + "seed": "4020cb4382e3fe4b", + "pack_id": "e5a4ac5978462156", + "cli_id": "e5a4ac5978462156", + "ok": true + }, + "ladder_step": { + "epoch": 6, + "daa": 360, + "rung": 1, + "reps": 35, + "at": 420.2, + "wall": 1791402998249 + }, + "class_switch": { + "epoch": 8, + "daa": 480, + "at": 533.5, + "wall": 1791403111538, + "rung": 1, + "reps": 35 + }, + "run_ended_at_s": 735.7, + "final_daa": 660, + "max_epoch_seen": 11, + "epochs": { + "0": { + "class": 4, + "rung": 0, + "reps": 27, + "firstSeenDaa": 0, + "at": 7.1, + "wall": 1791402585155, + "eraSeed": "234e082d653dc69db36d875b256d0f5f4a123b353d6aa069c3c7aa9aa6c46062", + "seed": "234e082d653dc69db36d875b256d0f5f4a123b353d6aa069c3c7aa9aa6c46062", + "v5_bps": 0, + "v5_weakest_bps": 0, + "v5_signal_epoch": null, + "up_weakest_bps": 0, + "step_epoch": 0 + }, + "1": { + "class": 4, + "rung": 0, + "reps": 27, + "firstSeenDaa": 60, + "at": 131.4, + "wall": 1791402709468, + "eraSeed": "234e082d653dc69db36d875b256d0f5f4a123b353d6aa069c3c7aa9aa6c46062", + "seed": "55eac09ae07b93fc50d1e95a831e2c9849a84ea7a655a1700e7533cc721690d5", + "v5_bps": 10000, + "v5_weakest_bps": 0, + "v5_signal_epoch": null, + "up_weakest_bps": 0, + "step_epoch": 0 + }, + "2": { + "class": 4, + "rung": 0, + "reps": 27, + "firstSeenDaa": 120, + "at": 183.6, + "wall": 1791402761624, + "eraSeed": "234e082d653dc69db36d875b256d0f5f4a123b353d6aa069c3c7aa9aa6c46062", + "seed": "cdb60950b9c5e6a16a4b3fe1ae6e5ff83276edaae69235baadda75c1121eb110", + "v5_bps": 10000, + "v5_weakest_bps": 0, + "v5_signal_epoch": null, + "up_weakest_bps": 0, + "step_epoch": 0 + }, + "3": { + "class": 4, + "rung": 0, + "reps": 27, + "firstSeenDaa": 180, + "at": 245.7, + "wall": 1791402823781, + "eraSeed": "234e082d653dc69db36d875b256d0f5f4a123b353d6aa069c3c7aa9aa6c46062", + "seed": "96dd1e0c73b01e081249a72972f079f7a535889c3a4cda665b405ac6d4489783", + "v5_bps": 10000, + "v5_weakest_bps": 0, + "v5_signal_epoch": null, + "up_weakest_bps": 0, + "step_epoch": 0 + }, + "4": { + "class": 4, + "rung": 0, + "reps": 27, + "firstSeenDaa": 240, + "at": 301.9, + "wall": 1791402879922, + "eraSeed": "234e082d653dc69db36d875b256d0f5f4a123b353d6aa069c3c7aa9aa6c46062", + "seed": "29eba3de40ec0780d3e8cb7e7d30e2c8c3bba7dd223ec12cb418f65bd687e11a", + "v5_bps": 10000, + "v5_weakest_bps": 0, + "v5_signal_epoch": null, + "up_weakest_bps": 0, + "step_epoch": 0 + }, + "5": { + "class": 4, + "rung": 0, + "reps": 27, + "firstSeenDaa": 300, + "at": 357, + "wall": 1791402935077, + "eraSeed": "234e082d653dc69db36d875b256d0f5f4a123b353d6aa069c3c7aa9aa6c46062", + "seed": "a9991e020658a88fbad426e5a017e37cbc722b6cf82f120c7303d47f80088156", + "v5_bps": 10000, + "v5_weakest_bps": 0, + "v5_signal_epoch": null, + "up_weakest_bps": 10000, + "step_epoch": 0 + }, + "6": { + "class": 4, + "rung": 1, + "reps": 35, + "firstSeenDaa": 360, + "at": 420.2, + "wall": 1791402998248, + "eraSeed": "234e082d653dc69db36d875b256d0f5f4a123b353d6aa069c3c7aa9aa6c46062", + "seed": "9be0b5cb7eecb1435561914f3e020cc1cb5246b47114898e4024bd2d347e95d7", + "v5_bps": 10000, + "v5_weakest_bps": 0, + "v5_signal_epoch": null, + "up_weakest_bps": 10000, + "step_epoch": 6 + }, + "7": { + "class": 4, + "rung": 1, + "reps": 35, + "firstSeenDaa": 420, + "at": 477.3, + "wall": 1791403055393, + "eraSeed": "234e082d653dc69db36d875b256d0f5f4a123b353d6aa069c3c7aa9aa6c46062", + "seed": "8756ff2962258e0b48923b3227534e9f88a5a2d09fdd0a85848cf66414cf5641", + "v5_bps": 10000, + "v5_weakest_bps": 10000, + "v5_signal_epoch": null, + "up_weakest_bps": 10000, + "step_epoch": 6 + }, + "8": { + "class": 5, + "rung": 1, + "reps": 35, + "firstSeenDaa": 480, + "at": 533.5, + "wall": 1791403111538, + "eraSeed": "234e082d653dc69db36d875b256d0f5f4a123b353d6aa069c3c7aa9aa6c46062", + "seed": "b9ed187e0cb7146b71fa6e92865b35fde37015ef4ec2f72667d64ba238444c25", + "v5_bps": 10000, + "v5_weakest_bps": 10000, + "v5_signal_epoch": 8, + "up_weakest_bps": 10000, + "step_epoch": 6 + }, + "9": { + "class": 5, + "rung": 1, + "reps": 35, + "firstSeenDaa": 540, + "at": 606.2, + "wall": 1791403184300, + "eraSeed": "234e082d653dc69db36d875b256d0f5f4a123b353d6aa069c3c7aa9aa6c46062", + "seed": "6f30f14060fc2634e200c87bc02911ab10c50d9e3d606a7c6ed309f98665e213", + "v5_bps": 10000, + "v5_weakest_bps": 10000, + "v5_signal_epoch": null, + "up_weakest_bps": 10000, + "step_epoch": 6 + }, + "10": { + "class": 5, + "rung": 1, + "reps": 35, + "firstSeenDaa": 600, + "at": 674.5, + "wall": 1791403252542, + "eraSeed": "234e082d653dc69db36d875b256d0f5f4a123b353d6aa069c3c7aa9aa6c46062", + "seed": "07368c240a4db82da131e8b3be475ba83422f920bd514f0a9df3cfec3efa0eb0", + "v5_bps": 10000, + "v5_weakest_bps": 10000, + "v5_signal_epoch": null, + "up_weakest_bps": 10000, + "step_epoch": 6 + }, + "11": { + "class": 5, + "rung": 1, + "reps": 35, + "firstSeenDaa": 660, + "at": 735.7, + "wall": 1791403313750, + "eraSeed": "234e082d653dc69db36d875b256d0f5f4a123b353d6aa069c3c7aa9aa6c46062", + "seed": "aefd841e35b2c478207a9282830c50abc4be2f3857200a91c87bbf51649bfb02", + "v5_bps": 10000, + "v5_weakest_bps": 10000, + "v5_signal_epoch": null, + "up_weakest_bps": 10000, + "step_epoch": 6 + } + }, + "streams": { + "0": { + "root": null, + "records": null, + "block": null, + "roots_per_node": {} + }, + "1": { + "root": "0xc50996925456ca09aa817bb5fbf748cbc0bee4b922938a9e4800b236c4fda18d", + "records": 16, + "block": "55eac09ae07b93fc50d1e95a831e2c9849a84ea7a655a1700e7533cc721690d5", + "roots_per_node": { + "0": "0xc50996925456ca09aa817bb5fbf748cbc0bee4b922938a9e4800b236c4fda18d", + "1": "0xc50996925456ca09aa817bb5fbf748cbc0bee4b922938a9e4800b236c4fda18d", + "2": "0xc50996925456ca09aa817bb5fbf748cbc0bee4b922938a9e4800b236c4fda18d" + } + }, + "2": { + "root": "0xb699642223214c8ed516a2ab591d49d7d783bc5ba7b21c898a29693e2099fe24", + "records": 17, + "block": "cdb60950b9c5e6a16a4b3fe1ae6e5ff83276edaae69235baadda75c1121eb110", + "roots_per_node": { + "0": "0xb699642223214c8ed516a2ab591d49d7d783bc5ba7b21c898a29693e2099fe24", + "1": "0xb699642223214c8ed516a2ab591d49d7d783bc5ba7b21c898a29693e2099fe24", + "2": "0xb699642223214c8ed516a2ab591d49d7d783bc5ba7b21c898a29693e2099fe24" + } + }, + "3": { + "root": "0x3500068c39eb27718fc123423ac6199ef837196a686dc958892871cf885da817", + "records": 17, + "block": "96dd1e0c73b01e081249a72972f079f7a535889c3a4cda665b405ac6d4489783", + "roots_per_node": { + "0": "0x3500068c39eb27718fc123423ac6199ef837196a686dc958892871cf885da817", + "1": "0x3500068c39eb27718fc123423ac6199ef837196a686dc958892871cf885da817", + "2": "0x3500068c39eb27718fc123423ac6199ef837196a686dc958892871cf885da817" + } + }, + "4": { + "root": "0xf25e8bcf0a604ef47c0f396414624e35aa9af99d6c071794e37d69a487597ab6", + "records": 17, + "block": "29eba3de40ec0780d3e8cb7e7d30e2c8c3bba7dd223ec12cb418f65bd687e11a", + "roots_per_node": { + "0": "0xf25e8bcf0a604ef47c0f396414624e35aa9af99d6c071794e37d69a487597ab6", + "1": "0xf25e8bcf0a604ef47c0f396414624e35aa9af99d6c071794e37d69a487597ab6", + "2": "0xf25e8bcf0a604ef47c0f396414624e35aa9af99d6c071794e37d69a487597ab6" + } + }, + "5": { + "root": "0xd087ae22d0e8b455ad50ae01a2d7b3df17142b58d953678104a18ebdea76a444", + "records": 17, + "block": "a9991e020658a88fbad426e5a017e37cbc722b6cf82f120c7303d47f80088156", + "roots_per_node": { + "0": "0xd087ae22d0e8b455ad50ae01a2d7b3df17142b58d953678104a18ebdea76a444", + "1": "0xd087ae22d0e8b455ad50ae01a2d7b3df17142b58d953678104a18ebdea76a444", + "2": "0xd087ae22d0e8b455ad50ae01a2d7b3df17142b58d953678104a18ebdea76a444" + } + }, + "6": { + "root": "0x7e38de4162ec8605fd99553cd28ea773c97f442352bd969cf2480e280a88f72b", + "records": 17, + "block": "9be0b5cb7eecb1435561914f3e020cc1cb5246b47114898e4024bd2d347e95d7", + "roots_per_node": { + "0": "0x7e38de4162ec8605fd99553cd28ea773c97f442352bd969cf2480e280a88f72b", + "1": "0x7e38de4162ec8605fd99553cd28ea773c97f442352bd969cf2480e280a88f72b", + "2": "0x7e38de4162ec8605fd99553cd28ea773c97f442352bd969cf2480e280a88f72b" + } + }, + "7": { + "root": "0x2e5d7d9ef9dfe2fc79038990a7c70dff709e211173be9f4b38a00f63ac42c0d6", + "records": 17, + "block": "8756ff2962258e0b48923b3227534e9f88a5a2d09fdd0a85848cf66414cf5641", + "roots_per_node": { + "0": "0x2e5d7d9ef9dfe2fc79038990a7c70dff709e211173be9f4b38a00f63ac42c0d6", + "1": "0x2e5d7d9ef9dfe2fc79038990a7c70dff709e211173be9f4b38a00f63ac42c0d6", + "2": "0x2e5d7d9ef9dfe2fc79038990a7c70dff709e211173be9f4b38a00f63ac42c0d6" + } + }, + "8": { + "root": "0xf2b8c858a8862f3ba9f720364d98b2ee1350ffc9ea4e318c4242632c0b1b33cc", + "records": 17, + "block": "b9ed187e0cb7146b71fa6e92865b35fde37015ef4ec2f72667d64ba238444c25", + "roots_per_node": { + "0": "0xf2b8c858a8862f3ba9f720364d98b2ee1350ffc9ea4e318c4242632c0b1b33cc", + "1": "0xf2b8c858a8862f3ba9f720364d98b2ee1350ffc9ea4e318c4242632c0b1b33cc" + } + }, + "9": { + "root": "0xedac00573b062258a3ecd2df70682bbe37358c7ad89cfcf8d1f45c23e849546a", + "records": 17, + "block": "6f30f14060fc2634e200c87bc02911ab10c50d9e3d606a7c6ed309f98665e213", + "roots_per_node": { + "0": "0xedac00573b062258a3ecd2df70682bbe37358c7ad89cfcf8d1f45c23e849546a", + "1": "0xedac00573b062258a3ecd2df70682bbe37358c7ad89cfcf8d1f45c23e849546a" + } + }, + "10": { + "root": "0x0d6f800de3e53d976445141e9666fc4a7648a18e8d01d2ee99322c0b0a826651", + "records": 17, + "block": "07368c240a4db82da131e8b3be475ba83422f920bd514f0a9df3cfec3efa0eb0", + "roots_per_node": { + "0": "0x0d6f800de3e53d976445141e9666fc4a7648a18e8d01d2ee99322c0b0a826651", + "1": "0x0d6f800de3e53d976445141e9666fc4a7648a18e8d01d2ee99322c0b0a826651" + } + }, + "11": { + "root": "0x0b289f8d0d27752cb983493400f787f8be954d5b4311e658b05e31374bd8dd88", + "records": 17, + "block": "aefd841e35b2c478207a9282830c50abc4be2f3857200a91c87bbf51649bfb02", + "roots_per_node": { + "0": "0x0b289f8d0d27752cb983493400f787f8be954d5b4311e658b05e31374bd8dd88", + "1": "0x0b289f8d0d27752cb983493400f787f8be954d5b4311e658b05e31374bd8dd88" + } + } + }, + "blocks": { + "total": 661, + "before_boundary": 482, + "after_boundary": 179, + "object_bytes": { + "0": 1, + "6": 660 + }, + "byte_6_share_bps": 9985, + "ladder_bits": { + "none": 1, + "up": 660 + }, + "up_share_bps": 9985 + }, + "program_id_rows": [ + { + "epoch": 0, + "class": "v4", + "rung": 0, + "reps": 27, + "seed": "234e082d653dc69d", + "fork": false, + "miners_id": "83dab9f31f2e2dba", + "miners": 4, + "disagree": false, + "state_root": null, + "state_records": null, + "roots_per_node": {}, + "cli": "83dab9f31f2e2dba", + "cli_other": "343287b6df5996ed" + }, + { + "epoch": 1, + "class": "v4", + "rung": 0, + "reps": 27, + "seed": "55eac09ae07b93fc", + "fork": false, + "miners_id": "3cbf563866bb3316", + "miners": 4, + "disagree": false, + "state_root": "0xc50996925456ca09aa817bb5fbf748cbc0bee4b922938a9e4800b236c4fda18d", + "state_records": 16, + "roots_per_node": { + "0": "0xc50996925456ca09aa817bb5fbf748cbc0bee4b922938a9e4800b236c4fda18d", + "1": "0xc50996925456ca09aa817bb5fbf748cbc0bee4b922938a9e4800b236c4fda18d", + "2": "0xc50996925456ca09aa817bb5fbf748cbc0bee4b922938a9e4800b236c4fda18d" + }, + "cli": "3cbf563866bb3316", + "cli_other": "7af70c3151ab260d" + }, + { + "epoch": 2, + "class": "v4", + "rung": 0, + "reps": 27, + "seed": "cdb60950b9c5e6a1", + "fork": false, + "miners_id": "c4ec135fbc86e2f1", + "miners": 4, + "disagree": false, + "state_root": "0xb699642223214c8ed516a2ab591d49d7d783bc5ba7b21c898a29693e2099fe24", + "state_records": 17, + "roots_per_node": { + "0": "0xb699642223214c8ed516a2ab591d49d7d783bc5ba7b21c898a29693e2099fe24", + "1": "0xb699642223214c8ed516a2ab591d49d7d783bc5ba7b21c898a29693e2099fe24", + "2": "0xb699642223214c8ed516a2ab591d49d7d783bc5ba7b21c898a29693e2099fe24" + }, + "cli": "c4ec135fbc86e2f1", + "cli_other": "ee0af0ecb275dc7c" + }, + { + "epoch": 3, + "class": "v4", + "rung": 0, + "reps": 27, + "seed": "96dd1e0c73b01e08", + "fork": false, + "miners_id": "32ee239049ca6a99", + "miners": 4, + "disagree": false, + "state_root": "0x3500068c39eb27718fc123423ac6199ef837196a686dc958892871cf885da817", + "state_records": 17, + "roots_per_node": { + "0": "0x3500068c39eb27718fc123423ac6199ef837196a686dc958892871cf885da817", + "1": "0x3500068c39eb27718fc123423ac6199ef837196a686dc958892871cf885da817", + "2": "0x3500068c39eb27718fc123423ac6199ef837196a686dc958892871cf885da817" + }, + "cli": "32ee239049ca6a99", + "cli_other": "768cd3fa3def1df8" + }, + { + "epoch": 4, + "class": "v4", + "rung": 0, + "reps": 27, + "seed": "29eba3de40ec0780", + "fork": false, + "miners_id": "bc97414b048ca586", + "miners": 4, + "disagree": false, + "state_root": "0xf25e8bcf0a604ef47c0f396414624e35aa9af99d6c071794e37d69a487597ab6", + "state_records": 17, + "roots_per_node": { + "0": "0xf25e8bcf0a604ef47c0f396414624e35aa9af99d6c071794e37d69a487597ab6", + "1": "0xf25e8bcf0a604ef47c0f396414624e35aa9af99d6c071794e37d69a487597ab6", + "2": "0xf25e8bcf0a604ef47c0f396414624e35aa9af99d6c071794e37d69a487597ab6" + }, + "cli": "bc97414b048ca586", + "cli_other": "a5d0b7f5edf49b05" + }, + { + "epoch": 5, + "class": "v4", + "rung": 0, + "reps": 27, + "seed": "a9991e020658a88f", + "fork": false, + "miners_id": "b74ddd44bfff8bfe", + "miners": 4, + "disagree": false, + "state_root": "0xd087ae22d0e8b455ad50ae01a2d7b3df17142b58d953678104a18ebdea76a444", + "state_records": 17, + "roots_per_node": { + "0": "0xd087ae22d0e8b455ad50ae01a2d7b3df17142b58d953678104a18ebdea76a444", + "1": "0xd087ae22d0e8b455ad50ae01a2d7b3df17142b58d953678104a18ebdea76a444", + "2": "0xd087ae22d0e8b455ad50ae01a2d7b3df17142b58d953678104a18ebdea76a444" + }, + "cli": "b74ddd44bfff8bfe", + "cli_other": "a6e0441569dec4b5" + }, + { + "epoch": 6, + "class": "v4", + "rung": 1, + "reps": 35, + "seed": "9be0b5cb7eecb143", + "fork": false, + "miners_id": "5e2a827244c1859e", + "miners": 4, + "disagree": false, + "state_root": "0x7e38de4162ec8605fd99553cd28ea773c97f442352bd969cf2480e280a88f72b", + "state_records": 17, + "roots_per_node": { + "0": "0x7e38de4162ec8605fd99553cd28ea773c97f442352bd969cf2480e280a88f72b", + "1": "0x7e38de4162ec8605fd99553cd28ea773c97f442352bd969cf2480e280a88f72b", + "2": "0x7e38de4162ec8605fd99553cd28ea773c97f442352bd969cf2480e280a88f72b" + }, + "cli": "5e2a827244c1859e", + "cli_other": "eb381d87a22e1df7" + }, + { + "epoch": 7, + "class": "v4", + "rung": 1, + "reps": 35, + "seed": "8756ff2962258e0b", + "fork": false, + "miners_id": "c3b2c851dfbc952e", + "miners": 4, + "disagree": false, + "state_root": "0x2e5d7d9ef9dfe2fc79038990a7c70dff709e211173be9f4b38a00f63ac42c0d6", + "state_records": 17, + "roots_per_node": { + "0": "0x2e5d7d9ef9dfe2fc79038990a7c70dff709e211173be9f4b38a00f63ac42c0d6", + "1": "0x2e5d7d9ef9dfe2fc79038990a7c70dff709e211173be9f4b38a00f63ac42c0d6", + "2": "0x2e5d7d9ef9dfe2fc79038990a7c70dff709e211173be9f4b38a00f63ac42c0d6" + }, + "cli": "c3b2c851dfbc952e", + "cli_other": "87d8e6f688d81057" + }, + { + "epoch": 8, + "class": "v5", + "rung": 1, + "reps": 35, + "seed": "b9ed187e0cb7146b", + "fork": false, + "miners_id": "2464501581ec715c", + "miners": 3, + "disagree": false, + "state_root": "0xf2b8c858a8862f3ba9f720364d98b2ee1350ffc9ea4e318c4242632c0b1b33cc", + "state_records": 17, + "roots_per_node": { + "0": "0xf2b8c858a8862f3ba9f720364d98b2ee1350ffc9ea4e318c4242632c0b1b33cc", + "1": "0xf2b8c858a8862f3ba9f720364d98b2ee1350ffc9ea4e318c4242632c0b1b33cc" + }, + "cli": "2464501581ec715c", + "cli_other": "bb9c1a674cb5444d", + "cli_rung0": "fc32095d4e3655c7" + }, + { + "epoch": 8, + "class": "v5", + "rung": 1, + "reps": 35, + "seed": "944e9ac09748d833", + "fork": true, + "miners_id": "90a3bf44d3005e67", + "miners": 1, + "disagree": false, + "state_root": null, + "state_records": null, + "roots_per_node": {}, + "cli": null, + "cli_other": "e09c8f37fcc0881e", + "cli_rung0": "80e3377797844c86" + }, + { + "epoch": 9, + "class": "v5", + "rung": 1, + "reps": 35, + "seed": "6f30f14060fc2634", + "fork": false, + "miners_id": "e61766ee9de1f94f", + "miners": 3, + "disagree": false, + "state_root": "0xedac00573b062258a3ecd2df70682bbe37358c7ad89cfcf8d1f45c23e849546a", + "state_records": 17, + "roots_per_node": { + "0": "0xedac00573b062258a3ecd2df70682bbe37358c7ad89cfcf8d1f45c23e849546a", + "1": "0xedac00573b062258a3ecd2df70682bbe37358c7ad89cfcf8d1f45c23e849546a" + }, + "cli": "e61766ee9de1f94f", + "cli_other": "a4c43b8005e7c626", + "cli_rung0": "761e0ccfa1dccc96" + }, + { + "epoch": 9, + "class": "v5", + "rung": 1, + "reps": 35, + "seed": "53cbfef14968885f", + "fork": true, + "miners_id": "c123c3517b20ec12", + "miners": 1, + "disagree": false, + "state_root": null, + "state_records": null, + "roots_per_node": {}, + "cli": null, + "cli_other": "f388cb162d733657", + "cli_rung0": "dee064a86a7148a1" + }, + { + "epoch": 10, + "class": "v5", + "rung": 1, + "reps": 35, + "seed": "07368c240a4db82d", + "fork": false, + "miners_id": "8333379b25760be3", + "miners": 3, + "disagree": false, + "state_root": "0x0d6f800de3e53d976445141e9666fc4a7648a18e8d01d2ee99322c0b0a826651", + "state_records": 17, + "roots_per_node": { + "0": "0x0d6f800de3e53d976445141e9666fc4a7648a18e8d01d2ee99322c0b0a826651", + "1": "0x0d6f800de3e53d976445141e9666fc4a7648a18e8d01d2ee99322c0b0a826651" + }, + "cli": "8333379b25760be3", + "cli_other": "92efb3a1eee7c20e", + "cli_rung0": "077ced8242cf3536" + }, + { + "epoch": 11, + "class": "v5", + "rung": 1, + "reps": 35, + "seed": "aefd841e35b2c478", + "fork": false, + "miners_id": "7e8f6b46d1b701c7", + "miners": 2, + "disagree": false, + "state_root": "0x0b289f8d0d27752cb983493400f787f8be954d5b4311e658b05e31374bd8dd88", + "state_records": 17, + "roots_per_node": { + "0": "0x0b289f8d0d27752cb983493400f787f8be954d5b4311e658b05e31374bd8dd88", + "1": "0x0b289f8d0d27752cb983493400f787f8be954d5b4311e658b05e31374bd8dd88" + }, + "cli": "7e8f6b46d1b701c7", + "cli_other": "d043e4b7d0f6c646", + "cli_rung0": "66520aafa84ece52" + } + ], + "fork_rows": 2, + "miners_expected_on_a_row": 2, + "accepted_per_miner": [ + 261, + 249, + 378, + 155 + ], + "accepted_after_flip_per_miner": [ + 134, + 140, + 266, + 23 + ], + "rejected_by_miners": [ + 0, + 0, + 0, + 121 + ], + "submit_timeouts_per_miner": [ + 3, + 1, + 0, + 1 + ], + "rejected_by_nodes": [ + 0, + 0, + 0, + 122 + ], + "stale": { + "node": 3, + "accepted_total": 155, + "accepted_after_first_refresh": 0, + "old_template_blocks_after_refresh": 1, + "rejected_by_its_node": 122, + "rejected_lines": 121, + "first_refresh_epoch": 9 + }, + "restart": { + "node": 2, + "stopped": { + "daa": 457, + "at": 512.4, + "wall": 1791403090497 + }, + "started": { + "daa": 500, + "at": 572.1, + "wall": 1791403150131 + }, + "resynced": null, + "lock_fault_lines": [], + "ibd_refusal_lines": 2, + "ibd_refusal_example": "IBD: the last class v5 header chunk waits for this node's execution state (Igneum: proof-of-work check refused, class v5 needs the execution state after the epoch's seed block b9ed187e0cb7146b71fa6e92865b35fde37015ef4ec2f72667d64ba238444c25 (day 1244029): no published state stream after chain block ", + "accepted_after_restart": 266, + "rejected_by_its_node": 0 + }, + "sinks": [ + "80c450eaaaa0df91", + "80c450eaaaa0df91", + "50f0153baca29b7c", + "80c450eaaaa0df91" + ], + "block_counts": [ + 660, + 660, + 600, + 660 + ], + "step_lines": [ + [ + "Latency ladder step by miner signal: epoch 6 moves to rung 1 (35 shadow passes, from rung 0): up in each of 7 consecutive windows of 45 DAA ending at seed block 9be0b5cb7eecb1435561914f3e020cc1cb5246b47114898e4024bd2d347e95d7, threshold 9000 bps of blue blocks, weakest up 10000 bps, weakest down 0 b", + "Latency ladder step by miner signal: epoch 12 moves to rung 2 (53 shadow passes, from rung 1): up in each of 7 consecutive windows of 45 DAA ending at seed block 5347a838dd1f426dbbd5b0cb71399062219ea19a57c8285ba11ed99beefab0b5, threshold 9000 bps of blue blocks, weakest up 10000 bps, weakest down 0 " + ], + [ + "Latency ladder step by miner signal: epoch 6 moves to rung 1 (35 shadow passes, from rung 0): up in each of 7 consecutive windows of 45 DAA ending at seed block 9be0b5cb7eecb1435561914f3e020cc1cb5246b47114898e4024bd2d347e95d7, threshold 9000 bps of blue blocks, weakest up 10000 bps, weakest down 0 b", + "Latency ladder step by miner signal: epoch 12 moves to rung 2 (53 shadow passes, from rung 1): up in each of 7 consecutive windows of 45 DAA ending at seed block 5347a838dd1f426dbbd5b0cb71399062219ea19a57c8285ba11ed99beefab0b5, threshold 9000 bps of blue blocks, weakest up 10000 bps, weakest down 0 " + ], + [ + "Latency ladder step by miner signal: epoch 6 moves to rung 1 (35 shadow passes, from rung 0): up in each of 7 consecutive windows of 45 DAA ending at seed block 9be0b5cb7eecb1435561914f3e020cc1cb5246b47114898e4024bd2d347e95d7, threshold 9000 bps of blue blocks, weakest up 10000 bps, weakest down 0 b", + "Latency ladder step by miner signal: epoch 6 moves to rung 1 (35 shadow passes, from rung 0): up in each of 7 consecutive windows of 45 DAA ending at seed block 9be0b5cb7eecb1435561914f3e020cc1cb5246b47114898e4024bd2d347e95d7, threshold 9000 bps of blue blocks, weakest up 10000 bps, weakest down 0 b", + "Latency ladder step by miner signal: epoch 12 moves to rung 2 (53 shadow passes, from rung 1): up in each of 7 consecutive windows of 45 DAA ending at seed block 076a00aac8eef2860a402bcd3e94410ddd1c6aeb89662cb353b7e1fa337001f5, threshold 9000 bps of blue blocks, weakest up 10000 bps, weakest down 0 " + ], + [ + "Latency ladder step by miner signal: epoch 6 moves to rung 1 (35 shadow passes, from rung 0): up in each of 7 consecutive windows of 45 DAA ending at seed block 9be0b5cb7eecb1435561914f3e020cc1cb5246b47114898e4024bd2d347e95d7, threshold 9000 bps of blue blocks, weakest up 10000 bps, weakest down 0 b", + "Latency ladder step by miner signal: epoch 12 moves to rung 2 (53 shadow passes, from rung 1): up in each of 7 consecutive windows of 45 DAA ending at seed block 5347a838dd1f426dbbd5b0cb71399062219ea19a57c8285ba11ed99beefab0b5, threshold 9000 bps of blue blocks, weakest up 10000 bps, weakest down 0 " + ] + ], + "signal_lines": [ + [ + "Program class v5 by miner signal: epoch 8 (share 10000 bps at byte 6 over 60 DAA ending at seed block b9ed187e0cb7146b71fa6e92865b35fde37015ef4ec2f72667d64ba238444c25, threshold 9500 bps in each of 7 consecutive windows, weakest 10000 bps, shares oldest first [10000, 10000, 10000, 10000, 10000, 1000" + ], + [ + "Program class v5 by miner signal: epoch 8 (share 10000 bps at byte 6 over 60 DAA ending at seed block b9ed187e0cb7146b71fa6e92865b35fde37015ef4ec2f72667d64ba238444c25, threshold 9500 bps in each of 7 consecutive windows, weakest 10000 bps, shares oldest first [10000, 10000, 10000, 10000, 10000, 1000" + ], + [ + "Program class v5 by miner signal: epoch 8 (share 10000 bps at byte 6 over 60 DAA ending at seed block b9ed187e0cb7146b71fa6e92865b35fde37015ef4ec2f72667d64ba238444c25, threshold 9500 bps in each of 7 consecutive windows, weakest 10000 bps, shares oldest first [10000, 10000, 10000, 10000, 10000, 1000", + "Program class v5 by miner signal: epoch 8 (share 10000 bps at byte 6 over 60 DAA ending at seed block b9ed187e0cb7146b71fa6e92865b35fde37015ef4ec2f72667d64ba238444c25, threshold 9500 bps in each of 7 consecutive windows, weakest 10000 bps, shares oldest first [10000, 10000, 10000, 10000, 10000, 1000", + "Program class v5 by miner signal: epoch 8 (share 10000 bps at byte 6 over 60 DAA ending at seed block b9ed187e0cb7146b71fa6e92865b35fde37015ef4ec2f72667d64ba238444c25, threshold 9500 bps in each of 7 consecutive windows, weakest 10000 bps, shares oldest first [10000, 10000, 10000, 10000, 10000, 1000", + "Program class v5 by miner signal: epoch 8 (share 10000 bps at byte 6 over 60 DAA ending at seed block 944e9ac09748d8333b14ab7d9d1b62feff638c57bf24565fff7888110fd39284, threshold 9500 bps in each of 7 consecutive windows, weakest 10000 bps, shares oldest first [10000, 10000, 10000, 10000, 10000, 1000" + ], + [ + "Program class v5 by miner signal: epoch 8 (share 10000 bps at byte 6 over 60 DAA ending at seed block b9ed187e0cb7146b71fa6e92865b35fde37015ef4ec2f72667d64ba238444c25, threshold 9500 bps in each of 7 consecutive windows, weakest 10000 bps, shares oldest first [10000, 10000, 10000, 10000, 10000, 1000" + ] + ], + "floor_lines": [ + "Program class v5 from the override file: enabled, the floor at epoch 15 (DAA score 900 rounded up to the epoch boundary at 900); the class v5 signal (byte 6, 9500 bps in each of 7 consecutive windows) can flip v4 to v5 before it; every item of the dataset is keyed by the execution state after the epoch's seed block", + "Program class v5 from the override file: enabled, the floor at epoch 15 (DAA score 900 rounded up to the epoch boundary at 900); the class v5 signal (byte 6, 9500 bps in each of 7 consecutive windows) can flip v4 to v5 before it; every item of the dataset is keyed by the execution state after the epoch's seed block", + "Program class v5 from the override file: enabled, the floor at epoch 15 (DAA score 900 rounded up to the epoch boundary at 900); the class v5 signal (byte 6, 9500 bps in each of 7 consecutive windows) can flip v4 to v5 before it; every item of the dataset is keyed by the execution state after the epoch's seed block", + "Program class v5 from the override file: enabled, the floor at epoch 15 (DAA score 900 rounded up to the epoch boundary at 900); the class v5 signal (byte 6, 9500 bps in each of 7 consecutive windows) can flip v4 to v5 before it; every item of the dataset is keyed by the execution state after the epoch's seed block" + ], + "samples": [ + { + "t": 7.1, + "daa": 0, + "epoch": 0, + "class": 4, + "rung": 0, + "v5_bps": 0, + "v5_weakest_bps": 0, + "up_weakest_bps": 0, + "nodes": [ + "0/234e082d", + "0/234e082d", + "0/234e082d", + "0/234e082d" + ] + }, + { + "t": 22.2, + "daa": 2, + "epoch": 0, + "class": 4, + "rung": 0, + "v5_bps": 0, + "v5_weakest_bps": 0, + "up_weakest_bps": 0, + "nodes": [ + "2/e99754f8", + "0/234e082d", + "0/234e082d", + "2/e99754f8" + ] + }, + { + "t": 37.2, + "daa": 4, + "epoch": 0, + "class": 4, + "rung": 0, + "v5_bps": 10000, + "v5_weakest_bps": 0, + "up_weakest_bps": 0, + "nodes": [ + "4/cb5915f7", + "4/cb5915f7", + "4/cb5915f7", + "4/cb5915f7" + ] + }, + { + "t": 52.2, + "daa": 5, + "epoch": 0, + "class": 4, + "rung": 0, + "v5_bps": 10000, + "v5_weakest_bps": 0, + "up_weakest_bps": 0, + "nodes": [ + "5/c01581e7", + "5/c01581e7", + "5/c01581e7", + "5/c01581e7" + ] + }, + { + "t": 67.3, + "daa": 9, + "epoch": 0, + "class": 4, + "rung": 0, + "v5_bps": 10000, + "v5_weakest_bps": 0, + "up_weakest_bps": 0, + "nodes": [ + "9/5438fb76", + "9/5438fb76", + "9/5438fb76", + "9/5438fb76" + ] + }, + { + "t": 82.3, + "daa": 13, + "epoch": 0, + "class": 4, + "rung": 0, + "v5_bps": 10000, + "v5_weakest_bps": 0, + "up_weakest_bps": 0, + "nodes": [ + "13/a834a02d", + "13/a834a02d", + "13/a834a02d", + "13/a834a02d" + ] + }, + { + "t": 97.3, + "daa": 18, + "epoch": 0, + "class": 4, + "rung": 0, + "v5_bps": 10000, + "v5_weakest_bps": 0, + "up_weakest_bps": 0, + "nodes": [ + "18/db511010", + "18/db511010", + "18/db511010", + "18/db511010" + ] + }, + { + "t": 112.4, + "daa": 29, + "epoch": 0, + "class": 4, + "rung": 0, + "v5_bps": 10000, + "v5_weakest_bps": 0, + "up_weakest_bps": 0, + "nodes": [ + "29/d7e5a340", + "29/d7e5a340", + "29/d7e5a340", + "29/d7e5a340" + ] + }, + { + "t": 127.4, + "daa": 51, + "epoch": 0, + "class": 4, + "rung": 0, + "v5_bps": 10000, + "v5_weakest_bps": 0, + "up_weakest_bps": 0, + "nodes": [ + "51/4a5a7d41", + "51/4a5a7d41", + "51/4a5a7d41", + "51/4a5a7d41" + ] + }, + { + "t": 142.5, + "daa": 66, + "epoch": 1, + "class": 4, + "rung": 0, + "v5_bps": 10000, + "v5_weakest_bps": 0, + "up_weakest_bps": 0, + "nodes": [ + "66/76d59f07", + "66/76d59f07", + "62/96473f19", + "66/76d59f07" + ] + }, + { + "t": 157.5, + "daa": 87, + "epoch": 1, + "class": 4, + "rung": 0, + "v5_bps": 10000, + "v5_weakest_bps": 0, + "up_weakest_bps": 0, + "nodes": [ + "87/47ba8d0b", + "87/47ba8d0b", + "87/47ba8d0b", + "87/47ba8d0b" + ] + }, + { + "t": 172.5, + "daa": 104, + "epoch": 1, + "class": 4, + "rung": 0, + "v5_bps": 10000, + "v5_weakest_bps": 0, + "up_weakest_bps": 0, + "nodes": [ + "104/9e63ed99", + "104/9e63ed99", + "104/9e63ed99", + "104/9e63ed99" + ] + }, + { + "t": 187.6, + "daa": 120, + "epoch": 2, + "class": 4, + "rung": 0, + "v5_bps": 10000, + "v5_weakest_bps": 0, + "up_weakest_bps": 0, + "nodes": [ + "120/efb37b2d", + "120/efb37b2d", + "120/efb37b2d", + "120/efb37b2d" + ] + }, + { + "t": 202.6, + "daa": 142, + "epoch": 2, + "class": 4, + "rung": 0, + "v5_bps": 10000, + "v5_weakest_bps": 0, + "up_weakest_bps": 0, + "nodes": [ + "142/92c4f2ef", + "142/92c4f2ef", + "142/92c4f2ef", + "142/92c4f2ef" + ] + }, + { + "t": 217.6, + "daa": 156, + "epoch": 2, + "class": 4, + "rung": 0, + "v5_bps": 10000, + "v5_weakest_bps": 0, + "up_weakest_bps": 0, + "nodes": [ + "156/a7564db3", + "156/a7564db3", + "156/a7564db3", + "156/a7564db3" + ] + }, + { + "t": 232.7, + "daa": 170, + "epoch": 2, + "class": 4, + "rung": 0, + "v5_bps": 10000, + "v5_weakest_bps": 0, + "up_weakest_bps": 0, + "nodes": [ + "170/96dd1e0c", + "170/96dd1e0c", + "170/96dd1e0c", + "170/96dd1e0c" + ] + }, + { + "t": 247.7, + "daa": 180, + "epoch": 3, + "class": 4, + "rung": 0, + "v5_bps": 10000, + "v5_weakest_bps": 0, + "up_weakest_bps": 0, + "nodes": [ + "180/e87914d8", + "180/e87914d8", + "180/e87914d8", + "180/e87914d8" + ] + }, + { + "t": 262.8, + "daa": 197, + "epoch": 3, + "class": 4, + "rung": 0, + "v5_bps": 10000, + "v5_weakest_bps": 0, + "up_weakest_bps": 0, + "nodes": [ + "197/5e2c33bd", + "197/5e2c33bd", + "197/5e2c33bd", + "197/5e2c33bd" + ] + }, + { + "t": 277.8, + "daa": 216, + "epoch": 3, + "class": 4, + "rung": 0, + "v5_bps": 10000, + "v5_weakest_bps": 0, + "up_weakest_bps": 0, + "nodes": [ + "216/3339ba39", + "216/3339ba39", + "216/3339ba39", + "216/3339ba39" + ] + }, + { + "t": 292.8, + "daa": 232, + "epoch": 3, + "class": 4, + "rung": 0, + "v5_bps": 10000, + "v5_weakest_bps": 0, + "up_weakest_bps": 0, + "nodes": [ + "232/05f58252", + "232/05f58252", + "232/05f58252", + "232/05f58252" + ] + }, + { + "t": 307.9, + "daa": 242, + "epoch": 4, + "class": 4, + "rung": 0, + "v5_bps": 10000, + "v5_weakest_bps": 0, + "up_weakest_bps": 0, + "nodes": [ + "242/e46923dd", + "242/e46923dd", + "242/e46923dd", + "242/e46923dd" + ] + }, + { + "t": 322.9, + "daa": 260, + "epoch": 4, + "class": 4, + "rung": 0, + "v5_bps": 10000, + "v5_weakest_bps": 0, + "up_weakest_bps": 0, + "nodes": [ + "260/8164be22", + "260/8164be22", + "260/8164be22", + "260/8164be22" + ] + }, + { + "t": 338, + "daa": 275, + "epoch": 4, + "class": 4, + "rung": 0, + "v5_bps": 10000, + "v5_weakest_bps": 0, + "up_weakest_bps": 10000, + "nodes": [ + "275/7bdb9e2e", + "275/7bdb9e2e", + "275/7bdb9e2e", + "275/7bdb9e2e" + ] + }, + { + "t": 353, + "daa": 296, + "epoch": 4, + "class": 4, + "rung": 0, + "v5_bps": 10000, + "v5_weakest_bps": 0, + "up_weakest_bps": 10000, + "nodes": [ + "296/b1724f2c", + "296/b1724f2c", + "296/b1724f2c", + "296/b1724f2c" + ] + }, + { + "t": 368, + "daa": 303, + "epoch": 5, + "class": 4, + "rung": 0, + "v5_bps": 10000, + "v5_weakest_bps": 0, + "up_weakest_bps": 10000, + "nodes": [ + "303/fb3b9bb5", + "304/52581858", + "305/29ff4e8c", + "303/fb3b9bb5" + ] + }, + { + "t": 383.1, + "daa": 320, + "epoch": 5, + "class": 4, + "rung": 0, + "v5_bps": 10000, + "v5_weakest_bps": 0, + "up_weakest_bps": 10000, + "nodes": [ + "320/29420389", + "320/29420389", + "320/29420389", + "320/29420389" + ] + }, + { + "t": 398.1, + "daa": 335, + "epoch": 5, + "class": 4, + "rung": 0, + "v5_bps": 10000, + "v5_weakest_bps": 0, + "up_weakest_bps": 10000, + "nodes": [ + "335/86733d38", + "335/86733d38", + "335/86733d38", + "335/86733d38" + ] + }, + { + "t": 413.2, + "daa": 353, + "epoch": 5, + "class": 4, + "rung": 0, + "v5_bps": 10000, + "v5_weakest_bps": 0, + "up_weakest_bps": 10000, + "nodes": [ + "353/a5d5489d", + "353/a5d5489d", + "353/a5d5489d", + "353/a5d5489d" + ] + }, + { + "t": 428.2, + "daa": 363, + "epoch": 6, + "class": 4, + "rung": 1, + "v5_bps": 10000, + "v5_weakest_bps": 0, + "up_weakest_bps": 10000, + "nodes": [ + "363/952dc9df", + "363/952dc9df", + "363/952dc9df", + "363/952dc9df" + ] + }, + { + "t": 443.2, + "daa": 381, + "epoch": 6, + "class": 4, + "rung": 1, + "v5_bps": 10000, + "v5_weakest_bps": 10000, + "up_weakest_bps": 10000, + "nodes": [ + "381/e2c596a8", + "381/e2c596a8", + "381/e2c596a8", + "381/e2c596a8" + ] + }, + { + "t": 458.3, + "daa": 395, + "epoch": 6, + "class": 4, + "rung": 1, + "v5_bps": 10000, + "v5_weakest_bps": 10000, + "up_weakest_bps": 10000, + "nodes": [ + "395/64f05f82", + "395/64f05f82", + "395/64f05f82", + "395/64f05f82" + ] + }, + { + "t": 473.3, + "daa": 415, + "epoch": 6, + "class": 4, + "rung": 1, + "v5_bps": 10000, + "v5_weakest_bps": 10000, + "up_weakest_bps": 10000, + "nodes": [ + "415/41c3d2b7", + "415/41c3d2b7", + "415/41c3d2b7", + "415/41c3d2b7" + ] + }, + { + "t": 488.4, + "daa": 422, + "epoch": 7, + "class": 4, + "rung": 1, + "v5_bps": 10000, + "v5_weakest_bps": 10000, + "up_weakest_bps": 10000, + "nodes": [ + "422/ef21940b", + "422/ef21940b", + "422/ef21940b", + "422/ef21940b" + ] + }, + { + "t": 503.4, + "daa": 436, + "epoch": 7, + "class": 4, + "rung": 1, + "v5_bps": 10000, + "v5_weakest_bps": 10000, + "up_weakest_bps": 10000, + "nodes": [ + "436/f959ec8a", + "436/f959ec8a", + "436/f959ec8a", + "436/f959ec8a" + ] + }, + { + "t": 518.4, + "daa": 465, + "epoch": 7, + "class": 4, + "rung": 1, + "v5_bps": 10000, + "v5_weakest_bps": 10000, + "up_weakest_bps": 10000, + "nodes": [ + "465/036375dd", + "465/036375dd", + "down", + "465/036375dd" + ] + }, + { + "t": 533.5, + "daa": 480, + "epoch": 8, + "class": 5, + "rung": 1, + "v5_bps": 10000, + "v5_weakest_bps": 10000, + "up_weakest_bps": 10000, + "nodes": [ + "480/91d08984", + "480/91d08984", + "down", + "480/91d08984" + ] + }, + { + "t": 548.5, + "daa": 481, + "epoch": 8, + "class": 5, + "rung": 1, + "v5_bps": 10000, + "v5_weakest_bps": 10000, + "up_weakest_bps": 10000, + "nodes": [ + "481/91d08984", + "481/91d08984", + "down", + "481/91d08984" + ] + }, + { + "t": 563.5, + "daa": 488, + "epoch": 8, + "class": 5, + "rung": 1, + "v5_bps": 10000, + "v5_weakest_bps": 10000, + "up_weakest_bps": 10000, + "nodes": [ + "488/532e881b", + "488/532e881b", + "down", + "488/532e881b" + ] + }, + { + "t": 579.1, + "daa": 511, + "epoch": 8, + "class": 5, + "rung": 1, + "v5_bps": 10000, + "v5_weakest_bps": 10000, + "up_weakest_bps": 10000, + "nodes": [ + "511/88a31e60", + "511/88a31e60", + "457/0acb1c28", + "511/88a31e60" + ] + }, + { + "t": 594.2, + "daa": 529, + "epoch": 8, + "class": 5, + "rung": 1, + "v5_bps": 10000, + "v5_weakest_bps": 10000, + "up_weakest_bps": 10000, + "nodes": [ + "529/e3db87bc", + "530/6f30f140", + "461/9b93e5c9", + "529/e3db87bc" + ] + }, + { + "t": 609.2, + "daa": 540, + "epoch": 9, + "class": 5, + "rung": 1, + "v5_bps": 10000, + "v5_weakest_bps": 10000, + "up_weakest_bps": 10000, + "nodes": [ + "540/4ca81d09", + "540/4ca81d09", + "480/ea12bf2e", + "540/4ca81d09" + ] + }, + { + "t": 624.3, + "daa": 548, + "epoch": 9, + "class": 5, + "rung": 1, + "v5_bps": 10000, + "v5_weakest_bps": 10000, + "up_weakest_bps": 10000, + "nodes": [ + "548/4f6b6a33", + "548/4f6b6a33", + "482/9fb3e5a2", + "548/4f6b6a33" + ] + }, + { + "t": 639.3, + "daa": 554, + "epoch": 9, + "class": 5, + "rung": 1, + "v5_bps": 10000, + "v5_weakest_bps": 10000, + "up_weakest_bps": 10000, + "nodes": [ + "554/e04e96b5", + "554/e04e96b5", + "488/1d2c1f93", + "550/ea079477" + ] + }, + { + "t": 654.4, + "daa": 570, + "epoch": 9, + "class": 5, + "rung": 1, + "v5_bps": 10000, + "v5_weakest_bps": 10000, + "up_weakest_bps": 10000, + "nodes": [ + "570/0455cd08", + "570/0455cd08", + "511/35112c79", + "570/0455cd08" + ] + }, + { + "t": 669.5, + "daa": 597, + "epoch": 9, + "class": 5, + "rung": 1, + "v5_bps": 10000, + "v5_weakest_bps": 10000, + "up_weakest_bps": 10000, + "nodes": [ + "597/ac7a725e", + "597/ac7a725e", + "531/1b87a5b5", + "597/ac7a725e" + ] + }, + { + "t": 684.5, + "daa": 601, + "epoch": 10, + "class": 5, + "rung": 1, + "v5_bps": 10000, + "v5_weakest_bps": 10000, + "up_weakest_bps": 10000, + "nodes": [ + "601/df4387e3", + "601/df4387e3", + "540/0986ca89", + "601/df4387e3" + ] + }, + { + "t": 699.6, + "daa": 619, + "epoch": 10, + "class": 5, + "rung": 1, + "v5_bps": 10000, + "v5_weakest_bps": 10000, + "up_weakest_bps": 10000, + "nodes": [ + "619/428a251c", + "619/428a251c", + "557/c4befbea", + "619/428a251c" + ] + }, + { + "t": 714.6, + "daa": 641, + "epoch": 10, + "class": 5, + "rung": 1, + "v5_bps": 10000, + "v5_weakest_bps": 10000, + "up_weakest_bps": 10000, + "nodes": [ + "641/a690bd01", + "641/a690bd01", + "575/b2ef6a56", + "641/a690bd01" + ] + }, + { + "t": 729.7, + "daa": 658, + "epoch": 10, + "class": 5, + "rung": 1, + "v5_bps": 10000, + "v5_weakest_bps": 10000, + "up_weakest_bps": 10000, + "nodes": [ + "658/94c6d918", + "658/94c6d918", + "594/362ab829", + "658/94c6d918" + ] + } + ] +} \ No newline at end of file diff --git a/docs/design/class-v5-harness/fasttime/cross-959b57c9.log b/docs/design/class-v5-harness/fasttime/cross-959b57c9.log new file mode 100644 index 00000000..d64cf2fd --- /dev/null +++ b/docs/design/class-v5-harness/fasttime/cross-959b57c9.log @@ -0,0 +1,110 @@ +19:49:33.798 override: every key known to the binary +19:49:33.800 case cross-959b57c9: 4 nodes, bytes 6/6/6/6, ladder up/up/up/up; class v4 sub-version 3 from genesis at rung 0; class window 60 DAA x 7 (the first epoch that can cross to v5 is 8, DAA 480), ladder window 45 DAA x 7 (the first epoch that can step is 6, DAA 360); v5 floor 900 (epoch 15); stale node 3; restart node 2 (stop at DAA 455, start at 500); 60 DAA per epoch, lead 10; run 960 s or 11 epochs; node /srv/artefacts/v5-pair-959b57c9/igneumd +19:49:38.066 CPU verifier on the Devnet 3 genesis pack: cli e5a4ac5978462156 pack e5a4ac5978462156 expected e5a4ac5978462156: OK +19:49:39.617 n0 up pid 1481638 json 29862 p2p 29861 exec 29863, byte 6, ladder up +19:49:41.127 n1 up pid 1482006 json 29872 p2p 29871 exec 29873, byte 6, ladder up +19:49:42.631 n2 up pid 1482205 json 29882 p2p 29881 exec 29883, byte 6, ladder up +19:49:44.138 n3 up pid 1482548 json 29892 p2p 29891 exec 29893, byte 6, ladder up +19:49:44.138 n0: Program class v5 from the override file: enabled, the floor at epoch 15 (DAA score 900 rounded up to the epoch boundary at 900); the class v | this node signals object version 6 | this node signals up +19:49:44.139 n1: Program class v5 from the override file: enabled, the floor at epoch 15 (DAA score 900 rounded up to the epoch boundary at 900); the class v | this node signals object version 6 | this node signals up +19:49:44.139 n2: Program class v5 from the override file: enabled, the floor at epoch 15 (DAA score 900 rounded up to the epoch boundary at 900); the class v | this node signals object version 6 | this node signals up +19:49:44.139 n3: Program class v5 from the override file: enabled, the floor at epoch 15 (DAA score 900 rounded up to the epoch boundary at 900); the class v | this node signals object version 6 | this node signals up +19:49:44.139 n0 digest: 6fa8e71d7fb9aa0d +19:49:45.155 epoch -1 -> 0 at daa 0, 7.1 s: template class 4 (next 4) rung 0 (27 passes, next rung 0), v5 share at the sink 0 bps (weakest of 7: 0), ladder up weakest 0 bps, this node signals byte 6, v5 by signal at epoch none, step at epoch 0 +19:49:45.183 t=7.1 s daa 0 epoch 0 class 4 rung 0 v5 0 bps (weakest 0) up weakest 0 blocks/sink per node 0/234e082d 0/234e082d 0/234e082d 0/234e082d +19:50:00.237 t=22.2 s daa 2 epoch 0 class 4 rung 0 v5 0 bps (weakest 0) up weakest 0 blocks/sink per node 2/e99754f8 0/234e082d 0/234e082d 2/e99754f8 +19:50:15.268 t=37.2 s daa 4 epoch 0 class 4 rung 0 v5 10000 bps (weakest 0) up weakest 0 blocks/sink per node 4/cb5915f7 4/cb5915f7 4/cb5915f7 4/cb5915f7 +19:50:30.308 t=52.2 s daa 5 epoch 0 class 4 rung 0 v5 10000 bps (weakest 0) up weakest 0 blocks/sink per node 5/c01581e7 5/c01581e7 5/c01581e7 5/c01581e7 +19:50:45.344 t=67.3 s daa 9 epoch 0 class 4 rung 0 v5 10000 bps (weakest 0) up weakest 0 blocks/sink per node 9/5438fb76 9/5438fb76 9/5438fb76 9/5438fb76 +19:51:00.368 t=82.3 s daa 13 epoch 0 class 4 rung 0 v5 10000 bps (weakest 0) up weakest 0 blocks/sink per node 13/a834a02d 13/a834a02d 13/a834a02d 13/a834a02d +19:51:15.395 t=97.3 s daa 18 epoch 0 class 4 rung 0 v5 10000 bps (weakest 0) up weakest 0 blocks/sink per node 18/db511010 18/db511010 18/db511010 18/db511010 +19:51:30.422 t=112.4 s daa 29 epoch 0 class 4 rung 0 v5 10000 bps (weakest 0) up weakest 0 blocks/sink per node 29/d7e5a340 29/d7e5a340 29/d7e5a340 29/d7e5a340 +19:51:45.461 t=127.4 s daa 51 epoch 0 class 4 rung 0 v5 10000 bps (weakest 0) up weakest 0 blocks/sink per node 51/4a5a7d41 51/4a5a7d41 51/4a5a7d41 51/4a5a7d41 +19:51:49.469 epoch 0 -> 1 at daa 60, 131.4 s: template class 4 (next 4) rung 0 (27 passes, next rung 0), v5 share at the sink 10000 bps (weakest of 7: 0), ladder up weakest 0 bps, this node signals byte 6, v5 by signal at epoch none, step at epoch 0 +19:51:49.477 stream for epoch 1 (seed 55eac09ae07b93fc): root 0xc50996925456ca09 16 records, from n0 +19:52:00.521 t=142.5 s daa 66 epoch 1 class 4 rung 0 v5 10000 bps (weakest 0) up weakest 0 blocks/sink per node 66/76d59f07 66/76d59f07 62/96473f19 66/76d59f07 +19:52:15.560 t=157.5 s daa 87 epoch 1 class 4 rung 0 v5 10000 bps (weakest 0) up weakest 0 blocks/sink per node 87/47ba8d0b 87/47ba8d0b 87/47ba8d0b 87/47ba8d0b +19:52:30.595 t=172.5 s daa 104 epoch 1 class 4 rung 0 v5 10000 bps (weakest 0) up weakest 0 blocks/sink per node 104/9e63ed99 104/9e63ed99 104/9e63ed99 104/9e63ed99 +19:52:41.624 epoch 1 -> 2 at daa 120, 183.6 s: template class 4 (next 4) rung 0 (27 passes, next rung 0), v5 share at the sink 10000 bps (weakest of 7: 0), ladder up weakest 0 bps, this node signals byte 6, v5 by signal at epoch none, step at epoch 0 +19:52:41.632 stream for epoch 2 (seed cdb60950b9c5e6a1): root 0xb699642223214c8e 17 records, from n0 +19:52:45.647 t=187.6 s daa 120 epoch 2 class 4 rung 0 v5 10000 bps (weakest 0) up weakest 0 blocks/sink per node 120/efb37b2d 120/efb37b2d 120/efb37b2d 120/efb37b2d +19:53:00.678 t=202.6 s daa 142 epoch 2 class 4 rung 0 v5 10000 bps (weakest 0) up weakest 0 blocks/sink per node 142/92c4f2ef 142/92c4f2ef 142/92c4f2ef 142/92c4f2ef +19:53:15.711 t=217.6 s daa 156 epoch 2 class 4 rung 0 v5 10000 bps (weakest 0) up weakest 0 blocks/sink per node 156/a7564db3 156/a7564db3 156/a7564db3 156/a7564db3 +19:53:30.755 t=232.7 s daa 170 epoch 2 class 4 rung 0 v5 10000 bps (weakest 0) up weakest 0 blocks/sink per node 170/96dd1e0c 170/96dd1e0c 170/96dd1e0c 170/96dd1e0c +19:53:43.781 epoch 2 -> 3 at daa 180, 245.7 s: template class 4 (next 4) rung 0 (27 passes, next rung 0), v5 share at the sink 10000 bps (weakest of 7: 0), ladder up weakest 0 bps, this node signals byte 6, v5 by signal at epoch none, step at epoch 0 +19:53:45.789 stream for epoch 3 (seed 96dd1e0c73b01e08): root 0x3500068c39eb2771 17 records, from n0 +19:53:45.791 t=247.7 s daa 180 epoch 3 class 4 rung 0 v5 10000 bps (weakest 0) up weakest 0 blocks/sink per node 180/e87914d8 180/e87914d8 180/e87914d8 180/e87914d8 +19:54:00.830 t=262.8 s daa 197 epoch 3 class 4 rung 0 v5 10000 bps (weakest 0) up weakest 0 blocks/sink per node 197/5e2c33bd 197/5e2c33bd 197/5e2c33bd 197/5e2c33bd +19:54:15.866 t=277.8 s daa 216 epoch 3 class 4 rung 0 v5 10000 bps (weakest 0) up weakest 0 blocks/sink per node 216/3339ba39 216/3339ba39 216/3339ba39 216/3339ba39 +19:54:30.900 t=292.8 s daa 232 epoch 3 class 4 rung 0 v5 10000 bps (weakest 0) up weakest 0 blocks/sink per node 232/05f58252 232/05f58252 232/05f58252 232/05f58252 +19:54:39.922 epoch 3 -> 4 at daa 240, 301.9 s: template class 4 (next 4) rung 0 (27 passes, next rung 0), v5 share at the sink 10000 bps (weakest of 7: 0), ladder up weakest 0 bps, this node signals byte 6, v5 by signal at epoch none, step at epoch 0 +19:54:41.928 stream for epoch 4 (seed 29eba3de40ec0780): root 0xf25e8bcf0a604ef4 17 records, from n0 +19:54:45.938 t=307.9 s daa 242 epoch 4 class 4 rung 0 v5 10000 bps (weakest 0) up weakest 0 blocks/sink per node 242/e46923dd 242/e46923dd 242/e46923dd 242/e46923dd +19:55:00.991 t=322.9 s daa 260 epoch 4 class 4 rung 0 v5 10000 bps (weakest 0) up weakest 0 blocks/sink per node 260/8164be22 260/8164be22 260/8164be22 260/8164be22 +19:55:16.029 t=338.0 s daa 275 epoch 4 class 4 rung 0 v5 10000 bps (weakest 0) up weakest 10000 blocks/sink per node 275/7bdb9e2e 275/7bdb9e2e 275/7bdb9e2e 275/7bdb9e2e +19:55:31.068 t=353.0 s daa 296 epoch 4 class 4 rung 0 v5 10000 bps (weakest 0) up weakest 10000 blocks/sink per node 296/b1724f2c 296/b1724f2c 296/b1724f2c 296/b1724f2c +19:55:35.077 epoch 4 -> 5 at daa 300, 357.0 s: template class 4 (next 4) rung 0 (27 passes, next rung 0), v5 share at the sink 10000 bps (weakest of 7: 0), ladder up weakest 10000 bps, this node signals byte 6, v5 by signal at epoch none, step at epoch 0 +19:55:38.085 stream for epoch 5 (seed a9991e020658a88f): root 0xd087ae22d0e8b455 17 records, from n0 +19:55:46.109 t=368.0 s daa 303 epoch 5 class 4 rung 0 v5 10000 bps (weakest 0) up weakest 10000 blocks/sink per node 303/fb3b9bb5 304/52581858 305/29ff4e8c 303/fb3b9bb5 +19:56:01.141 t=383.1 s daa 320 epoch 5 class 4 rung 0 v5 10000 bps (weakest 0) up weakest 10000 blocks/sink per node 320/29420389 320/29420389 320/29420389 320/29420389 +19:56:16.188 t=398.1 s daa 335 epoch 5 class 4 rung 0 v5 10000 bps (weakest 0) up weakest 10000 blocks/sink per node 335/86733d38 335/86733d38 335/86733d38 335/86733d38 +19:56:31.235 t=413.2 s daa 353 epoch 5 class 4 rung 0 v5 10000 bps (weakest 0) up weakest 10000 blocks/sink per node 353/a5d5489d 353/a5d5489d 353/a5d5489d 353/a5d5489d +19:56:38.248 epoch 5 -> 6 at daa 360, 420.2 s: template class 4 (next 4) rung 1 (35 passes, next rung 1), v5 share at the sink 10000 bps (weakest of 7: 0), ladder up weakest 10000 bps, this node signals byte 6, v5 by signal at epoch none, step at epoch 6 +19:56:38.249 LADDER STEP: the template is rung 1 (35 shadow passes) from epoch 6 (daa 360) at 420.2 s wall +19:56:38.257 stream for epoch 6 (seed 9be0b5cb7eecb143): root 0x7e38de4162ec8605 17 records, from n0 +19:56:46.281 t=428.2 s daa 363 epoch 6 class 4 rung 1 v5 10000 bps (weakest 0) up weakest 10000 blocks/sink per node 363/952dc9df 363/952dc9df 363/952dc9df 363/952dc9df +19:57:01.311 t=443.2 s daa 381 epoch 6 class 4 rung 1 v5 10000 bps (weakest 10000) up weakest 10000 blocks/sink per node 381/e2c596a8 381/e2c596a8 381/e2c596a8 381/e2c596a8 +19:57:16.347 t=458.3 s daa 395 epoch 6 class 4 rung 1 v5 10000 bps (weakest 10000) up weakest 10000 blocks/sink per node 395/64f05f82 395/64f05f82 395/64f05f82 395/64f05f82 +19:57:31.386 t=473.3 s daa 415 epoch 6 class 4 rung 1 v5 10000 bps (weakest 10000) up weakest 10000 blocks/sink per node 415/41c3d2b7 415/41c3d2b7 415/41c3d2b7 415/41c3d2b7 +19:57:35.393 epoch 6 -> 7 at daa 420, 477.3 s: template class 4 (next 4) rung 1 (35 passes, next rung 1), v5 share at the sink 10000 bps (weakest of 7: 10000), ladder up weakest 10000 bps, this node signals byte 6, v5 by signal at epoch none, step at epoch 6 +19:57:38.402 stream for epoch 7 (seed 8756ff2962258e0b): root 0x2e5d7d9ef9dfe2fc 17 records, from n0 +19:57:46.429 t=488.4 s daa 422 epoch 7 class 4 rung 1 v5 10000 bps (weakest 10000) up weakest 10000 blocks/sink per node 422/ef21940b 422/ef21940b 422/ef21940b 422/ef21940b +19:58:01.462 t=503.4 s daa 436 epoch 7 class 4 rung 1 v5 10000 bps (weakest 10000) up weakest 10000 blocks/sink per node 436/f959ec8a 436/f959ec8a 436/f959ec8a 436/f959ec8a +19:58:10.497 RESTART STEP: n2 and its miner stopped at daa 457 (512.4 s), 23 DAA before the expected v5 boundary 480 +19:58:16.511 t=518.4 s daa 465 epoch 7 class 4 rung 1 v5 10000 bps (weakest 10000) up weakest 10000 blocks/sink per node 465/036375dd 465/036375dd down 465/036375dd +19:58:31.538 epoch 7 -> 8 at daa 480, 533.5 s: template class 5 (next 5) rung 1 (35 passes, next rung 1), v5 share at the sink 10000 bps (weakest of 7: 10000), ladder up weakest 10000 bps, this node signals byte 6, v5 by signal at epoch 8, step at epoch 6 +19:58:31.538 CLASS SWITCH: the template is class v5 from epoch 8 (daa 480) at rung 1 (35 passes), 533.5 s wall +19:58:31.542 stream for epoch 8 (seed b9ed187e0cb7146b): root 0xf2b8c858a8862f3b 17 records, from n0 +19:58:31.543 t=533.5 s daa 480 epoch 8 class 5 rung 1 v5 10000 bps (weakest 10000) up weakest 10000 blocks/sink per node 480/91d08984 480/91d08984 down 480/91d08984 +19:58:46.569 t=548.5 s daa 481 epoch 8 class 5 rung 1 v5 10000 bps (weakest 10000) up weakest 10000 blocks/sink per node 481/91d08984 481/91d08984 down 481/91d08984 +19:59:01.600 t=563.5 s daa 488 epoch 8 class 5 rung 1 v5 10000 bps (weakest 10000) up weakest 10000 blocks/sink per node 488/532e881b 488/532e881b down 488/532e881b +19:59:10.124 n2 RESTARTED pid 1594690 json 29882 p2p 29881 exec 29883, byte 6, ladder up (own datadir kept) +19:59:10.131 RESTART STEP: n2 started on its own datadir at daa 500 (572.1 s), 20 DAA after the boundary; its miner restarted with its key +19:59:17.168 t=579.1 s daa 511 epoch 8 class 5 rung 1 v5 10000 bps (weakest 10000) up weakest 10000 blocks/sink per node 511/88a31e60 511/88a31e60 457/0acb1c28 511/88a31e60 +19:59:32.264 t=594.2 s daa 529 epoch 8 class 5 rung 1 v5 10000 bps (weakest 10000) up weakest 10000 blocks/sink per node 529/e3db87bc 530/6f30f140 461/9b93e5c9 529/e3db87bc +19:59:44.300 epoch 8 -> 9 at daa 540, 606.2 s: template class 5 (next 5) rung 1 (35 passes, next rung 1), v5 share at the sink 10000 bps (weakest of 7: 10000), ladder up weakest 10000 bps, this node signals byte 6, v5 by signal at epoch none, step at epoch 6 +19:59:44.304 stream for epoch 9 (seed 6f30f14060fc2634): root 0xedac00573b062258 17 records, from n0 +19:59:47.311 t=609.2 s daa 540 epoch 9 class 5 rung 1 v5 10000 bps (weakest 10000) up weakest 10000 blocks/sink per node 540/4ca81d09 540/4ca81d09 480/ea12bf2e 540/4ca81d09 +20:00:02.355 t=624.3 s daa 548 epoch 9 class 5 rung 1 v5 10000 bps (weakest 10000) up weakest 10000 blocks/sink per node 548/4f6b6a33 548/4f6b6a33 482/9fb3e5a2 548/4f6b6a33 +20:00:17.414 t=639.3 s daa 554 epoch 9 class 5 rung 1 v5 10000 bps (weakest 10000) up weakest 10000 blocks/sink per node 554/e04e96b5 554/e04e96b5 488/1d2c1f93 550/ea079477 +20:00:32.475 t=654.4 s daa 570 epoch 9 class 5 rung 1 v5 10000 bps (weakest 10000) up weakest 10000 blocks/sink per node 570/0455cd08 570/0455cd08 511/35112c79 570/0455cd08 +20:00:47.531 t=669.5 s daa 597 epoch 9 class 5 rung 1 v5 10000 bps (weakest 10000) up weakest 10000 blocks/sink per node 597/ac7a725e 597/ac7a725e 531/1b87a5b5 597/ac7a725e +20:00:52.542 epoch 9 -> 10 at daa 600, 674.5 s: template class 5 (next 5) rung 1 (35 passes, next rung 1), v5 share at the sink 10000 bps (weakest of 7: 10000), ladder up weakest 10000 bps, this node signals byte 6, v5 by signal at epoch none, step at epoch 6 +20:00:52.548 stream for epoch 10 (seed 07368c240a4db82d): root 0x0d6f800de3e53d97 17 records, from n0 +20:01:02.581 t=684.5 s daa 601 epoch 10 class 5 rung 1 v5 10000 bps (weakest 10000) up weakest 10000 blocks/sink per node 601/df4387e3 601/df4387e3 540/0986ca89 601/df4387e3 +20:01:17.634 t=699.6 s daa 619 epoch 10 class 5 rung 1 v5 10000 bps (weakest 10000) up weakest 10000 blocks/sink per node 619/428a251c 619/428a251c 557/c4befbea 619/428a251c +20:01:32.690 t=714.6 s daa 641 epoch 10 class 5 rung 1 v5 10000 bps (weakest 10000) up weakest 10000 blocks/sink per node 641/a690bd01 641/a690bd01 575/b2ef6a56 641/a690bd01 +20:01:47.732 t=729.7 s daa 658 epoch 10 class 5 rung 1 v5 10000 bps (weakest 10000) up weakest 10000 blocks/sink per node 658/94c6d918 658/94c6d918 594/362ab829 658/94c6d918 +20:01:53.750 epoch 10 -> 11 at daa 660, 735.7 s: template class 5 (next 5) rung 1 (35 passes, next rung 1), v5 share at the sink 10000 bps (weakest of 7: 10000), ladder up weakest 10000 bps, this node signals byte 6, v5 by signal at epoch none, step at epoch 6 +20:01:56.757 stream for epoch 11 (seed aefd841e35b2c478): root 0x0b289f8d0d27752c 17 records, from n0 +20:04:00.648 SUMMARY FAIL (cross-959b57c9) 2026-10-07T20:04:00.647Z: rung 1 (35 passes) from epoch 6 at DAA 360; v5 from epoch 8 at DAA 480 at rung 1; epochs e0:v4:r0:0bps e1:v4:r0:0bps e2:v4:r0:0bps e3:v4:r0:0bps e4:v4:r0:0bps e5:v4:r0:0bps e6:v4:r1:0bps e7:v4:r1:10000bps e8:v5:r1:10000bps e9:v5:r1:10000bps e10:v5:r1:10000bps e11:v5:r1:10000bps; chain bytes {"0":1,"6":660} (9985 bps at byte 6), ladder bits {"none":1,"up":660}; blocks 482 / 179 across DAA 480; rejected miners 0/0/0/121 nodes 0/0/0/122 (submit timeouts 3/1/0/1); accepted after the flip 134/140/266/23; sinks 80c450eaaaa0df91 80c450eaaaa0df91 50f0153baca29b7c 80c450eaaaa0df91 (DIFFER) at 660/660/600/660; step lines 4/4 (epochs 6/6/6/6), v5 signal lines 4/4 (epochs 8/8/8/8, weakest 10000/10000/10000/10000); stale n3 accepted after the first refresh 0 rejected 122; restart n2 stopped at DAA 457, started at DAA 500, lock faults 0, IBD refusals 2, accepted after 266; dn3 id OK +20:04:00.648 PROGRAM ID epoch 0 v4 rung 0 (27 passes) seed 234e082d653dc69d: miners 83dab9f31f2e2dba (4 of 4) cli 83dab9f31f2e2dba other-class 343287b6df5996ed OK +20:04:00.648 PROGRAM ID epoch 1 v4 rung 0 (27 passes) seed 55eac09ae07b93fc: miners 3cbf563866bb3316 (4 of 4) cli 3cbf563866bb3316 other-class 7af70c3151ab260d state 0xc50996925456ca09 (16 records) OK +20:04:00.648 PROGRAM ID epoch 2 v4 rung 0 (27 passes) seed cdb60950b9c5e6a1: miners c4ec135fbc86e2f1 (4 of 4) cli c4ec135fbc86e2f1 other-class ee0af0ecb275dc7c state 0xb699642223214c8e (17 records) OK +20:04:00.648 PROGRAM ID epoch 3 v4 rung 0 (27 passes) seed 96dd1e0c73b01e08: miners 32ee239049ca6a99 (4 of 4) cli 32ee239049ca6a99 other-class 768cd3fa3def1df8 state 0x3500068c39eb2771 (17 records) OK +20:04:00.648 PROGRAM ID epoch 4 v4 rung 0 (27 passes) seed 29eba3de40ec0780: miners bc97414b048ca586 (4 of 4) cli bc97414b048ca586 other-class a5d0b7f5edf49b05 state 0xf25e8bcf0a604ef4 (17 records) OK +20:04:00.648 PROGRAM ID epoch 5 v4 rung 0 (27 passes) seed a9991e020658a88f: miners b74ddd44bfff8bfe (4 of 4) cli b74ddd44bfff8bfe other-class a6e0441569dec4b5 state 0xd087ae22d0e8b455 (17 records) OK +20:04:00.648 PROGRAM ID epoch 6 v4 rung 1 (35 passes) seed 9be0b5cb7eecb143: miners 5e2a827244c1859e (4 of 4) cli 5e2a827244c1859e other-class eb381d87a22e1df7 state 0x7e38de4162ec8605 (17 records) OK +20:04:00.648 PROGRAM ID epoch 7 v4 rung 1 (35 passes) seed 8756ff2962258e0b: miners c3b2c851dfbc952e (4 of 4) cli c3b2c851dfbc952e other-class 87d8e6f688d81057 state 0x2e5d7d9ef9dfe2fc (17 records) OK +20:04:00.648 PROGRAM ID epoch 8 v5 rung 1 (35 passes) seed b9ed187e0cb7146b: miners 2464501581ec715c (3 of 4) cli 2464501581ec715c other-class bb9c1a674cb5444d rung0 fc32095d4e3655c7 state 0xf2b8c858a8862f3b (17 records) OK +20:04:00.648 PROGRAM ID epoch 8 FORK v5 rung 1 (35 passes) seed 944e9ac09748d833: miners 90a3bf44d3005e67 (1 of 4) cli null other-class e09c8f37fcc0881e rung0 80e3377797844c86 MISMATCH +20:04:00.648 PROGRAM ID epoch 9 v5 rung 1 (35 passes) seed 6f30f14060fc2634: miners e61766ee9de1f94f (3 of 4) cli e61766ee9de1f94f other-class a4c43b8005e7c626 rung0 761e0ccfa1dccc96 state 0xedac00573b062258 (17 records) OK +20:04:00.648 PROGRAM ID epoch 9 FORK v5 rung 1 (35 passes) seed 53cbfef14968885f: miners c123c3517b20ec12 (1 of 4) cli null other-class f388cb162d733657 rung0 dee064a86a7148a1 MISMATCH +20:04:00.648 PROGRAM ID epoch 10 v5 rung 1 (35 passes) seed 07368c240a4db82d: miners 8333379b25760be3 (3 of 4) cli 8333379b25760be3 other-class 92efb3a1eee7c20e rung0 077ced8242cf3536 state 0x0d6f800de3e53d97 (17 records) OK +20:04:00.648 PROGRAM ID epoch 11 v5 rung 1 (35 passes) seed aefd841e35b2c478: miners 7e8f6b46d1b701c7 (2 of 4) cli 7e8f6b46d1b701c7 other-class d043e4b7d0f6c646 rung0 66520aafa84ece52 state 0x0b289f8d0d27752c (17 records) OK +20:04:00.648 FAILED CHECK no_second_step +20:04:00.648 FAILED CHECK sinks_agree +20:04:00.648 FAILED CHECK block_counts_agree +20:04:00.648 FAILED CHECK restarted_node_resynced +20:04:00.648 FAILED CHECK restarted_node_ibd_not_refused +20:04:00.648 summary: /tmp/igneum-fast-time-v5x-cross-959b57c9/summary.json and /srv/builds/igneum-wt-v5-fasttime/docs/design/class-v5-harness/fasttime/cross-959b57c9.json diff --git a/docs/design/class-v5-harness/fasttime/digest-959b57c9.json b/docs/design/class-v5-harness/fasttime/digest-959b57c9.json new file mode 100644 index 00000000..b0f4e907 --- /dev/null +++ b/docs/design/class-v5-harness/fasttime/digest-959b57c9.json @@ -0,0 +1,211 @@ +{ + "pass": true, + "case": "digest-959b57c9", + "utc": "2026-10-07T20:08:30.751Z", + "checks": { + "new_absent_new_never_and_old_absent_print_one_digest": true, + "the_set_v5_field_moves_the_digest": true, + "n0_peers_with_n1_and_n2": true, + "old_node_peers_with_the_new_hub": true, + "v5_set_node_has_no_peer": true, + "refusal_line_in_the_pre_v5_node_log": true, + "refusal_line_in_the_v5_set_node_or_hub_log": true, + "v5_set_node_prints_the_floor_line": true, + "new_node_mined_blocks": true, + "old_node_mined_blocks": true, + "old_miner_started": true, + "zero_rejected_on_the_shared_chain": true, + "one_sink_on_n0_n1_n2": true, + "equal_counts_on_n0_n1_n2": true, + "every_mined_header_is_block_version_2_object_byte_7": true + }, + "new": "/srv/artefacts/v5-pair-959b57c9/igneumd", + "old": "/srv/artefacts/0323-2720d8d2/node-lane/igneumd", + "override_keys_dropped": [], + "floor": 900, + "secs": 180, + "digests": [ + "c0d6998e35a55983", + "c0d6998e35a55983", + "c0d6998e35a55983", + "8d8f620872b96308" + ], + "peers": [ + 2, + 1, + 1, + 0 + ], + "refusal_lines": { + "old": [ + "Refusing peer 127.0.0.1:49582: consensus params digest mismatch, local c0d6998e35a559836eebafafae318655245be83234505e4212b26ce95d27f5aa remote 8d8f620872b963089995d98571a04d20c55bf59dfbb43cd40f8634135da47b15 (the peer's ", + "Refusing peer 127.0.0.1:60904: consensus params digest mismatch, local c0d6998e35a559836eebafafae318655245be83234505e4212b26ce95d27f5aa remote 8d8f620872b963089995d98571a04d20c55bf59dfbb43cd40f8634135da47b15 (the peer's " + ], + "set": [ + "Refusing peer 127.0.0.1:30201: consensus params digest mismatch, local 8d8f620872b963089995d98571a04d20c55bf59dfbb43cd40f8634135da47b15 remote c0d6998e35a559836eebafafae318655245be83234505e4212b26ce95d27f5aa (the peer's ", + "Refusing peer 127.0.0.1:30221: consensus params digest mismatch, local 8d8f620872b963089995d98571a04d20c55bf59dfbb43cd40f8634135da47b15 remote c0d6998e35a559836eebafafae318655245be83234505e4212b26ce95d27f5aa (the peer's " + ], + "hub": [ + "Refusing peer 127.0.0.1:36744: consensus params digest mismatch, local c0d6998e35a559836eebafafae318655245be83234505e4212b26ce95d27f5aa remote 8d8f620872b963089995d98571a04d20c55bf59dfbb43cd40f8634135da47b15 (the peer's ", + "Refusing peer 127.0.0.1:44458: consensus params digest mismatch, local c0d6998e35a559836eebafafae318655245be83234505e4212b26ce95d27f5aa remote 8d8f620872b963089995d98571a04d20c55bf59dfbb43cd40f8634135da47b15 (the peer's " + ] + }, + "accepted": { + "new": 79, + "old": 101 + }, + "rejected": [ + 0, + 0, + 0, + 0 + ], + "sinks": [ + "d770ebb80bdd8af9", + "d770ebb80bdd8af9", + "d770ebb80bdd8af9", + "234e082d653dc69d" + ], + "counts": [ + 180, + 180, + 180, + 0 + ], + "header_versions": { + "1794": 178 + }, + "object_bytes": { + "0": 1, + "7": 180 + }, + "blocks": 181, + "samples": [ + { + "t": 5, + "counts": [ + 0, + 0, + 0, + 0 + ], + "sinks": [ + "234e082d", + "234e082d", + "234e082d", + "234e082d" + ], + "peers": [ + 2, + 1, + 1, + 0 + ] + }, + { + "t": 35.1, + "counts": [ + 21, + 21, + 21, + 0 + ], + "sinks": [ + "9093797a", + "9093797a", + "9093797a", + "234e082d" + ], + "peers": [ + 2, + 1, + 1, + 0 + ] + }, + { + "t": 65.2, + "counts": [ + 60, + 60, + 60, + 0 + ], + "sinks": [ + "a85159d1", + "a85159d1", + "a85159d1", + "234e082d" + ], + "peers": [ + 2, + 1, + 1, + 0 + ] + }, + { + "t": 95.3, + "counts": [ + 88, + 88, + 88, + 0 + ], + "sinks": [ + "0bef0b9b", + "0bef0b9b", + "0bef0b9b", + "234e082d" + ], + "peers": [ + 2, + 1, + 1, + 0 + ] + }, + { + "t": 125.5, + "counts": [ + 121, + 121, + 122, + 0 + ], + "sinks": [ + "bb7179ad", + "bb7179ad", + "b727d573", + "234e082d" + ], + "peers": [ + 2, + 1, + 1, + 0 + ] + }, + { + "t": 155.6, + "counts": [ + 161, + 161, + 161, + 0 + ], + "sinks": [ + "98d7cb01", + "98d7cb01", + "98d7cb01", + "234e082d" + ], + "peers": [ + 2, + 1, + 1, + 0 + ] + } + ] +} \ No newline at end of file diff --git a/docs/design/class-v5-harness/fasttime/digest-959b57c9.log b/docs/design/class-v5-harness/fasttime/digest-959b57c9.log new file mode 100644 index 00000000..eceb43be --- /dev/null +++ b/docs/design/class-v5-harness/fasttime/digest-959b57c9.log @@ -0,0 +1,17 @@ +20:05:20.900 override: every key known to both binaries +20:05:20.904 case digest-959b57c9: new /srv/artefacts/v5-pair-959b57c9/igneumd, old /srv/artefacts/0323-2720d8d2/node-lane/igneumd; A = the v5 key absent, B = at never, C = 900; 180 s of mixed mining +20:05:22.475 n0 new, v5 key absent up pid 1661184 p2p 30201: digest c0d6998e35a55983, (no v5 line: a pre-v5 binary) +20:05:23.986 n1 new, v5 key at never up pid 1661786 p2p 30211 addpeer 30201: digest c0d6998e35a55983, Program class v5 from the override file: never (the byte stays 5, the amended v4's; a byte 6 on the chain counts for not +20:05:25.494 n2 OLD (pre-v5), v5 key absent up pid 1661942 p2p 30221 addpeer 30201: digest c0d6998e35a55983, (no v5 line: a pre-v5 binary) +20:05:27.002 n3 new, v5 key set at 900 up pid 1662327 p2p 30231 addpeer 30201,30221: digest 8d8f620872b96308, Program class v5 from the override file: enabled, the floor at epoch 15 (DAA score 900 rounded up to the epoch boundary +20:05:27.006 mining: the new node n0 and the old node n2, 4 CPU thread(s) each, 180 s +20:05:32.015 t=5.0 s blocks/sink 0/234e082d 0/234e082d 0/234e082d 0/234e082d peers 2/1/1/0 +20:06:02.142 t=35.1 s blocks/sink 21/9093797a 21/9093797a 21/9093797a 0/234e082d peers 2/1/1/0 +20:06:32.246 t=65.2 s blocks/sink 60/a85159d1 60/a85159d1 60/a85159d1 0/234e082d peers 2/1/1/0 +20:07:02.352 t=95.3 s blocks/sink 88/0bef0b9b 88/0bef0b9b 88/0bef0b9b 0/234e082d peers 2/1/1/0 +20:07:32.470 t=125.5 s blocks/sink 121/bb7179ad 121/bb7179ad 122/b727d573 0/234e082d peers 2/1/1/0 +20:08:02.596 t=155.6 s blocks/sink 161/98d7cb01 161/98d7cb01 161/98d7cb01 0/234e082d peers 2/1/1/0 +20:08:30.752 SUMMARY PASS (digest-959b57c9) 2026-10-07T20:08:30.751Z: digests new-absent c0d6998e35a55983 new-never c0d6998e35a55983 old-absent c0d6998e35a55983 new-set 8d8f620872b96308; peers 2/1/1/0; refusal lines old 3 set 6 hub 3; mixed mining 180 s: new accepted 79, old accepted 101, rejected 0/0/0/0, sinks d770ebb80bdd8af9 d770ebb80bdd8af9 d770ebb80bdd8af9 at 180/180/180; header versions {"1794":178} +20:08:30.752 Refusing peer 127.0.0.1:49582: consensus params digest mismatch, local c0d6998e35a559836eebafafae318655245be83234505e4212b26ce95d27f5aa remote 8d8f620872b963089995d98571a04d20c55bf59dfbb43cd40f8634135da47b15 (the peer's +20:08:30.752 Refusing peer 127.0.0.1:30201: consensus params digest mismatch, local 8d8f620872b963089995d98571a04d20c55bf59dfbb43cd40f8634135da47b15 remote c0d6998e35a559836eebafafae318655245be83234505e4212b26ce95d27f5aa (the peer's +20:08:30.752 summary: /tmp/igneum-fast-time-v5d-digest-959b57c9/summary.json and /srv/builds/igneum-wt-v5-fasttime/docs/design/class-v5-harness/fasttime/digest-959b57c9.json diff --git a/infra/fast-time/class-v5-crossing.mjs b/infra/fast-time/class-v5-crossing.mjs index cfeda72a..ed788375 100644 --- a/infra/fast-time/class-v5-crossing.mjs +++ b/infra/fast-time/class-v5-crossing.mjs @@ -361,6 +361,16 @@ const stepLines = nodes.map(n => n.grepLog(STEP_LINE).map(l => l.replace(/^.*?(L const stepParsed = stepLines.map(ls => { const m = ls[0] && STEP_LINE.exec(ls[0]); return m ? { epoch: +m[1], rung: +m[2], reps: +m[3], weakest_up: +m[5] } : null; }); // the 0.3.23 line logs one step twice (the template's lead path and the boundary); a second STEP is a new (epoch, rung) pair const distinctSteps = stepLines.map(ls => new Set(ls.map(l => { const m = STEP_LINE.exec(l); return m ? `${m[1]}:${m[2]}` : l; })).size); +// the rule allows the next step once the oldest of seven windows begins at or after the step's seed block (DAA L e - lead - 1), +// so the earliest second step is the first epoch whose seed block is at least seven windows above it; a step line for an +// earlier epoch is a fault, one at or after it is the rule at work (the 959b57c9 run: epoch 12 moves to rung 2, decided +// after the observation window closed at DAA 660 while the end-of-run reads ran) +const stepSeedDaa = step ? step.epoch * EPOCH - LEAD - 1 : null; +let EARLIEST_SECOND_STEP = null; +if (step) { EARLIEST_SECOND_STEP = step.epoch + 1; while (EARLIEST_SECOND_STEP * EPOCH - LEAD - 1 < stepSeedDaa + WINDOWS * LADDER_WINDOW) EARLIEST_SECOND_STEP++; } +const stepEpochsLogged = stepLines.map(ls => ls.map(l => { const m = STEP_LINE.exec(l); return m ? +m[1] : null; }).filter(e => e != null)); +const earlySecondSteps = step ? stepEpochsLogged.flat().filter(e => e !== step.epoch && e < EARLIEST_SECOND_STEP) : []; +const laterSteps = step ? [...new Set(stepEpochsLogged.flat().filter(e => e !== step.epoch))] : []; const signalLines = nodes.map(n => n.grepLog(SIGNAL_LINE).map(l => l.replace(/^.*?(Program class v5 by miner signal)/, '$1'))); const signalParsed = signalLines.map(ls => { const m = ls[0] && SIGNAL_LINE.exec(ls[0]); return m ? { epoch: +m[1], share: +m[2], weakest: +m[3] } : null; }); const floorLines = nodes.map(n => n.grepLog(FLOOR_LINE)[0]?.replace(/^.*?(Program class v5 from)/, '$1') ?? null); @@ -395,7 +405,7 @@ const checks = { stepped_at_the_first_full_window_epoch: step != null && step.epoch === FIRST_STEP_EPOCH, step_line_on_every_node_same_epoch: stepParsed.every(s => s != null && s.rung === 1) && new Set(stepParsed.map(s => s?.epoch)).size === 1 && stepParsed[0]?.epoch === step?.epoch, step_weakest_up_at_or_above_threshold: stepParsed.every(s => s != null && s.weakest_up >= LADDER_THRESHOLD), - no_second_step: step != null && afterStep.length >= 2 && afterStep.every(r => r === 1) && distinctSteps.every(n => n === 1), + no_second_step_before_the_rule_allows: step != null && afterStep.length >= 2 && afterStep.every(r => r === 1) && earlySecondSteps.length === 0, rung0_ids_equal_the_cli_rung0_id: rung0Rows.length > 0 && rung0Rows.every(r => r.cli != null && r.cli === r.miners_id && !r.disagree), rung1_ids_equal_the_cli_rung1_id: rung1Rows.length > 0 && rung1Rows.every(r => r.cli != null && r.cli === r.miners_id && !r.disagree && r.cli_other !== r.miners_id), // the crossing: v5 by signal at byte 6 exactly, at the first full-window epoch, before the floor, on every honest node @@ -435,7 +445,7 @@ const pass = Object.values(checks).every(v => v === true || v === null); const summary = { pass, case: CASE, utc: new Date().toISOString(), checks, signals: SIGNAL, ladder: LADDER, class_window: CLASS_WINDOW, ladder_window: LADDER_WINDOW, windows: WINDOWS, class_threshold_bps: CLASS_THRESHOLD, ladder_threshold_bps: LADDER_THRESHOLD, floor: FLOOR ?? 'never', floor_epoch: FLOOR_EPOCH, epoch_blocks: EPOCH, lead: LEAD, first_step_epoch: FIRST_STEP_EPOCH, first_flip_epoch: FIRST_FLIP_EPOCH, boundary_daa: BOUNDARY, - node: IGNEUMD, miner: CPU_MINER, pow: IGNEUM_POW, override_keys_dropped: DROPPED, dn3_genesis_check: dn3, ladder_step: step, class_switch: flip, run_ended_at_s: endAt, final_daa: lastDaa, max_epoch_seen: maxEpochSeen, + node: IGNEUMD, miner: CPU_MINER, pow: IGNEUM_POW, override_keys_dropped: DROPPED, earliest_second_step_epoch: EARLIEST_SECOND_STEP, later_step_epochs_logged: laterSteps, distinct_steps_per_node: distinctSteps, dn3_genesis_check: dn3, ladder_step: step, class_switch: flip, run_ended_at_s: endAt, final_daa: lastDaa, max_epoch_seen: maxEpochSeen, epochs: Object.fromEntries(epochRows), streams: Object.fromEntries([...streams.entries()].map(([e, s]) => [e, { root: s.root, records: s.records, block: s.block, roots_per_node: s.roots }])), blocks: { total: blocks.length, before_boundary: before.length, after_boundary: after.length, object_bytes: objectBytes, byte_6_share_bps: byte6Share, ladder_bits: ladderBits, up_share_bps: upShare }, program_id_rows: idRows, fork_rows: forkRows.length, miners_expected_on_a_row: MINERS_EXPECTED, accepted_per_miner: accepted, accepted_after_flip_per_miner: acceptedAfterFlip, rejected_by_miners: rejectedMiner, submit_timeouts_per_miner: submitTimeouts, rejected_by_nodes: rejectedNode, @@ -445,7 +455,7 @@ const summary = { }; writeFileSync(`${TMP}/summary.json`, JSON.stringify(summary, null, 2)); try { mkdirSync(OUT, { recursive: true }); writeFileSync(`${OUT}/${CASE}.json`, JSON.stringify(summary, null, 2)); } catch (e) { log(`could not write ${OUT}/${CASE}.json: ${e.message}`); } -log(`SUMMARY ${pass ? 'PASS' : 'FAIL'} (${CASE}) ${summary.utc}: ${step ? `rung ${step.rung} (${step.reps} passes) from epoch ${step.epoch} at DAA ${step.daa}` : 'no rung step'}; ${flip ? `v5 from epoch ${flip.epoch} at DAA ${flip.daa} at rung ${flip.rung}` : 'no v5 epoch'}; epochs ${epochRows.map(([e, v]) => `e${e}:v${v.class}:r${v.rung}:${v.v5_weakest_bps}bps`).join(' ')}; chain bytes ${JSON.stringify(objectBytes)} (${byte6Share} bps at byte 6), ladder bits ${JSON.stringify(ladderBits)}; blocks ${before.length} / ${after.length} across DAA ${BOUNDARY}; rejected miners ${rejectedMiner.join('/')} nodes ${rejectedNode.join('/')} (submit timeouts ${submitTimeouts.join('/')}); accepted after the flip ${acceptedAfterFlip.join('/')}; sinks ${sinks.join(' ')} (${checks.sinks_agree ? 'agree' : 'DIFFER'}) at ${counts.join('/')}; step lines ${stepParsed.filter(Boolean).length}/${N} (epochs ${stepParsed.map(s => s?.epoch ?? '-').join('/')}), v5 signal lines ${signalParsed.filter(Boolean).length}/${N} (epochs ${signalParsed.map(s => s?.epoch ?? '-').join('/')}, weakest ${signalParsed.map(s => s?.weakest ?? '-').join('/')}); stale n${STALE ?? '-'} accepted after the first refresh ${staleAcceptedAfterRefresh ?? 'n/a'} rejected ${STALE != null ? rejectedNode[STALE] : 'n/a'}; restart n${RESTART ?? '-'} ${restart.stopped ? `stopped at DAA ${restart.stopped.daa}` : 'not stopped'}${restart.started ? `, started at DAA ${restart.started.daa}` : ''}${restart.resynced ? `, resynced ${restart.resynced.after_s} s later` : ''}, lock faults ${restartFaults.length}, IBD refusals ${restartIbdRefusals.length}, accepted after ${restartAcceptedAfter ?? 'n/a'}; dn3 id ${dn3 ? (dn3.ok ? 'OK' : 'MISMATCH') : 'skipped'}`); +log(`SUMMARY ${pass ? 'PASS' : 'FAIL'} (${CASE}) ${summary.utc}: ${step ? `rung ${step.rung} (${step.reps} passes) from epoch ${step.epoch} at DAA ${step.daa}` : 'no rung step'}; ${flip ? `v5 from epoch ${flip.epoch} at DAA ${flip.daa} at rung ${flip.rung}` : 'no v5 epoch'}; epochs ${epochRows.map(([e, v]) => `e${e}:v${v.class}:r${v.rung}:${v.v5_weakest_bps}bps`).join(' ')}; chain bytes ${JSON.stringify(objectBytes)} (${byte6Share} bps at byte 6), ladder bits ${JSON.stringify(ladderBits)}; blocks ${before.length} / ${after.length} across DAA ${BOUNDARY}; rejected miners ${rejectedMiner.join('/')} nodes ${rejectedNode.join('/')} (submit timeouts ${submitTimeouts.join('/')}); accepted after the flip ${acceptedAfterFlip.join('/')}; sinks ${sinks.join(' ')} (${checks.sinks_agree ? 'agree' : 'DIFFER'}) at ${counts.join('/')}; step lines ${stepParsed.filter(Boolean).length}/${N} (epochs ${stepParsed.map(s => s?.epoch ?? '-').join('/')}; later steps logged ${laterSteps.join(',') || 'none'}, earliest allowed ${EARLIEST_SECOND_STEP ?? '-'}), v5 signal lines ${signalParsed.filter(Boolean).length}/${N} (epochs ${signalParsed.map(s => s?.epoch ?? '-').join('/')}, weakest ${signalParsed.map(s => s?.weakest ?? '-').join('/')}); stale n${STALE ?? '-'} accepted after the first refresh ${staleAcceptedAfterRefresh ?? 'n/a'} rejected ${STALE != null ? rejectedNode[STALE] : 'n/a'}; restart n${RESTART ?? '-'} ${restart.stopped ? `stopped at DAA ${restart.stopped.daa}` : 'not stopped'}${restart.started ? `, started at DAA ${restart.started.daa}` : ''}${restart.resynced ? `, resynced ${restart.resynced.after_s} s later` : ''}, lock faults ${restartFaults.length}, IBD refusals ${restartIbdRefusals.length}, accepted after ${restartAcceptedAfter ?? 'n/a'}; dn3 id ${dn3 ? (dn3.ok ? 'OK' : 'MISMATCH') : 'skipped'}`); for (const r of idRows) log(`PROGRAM ID epoch ${r.epoch}${r.fork ? ' FORK' : ''} ${r.class} rung ${r.rung ?? '?'} (${r.reps ?? '?'} passes) seed ${r.seed}: miners ${r.miners_id} (${r.miners} of ${N}${r.disagree ? ', DISAGREE' : ''}) cli ${r.cli} other-class ${r.cli_other}${r.cli_rung0 ? ` rung0 ${r.cli_rung0}` : ''}${r.state_root ? ` state ${String(r.state_root).slice(0, 18)} (${r.state_records} records)` : ''} ${r.cli === r.miners_id ? 'OK' : 'MISMATCH'}`); for (const [k, v] of Object.entries(checks)) if (v === false) log(`FAILED CHECK ${k}`); log(`summary: ${TMP}/summary.json and ${OUT}/${CASE}.json`);