Merge master 1dd05f020 into class-v6-family-gate under the master-landing lock
This commit is contained in:
commit
cd4a58d4cf
16 changed files with 3202 additions and 174 deletions
11
docs/design/class-v5-harness/attempt-3-seed/seed.json
Normal file
11
docs/design/class-v5-harness/attempt-3-seed/seed.json
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"what": "The class v5 pairing rule's fixed attempt-3 seed (8 October 2026, 14:1x UK): the 0.3.25 pin d5b68fae's FAIL seed from the cross harness run cross-0325-d5b68fae, epoch 9 of that run, whose draw lands at attempt 3 under the freeze's rule. Every harness run reads it through the pair's engine path (kaspa-pow program-id) and the run's CLI (igneum-pow show) and compares attempt and id; a difference is FAILED CHECK attempt_3_seed_reads_equal.",
|
||||
"epoch_hex": "ec0a8cf9e1c6874fc3bc7f9e5a2d8113f2b2353fced8bf293e9d451a48d68212",
|
||||
"era_hex": "234e082d653dc69db36d875b256d0f5f4a123b353d6aa069c3c7aa9aa6c46062",
|
||||
"day": 1244071,
|
||||
"genesis_day": 1243740,
|
||||
"genesis_log2": 28,
|
||||
"state_file": "state.igsd1",
|
||||
"state_root": "3046a7c17feb51c91b30f29d26e1b0de1",
|
||||
"expected": { "class": "v5", "attempt": 3, "id": "1f1cf82877f46ee6", "read_by": "igneum-pow at exactly 1c420786 and kaspa-pow program-id on class-v5-node f912e614, build-1, 14:07 UK" }
|
||||
}
|
||||
BIN
docs/design/class-v5-harness/attempt-3-seed/state.igsd1
Normal file
BIN
docs/design/class-v5-harness/attempt-3-seed/state.igsd1
Normal file
Binary file not shown.
381
docs/design/class-v5-harness/attempt3-check.json
Normal file
381
docs/design/class-v5-harness/attempt3-check.json
Normal file
|
|
@ -0,0 +1,381 @@
|
|||
{
|
||||
"attempt_3_seed": {
|
||||
"seed": "ec0a8cf9e1c6874f",
|
||||
"expected": {
|
||||
"class": "v5",
|
||||
"attempt": 3,
|
||||
"id": "1f1cf82877f46ee6",
|
||||
"read_by": "igneum-pow at exactly 1c420786 and kaspa-pow program-id on class-v5-node f912e614, build-1, 14:07 UK"
|
||||
},
|
||||
"cli": {
|
||||
"attempt": 3,
|
||||
"id": "1f1cf82877f46ee6"
|
||||
},
|
||||
"engine": {
|
||||
"attempt": 3,
|
||||
"id": "1f1cf82877f46ee6",
|
||||
"binary": "/srv/builds/igneum-wt-class-v5/vendor/igneum-node-class-v5/target/release/program-id"
|
||||
},
|
||||
"engine_refusal": null,
|
||||
"equal": true
|
||||
},
|
||||
"pass": true,
|
||||
"expect": "no-flip",
|
||||
"signals": [
|
||||
6,
|
||||
6,
|
||||
7
|
||||
],
|
||||
"checks": {
|
||||
"zero_rejected_by_miners": true,
|
||||
"zero_rejected_by_nodes": true,
|
||||
"sinks_agree": true,
|
||||
"block_counts_agree": true,
|
||||
"miners_agree_on_every_program": true,
|
||||
"window_line_on_every_node": true,
|
||||
"every_node_signals_its_byte": true,
|
||||
"chain_carries_the_bytes": true,
|
||||
"state_roots_agree_across_nodes": true,
|
||||
"template_never_v5": true,
|
||||
"no_signal_line_on_any_node": true,
|
||||
"ran_the_epochs": true,
|
||||
"v4_programs_seen": true,
|
||||
"signal_share_under_threshold_on_chain_or_the_object_off": true,
|
||||
"attempt_3_seed_reads_equal": true
|
||||
},
|
||||
"window": 60,
|
||||
"windows": 7,
|
||||
"floor": 100000,
|
||||
"v4_floor": 120,
|
||||
"v3_activation": 60,
|
||||
"epoch_blocks": 60,
|
||||
"lead": 10,
|
||||
"first_full_window_epoch": 8,
|
||||
"floor_epoch": 1667,
|
||||
"stale_miner": null,
|
||||
"stale_accepted_after_first_refresh": null,
|
||||
"honest_accepted_after_flip": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"stale_rejected": null,
|
||||
"stateless_node": 3,
|
||||
"stateless_accepted_after_flip": 0,
|
||||
"stateless_refusal_lines": 0,
|
||||
"state_roots_at_flip": [],
|
||||
"streams": {},
|
||||
"days_seen": [
|
||||
1244073
|
||||
],
|
||||
"day_boundary_crossed": false,
|
||||
"node": "/srv/artefacts/0325-6ccaf9e9/node-lane/igneumd",
|
||||
"miner": "/srv/artefacts/0325-6ccaf9e9/node-lane/igneum-miner",
|
||||
"template_switch": null,
|
||||
"run_ended_at_s": 195,
|
||||
"final_daa": 180,
|
||||
"max_epoch_seen": 3,
|
||||
"epochs": {
|
||||
"0": {
|
||||
"class": 2,
|
||||
"firstSeenDaa": 0,
|
||||
"at": 5.9,
|
||||
"eraSeed": "234e082d653dc69db36d875b256d0f5f4a123b353d6aa069c3c7aa9aa6c46062",
|
||||
"bps": 0,
|
||||
"bps5": 0,
|
||||
"signal_epoch": null,
|
||||
"day": 1244073
|
||||
},
|
||||
"1": {
|
||||
"class": 3,
|
||||
"firstSeenDaa": 60,
|
||||
"at": 33.9,
|
||||
"eraSeed": "234e082d653dc69db36d875b256d0f5f4a123b353d6aa069c3c7aa9aa6c46062",
|
||||
"bps": 5111,
|
||||
"bps5": 4888,
|
||||
"signal_epoch": null,
|
||||
"day": 1244073
|
||||
},
|
||||
"2": {
|
||||
"class": 4,
|
||||
"firstSeenDaa": 120,
|
||||
"at": 141,
|
||||
"eraSeed": "234e082d653dc69db36d875b256d0f5f4a123b353d6aa069c3c7aa9aa6c46062",
|
||||
"bps": 4500,
|
||||
"bps5": 5500,
|
||||
"signal_epoch": null,
|
||||
"day": 1244073
|
||||
},
|
||||
"3": {
|
||||
"class": 4,
|
||||
"firstSeenDaa": 180,
|
||||
"at": 195,
|
||||
"eraSeed": "234e082d653dc69db36d875b256d0f5f4a123b353d6aa069c3c7aa9aa6c46062",
|
||||
"bps": 4500,
|
||||
"bps5": 5500,
|
||||
"signal_epoch": null,
|
||||
"day": 1244073
|
||||
}
|
||||
},
|
||||
"blocks": {
|
||||
"total": 181,
|
||||
"before_boundary": 181,
|
||||
"after_boundary": 0,
|
||||
"version_bytes": {
|
||||
"0": 1,
|
||||
"6": 95,
|
||||
"7": 85
|
||||
},
|
||||
"signal_share_bps_on_chain": 5249
|
||||
},
|
||||
"programs": [
|
||||
{
|
||||
"epoch": 0,
|
||||
"class": "v2",
|
||||
"program_id": "8f8806638d59850f",
|
||||
"seed": "234e082d653dc69d",
|
||||
"miners": 4,
|
||||
"disagree": false
|
||||
},
|
||||
{
|
||||
"epoch": 1,
|
||||
"class": "v3",
|
||||
"program_id": "0387598d54486141",
|
||||
"seed": "0ae69e83fe335830",
|
||||
"miners": 4,
|
||||
"disagree": false
|
||||
},
|
||||
{
|
||||
"epoch": 2,
|
||||
"class": "v4",
|
||||
"program_id": "b1a3de278844ed23",
|
||||
"seed": "ce2f8891e7887337",
|
||||
"miners": 4,
|
||||
"disagree": false
|
||||
}
|
||||
],
|
||||
"program_id_rows": [],
|
||||
"accepted_per_miner": [
|
||||
45,
|
||||
50,
|
||||
51,
|
||||
34
|
||||
],
|
||||
"rejected_by_miners": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"rejected_by_nodes": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"sinks": [
|
||||
"5bb8ff5febfb6d68",
|
||||
"5bb8ff5febfb6d68",
|
||||
"5bb8ff5febfb6d68",
|
||||
"5bb8ff5febfb6d68"
|
||||
],
|
||||
"block_counts": [
|
||||
180,
|
||||
180,
|
||||
180,
|
||||
180
|
||||
],
|
||||
"signal_lines": [
|
||||
null,
|
||||
null,
|
||||
null
|
||||
],
|
||||
"floor_lines": [
|
||||
"Program class v5 from the override file: enabled, the floor at epoch 1667 (DAA score 100000 rounded up to the epoch boundary at 100020); 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 1667 (DAA score 100000 rounded up to the epoch boundary at 100020); 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 1667 (DAA score 100000 rounded up to the epoch boundary at 100020); 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": 5.9,
|
||||
"daa": 0,
|
||||
"epoch": 0,
|
||||
"class": 2,
|
||||
"bps": 0,
|
||||
"bps5": 0,
|
||||
"nodes": [
|
||||
"0/234e082d",
|
||||
"0/234e082d",
|
||||
"0/234e082d",
|
||||
"0/234e082d"
|
||||
]
|
||||
},
|
||||
{
|
||||
"t": 20.9,
|
||||
"daa": 31,
|
||||
"epoch": 0,
|
||||
"class": 2,
|
||||
"bps": 5000,
|
||||
"bps5": 5000,
|
||||
"nodes": [
|
||||
"31/481eb180",
|
||||
"31/481eb180",
|
||||
"31/481eb180",
|
||||
"31/481eb180"
|
||||
]
|
||||
},
|
||||
{
|
||||
"t": 35.9,
|
||||
"daa": 61,
|
||||
"epoch": 1,
|
||||
"class": 3,
|
||||
"bps": 5111,
|
||||
"bps5": 4888,
|
||||
"nodes": [
|
||||
"61/e14a1e5c",
|
||||
"60/7b41a4a8",
|
||||
"60/7b41a4a8",
|
||||
"61/e14a1e5c"
|
||||
]
|
||||
},
|
||||
{
|
||||
"t": 50.9,
|
||||
"daa": 63,
|
||||
"epoch": 1,
|
||||
"class": 3,
|
||||
"bps": 5166,
|
||||
"bps5": 4833,
|
||||
"nodes": [
|
||||
"63/b476ae5b",
|
||||
"63/b476ae5b",
|
||||
"63/b476ae5b",
|
||||
"63/b476ae5b"
|
||||
]
|
||||
},
|
||||
{
|
||||
"t": 65.9,
|
||||
"daa": 66,
|
||||
"epoch": 1,
|
||||
"class": 3,
|
||||
"bps": 5166,
|
||||
"bps5": 4833,
|
||||
"nodes": [
|
||||
"66/33e621e7",
|
||||
"66/33e621e7",
|
||||
"66/33e621e7",
|
||||
"66/33e621e7"
|
||||
]
|
||||
},
|
||||
{
|
||||
"t": 81,
|
||||
"daa": 69,
|
||||
"epoch": 1,
|
||||
"class": 3,
|
||||
"bps": 5000,
|
||||
"bps5": 5000,
|
||||
"nodes": [
|
||||
"69/79ccfaa3",
|
||||
"69/79ccfaa3",
|
||||
"69/79ccfaa3",
|
||||
"69/79ccfaa3"
|
||||
]
|
||||
},
|
||||
{
|
||||
"t": 96,
|
||||
"daa": 73,
|
||||
"epoch": 1,
|
||||
"class": 3,
|
||||
"bps": 5000,
|
||||
"bps5": 5000,
|
||||
"nodes": [
|
||||
"73/e5dab553",
|
||||
"73/e5dab553",
|
||||
"73/e5dab553",
|
||||
"73/e5dab553"
|
||||
]
|
||||
},
|
||||
{
|
||||
"t": 111,
|
||||
"daa": 78,
|
||||
"epoch": 1,
|
||||
"class": 3,
|
||||
"bps": 5166,
|
||||
"bps5": 4833,
|
||||
"nodes": [
|
||||
"78/2e9fd6f8",
|
||||
"78/2e9fd6f8",
|
||||
"78/2e9fd6f8",
|
||||
"78/2e9fd6f8"
|
||||
]
|
||||
},
|
||||
{
|
||||
"t": 126,
|
||||
"daa": 98,
|
||||
"epoch": 1,
|
||||
"class": 3,
|
||||
"bps": 4833,
|
||||
"bps5": 5166,
|
||||
"nodes": [
|
||||
"98/e1b2aa1f",
|
||||
"98/e1b2aa1f",
|
||||
"98/e1b2aa1f",
|
||||
"98/e1b2aa1f"
|
||||
]
|
||||
},
|
||||
{
|
||||
"t": 141,
|
||||
"daa": 120,
|
||||
"epoch": 2,
|
||||
"class": 4,
|
||||
"bps": 4500,
|
||||
"bps5": 5500,
|
||||
"nodes": [
|
||||
"120/a4e0b591",
|
||||
"120/a4e0b591",
|
||||
"120/a4e0b591",
|
||||
"120/a4e0b591"
|
||||
]
|
||||
},
|
||||
{
|
||||
"t": 156,
|
||||
"daa": 136,
|
||||
"epoch": 2,
|
||||
"class": 4,
|
||||
"bps": 4500,
|
||||
"bps5": 5500,
|
||||
"nodes": [
|
||||
"136/d00c2fca",
|
||||
"136/d00c2fca",
|
||||
"136/d00c2fca",
|
||||
"136/d00c2fca"
|
||||
]
|
||||
},
|
||||
{
|
||||
"t": 171,
|
||||
"daa": 151,
|
||||
"epoch": 2,
|
||||
"class": 4,
|
||||
"bps": 4500,
|
||||
"bps5": 5500,
|
||||
"nodes": [
|
||||
"151/5e0379d8",
|
||||
"151/5e0379d8",
|
||||
"151/5e0379d8",
|
||||
"151/5e0379d8"
|
||||
]
|
||||
},
|
||||
{
|
||||
"t": 186,
|
||||
"daa": 171,
|
||||
"epoch": 2,
|
||||
"class": 4,
|
||||
"bps": 4500,
|
||||
"bps5": 5500,
|
||||
"nodes": [
|
||||
"171/997b824e",
|
||||
"171/997b824e",
|
||||
"171/997b824e",
|
||||
"171/997b824e"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
30
docs/design/class-v5-harness/attempt3-check.log
Normal file
30
docs/design/class-v5-harness/attempt3-check.log
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
13:12:41.745 signals 6/6/7, expect no-flip; v3 from 60 (epoch 1), v4 floor 120 (epoch 2), v5 floor 100000 (epoch 1667), window 60 DAA x 7 (the first epoch with seven full windows after v4 is 8); stale miner none; stateless node n3; 60 DAA per epoch, lead 10; run 200 s or 3 epochs
|
||||
13:12:42.977 n0 up pid 3807653 json 31202 p2p 31201 exec 31203, signals 6
|
||||
13:12:44.184 n1 up pid 3808329 json 31212 p2p 31211 exec 31213, signals 6
|
||||
13:12:45.393 n2 up pid 3808893 json 31222 p2p 31221 exec 31223, signals 7
|
||||
13:12:46.600 n3 up pid 3809441 json 31232 p2p 31231 exec disabled, signals 7
|
||||
13:12:46.601 n0: Program class v4 signal window from the override file: 60 DAA ending at each epoch's seed block, threshold 9500 bps of blue blocks in each of 7 windows; the fixed height is the floor; this node signals object version 6 (class v4 sub-version 3: the amended draw with the distinct-values and most-repeated-value bounds; objects 4 and 5, the earlier v4 streams, do not count; 6 is class v5) | this node signals object version 6
|
||||
13:12:46.601 n1: Program class v4 signal window from the override file: 60 DAA ending at each epoch's seed block, threshold 9500 bps of blue blocks in each of 7 windows; the fixed height is the floor; this node signals object version 6 (class v4 sub-version 3: the amended draw with the distinct-values and most-repeated-value bounds; objects 4 and 5, the earlier v4 streams, do not count; 6 is class v5) | this node signals object version 6
|
||||
13:12:46.601 n2: Program class v4 signal window from the override file: 60 DAA ending at each epoch's seed block, threshold 9500 bps of blue blocks in each of 7 windows; the fixed height is the floor; this node signals object version 6 (class v4 sub-version 3: the amended draw with the distinct-values and most-repeated-value bounds; objects 4 and 5, the earlier v4 streams, do not count; 6 is class v5) | this node signals object version 7
|
||||
13:12:46.601 n3: Program class v4 signal window from the override file: 60 DAA ending at each epoch's seed block, threshold 9500 bps of blue blocks in each of 7 windows; the fixed height is the floor; this node signals object version 6 (class v4 sub-version 3: the amended draw with the distinct-values and most-repeated-value bounds; objects 4 and 5, the earlier v4 streams, do not count; 6 is class v5) | this node signals object version 7
|
||||
13:12:46.602 n0 digest: 1787ce0fd511a452
|
||||
13:12:47.614 epoch -1 -> 0 at daa 0, 5.9 s: template class 2, next 2, day 1244073, signal share at the sink v4 0 v5 0 bps (window 60, this node signals 6, v5 decided by signal at epoch none)
|
||||
13:12:47.616 t=5.9 s daa 0 epoch 0 class 2 signal v4 0 v5 0 bps blocks/sink per node 0/234e082d 0/234e082d 0/234e082d 0/234e082d
|
||||
13:13:02.635 t=20.9 s daa 31 epoch 0 class 2 signal v4 5000 v5 5000 bps blocks/sink per node 31/481eb180 31/481eb180 31/481eb180 31/481eb180
|
||||
13:13:15.645 epoch 0 -> 1 at daa 60, 33.9 s: template class 3, next 3, day 1244073, signal share at the sink v4 5111 v5 4888 bps (window 60, this node signals 6, v5 decided by signal at epoch none)
|
||||
13:13:17.648 t=35.9 s daa 61 epoch 1 class 3 signal v4 5111 v5 4888 bps blocks/sink per node 61/e14a1e5c 60/7b41a4a8 60/7b41a4a8 61/e14a1e5c
|
||||
13:13:32.663 t=50.9 s daa 63 epoch 1 class 3 signal v4 5166 v5 4833 bps blocks/sink per node 63/b476ae5b 63/b476ae5b 63/b476ae5b 63/b476ae5b
|
||||
13:13:47.679 t=65.9 s daa 66 epoch 1 class 3 signal v4 5166 v5 4833 bps blocks/sink per node 66/33e621e7 66/33e621e7 66/33e621e7 66/33e621e7
|
||||
13:14:02.696 t=81.0 s daa 69 epoch 1 class 3 signal v4 5000 v5 5000 bps blocks/sink per node 69/79ccfaa3 69/79ccfaa3 69/79ccfaa3 69/79ccfaa3
|
||||
13:14:17.710 t=96.0 s daa 73 epoch 1 class 3 signal v4 5000 v5 5000 bps blocks/sink per node 73/e5dab553 73/e5dab553 73/e5dab553 73/e5dab553
|
||||
13:14:32.725 t=111.0 s daa 78 epoch 1 class 3 signal v4 5166 v5 4833 bps blocks/sink per node 78/2e9fd6f8 78/2e9fd6f8 78/2e9fd6f8 78/2e9fd6f8
|
||||
13:14:47.736 t=126.0 s daa 98 epoch 1 class 3 signal v4 4833 v5 5166 bps blocks/sink per node 98/e1b2aa1f 98/e1b2aa1f 98/e1b2aa1f 98/e1b2aa1f
|
||||
13:15:02.743 epoch 1 -> 2 at daa 120, 141.0 s: template class 4, next 4, day 1244073, signal share at the sink v4 4500 v5 5500 bps (window 60, this node signals 6, v5 decided by signal at epoch none)
|
||||
13:15:02.744 t=141.0 s daa 120 epoch 2 class 4 signal v4 4500 v5 5500 bps blocks/sink per node 120/a4e0b591 120/a4e0b591 120/a4e0b591 120/a4e0b591
|
||||
13:15:17.753 t=156.0 s daa 136 epoch 2 class 4 signal v4 4500 v5 5500 bps blocks/sink per node 136/d00c2fca 136/d00c2fca 136/d00c2fca 136/d00c2fca
|
||||
13:15:32.768 t=171.0 s daa 151 epoch 2 class 4 signal v4 4500 v5 5500 bps blocks/sink per node 151/5e0379d8 151/5e0379d8 151/5e0379d8 151/5e0379d8
|
||||
13:15:47.781 t=186.0 s daa 171 epoch 2 class 4 signal v4 4500 v5 5500 bps blocks/sink per node 171/997b824e 171/997b824e 171/997b824e 171/997b824e
|
||||
13:15:56.790 epoch 2 -> 3 at daa 180, 195.0 s: template class 4, next 4, day 1244073, signal share at the sink v4 4500 v5 5500 bps (window 60, this node signals 6, v5 decided by signal at epoch none)
|
||||
13:16:09.441 ATTEMPT-3 SEED ec0a8cf9e1c6874f: cli attempt 3 id 1f1cf82877f46ee6 | engine attempt 3 id 1f1cf82877f46ee6 | expected attempt 3 id 1f1cf82877f46ee6 | EQUAL
|
||||
13:16:09.442 SUMMARY PASS (expect no-flip, signals 6/6/7, stale none): no v5 epoch; epochs seen e0:2:0bps:d1244073 e1:3:4888bps:d1244073 e2:4:5500bps:d1244073 e3:4:5500bps:d1244073; chain bytes {"0":1,"6":95,"7":85} (5249 bps at byte 6); blocks 181 / 0; rejected miners 0/0/0/0 nodes 0/0/0; sinks 5bb8ff5febfb6d68 5bb8ff5febfb6d68 5bb8ff5febfb6d68 5bb8ff5febfb6d68 (agree); counts 180/180/180/180; signal lines 0/3 (epochs //, shares //); floor lines 3/3; state roots at the flip ; stateless node accepted after the flip 0 (refusal lines 0); stale miner accepted after the first refresh n/a rejected n/a; days 1244073
|
||||
13:16:09.442 summary: /tmp/igneum-fast-time-v5s-attempt3-check/summary.json
|
||||
1016
docs/design/class-v5-harness/readback-0325.json
Normal file
1016
docs/design/class-v5-harness/readback-0325.json
Normal file
File diff suppressed because it is too large
Load diff
73
docs/design/class-v5-harness/readback-0325.log
Normal file
73
docs/design/class-v5-harness/readback-0325.log
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
12:44:03.636 signals 6/6/6, expect flip; v3 from 60 (epoch 1), v4 floor 120 (epoch 2), v5 floor 100000 (epoch 1667), window 60 DAA x 7 (the first epoch with seven full windows after v4 is 8); stale miner none; stateless node n3; 60 DAA per epoch, lead 10; run 780 s or 11 epochs
|
||||
12:44:04.868 n0 up pid 3379053 json 31002 p2p 31001 exec 31003, signals 6
|
||||
12:44:06.073 n1 up pid 3380107 json 31012 p2p 31011 exec 31013, signals 6
|
||||
12:44:07.279 n2 up pid 3381311 json 31022 p2p 31021 exec 31023, signals 6
|
||||
12:44:08.485 n3 up pid 3382272 json 31032 p2p 31031 exec disabled, signals 6
|
||||
12:44:08.485 n0: Program class v4 signal window from the override file: 60 DAA ending at each epoch's seed block, threshold 9500 bps of blue blocks in each of 7 windows; the fixed height is the floor; this node signals object version 6 (class v4 sub-version 3: the amended draw with the distinct-values and most-repeated-value bounds; objects 4 and 5, the earlier v4 streams, do not count; 6 is class v5) | this node signals object version 6
|
||||
12:44:08.486 n1: Program class v4 signal window from the override file: 60 DAA ending at each epoch's seed block, threshold 9500 bps of blue blocks in each of 7 windows; the fixed height is the floor; this node signals object version 6 (class v4 sub-version 3: the amended draw with the distinct-values and most-repeated-value bounds; objects 4 and 5, the earlier v4 streams, do not count; 6 is class v5) | this node signals object version 6
|
||||
12:44:08.486 n2: Program class v4 signal window from the override file: 60 DAA ending at each epoch's seed block, threshold 9500 bps of blue blocks in each of 7 windows; the fixed height is the floor; this node signals object version 6 (class v4 sub-version 3: the amended draw with the distinct-values and most-repeated-value bounds; objects 4 and 5, the earlier v4 streams, do not count; 6 is class v5) | this node signals object version 6
|
||||
12:44:08.486 n3: Program class v4 signal window from the override file: 60 DAA ending at each epoch's seed block, threshold 9500 bps of blue blocks in each of 7 windows; the fixed height is the floor; this node signals object version 6 (class v4 sub-version 3: the amended draw with the distinct-values and most-repeated-value bounds; objects 4 and 5, the earlier v4 streams, do not count; 6 is class v5) | this node signals object version 6
|
||||
12:44:08.486 n0 digest: 1787ce0fd511a452
|
||||
12:44:09.496 epoch -1 -> 0 at daa 0, 5.9 s: template class 2, next 2, day 1244071, signal share at the sink v4 0 v5 0 bps (window 60, this node signals 6, v5 decided by signal at epoch none)
|
||||
12:44:09.497 t=5.9 s daa 0 epoch 0 class 2 signal v4 0 v5 0 bps blocks/sink per node 0/234e082d 0/234e082d 0/234e082d 0/234e082d
|
||||
12:44:24.519 t=20.9 s daa 33 epoch 0 class 2 signal v4 0 v5 10000 bps blocks/sink per node 33/d2ef461a 33/d2ef461a 33/d2ef461a 33/d2ef461a
|
||||
12:44:39.531 t=35.9 s daa 58 epoch 0 class 2 signal v4 0 v5 10000 bps blocks/sink per node 58/2e29fe31 58/2e29fe31 58/2e29fe31 58/2e29fe31
|
||||
12:44:42.533 epoch 0 -> 1 at daa 60, 38.9 s: template class 3, next 3, day 1244071, signal share at the sink v4 0 v5 10000 bps (window 60, this node signals 6, v5 decided by signal at epoch none)
|
||||
12:44:54.541 t=50.9 s daa 62 epoch 1 class 3 signal v4 0 v5 10000 bps blocks/sink per node 62/83a755d7 62/83a755d7 62/83a755d7 62/83a755d7
|
||||
12:45:09.554 t=65.9 s daa 68 epoch 1 class 3 signal v4 0 v5 10000 bps blocks/sink per node 68/7964dbe5 68/7964dbe5 68/7964dbe5 68/7964dbe5
|
||||
12:45:24.567 t=80.9 s daa 73 epoch 1 class 3 signal v4 0 v5 10000 bps blocks/sink per node 73/560e2760 73/560e2760 73/560e2760 73/560e2760
|
||||
12:45:39.579 t=95.9 s daa 84 epoch 1 class 3 signal v4 0 v5 10000 bps blocks/sink per node 84/5e750e48 84/5e750e48 84/5e750e48 84/5e750e48
|
||||
12:45:54.598 t=111.0 s daa 95 epoch 1 class 3 signal v4 0 v5 10000 bps blocks/sink per node 95/0989a9b9 95/0989a9b9 95/0989a9b9 95/0989a9b9
|
||||
12:46:09.601 t=126.0 s daa 102 epoch 1 class 3 signal v4 0 v5 10000 bps blocks/sink per node 102/ed1daeac 102/ed1daeac 102/ed1daeac 102/ed1daeac
|
||||
12:46:24.611 epoch 1 -> 2 at daa 120, 141.0 s: template class 4, next 4, day 1244071, signal share at the sink v4 0 v5 10000 bps (window 60, this node signals 6, v5 decided by signal at epoch none)
|
||||
12:46:24.612 t=141.0 s daa 120 epoch 2 class 4 signal v4 0 v5 10000 bps blocks/sink per node 120/7c2399bf 120/7c2399bf 120/7c2399bf 120/7c2399bf
|
||||
12:46:39.619 t=156.0 s daa 133 epoch 2 class 4 signal v4 0 v5 10000 bps blocks/sink per node 133/04564122 133/04564122 133/04564122 133/04564122
|
||||
12:46:54.631 t=171.0 s daa 142 epoch 2 class 4 signal v4 0 v5 10000 bps blocks/sink per node 142/30bf7f8c 142/30bf7f8c 142/30bf7f8c 142/30bf7f8c
|
||||
12:47:09.643 t=186.0 s daa 157 epoch 2 class 4 signal v4 0 v5 10000 bps blocks/sink per node 157/3c10f05c 157/3c10f05c 157/3c10f05c 157/3c10f05c
|
||||
12:47:24.664 t=201.0 s daa 177 epoch 2 class 4 signal v4 0 v5 10000 bps blocks/sink per node 177/9ae20407 177/9ae20407 177/9ae20407 177/9ae20407
|
||||
12:47:26.666 epoch 2 -> 3 at daa 180, 203.0 s: template class 4, next 4, day 1244071, signal share at the sink v4 0 v5 10000 bps (window 60, this node signals 6, v5 decided by signal at epoch none)
|
||||
12:47:39.674 t=216.0 s daa 200 epoch 3 class 4 signal v4 0 v5 10000 bps blocks/sink per node 200/d7082e36 200/d7082e36 200/d7082e36 200/d7082e36
|
||||
12:47:54.682 t=231.0 s daa 216 epoch 3 class 4 signal v4 0 v5 10000 bps blocks/sink per node 216/6cf82f86 216/6cf82f86 216/6cf82f86 216/6cf82f86
|
||||
12:48:09.690 t=246.1 s daa 228 epoch 3 class 4 signal v4 0 v5 10000 bps blocks/sink per node 228/db9374fd 228/db9374fd 223/b292ba86 228/db9374fd
|
||||
12:48:24.698 t=261.1 s daa 237 epoch 3 class 4 signal v4 0 v5 10000 bps blocks/sink per node 237/4e1b4f6d 237/4e1b4f6d 237/4e1b4f6d 237/4e1b4f6d
|
||||
12:48:29.704 epoch 3 -> 4 at daa 240, 266.1 s: template class 4, next 4, day 1244072, signal share at the sink v4 0 v5 10000 bps (window 60, this node signals 6, v5 decided by signal at epoch none)
|
||||
12:48:39.715 t=276.1 s daa 247 epoch 4 class 4 signal v4 0 v5 10000 bps blocks/sink per node 247/77c117e5 247/77c117e5 247/77c117e5 247/77c117e5
|
||||
12:48:54.724 t=291.1 s daa 267 epoch 4 class 4 signal v4 0 v5 10000 bps blocks/sink per node 267/0b8d848a 267/0b8d848a 267/0b8d848a 267/0b8d848a
|
||||
12:49:09.739 t=306.1 s daa 281 epoch 4 class 4 signal v4 0 v5 10000 bps blocks/sink per node 281/3faeb485 281/3faeb485 281/3faeb485 281/3faeb485
|
||||
12:49:24.744 t=321.1 s daa 297 epoch 4 class 4 signal v4 0 v5 10000 bps blocks/sink per node 297/b65c955c 297/b65c955c 297/b65c955c 297/b65c955c
|
||||
12:49:31.751 epoch 4 -> 5 at daa 300, 328.1 s: template class 4, next 4, day 1244072, signal share at the sink v4 0 v5 10000 bps (window 60, this node signals 6, v5 decided by signal at epoch none)
|
||||
12:49:39.758 t=336.1 s daa 303 epoch 5 class 4 signal v4 0 v5 10000 bps blocks/sink per node 303/c52e2404 301/2162668a 301/2162668a 303/c52e2404
|
||||
12:49:54.776 t=351.1 s daa 325 epoch 5 class 4 signal v4 0 v5 10000 bps blocks/sink per node 325/08c8b9a8 325/08c8b9a8 325/08c8b9a8 325/08c8b9a8
|
||||
12:50:09.784 t=366.1 s daa 342 epoch 5 class 4 signal v4 0 v5 10000 bps blocks/sink per node 342/3844afe5 342/3844afe5 342/3844afe5 342/3844afe5
|
||||
12:50:24.794 t=381.2 s daa 358 epoch 5 class 4 signal v4 0 v5 10000 bps blocks/sink per node 358/67f90b83 358/67f90b83 358/67f90b83 358/67f90b83
|
||||
12:50:26.796 epoch 5 -> 6 at daa 360, 383.2 s: template class 4, next 4, day 1244072, signal share at the sink v4 0 v5 10000 bps (window 60, this node signals 6, v5 decided by signal at epoch none)
|
||||
12:50:39.807 t=396.2 s daa 374 epoch 6 class 4 signal v4 0 v5 10000 bps blocks/sink per node 374/c9032968 374/c9032968 374/c9032968 374/c9032968
|
||||
12:50:54.821 t=411.2 s daa 395 epoch 6 class 4 signal v4 0 v5 10000 bps blocks/sink per node 395/5a107825 395/5a107825 395/5a107825 395/5a107825
|
||||
12:51:09.834 t=426.2 s daa 410 epoch 6 class 4 signal v4 0 v5 10000 bps blocks/sink per node 410/90f8ad0c 410/90f8ad0c 410/90f8ad0c 410/90f8ad0c
|
||||
12:51:24.841 t=441.2 s daa 417 epoch 6 class 4 signal v4 0 v5 10000 bps blocks/sink per node 417/7b268690 417/7b268690 417/7b268690 417/7b268690
|
||||
12:51:26.843 epoch 6 -> 7 at daa 420, 443.2 s: template class 4, next 4, day 1244072, signal share at the sink v4 0 v5 10000 bps (window 60, this node signals 6, v5 decided by signal at epoch none)
|
||||
12:51:39.850 t=456.2 s daa 426 epoch 7 class 4 signal v4 0 v5 10000 bps blocks/sink per node 426/e694ba9b 426/e694ba9b 426/e694ba9b 426/e694ba9b
|
||||
12:51:54.860 t=471.2 s daa 435 epoch 7 class 4 signal v4 0 v5 10000 bps blocks/sink per node 435/29516f6b 435/29516f6b 435/29516f6b 435/29516f6b
|
||||
12:52:09.868 t=486.2 s daa 454 epoch 7 class 4 signal v4 0 v5 10000 bps blocks/sink per node 454/984c3920 454/984c3920 454/984c3920 454/984c3920
|
||||
12:52:24.876 t=501.2 s daa 476 epoch 7 class 4 signal v4 0 v5 10000 bps blocks/sink per node 476/5e094726 476/5e094726 476/5e094726 476/5e094726
|
||||
12:52:27.879 epoch 7 -> 8 at daa 480, 504.2 s: template class 5, next 5, day 1244072, signal share at the sink v4 0 v5 10000 bps (window 60, this node signals 6, v5 decided by signal at epoch 8)
|
||||
12:52:27.879 CLASS SWITCH: the template is class v5 from epoch 8 (daa 480) at 504.2 s wall
|
||||
12:52:39.890 t=516.3 s daa 491 epoch 8 class 5 signal v4 0 v5 10000 bps blocks/sink per node 491/db71df20 491/db71df20 491/db71df20 482/c64efca2
|
||||
12:52:54.901 t=531.3 s daa 511 epoch 8 class 5 signal v4 0 v5 10000 bps blocks/sink per node 511/7aef33ac 511/7aef33ac 511/7aef33ac 482/c64efca2
|
||||
12:53:09.916 t=546.3 s daa 526 epoch 8 class 5 signal v4 0 v5 10000 bps blocks/sink per node 526/9eb1279b 526/9eb1279b 526/9eb1279b 482/c64efca2
|
||||
12:53:22.925 epoch 8 -> 9 at daa 540, 559.3 s: template class 5, next 5, day 1244072, signal share at the sink v4 0 v5 10000 bps (window 60, this node signals 6, v5 decided by signal at epoch none)
|
||||
12:53:24.926 t=561.3 s daa 540 epoch 9 class 5 signal v4 0 v5 10000 bps blocks/sink per node 540/0405bcdb 540/0405bcdb 540/0405bcdb 482/c64efca2
|
||||
12:53:39.939 t=576.3 s daa 554 epoch 9 class 5 signal v4 0 v5 10000 bps blocks/sink per node 554/12e89206 554/12e89206 554/12e89206 482/c64efca2
|
||||
12:53:54.955 t=591.3 s daa 567 epoch 9 class 5 signal v4 0 v5 10000 bps blocks/sink per node 567/92b2ef43 567/92b2ef43 567/92b2ef43 482/c64efca2
|
||||
12:54:09.970 t=606.3 s daa 582 epoch 9 class 5 signal v4 0 v5 10000 bps blocks/sink per node 582/2eb5622e 582/2eb5622e 582/2eb5622e 482/c64efca2
|
||||
12:54:23.982 epoch 9 -> 10 at daa 600, 620.3 s: template class 5, next 5, day 1244072, signal share at the sink v4 0 v5 10000 bps (window 60, this node signals 6, v5 decided by signal at epoch none)
|
||||
12:54:24.984 t=621.3 s daa 600 epoch 10 class 5 signal v4 0 v5 10000 bps blocks/sink per node 600/d429af33 600/d429af33 600/d429af33 482/c64efca2
|
||||
12:54:39.999 t=636.4 s daa 611 epoch 10 class 5 signal v4 0 v5 10000 bps blocks/sink per node 611/00a09ad3 611/00a09ad3 611/00a09ad3 482/c64efca2
|
||||
12:54:55.010 t=651.4 s daa 634 epoch 10 class 5 signal v4 0 v5 10000 bps blocks/sink per node 634/7666f2e1 634/7666f2e1 634/7666f2e1 482/c64efca2
|
||||
12:55:10.023 t=666.4 s daa 649 epoch 10 class 5 signal v4 0 v5 10000 bps blocks/sink per node 649/81f52784 649/81f52784 649/81f52784 482/c64efca2
|
||||
12:55:19.032 epoch 10 -> 11 at daa 660, 675.4 s: template class 5, next 5, day 1244072, signal share at the sink v4 0 v5 10000 bps (window 60, this node signals 6, v5 decided by signal at epoch none)
|
||||
12:55:35.454 SUMMARY PASS (expect flip, signals 6/6/6, stale none): v5 from epoch 8 at DAA 480; epochs seen e0:2:0bps:d1244071 e1:3:10000bps:d1244071 e2:4:10000bps:d1244071 e3:4:10000bps:d1244071 e4:4:10000bps:d1244072 e5:4:10000bps:d1244072 e6:4:10000bps:d1244072 e7:4:10000bps:d1244072 e8:5:10000bps:d1244072 e9:5:10000bps:d1244072 e10:5:10000bps:d1244072 e11:5:10000bps:d1244072; chain bytes {"0":1,"6":660} (9985 bps at byte 6); blocks 483 / 178; rejected miners 0/0/0/0 nodes 0/0/0; sinks 07746f278d93a731 07746f278d93a731 07746f278d93a731 c64efca2aff05bb7 (agree); counts 660/660/660/482; signal lines 3/3 (epochs 8/8/8, shares 10000/10000/10000); floor lines 3/3; state roots at the flip 0x1f8c3947c3d6c541 0x1f8c3947c3d6c541 0x1f8c3947c3d6c541; stateless node accepted after the flip 0 (refusal lines 2); stale miner accepted after the first refresh n/a rejected n/a; days 1244071/1244072
|
||||
12:55:35.454 PROGRAM ID epoch 8 seed 0d678808b643463d: miners 13a54a0dd793ca79 (3 of 3) cli v5 13a54a0dd793ca79 cli v4 1da741ef698a6db4; state root 0x42ab4909a4639b610bc9bb093bf573930d925a3e264254bf0c76dd572bf1b8d2 (17 records)
|
||||
12:55:35.454 PROGRAM ID epoch 9 seed a171f4772ab723c1: miners d35cd0e9cb186d00 (3 of 3) cli v5 d35cd0e9cb186d00 cli v4 5e498a10ae61d651; state root 0x0c78a7c4d904dbf1ac372b329b426657311d9626daecf517ddc601dc5e701682 (17 records)
|
||||
12:55:35.454 PROGRAM ID epoch 10 seed bbb07c76c85908d4: miners 6104176723170d72 (3 of 3) cli v5 6104176723170d72 cli v4 afe4d858b51258c7; state root 0x5625c3098db30d8d9cbfa212c38b2065f24fda889ee52799656d79e2564a0396 (17 records)
|
||||
12:55:35.454 summary: /tmp/igneum-fast-time-v5s-readback-0325/summary.json
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -334,6 +334,14 @@ Rule: a case maps to a cell only where the cell's tests visibly answer it; cover
|
|||
- ROT-07 Ablate redundant rotation layers: partial: the acceptance-side ablation rows (layer 8 off against the same-crate windowed control: the draw cost, the floors' costs, the hot-set and 1.2x ceiling, the bit-R read; the mixer and shape axes' per-era invisibility and verifier rows), docs/analysis/class-v6/family-gate.md sections 6.4 to 6.12; the adversarial cost and the GPU setup rows per layer are the hash lane's and the adversary lane's
|
||||
- ROT-08 Pass the no-new-rules counterfactual: partial: the no-rescue control document (38,000 drawn eras of the parameter family through the acceptance, the bound arithmetic on the counts, the honest line of what the gate cannot see), family-gate.md sections 1 to 6; the competitiveness envelope and the economic half are ECO's
|
||||
|
||||
### bench:amd-intel-energy
|
||||
|
||||
- Command: `the AMD-and-Intel energy lane jobs on the signed-jobs channel: run-ae-pc2-b580-energy-20261008 (PC 2, Arc B580, the class v6 kit worker --memprobe and --bench-pack on hl-v6-foldrw and hl-v6-all, Level Zero energy counter) and run-ae-pc1-7600-energy-20261008 (PC 1, RX 7600, the same with ADLX watts at stock, plimit -30, gmax -500 + plimit -30); scripts in docs/analysis/class-v6/amd-intel-energy/`
|
||||
- Box class: PC 1 and PC 2 bench (OpenCL)
|
||||
- Fixtures: F0, F1
|
||||
- Cases:
|
||||
- GPU-03 Measure the real 64-register GPU cost: partial: the 64-register window on AMD and Intel, rate per unit of work (RX 7600 0 percent, Arc B580 -0.3 percent, kernel throughput, quiet) with the B580 fingerprints equal on both packs and the offline RDNA allocation (160 VGPRs, no spill); energy owed (the 7600 job queued, the B580 counter unsupported unelevated); team-run, not under the standard's paired protocol or a wall meter
|
||||
|
||||
## Automated cases with no harness in the matrix (NOT RUN, the reason)
|
||||
|
||||
- GOV-02 Approve thresholds before results: the approval is recorded in the registry's approval field; the automated half (thresholds frozen before any run_status) is the gate rule landing by 21:00
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -34,6 +34,7 @@
|
|||
|
||||
import { spawn, spawnSync } from 'node:child_process';
|
||||
import { mkdirSync, rmSync, writeFileSync, readFileSync, openSync, existsSync } from 'node:fs';
|
||||
import { dirname } from 'node:path';
|
||||
import { connectRpc } from '../../tools/finality-attacks/lib/rpc.mjs';
|
||||
import { devAddress } from '../../tools/harness/lib/address.mjs';
|
||||
|
||||
|
|
@ -59,6 +60,7 @@ const V3_ACTIVATION = actflag('v3-activation', 60);
|
|||
const WINDOW = flag('window', 60);
|
||||
const STALE = sflag('stale') == null ? null : +sflag('stale');
|
||||
const STATELESS_NODE = !args.includes('--no-stateless-node');
|
||||
const A3_DIR = `${ROOT}docs/design/class-v5-harness/attempt-3-seed`;
|
||||
const WINDOWS = 7;
|
||||
const SIGNAL = (sflag('signal') || '6,6,6').split(',').map(Number);
|
||||
// since the 0.3.23 node line the bytes are not ordered by class: 7 = class v4 sub-version 3, 6 = class v5 (counted exactly)
|
||||
|
|
@ -74,6 +76,15 @@ for (const b of [IGNEUMD, CPU_MINER]) if (!existsSync(b)) { console.error(`missi
|
|||
// whose log says a port was in use fails the run at once
|
||||
const PIDS = `${TMP}/pids`;
|
||||
try { for (const pid of readFileSync(PIDS, 'utf8').split('\n').map(Number).filter(Boolean)) { try { process.kill(pid, 'SIGKILL'); console.log(`killed survivor pid ${pid} of the previous run`); } catch { } } } catch { }
|
||||
// `--a3-only [--a3-known-failed]`: the attempt-3 seed read alone, no nodes, seconds (the check's own self-test and a pairing
|
||||
// read between a pair and a CLI without a run); exit 0 on EQUAL, 1 on DIFFER or unread, and with --a3-known-failed the
|
||||
// flipped expectation must read DIFFER (exit 0 then, 1 if it reads EQUAL).
|
||||
if (args.includes('--a3-only')) {
|
||||
const kf = args.includes('--a3-known-failed');
|
||||
const row = readAttempt3Seed(kf);
|
||||
console.log(JSON.stringify(row));
|
||||
process.exit(kf ? (row.equal ? 1 : 0) : (row.equal ? 0 : 1));
|
||||
}
|
||||
rmSync(TMP, { recursive: true, force: true }); mkdirSync(TMP, { recursive: true });
|
||||
const recordPid = (p) => { try { writeFileSync(PIDS, `${readFileSync(PIDS, 'utf8')}${p.pid}\n`); } catch { writeFileSync(PIDS, `${p.pid}\n`); } };
|
||||
let baseText = readFileSync(FILE, 'utf8');
|
||||
|
|
@ -429,8 +440,34 @@ if (EXPECT === 'flip') {
|
|||
stateless_node_stops_at_the_flip: !statelessNode || (counts[statelessNode.i] <= before.length && counts[statelessNode.i] >= before.length - 5),
|
||||
};
|
||||
}
|
||||
// The pairing rule's fixed attempt-3 seed (8 October 2026, 14:1x UK; the 0.3.25 pin d5b68fae's FAIL seed): read on every
|
||||
// run through the pair's engine path (kaspa-pow `program-id`, beside the node binary or in the fork worktree's target) and
|
||||
// through the run's CLI (igneum-pow show), attempt and id compared with each other and with the record's expectation.
|
||||
// A run's own seeds are its block hashes and rarely land at attempt 3, which is where two acceptance rules show; this
|
||||
// read does not wait for the chain to draw one. An unreadable side is a FAILED CHECK, never a skip.
|
||||
function readAttempt3Seed(knownFailed = false) {
|
||||
try {
|
||||
const j = JSON.parse(readFileSync(`${A3_DIR}/seed.json`, 'utf8'));
|
||||
// the check's own known-failed shape (--a3-known-failed): the record's expected id with one hex digit flipped must read DIFFER
|
||||
if (knownFailed) j.expected = { ...j.expected, id: j.expected.id.slice(0, 15) + (j.expected.id.endsWith('0') ? '1' : '0') };
|
||||
const state = `${A3_DIR}/${j.state_file}`;
|
||||
const dayHex = Buffer.concat([Buffer.from('igneum-day/'), Buffer.from(BigInt(j.day).toString(16).padStart(16, '0'), 'hex').reverse()]).toString('hex');
|
||||
const cli = IGNEUM_POW && existsSync(IGNEUM_POW) ? spawnSync(IGNEUM_POW, ['show', '--program-class', 'v5', '--epoch-hex', j.epoch_hex, '--era-hex', j.era_hex, '--day-hex', dayHex, '--state', state], { encoding: 'utf8' }).stdout || '' : '';
|
||||
const cm = /attempt (\d+) program id ([0-9a-f]{16})/.exec(cli);
|
||||
const pidBin = [`${dirname(IGNEUMD)}/program-id`, `${ROOT}vendor/igneum-node-class-v5/target/release/program-id`].find(p => existsSync(p));
|
||||
const eng = pidBin ? spawnSync(pidBin, ['--epoch-hex', j.epoch_hex, '--era-hex', j.era_hex, '--day', String(j.day), '--class', 'v5', '--state', state, '--genesis-day', String(j.genesis_day), '--genesis-log2', String(j.genesis_log2)], { encoding: 'utf8' }) : null;
|
||||
const em = eng ? /attempt (\d+) id ([0-9a-f]{16})/.exec(eng.stdout || '') : null;
|
||||
const row = { seed: j.epoch_hex.slice(0, 16), expected: j.expected, cli: cm ? { attempt: +cm[1], id: cm[2] } : null, engine: em ? { attempt: +em[1], id: em[2], binary: pidBin } : null, engine_refusal: eng && !em ? (eng.stderr || '').trim().slice(0, 200) : null };
|
||||
row.equal = !!(cm && em && cm[1] === em[1] && cm[2] === em[2] && +cm[1] === j.expected.attempt && cm[2] === j.expected.id);
|
||||
log(`ATTEMPT-3 SEED ${row.seed}: cli ${cm ? `attempt ${cm[1]} id ${cm[2]}` : 'UNREAD'} | engine ${em ? `attempt ${em[1]} id ${em[2]}` : `UNREAD${row.engine_refusal ? ` (${row.engine_refusal})` : pidBin ? '' : ' (no program-id binary)'}`} | expected attempt ${j.expected.attempt} id ${j.expected.id} | ${row.equal ? 'EQUAL' : 'DIFFER'}`);
|
||||
return row;
|
||||
} catch (e) { log(`ATTEMPT-3 SEED: ${e.message}`); return { equal: false, error: e.message }; }
|
||||
}
|
||||
const a3 = readAttempt3Seed();
|
||||
checks.attempt_3_seed_reads_equal = !!a3.equal;
|
||||
const pass = Object.values(checks).every(Boolean);
|
||||
const summary = {
|
||||
attempt_3_seed: a3,
|
||||
pass, expect: EXPECT, signals: SIGNAL, checks, window: WINDOW, windows: WINDOWS, floor: FLOOR ?? 'never', v4_floor: V4_FLOOR ?? 'never', v3_activation: V3_ACTIVATION ?? 'never', epoch_blocks: EPOCH, lead: LEAD, first_full_window_epoch: FIRST_FULL_EPOCH, floor_epoch: FLOOR_EPOCH,
|
||||
stale_miner: STALE, stale_accepted_after_first_refresh: staleAcceptedAfterRefresh, honest_accepted_after_flip: honestAcceptedAfterFlip, stale_rejected: staleRejected, stateless_node: statelessNode ? statelessNode.i : null, stateless_accepted_after_flip: statelessAcceptedAfterFlip, stateless_refusal_lines: statelessRefusals,
|
||||
state_roots_at_flip: rootsAtFlip, streams, days_seen: daysSeen, day_boundary_crossed: daysSeen.length > 1,
|
||||
|
|
|
|||
15
tools/ci/batches/amd-intel-energy-20261008-01.json
Normal file
15
tools/ci/batches/amd-intel-energy-20261008-01.json
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
"run_id": "amd-intel-energy-20261008-01",
|
||||
"manifest_sha": "c245d50b9",
|
||||
"evidence_dir": "docs/analysis/class-v6/amd-intel-energy",
|
||||
"cells": [
|
||||
{
|
||||
"cell": "bench:amd-intel-energy",
|
||||
"status": "NOT RUN",
|
||||
"evidence": "docs/analysis/class-v6/amd-intel-energy.md",
|
||||
"note": "GPU-03 AMD and Intel cells: the window costs the RX 7600 0 percent and the Arc B580 -0.3 percent of rate per unit of work (measured, kernel throughput, quiet); B580 fingerprints equal on hl-v6-foldrw and hl-v6-all; energy owed (RX 7600 ADLX job queued behind a held PC 1 runner; the B580 Level Zero energy counter unsupported unelevated); RUNNING, not PASS: team-run, no paired 30-minute protocol, no wall meter",
|
||||
"method": "GPU",
|
||||
"in_progress": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -574,6 +574,20 @@
|
|||
"ROT-07": "partial: the acceptance-side ablation rows (layer 8 off against the same-crate windowed control: the draw cost, the floors' costs, the hot-set and 1.2x ceiling, the bit-R read; the mixer and shape axes' per-era invisibility and verifier rows), docs/analysis/class-v6/family-gate.md sections 6.4 to 6.12; the adversarial cost and the GPU setup rows per layer are the hash lane's and the adversary lane's",
|
||||
"ROT-08": "partial: the no-rescue control document (38,000 drawn eras of the parameter family through the acceptance, the bound arithmetic on the counts, the honest line of what the gate cannot see), family-gate.md sections 1 to 6; the competitiveness envelope and the economic half are ECO's"
|
||||
}
|
||||
},
|
||||
"bench:amd-intel-energy": {
|
||||
"command": "the AMD-and-Intel energy lane jobs on the signed-jobs channel: run-ae-pc2-b580-energy-20261008 (PC 2, Arc B580, the class v6 kit worker --memprobe and --bench-pack on hl-v6-foldrw and hl-v6-all, Level Zero energy counter) and run-ae-pc1-7600-energy-20261008 (PC 1, RX 7600, the same with ADLX watts at stock, plimit -30, gmax -500 + plimit -30); scripts in docs/analysis/class-v6/amd-intel-energy/",
|
||||
"box_class": "PC 1 and PC 2 bench (OpenCL)",
|
||||
"fixtures": [
|
||||
"F0",
|
||||
"F1"
|
||||
],
|
||||
"cases": [
|
||||
"GPU-03"
|
||||
],
|
||||
"coverage": {
|
||||
"GPU-03": "partial: the 64-register window on AMD and Intel, rate per unit of work (RX 7600 0 percent, Arc B580 -0.3 percent, kernel throughput, quiet) with the B580 fingerprints equal on both packs and the offline RDNA allocation (160 VGPRs, no spill); energy owed (the 7600 job queued, the B580 counter unsupported unelevated); team-run, not under the standard's paired protocol or a wall meter"
|
||||
}
|
||||
}
|
||||
},
|
||||
"not_run": {
|
||||
|
|
|
|||
27
tools/class-v5/emu-two-packs-box.sh
Executable file
27
tools/class-v5/emu-two-packs-box.sh
Executable file
|
|
@ -0,0 +1,27 @@
|
|||
#!/usr/bin/env bash
|
||||
# The kit's CPU emulation of the NVRTC worker (the real kernel text on host threads, kits-on-box.sh's emu step lifted) on
|
||||
# any two packs: pack A is run through --check, pack B is the second namespace the two-pack emulation needs. Prints each
|
||||
# pack's id and class, then the check line (the dataset self-test, the vector warps, the fingerprint). The class v6 kit's
|
||||
# known-failed shape (8 October 2026): the plain-address pack and the fold pack of one seed must read two ids and two
|
||||
# fingerprints. A file run by path on the box, through the pool lease.
|
||||
# emu-two-packs-box.sh <worktree root on the box> <pack A dir> <pack B dir> [label]
|
||||
set -uo pipefail
|
||||
R="$1"; A="$2"; B="$3"; L="${4:-emu-two-packs}"
|
||||
T=$(mktemp -d /tmp/v6-emu.XXXXXX); E="$T/emu"; mkdir -p "$E"
|
||||
cd "$R"
|
||||
for p in "$A" "$B"; do echo "PACK $(basename "$p") id $(grep -oE 'IGNEUM_PROGRAM_ID 0x[0-9a-f]+' "$p/program.h" | head -1 | awk '{print $2}') generator $(grep -oE 'IGNEUM_GENERATOR [0-9]+' "$p/program.h" | awk '{print $2}') class $(grep -oE 'IGNEUM_LOAD_CLASS "[^"]+"' "$p/program.h" | cut -d'"' -f2)"; done
|
||||
build_and_check() { # <pack dir as A> <pack dir as B> <name>: one emulation build per orientation in its own dir
|
||||
local ed="$T/emu-$3"; mkdir -p "$ed"
|
||||
emu_kernel() { { echo '#include <cuda_runtime.h>'; echo '#include <cstdint>'; echo "namespace $2 {"; sed -E 's/([A-Za-z_0-9]+)<<<([^,]+), ([^>]+)>>>\(/emu_launch(\1, \2, \3, /' "$1/$3.cu"; echo "}"; } > "$ed/$3_$2.cpp"; g++ -std=c++17 -O2 -w -I proto-cuda/emu -I "$1" -c "$ed/$3_$2.cpp" -o "$ed/$3_$2.o"; }
|
||||
emu_kernel "$1" emu_pack_a kernel && emu_kernel "$1" emu_pack_a kernel_bound && emu_kernel "$2" emu_pack_b kernel && emu_kernel "$2" emu_pack_b kernel_bound \
|
||||
&& g++ -std=c++17 -O2 -w -DIGNEUM_EMU -I proto-cuda/nvrtc -I /usr/local/cuda/include -c proto-cuda/nvrtc/worker.cpp -o "$ed/worker.o" \
|
||||
&& g++ -std=c++17 -O2 -w -DIGNEUM_EMU -DIGNEUM_EMU_TWO_PACKS -I proto-cuda/nvrtc -I proto-cuda/emu -I /usr/local/cuda/include -c proto-cuda/nvrtc/emu/emu_backend.cpp -o "$ed/emu_backend.o" \
|
||||
&& g++ -std=c++17 -O2 -w -I proto-cuda/emu -c proto-cuda/emu/shim.cpp -o "$ed/shim.o" \
|
||||
&& g++ -o "$ed/igneum-worker-cuda-emu" "$ed"/*.o -pthread 2> "$T/emu-build-$3.log" || { echo "FAIL emu build $3"; head -20 "$T/emu-build-$3.log"; return 1; }
|
||||
/srv/builds/_bin/lease pool 32 --label "$L: $3" --owner class-v5 --class v5 --min 8 -- env IGNEUM_EMU_PACK="$1" IGNEUM_EMU_PACK2="$2" timeout 2400 "$ed/igneum-worker-cuda-emu" --check --pack "$1" > "$T/$3.log" 2>&1
|
||||
echo "RC $3 $?"
|
||||
grep -E '^check (PASS|FAIL)|self-test|fingerprint|FAIL|error' "$T/$3.log" | grep -vE "^lease:" | cut -c1-320
|
||||
}
|
||||
build_and_check "$A" "$B" "$(basename "$A")"
|
||||
build_and_check "$B" "$A" "$(basename "$B")"
|
||||
echo "logs under $T"
|
||||
28
tools/class-v5/gate-remote.sh
Executable file
28
tools/class-v5/gate-remote.sh
Executable file
|
|
@ -0,0 +1,28 @@
|
|||
#!/usr/bin/env bash
|
||||
# The FULL gate (tools/ci/pre-push.sh with no arguments) over this worktree's tree, run on a build box, never on the Mac (the
|
||||
# no-Mac-builds rule of 7 October 2026). Shape as kits-remote.sh: the sources sync to the worktree's mirror checkout on the box
|
||||
# and the gate runs there from the script FILE the commit carries (no inline string). Usage: tools/class-v5/gate-remote.sh [--box N]
|
||||
# Exit: the gate's own status; the log at /tmp/v5-gate-<stamp>.log on the Mac.
|
||||
set -euo pipefail
|
||||
HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
. "$HERE/../../infra/build-server/lib.sh"
|
||||
BOX=2 # box 2 carries the overlap browser (/srv/builds/_bin/overlap); box 1 does not (the 20:56 UK red)
|
||||
while [ $# -gt 0 ]; do case "$1" in --box) BOX="$2"; shift 2 ;; *) echo "unknown argument $1" >&2; exit 2 ;; esac; done
|
||||
export IGNEUM_AGENT="${IGNEUM_AGENT:-v5-gate}"
|
||||
bs_host "$BOX"
|
||||
pushd "$HERE/../../igneum-pow" > /dev/null; bs_context; popd > /dev/null
|
||||
WT="$BS_REMOTE_WT"
|
||||
STAMP=$(date -u +%Y%m%dT%H%M%SZ)
|
||||
bs_toolchain_check
|
||||
bs_sync_sources
|
||||
bs_log "sources at $WT (commit $BS_SHA on $BS_BRANCH); the full gate on box $BOX"
|
||||
# ci mode: the box runs the gate as the box runners do (box-locks reads ok with no host file; a browser is found at
|
||||
# /srv/builds/_bin/overlap); local mode on a box reads two environment reds that are not the tree's (20:56 UK)
|
||||
CMD="cd '$WT' && IGNEUM_GATE_NO_TITLE=1 bash tools/ci/pre-push.sh ci"
|
||||
set +e
|
||||
BR_KIND=gate BR_COMMAND="the full gate (tools/ci/pre-push.sh) over the class-v5 tree" BR_TARGET="x86_64-linux" BR_ARTEFACTS="" \
|
||||
bs_remote_run "$WT" "$BS_WT class-v5 full gate" "$CMD" 2>&1 | tee "/tmp/v5-gate-$STAMP.log" | grep -E '^( (ok|FAIL|RED)|pre-push gate|FAIL|build-remote: RESULT)'
|
||||
rc=${PIPESTATUS[0]}
|
||||
set -e
|
||||
bs_wt_unlock
|
||||
[ "$rc" = 0 ] && bs_log "full gate GREEN at $BS_SHA" || bs_die "full gate RED (rc $rc); full log /tmp/v5-gate-$STAMP.log"
|
||||
|
|
@ -10,7 +10,7 @@ mkdir -p "$REMOTE_LOG"
|
|||
cd "$REMOTE_ROOT"
|
||||
IGNEUM_V5_BASE="$BASE" IGNEUM_V5_TMP="/tmp/igneum-fast-time-v5s-$CASE" \
|
||||
IGNEUM_V5_BIN="${IGNEUM_V5_BIN:-$REMOTE_ROOT/vendor/igneum-node-class-v5/target/release}" \
|
||||
IGNEUM_POW="$REMOTE_ROOT/igneum-pow/target/release/igneum-pow" \
|
||||
IGNEUM_POW="${IGNEUM_POW_BIN:-$REMOTE_ROOT/igneum-pow/target/release/igneum-pow}" \
|
||||
node infra/fast-time/class-v5-signal.mjs "$@" > "$REMOTE_LOG/$CASE.log" 2>&1
|
||||
rc=$?
|
||||
cp "/tmp/igneum-fast-time-v5s-$CASE/summary.json" "$REMOTE_LOG/$CASE.json" 2>/dev/null || true
|
||||
|
|
|
|||
|
|
@ -28,8 +28,12 @@ echo "harness-remote: case $CASE on $HOST: node $REMOTE_ROOT/infra/fast-time/cla
|
|||
# the harness file travels by rsync (the mirror carries HEAD; an uncommitted change rides along, re-stamped: the copied-sources rule)
|
||||
rsync -a -e "ssh -i $KEY" "$ROOT/infra/fast-time/class-v5-signal.mjs" "$ROOT/infra/fast-time/override-60x.json" "$HOST:$REMOTE_ROOT/infra/fast-time/"
|
||||
rsync -a -e "ssh -i $KEY" "$ROOT/tools/class-v5/harness-box.sh" "$HOST:$REMOTE_ROOT/tools/class-v5/"
|
||||
# the pairing rule's fixed attempt-3 seed (seed.json and its stream) travels with the harness
|
||||
mkdir -p "$ROOT/docs/design/class-v5-harness/attempt-3-seed"
|
||||
rsync -a -e "ssh -i $KEY" "$ROOT/docs/design/class-v5-harness/attempt-3-seed/" "$HOST:$REMOTE_ROOT/docs/design/class-v5-harness/attempt-3-seed/"
|
||||
# the box side is a script run by path (tools/class-v5/harness-box.sh), not an ssh command string
|
||||
# FORK_BIN=<dir on the box> points the harness at another fork build (the node lane's pair build for a fix not yet on class-v5-node)
|
||||
ssh -i "$KEY" "$HOST" "IGNEUM_V5_BIN=${FORK_BIN:-} $REMOTE_ROOT/tools/class-v5/harness-box.sh" "$REMOTE_ROOT" "$REMOTE_LOG" "$CASE" "$BASE" $ARGS || true
|
||||
# POW_BIN=<igneum-pow binary on the box> points the harness's CLI id read at another crate build (the freeze CLI for a pairing read-back)
|
||||
ssh -i "$KEY" "$HOST" "IGNEUM_V5_BIN=${FORK_BIN:-} IGNEUM_POW_BIN=${POW_BIN:-} $REMOTE_ROOT/tools/class-v5/harness-box.sh" "$REMOTE_ROOT" "$REMOTE_LOG" "$CASE" "$BASE" $ARGS || true
|
||||
rsync -a -e "ssh -i $KEY" "$HOST:$REMOTE_LOG/$CASE.log" "$HOST:$REMOTE_LOG/$CASE.json" "$OUT/" 2>/dev/null || true
|
||||
grep -E "SUMMARY|FAILED CHECK|PROGRAM ID|CLASS SWITCH" "$OUT/$CASE.log" || tail -20 "$OUT/$CASE.log"
|
||||
grep -E "SUMMARY|FAILED CHECK|PROGRAM ID|CLASS SWITCH|ATTEMPT-3 SEED" "$OUT/$CASE.log" || tail -20 "$OUT/$CASE.log"
|
||||
|
|
|
|||
Loading…
Reference in a new issue