Counter ASIC 3.0: the P1 rehearsal PASS as the status file's final row, the evidence folder's last entry and the public bench-log entry (numbers only); the 3.0 lane closed

This commit is contained in:
igneum-josh 2026-10-06 20:38:06 +01:00
parent 42ddbb0c98
commit 8d4e1e33a0
3 changed files with 120 additions and 0 deletions

View file

@ -2508,3 +2508,22 @@ a 50 blocks/s flood from one peer, honest template p50/p95/max 0.4/0.6/1.4 ms, r
same once; a pool user nothing; a fleet operator gets a node that keeps its only peer, and a seed that stops amplifying old certificates to
every peer (13,354 lines of work it did not need in seven minutes). Owed: the fleet agent's synced-node reading; a receiver-side limit on
certificates per index per minute as a second belt once the seed is fixed; the formatter's reflow of `finality.rs` (taken out of the commit).
## 6 October 2026, Counter ASIC 3.0: the class v4 rehearsal
A fleet of real GPU boxes ran a fleet-only chain from the devnet's genesis state and crossed a class v4 activation by miner signal, in the shape the live devnet will see. Numbers only; the per-box record is `docs/plans/counter-asic-3-gate/class-v4-20261006-rehearsal-PASS.json`.
| Number | Value |
|---|---|
| Nodes on the chain | 16 (15 mining, 1 seed) plus 37 more miners joining after the flip; 1 box left on the old binary as the stale case |
| Object | 17 fields, epochs of 600 DAA, the signal window 600 DAA, the threshold 9,500 bps, the floor at DAA 2,400; one consensus digest on every node |
| First block | 18:41:10 UTC |
| The flip | DAA 1,202, 19:00:5x UTC, by miner signal at epoch 2: 10,000 bps over the window, 599 of 599 blue blocks, the identical line on all 52 signalling nodes |
| Program ids | one id per epoch on every box for epochs 2, 3 and 4, each equal to the CPU verifier's class v4 id for that seed and era and different from the class v3 id of the same seed; the pre-flip epoch's id is a class v3 id |
| Blocks rejected for proof of work | 0 on every node over the whole run; every miner's CPU re-check mismatched 0 |
| The old-binary box | refused at every connect by consensus digest (11 refusals, 22 mismatch lines), never a peer; given the full object it exits at parse |
| The floor | crossed at DAA 2,400 with v4 already in force; the chain mined through it at about 1.6 blocks/s; one chain, no fork at the 19:34:54 UTC sweep (heights 2,502 to 2,509, blue 2,432 to 2,440) |
| Verifier against the GPU on the first v4 pack | 1,024 of 1,024 nonces at target ff..ff found by the GPU worker and re-derived by the CPU verifier, one digest on both sides |
| The stall | 90 s at the flip and then a stop: the shipped worker of the previous release refuses a generator-4 pack by design; the fleet resumed on the release tree's generator-4 worker 15 minutes later |
What it means per tier: a class change on this chain is decided by the miners' own signal and lands at an epoch boundary with no human release; an old node cannot join the new chain and an old worker cannot mine the new class, so a home miner, a rig and a pool update the node and the worker together before the signal window closes, which the one-click app does in one update; a chip built for the old class mines nothing from the flip. The live cut carries the one lesson: the new object is published only once every node and every worker runs the release that reads it.

View file

@ -0,0 +1,86 @@
{
"gate": "P1 rehearsal: the class v4 activation on a fleet of real boxes (Counter ASIC 3.0)",
"verdict": "PASS",
"date": "2026-10-06",
"network": "igneum-devnet-400 (fleet-only, from the devnet genesis state)",
"object": {
"file": "docs/plans/counter-asic-3-gate/override-v4-rehearsal-1bps.json",
"fields": 17,
"pow_epoch_blocks": 600,
"pow_epoch_lead": 100,
"program_class_v4_signal_window_daa": 600,
"program_class_v4_activation_daa": 2400,
"threshold_bps": 9500,
"consensus_digest_on_devnet_400": "a15db4f0d6a5cc891582760ef5593e69014a5133261def84647cb7617528764f"
},
"binaries": {
"igneumd": "847ddfd1ba376009 (PC 2 job build-20261006-174823, the signalling fork 0562a7f2)",
"igneum-miner": "37178aeb09bc3a24",
"worker_first": "0.3.14 hive igneum-worker-cuda 1.0 (4 October): refused the generator-4 pack, the fleet stopped at the flip",
"worker_resume": "Linux generator-4 igneum-worker-cuda from the release tree 563485b, sha256 97e036e23f4ace66..., from 19:15:47Z"
},
"boxes": {
"mining": 15,
"seed": 1,
"stale_old_binary": 1,
"wave_pods_joined_as_v4_miners": 37,
"signalling_nodes_with_the_flip_line": 52
},
"timeline_utc": {
"first_block": "18:41:10",
"flip_daa_1202": "19:00:5x",
"stall_at_flip_old_worker_s": 90,
"fleet_stopped_old_worker": "19:04:14",
"resume_new_worker": "19:15:47",
"floor_daa_2400": "19:33:2x",
"sweep": "19:34:54"
},
"flip_line": "Program class v4 by miner signal: epoch 2 (share 10000 bps over 600 DAA ending at seed block f0606e203183798a728488ba8ce38ad5f552f53e3a7ac7b5e65d41c23fac5bf3, threshold 9500 bps, 599 of 599 blue blocks)",
"program_ids": {
"epoch_1_v3": "b237a661a3c7f7c1",
"epoch_2_v4": {
"pack": "24304f0788ea9408",
"cli_v4": "24304f0788ea9408",
"cli_v3": "d8927052c764f00b"
},
"epoch_3_v4": {
"pack": "cc266b4f5dbc3447",
"cli_v4": "cc266b4f5dbc3447",
"cli_v3": "de3a34f1f2130228"
},
"epoch_4_v4": {
"pack": "634018bab5e5f283",
"cli_v4": "634018bab5e5f283",
"cli_v3": "170e3aa4b2f69d60"
}
},
"checks": {
"flip_by_signal_identical_line_on_every_node": true,
"one_program_id_per_epoch_across_boxes_equal_cli_v4_differs_v3": true,
"pow_rejected_on_every_node": 0,
"miner_mismatched": 0,
"blocks_on_v4_on_every_box": true,
"stale_box_refused_by_digest": {
"refusing_peer_lines": 11,
"digest_mismatch_lines": 22,
"ever_a_peer": false,
"old_digest": "507f802b"
},
"stale_box_on_full_file": "refuses at parse (unknown field program_class_v4_activation_daa) and exits",
"floor_crossed_with_v4_in_force": true,
"sweep_19_34_54": {
"heights": "2502 to 2509",
"blue": "2432 to 2440",
"sinks_moving_with_height": 4,
"fork": false
},
"g2_serve_mode_epoch_2_pack": {
"found": 1024,
"distinct": 1024,
"digest": "7bf77506546730973a708ebfcf7d1f908f58ff9687b529e9ccca1d022f81e3e6",
"mac_recheck": "MATCH 1024 of 1024"
}
},
"cut_critical": "an old worker refuses a generator-4 pack by design, so publish 2 (the sixteen-field file) waits until every node AND every worker in the fleet is 0.3.15's; a 0.3.13 node given the file exits at parse; publish 1 carries no handshake split under the digest-compat rule",
"live_devnet_side_effect": "11 live miners at about half rate 18:42Z to 19:04Z (their GPUs shared with the rehearsal worker); no box left the live devnet"
}

View file

@ -307,6 +307,21 @@ A script never switches the installed app's cards: a POST of enabled false to /a
| 1 | 88f5026 (ca3-coord merged with master: Counter ASIC 3.0 complete, the two CI check fixes, the close) | GREEN (37508680115) | red on "payload inputs (payload-inputs.zip from the downloads host ...)", red since 630b537 at 17:51Z, the shipper's 0.3.14 payload on the downloads host; the last green windows-ci 2cf8851 at 15:53Z; untouched by this branch |
| 2 | 0396580 (35776fe: the runner's `--cards-off` with the restore on any exit, the quit-check's rule 2 with the dated allow list, the stripped PC 1 scripts; plus the executable bit on the quit-check) | GREEN (37509530709) | cancelled (37509530516): superseded by the build-server fix 3e6a488 pushed to master minutes later; the payload-inputs step is the shipper's to turn green with 0.3.15's payload |
## 7b. The final row: the P1 rehearsal PASSED (6 October 2026, 19:33Z)
| Check | Result |
|---|---|
| The flip by miner signal | the identical line on all 52 signalling nodes at epoch 2: 10,000 bps over 600 DAA, 599 of 599 blue blocks, one seed block |
| One program id per epoch across the boxes, equal to the CLI's class v4 id, differing from the v3 id | epochs 2, 3 and 4: 24304f0788ea9408, cc266b4f5dbc3447, 634018bab5e5f283 (the v3 ids d8927052c764f00b, de3a34f1f2130228, 170e3aa4b2f69d60); the pre-flip epoch 1 generator 3, id b237a661a3c7f7c1 |
| Rejected | 0 PoW rejected on all 16 nodes over the run; every miner mismatched 0, rejected 0 |
| The stale old-binary box | refused by digest at every connect (11 refusals, 22 mismatch lines), never a peer; on the full file refuses at parse and exits |
| Blocks on v4 | on every box from the 19:15:47Z resume on the generator-4 worker; about 1.6 blocks/s |
| The floor | crossed at DAA 2,400 with v4 already in force; the chain mined through it; one chain, no fork at the 19:34:54Z sweep |
| G2 serve mode on the epoch-2 v4 pack | 1,024 of 1,024, digest 7bf77506..., the Mac recheck MATCH line for line |
| Cut-critical | an old worker refuses a generator-4 pack, so publish 2 waits on every node and every worker; a 0.3.13 node exits at parse on the file; publish 1 carries no handshake split |
Josh gave the go in advance for tonight: the shipper runs publish 1 on the 0.3.15 canary line, then publish 2 once every online node and worker reads 0.3.15, miners first, hands last; the rehearsal chain ends on the line that publish 2's digest is read back on every node (its miners off, the boxes to the standing roster or run A). The evidence folder's last entry: `counter-asic-3-gate/class-v4-20261006-rehearsal-PASS.json`. The public bench-log entry (numbers only, no box names): `docs/bench-log.md` "6 October 2026, Counter ASIC 3.0: the class v4 rehearsal". The 3.0 lane is closed.
## 8. Close
Closed 6 October 2026, 18:1x UTC. The lanes: item 1 (ca3-analysis), item 2 (ca3-derive), items 4 and 5 (ca3-detector), item 3 (ca3-crypto-brief), items 6 and 7 (ca3-reserve), item 8 (ca3-shadow), the PC 1 AMD jobs (ca3-pc1-amd), the hash gates (ca3-v4-hash) and the node gates with both preconditions (ca3-v4-node and the fork): thank you, every one of you, for the numbers and for the faults you found in your own work and in mine before they reached a cut.