diff --git a/docs/plans/igneum-2.0-test-harness-map.md b/docs/plans/igneum-2.0-test-harness-map.md index 4d401d387..3c18886bd 100644 --- a/docs/plans/igneum-2.0-test-harness-map.md +++ b/docs/plans/igneum-2.0-test-harness-map.md @@ -336,8 +336,8 @@ Rule: a case maps to a cell only where the cell's tests visibly answer it; cover ### 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 (the project's own rig, 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: the project's own rig and PC 2 bench (OpenCL) +- Command: `the AMD-and-Intel energy lane jobs on the signed-jobs channel: run-ae-pc2-b580-energy-20261008 (the project's second rig, 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 (the project's own rig, 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: the project's two rigs' 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 @@ -367,7 +367,7 @@ Rule: a case maps to a cell only where the cell's tests visibly answer it; cover ### pc:install-update -- Command: `signed jobs and relay runs on the project's own rig (ae432dc7) and PC 2 (1ccfe586): the installer over the running app (rule 14: installed versions, the process set, the first upload), the OTA path (update-now, the update-return read-back line), and the no-click resume after the install (relay run mining-on-after-200.ps1)` +- Command: `signed jobs and relay runs on the project's two rigs (ae432dc7 and 1ccfe586): the installer over the running app (rule 14: installed versions, the process set, the first upload), the OTA path (update-now, the update-return read-back line), and the no-click resume after the install (relay run mining-on-after-200.ps1)` - Box class: PC (the two Windows PCs; nothing on the Mac) - Fixtures: F2 - Cases: @@ -410,8 +410,8 @@ Rule: a case maps to a cell only where the cell's tests visibly answer it; cover ### kit:class-v6-fingerprints -- Command: `KITS_BOX_SCRIPT=kits-v6-on-box.sh tools/class-v5/kits-remote.sh --box 1 (the kit zip with its emulation check), then the kit's workers on every platform: the box's CPU emulation (--check, 96 of 96 vector lanes), the fleet's CUDA 4090 (--check and --bench at 2^24, base nonce 0), the Mac's Metal (proto-metal/packbench.swift --pack) and Apple OpenCL (proto-opencl/host.c --pack --bench-pack), PC 1's RTX 5090 and RX 7600 (tools/class-v5/pc1-v6-bench.ps1), PC 2's Arc B580 (tools/class-v5/arc-v6-bench.ps1); the fingerprint of the 2^24 outputs at base nonce 0 equal on every platform for the all pack and for its known-failed partner, the two distinct` -- Box class: build box + pods + Mac + PC 1 + PC 2 +- Command: `KITS_BOX_SCRIPT=kits-v6-on-box.sh tools/class-v5/kits-remote.sh --box 1 (the kit zip with its emulation check), then the kit's workers on every platform: the box's CPU emulation (--check, 96 of 96 vector lanes), the fleet's CUDA 4090 (--check and --bench at 2^24, base nonce 0), the Mac's Metal (proto-metal/packbench.swift --pack) and Apple OpenCL (proto-opencl/host.c --pack --bench-pack), the project's first rig's RTX 5090 and RX 7600 (tools/class-v5/pc1-v6-bench.ps1), the project's second rig's Arc B580 (tools/class-v5/arc-v6-bench.ps1); the fingerprint of the 2^24 outputs at base nonce 0 equal on every platform for the all pack and for its known-failed partner, the two distinct` +- Box class: build box + pods + Mac + the project's two rigs - Fixtures: F0, F2 - Cases: - R2-F03-R02 Same job context produces identical accepted work in node, CPU reference, CUDA, Metal, OpenCL and pool.: partial: the worker half (CPU reference, CUDA, Metal, OpenCL) on the same program packs; the node's and the pool's accepted work on the same job context are the CI steward's and the pool lane's cells; PASS only when every listed platform reads one fingerprint and the node and pool halves are green diff --git a/docs/plans/igneum-2.0-test-registry.json b/docs/plans/igneum-2.0-test-registry.json index e6bbc367c..56e236a00 100644 --- a/docs/plans/igneum-2.0-test-registry.json +++ b/docs/plans/igneum-2.0-test-registry.json @@ -651,31 +651,30 @@ "manual_page": 21, "owner_lane": "research lane (ad6a2bd47d4a46105)", "run_status": "NOT RUN", - "evidence_path": "docs/analysis/class-v6/rows/fleet-f05-20261008.md", - "run_id": "hash-lane-20261008-batch2", - "updated": "2026-10-08T19:59:34.316Z", + "evidence_path": "build-1:/srv/artefacts/tas/p02-rows/p02-rows.txt", + "run_id": "p02-fleet-pods-20261008-01", + "updated": "2026-10-08T21:49:19.980Z", "evidence_record": { - "cell": "bench:fleet-pods", - "manifest_sha": "b24dfc162", - "coverage": { - "GPU-01": "partial: the NVIDIA cells of P02 that RunPod carries", - "GPU-03": "partial: the 4090 cell", - "POW-08": "partial: W = 16 on four cards" - }, - "at": "2026-10-08T19:59:34.316Z", - "method": "GPU", "requirement_id": "GPU-01", "decision": "NOT RUN", - "reviewer": "", - "claim_impact": "", + "method": "GPU", + "cell": "bench:fleet-pods", + "manifest_sha": "417c4a57", + "run_id": "p02-fleet-pods-20261008-01", + "evidence": "build-1:/srv/artefacts/tas/p02-rows/p02-rows.txt", + "in_progress": false, + "coverage": "partial: the NVIDIA cells of P02 that RunPod carries", "release_identity": { - "commit": "b24dfc162", + "commit": "417c4a57", "lockfile": "", "binary": "", "network_object": "", "activation": "", "profile_hashes": "" - } + }, + "claim_impact": "", + "reviewer": "", + "at": "2026-10-08T21:49:19.980Z" }, "in_progress_since": "2026-10-08T19:59:34.316Z", "approvals": { @@ -686,30 +685,26 @@ }, "evidence_records": { "bench:fleet-pods": { - "cell": "bench:fleet-pods", - "manifest_sha": "b24dfc162", - "coverage": { - "GPU-01": "partial: the NVIDIA cells of P02 that RunPod carries", - "GPU-03": "partial: the 4090 cell", - "POW-08": "partial: W = 16 on four cards" - }, - "at": "2026-10-08T19:59:34.316Z", - "method": "GPU", "requirement_id": "GPU-01", "decision": "NOT RUN", - "reviewer": "", - "claim_impact": "", + "method": "GPU", + "cell": "bench:fleet-pods", + "manifest_sha": "417c4a57", + "run_id": "p02-fleet-pods-20261008-01", + "evidence": "build-1:/srv/artefacts/tas/p02-rows/p02-rows.txt", + "in_progress": false, + "coverage": "partial: the NVIDIA cells of P02 that RunPod carries", "release_identity": { - "commit": "b24dfc162", + "commit": "417c4a57", "lockfile": "", "binary": "", "network_object": "", "activation": "", "profile_hashes": "" }, - "run_id": "hash-lane-20261008-batch2", - "evidence": "docs/analysis/class-v6/rows/fleet-f05-20261008.md", - "in_progress": true + "claim_impact": "", + "reviewer": "", + "at": "2026-10-08T21:49:19.980Z" } } }, @@ -835,21 +830,21 @@ "manual_page": 21, "owner_lane": "hash lane (a690540514aa453d7)", "run_status": "NOT RUN", - "evidence_path": "docs/analysis/class-v6/rows/fleet-f05-20261008.md; docs/analysis/class-v6/amd-intel-energy.md", - "run_id": "amd-intel-energy-20261008-01", - "updated": "2026-10-08T20:18:52.686Z", + "evidence_path": "build-1:/srv/artefacts/tas/p02-rows/p02-rows.txt; docs/analysis/class-v6/amd-intel-energy.md", + "run_id": "p02-fleet-pods-20261008-01", + "updated": "2026-10-08T21:49:19.980Z", "evidence_record": { "requirement_id": "GPU-03", "decision": "NOT RUN", "method": "GPU", - "cell": "bench:amd-intel-energy", - "manifest_sha": "c245d50b9", - "run_id": "amd-intel-energy-20261008-01", - "evidence": "docs/analysis/class-v6/amd-intel-energy.md", + "cell": "bench:fleet-pods", + "manifest_sha": "417c4a57", + "run_id": "p02-fleet-pods-20261008-01", + "evidence": "build-1:/srv/artefacts/tas/p02-rows/p02-rows.txt", "in_progress": false, - "coverage": "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", + "coverage": "partial: the 4090 cell", "release_identity": { - "commit": "c245d50b9", + "commit": "417c4a57", "lockfile": "", "binary": "", "network_object": "", @@ -858,7 +853,7 @@ }, "claim_impact": "", "reviewer": "", - "at": "2026-10-08T20:18:52.686Z" + "at": "2026-10-08T21:49:19.980Z" }, "in_progress_since": "2026-10-08T19:59:34.316Z", "approvals": { @@ -869,30 +864,26 @@ }, "evidence_records": { "bench:fleet-pods": { - "cell": "bench:fleet-pods", - "manifest_sha": "b24dfc162", - "coverage": { - "GPU-01": "partial: the NVIDIA cells of P02 that RunPod carries", - "GPU-03": "partial: the 4090 cell", - "POW-08": "partial: W = 16 on four cards" - }, - "at": "2026-10-08T19:59:34.316Z", - "method": "GPU", "requirement_id": "GPU-03", "decision": "NOT RUN", - "reviewer": "", - "claim_impact": "", + "method": "GPU", + "cell": "bench:fleet-pods", + "manifest_sha": "417c4a57", + "run_id": "p02-fleet-pods-20261008-01", + "evidence": "build-1:/srv/artefacts/tas/p02-rows/p02-rows.txt", + "in_progress": false, + "coverage": "partial: the 4090 cell", "release_identity": { - "commit": "b24dfc162", + "commit": "417c4a57", "lockfile": "", "binary": "", "network_object": "", "activation": "", "profile_hashes": "" }, - "run_id": "hash-lane-20261008-batch2", - "evidence": "docs/analysis/class-v6/rows/fleet-f05-20261008.md", - "in_progress": true + "claim_impact": "", + "reviewer": "", + "at": "2026-10-08T21:49:19.980Z" }, "bench:amd-intel-energy": { "requirement_id": "GPU-03", @@ -914,7 +905,7 @@ }, "claim_impact": "", "reviewer": "", - "at": "2026-10-08T20:18:52.686Z" + "at": "2026-10-08T21:49:19.677Z" } } }, @@ -1329,30 +1320,30 @@ "manual_page": 24, "owner_lane": "hash lane (a690540514aa453d7)", "run_status": "NOT RUN", - "evidence_path": "docs/analysis/review-2026-10-08-b/f10/emu-test.log; build-1:/srv/artefacts/tas/same-work-20261008-01/job-context.json; build-1:/srv/artefacts/tas/same-work-20261008-01/references/ref-D.txt; build-1:/srv/artefacts/tas/same-work-20261008-01/references/ref-D1.txt", - "run_id": "same-work-20261008-01", - "updated": "2026-10-08T21:36:08.400Z", + "evidence_path": "docs/analysis/review-2026-10-08-b/f10/emu-test.log; build-1:/srv/artefacts/p01/p01-20261008-01/cuda-5090-hl-v5-win.json; build-1:/srv/artefacts/p01/p01-20261008-01/cuda-4090-hl-v5-win.json; build-1:/srv/artefacts/p01/p01-20261008-01/cuda-3090-hl-v5-win.json; build-1:/srv/artefacts/p01/p01-20261008-01/cuda-5090-hl-v6-all.json; build-1:/srv/artefacts/p01/p01-20261008-01/cuda-4090-hl-v6-all.json; build-1:/srv/artefacts/p01/p01-20261008-01/cuda-3090-hl-v6-all.json; build-1:/srv/artefacts/p01/p01-20261008-01/cuda-5090-hl-v6-foldrw.json; build-1:/srv/artefacts/p01/p01-20261008-01/cuda-4090-hl-v6-foldrw.json; build-1:/srv/artefacts/p01/p01-20261008-01/cuda-3090-hl-v6-foldrw.json; build-1:/srv/artefacts/p01/p01-20261008-01/cuda-5090-hl-v6-all-nowin.json; build-1:/srv/artefacts/p01/p01-20261008-01/cuda-4090-hl-v6-all-nowin.json; build-1:/srv/artefacts/p01/p01-20261008-01/cuda-3090-hl-v6-all-nowin.json", + "run_id": "p01-20261008-01", + "updated": "2026-10-08T21:49:19.918Z", "evidence_record": { "requirement_id": "POW-01", "decision": "NOT RUN", "method": "GPU", "cell": "harness:p01-vectors", - "manifest_sha": "c30ab32c", - "run_id": "same-work-20261008-01", - "evidence": "build-1:/srv/artefacts/tas/same-work-20261008-01/job-context.json; build-1:/srv/artefacts/tas/same-work-20261008-01/references/ref-D.txt; build-1:/srv/artefacts/tas/same-work-20261008-01/references/ref-D1.txt", + "manifest_sha": "417c4a57", + "run_id": "p01-20261008-01", + "evidence": "build-1:/srv/artefacts/p01/p01-20261008-01/cuda-5090-hl-v5-win.json; build-1:/srv/artefacts/p01/p01-20261008-01/cuda-4090-hl-v5-win.json; build-1:/srv/artefacts/p01/p01-20261008-01/cuda-3090-hl-v5-win.json; build-1:/srv/artefacts/p01/p01-20261008-01/cuda-5090-hl-v6-all.json; build-1:/srv/artefacts/p01/p01-20261008-01/cuda-4090-hl-v6-all.json; build-1:/srv/artefacts/p01/p01-20261008-01/cuda-3090-hl-v6-all.json; build-1:/srv/artefacts/p01/p01-20261008-01/cuda-5090-hl-v6-foldrw.json; build-1:/srv/artefacts/p01/p01-20261008-01/cuda-4090-hl-v6-foldrw.json; build-1:/srv/artefacts/p01/p01-20261008-01/cuda-3090-hl-v6-foldrw.json; build-1:/srv/artefacts/p01/p01-20261008-01/cuda-5090-hl-v6-all-nowin.json; build-1:/srv/artefacts/p01/p01-20261008-01/cuda-4090-hl-v6-all-nowin.json; build-1:/srv/artefacts/p01/p01-20261008-01/cuda-3090-hl-v6-all-nowin.json", "in_progress": false, "coverage": "the million-vector campaign per backend per pack, bit-for-bit; PASS only when every supported backend reads a million vectors with zero disagreement; the malformed-input half is harness:parser-malformed", "release_identity": { - "commit": "c30ab32c; the CPU reference class-v6 1a938abe4; the CUDA reader the kit's gen 6 worker 804a6f7f", + "commit": "417c4a57 (the node pin at the kit's cut); the kit packs-class-v6-20261008T162324Z.zip 098e64c3…; the worker igneum-worker-cuda 9bfcf728", "lockfile": "", - "binary": "igneum-pow sha256 0d3f3fca...; igneum-worker-cuda sha256 804a6f7f...", - "network_object": "the frozen class v6 object: pack hl-v6-all (tgz sha256 9131431015e102f4..., re-exported byte for byte from class-v6 1a938abe4 on build-4 at 21:44 UK, every file's sha256 equal), id 0x4de7b836cc40a4ea, epoch seed edc4fa84... (the genesis seeds) over the node1 state stream", - "activation": "none (a re-check of hashes against one job context, no chain state changes)", + "binary": "bin/linux/igneum-worker-cuda (the kit's)", + "network_object": "the class v5 freeze 1c420786, pack hl-v5-win e3da3669 id 0x6554474f410f36f3", + "activation": "igneum-devnet-4 object be5f4068", "profile_hashes": "" }, - "claim_impact": "POW-01's CUDA half across a dataset-day switch on the frozen object: CUDA against the CPU reference bit for bit on three ranges with the day switch at nonce 1572864. NOT same-work evidence: the node engine refuses this seed/stream pair (IgneumEngine::epoch_for's class v5 check wants the stream's block af89be5d... to equal the epoch seed edc4fa84...), so the node and pool readers cannot read it; the coordinator's ruling 22:0x UK keeps it as the CUDA and CPU-only row", + "claim_impact": "POW-01's CUDA half on the class v5 object and all three class v6 D1 candidates: a million nonces agree bit-for-bit with the CPU reference on three CUDA generations each; OpenCL and Metal remain", "reviewer": "", - "at": "2026-10-08T21:36:08.400Z" + "at": "2026-10-08T21:49:19.918Z" }, "in_progress_since": "2026-10-08T20:07:26.255Z", "approvals": { @@ -1392,22 +1383,22 @@ "decision": "NOT RUN", "method": "GPU", "cell": "harness:p01-vectors", - "manifest_sha": "c30ab32c", - "run_id": "same-work-20261008-01", - "evidence": "build-1:/srv/artefacts/tas/same-work-20261008-01/job-context.json; build-1:/srv/artefacts/tas/same-work-20261008-01/references/ref-D.txt; build-1:/srv/artefacts/tas/same-work-20261008-01/references/ref-D1.txt", + "manifest_sha": "417c4a57", + "run_id": "p01-20261008-01", + "evidence": "build-1:/srv/artefacts/p01/p01-20261008-01/cuda-5090-hl-v5-win.json; build-1:/srv/artefacts/p01/p01-20261008-01/cuda-4090-hl-v5-win.json; build-1:/srv/artefacts/p01/p01-20261008-01/cuda-3090-hl-v5-win.json; build-1:/srv/artefacts/p01/p01-20261008-01/cuda-5090-hl-v6-all.json; build-1:/srv/artefacts/p01/p01-20261008-01/cuda-4090-hl-v6-all.json; build-1:/srv/artefacts/p01/p01-20261008-01/cuda-3090-hl-v6-all.json; build-1:/srv/artefacts/p01/p01-20261008-01/cuda-5090-hl-v6-foldrw.json; build-1:/srv/artefacts/p01/p01-20261008-01/cuda-4090-hl-v6-foldrw.json; build-1:/srv/artefacts/p01/p01-20261008-01/cuda-3090-hl-v6-foldrw.json; build-1:/srv/artefacts/p01/p01-20261008-01/cuda-5090-hl-v6-all-nowin.json; build-1:/srv/artefacts/p01/p01-20261008-01/cuda-4090-hl-v6-all-nowin.json; build-1:/srv/artefacts/p01/p01-20261008-01/cuda-3090-hl-v6-all-nowin.json", "in_progress": false, "coverage": "the million-vector campaign per backend per pack, bit-for-bit; PASS only when every supported backend reads a million vectors with zero disagreement; the malformed-input half is harness:parser-malformed", "release_identity": { - "commit": "c30ab32c; the CPU reference class-v6 1a938abe4; the CUDA reader the kit's gen 6 worker 804a6f7f", + "commit": "417c4a57 (the node pin at the kit's cut); the kit packs-class-v6-20261008T162324Z.zip 098e64c3…; the worker igneum-worker-cuda 9bfcf728", "lockfile": "", - "binary": "igneum-pow sha256 0d3f3fca...; igneum-worker-cuda sha256 804a6f7f...", - "network_object": "the frozen class v6 object: pack hl-v6-all (tgz sha256 9131431015e102f4..., re-exported byte for byte from class-v6 1a938abe4 on build-4 at 21:44 UK, every file's sha256 equal), id 0x4de7b836cc40a4ea, epoch seed edc4fa84... (the genesis seeds) over the node1 state stream", - "activation": "none (a re-check of hashes against one job context, no chain state changes)", + "binary": "bin/linux/igneum-worker-cuda (the kit's)", + "network_object": "the class v5 freeze 1c420786, pack hl-v5-win e3da3669 id 0x6554474f410f36f3", + "activation": "igneum-devnet-4 object be5f4068", "profile_hashes": "" }, - "claim_impact": "POW-01's CUDA half across a dataset-day switch on the frozen object: CUDA against the CPU reference bit for bit on three ranges with the day switch at nonce 1572864. NOT same-work evidence: the node engine refuses this seed/stream pair (IgneumEngine::epoch_for's class v5 check wants the stream's block af89be5d... to equal the epoch seed edc4fa84...), so the node and pool readers cannot read it; the coordinator's ruling 22:0x UK keeps it as the CUDA and CPU-only row", + "claim_impact": "POW-01's CUDA half on the class v5 object and all three class v6 D1 candidates: a million nonces agree bit-for-bit with the CPU reference on three CUDA generations each; OpenCL and Metal remain", "reviewer": "", - "at": "2026-10-08T21:36:08.400Z" + "at": "2026-10-08T21:49:19.918Z" } } }, @@ -1440,7 +1431,7 @@ "run_status": "NOT RUN", "evidence_path": "docs/analysis/review-2026-10-08-b/f10/packfile-test.log;docs/analysis/review-2026-10-08-b/f10/geometry-check-mini.log; docs/analysis/class-v6/family-gate.md; docs/analysis/class-v6/rows/chainseed-census-1a938abe4.md; docs/analysis/class-v6/rows/pairing-20261008.md", "run_id": "family-gate-20261008c", - "updated": "2026-10-08T21:39:59.800Z", + "updated": "2026-10-08T21:49:19.800Z", "evidence_record": { "requirement_id": "POW-02", "decision": "NOT RUN", @@ -1461,7 +1452,7 @@ }, "claim_impact": "", "reviewer": "", - "at": "2026-10-08T21:39:59.800Z" + "at": "2026-10-08T21:49:19.800Z" }, "in_progress_since": "2026-10-08T20:07:26.255Z", "approvals": { @@ -1515,7 +1506,7 @@ }, "claim_impact": "", "reviewer": "", - "at": "2026-10-08T21:39:59.800Z" + "at": "2026-10-08T21:49:19.800Z" }, "census:class-v6": { "requirement_id": "POW-02", @@ -2095,22 +2086,22 @@ "owner": "Cryptography + GPU lead", "manual_page": 26, "owner_lane": "hash lane (a690540514aa453d7)", - "run_status": "PASS", - "evidence_path": "docs/analysis/class-v6/rows/pairing-20261008.md", - "run_id": "hash-lane-20261008-batch3", - "updated": "2026-10-08T21:34:44.641Z", + "run_status": "NOT RUN", + "evidence_path": "docs/analysis/class-v6/rows/pairing-20261008.md; build-1:/srv/artefacts/tas/p02-rows/p02-rows.txt", + "run_id": "p02-fleet-pods-20261008-01", + "updated": "2026-10-08T21:49:19.980Z", "evidence_record": { "requirement_id": "POW-08", - "decision": "PASS", - "method": "native", - "cell": "suite:pow", - "manifest_sha": "1a938abe4", - "run_id": "hash-lane-20261008-batch3", - "evidence": "docs/analysis/class-v6/rows/pairing-20261008.md", + "decision": "NOT RUN", + "method": "GPU", + "cell": "bench:fleet-pods", + "manifest_sha": "417c4a57", + "run_id": "p02-fleet-pods-20261008-01", + "evidence": "build-1:/srv/artefacts/tas/p02-rows/p02-rows.txt", "in_progress": false, - "coverage": "partial: the freeze list and the generator version pin; the public-claim scrub is the site gate's", + "coverage": "partial: W = 16 on four cards", "release_identity": { - "commit": "1a938abe4", + "commit": "417c4a57", "lockfile": "", "binary": "", "network_object": "", @@ -2119,7 +2110,7 @@ }, "claim_impact": "", "reviewer": "", - "at": "2026-10-08T21:34:44.641Z" + "at": "2026-10-08T21:49:19.980Z" }, "approvals": { "scope_approved": null, @@ -2149,6 +2140,28 @@ "claim_impact": "", "reviewer": "", "at": "2026-10-08T21:34:44.641Z" + }, + "bench:fleet-pods": { + "requirement_id": "POW-08", + "decision": "NOT RUN", + "method": "GPU", + "cell": "bench:fleet-pods", + "manifest_sha": "417c4a57", + "run_id": "p02-fleet-pods-20261008-01", + "evidence": "build-1:/srv/artefacts/tas/p02-rows/p02-rows.txt", + "in_progress": false, + "coverage": "partial: W = 16 on four cards", + "release_identity": { + "commit": "417c4a57", + "lockfile": "", + "binary": "", + "network_object": "", + "activation": "", + "profile_hashes": "" + }, + "claim_impact": "", + "reviewer": "", + "at": "2026-10-08T21:49:19.980Z" } } } @@ -3557,7 +3570,7 @@ "run_status": "NOT RUN", "evidence_path": "docs/analysis/class-v6/family-gate.md", "run_id": "family-gate-20261008c", - "updated": "2026-10-08T21:39:59.800Z", + "updated": "2026-10-08T21:49:19.800Z", "evidence_record": { "requirement_id": "ROT-07", "decision": "NOT RUN", @@ -3578,7 +3591,7 @@ }, "claim_impact": "", "reviewer": "", - "at": "2026-10-08T21:39:59.800Z" + "at": "2026-10-08T21:49:19.800Z" }, "in_progress_since": "2026-10-08 18:3x UK", "approvals": { @@ -3630,7 +3643,7 @@ }, "claim_impact": "", "reviewer": "", - "at": "2026-10-08T21:39:59.800Z" + "at": "2026-10-08T21:49:19.800Z" } } }, @@ -3663,7 +3676,7 @@ "run_status": "NOT RUN", "evidence_path": "docs/analysis/class-v6/family-gate.md", "run_id": "family-gate-20261008c", - "updated": "2026-10-08T21:39:59.800Z", + "updated": "2026-10-08T21:49:19.800Z", "evidence_record": { "requirement_id": "ROT-08", "decision": "NOT RUN", @@ -3684,7 +3697,7 @@ }, "claim_impact": "", "reviewer": "", - "at": "2026-10-08T21:39:59.800Z" + "at": "2026-10-08T21:49:19.800Z" }, "approvals": { "scope_approved": null, @@ -3713,7 +3726,7 @@ }, "claim_impact": "", "reviewer": "", - "at": "2026-10-08T21:39:59.800Z" + "at": "2026-10-08T21:49:19.800Z" } } } @@ -9959,7 +9972,7 @@ "run_status": "FAIL", "evidence_path": "docs/release/evidence/ux-shipper-2026-10-08.md", "run_id": "incident-u64-coinbase-2026-10-08", - "updated": "2026-10-08T21:21:37.484Z", + "updated": "2026-10-08T21:49:19.860Z", "evidence_record": { "requirement_id": "UX-06", "decision": "FAIL", @@ -9980,7 +9993,7 @@ }, "claim_impact": "no miner could take the work templates the network gave it above 18.4 IGN of merged subsidy", "reviewer": "", - "at": "2026-10-08T21:21:37.484Z" + "at": "2026-10-08T21:49:19.860Z" }, "approvals": { "scope_approved": null, @@ -10009,7 +10022,7 @@ }, "claim_impact": "no miner could take the work templates the network gave it above 18.4 IGN of merged subsidy", "reviewer": "", - "at": "2026-10-08T21:21:37.484Z" + "at": "2026-10-08T21:49:19.860Z" } } }, @@ -12087,30 +12100,31 @@ "POW-01", "ROT-02" ], - "run_id": "same-work-20261008-03", - "evidence_path": "docs/design/class-v5-stored-state.md; build-1:/srv/artefacts/packs/packs-class-v6-20261008T202808Z.zip; build-1:/srv/builds/_log/v5-class/kits-20261008T202808Z/emu-check.log; build-1:/srv/artefacts/tas/same-work-20261008-03/job-context.json; build-1:/srv/artefacts/tas/same-work-20261008-03/state-epoch2.igsd1", - "updated": "2026-10-08T21:36:08.520Z", + "run_id": "same-work-20261008-02", + "evidence_path": "docs/design/class-v5-stored-state.md; build-1:/srv/artefacts/packs/packs-class-v6-20261008T202808Z.zip; build-1:/srv/builds/_log/v5-class/kits-20261008T202808Z/emu-check.log; build-1:/srv/artefacts/tas/same-work-20261008-02/node/node-1.json; build-1:/srv/artefacts/tas/same-work-20261008-02/node/node-2.json; build-1:/srv/artefacts/tas/same-work-20261008-02/node/node-3.json; build-1:/srv/artefacts/tas/same-work-20261008-02/node/node.log; build-1:/srv/artefacts/tas/same-work-20261008-02/references/ref-D.txt; build-1:/srv/artefacts/tas/same-work-20261008-02/references/ref-D1.txt; build-1:/srv/artefacts/tas/same-work-20261008-02/job-context.json; build-1:/srv/artefacts/tas/same-work-20261008-02/pool/kit-row/pool-1.json; build-1:/srv/artefacts/tas/same-work-20261008-02/pool/kit-row/pool-2.json; build-1:/srv/artefacts/tas/same-work-20261008-02/pool/kit-row/pool-3.json", + "updated": "2026-10-08T21:49:20.041Z", "evidence_record": { "requirement_id": "R2-F03-R02", "decision": "NOT RUN", "method": "GPU", "cell": "harness:same-work", "manifest_sha": "c30ab32c", - "run_id": "same-work-20261008-03", - "evidence": "build-1:/srv/artefacts/tas/same-work-20261008-03/job-context.json; build-1:/srv/artefacts/tas/same-work-20261008-03/state-epoch2.igsd1", + "run_id": "same-work-20261008-02", + "evidence": "build-1:/srv/artefacts/tas/same-work-20261008-02/node/node-1.json; build-1:/srv/artefacts/tas/same-work-20261008-02/node/node-2.json; build-1:/srv/artefacts/tas/same-work-20261008-02/node/node-3.json; build-1:/srv/artefacts/tas/same-work-20261008-02/node/node.log; build-1:/srv/artefacts/tas/same-work-20261008-02/references/ref-D.txt; build-1:/srv/artefacts/tas/same-work-20261008-02/references/ref-D1.txt; build-1:/srv/artefacts/tas/same-work-20261008-02/job-context.json; build-1:/srv/artefacts/tas/same-work-20261008-02/pool/kit-row/pool-1.json; build-1:/srv/artefacts/tas/same-work-20261008-02/pool/kit-row/pool-2.json; build-1:/srv/artefacts/tas/same-work-20261008-02/pool/kit-row/pool-3.json", "in_progress": false, "coverage": "partial until every reader has run: bit-for-bit agreement per nonce across node, CPU reference, CUDA, OpenCL, Metal and pool on one job context", "release_identity": { - "commit": "c30ab32c (release-2.0.1; the class v5 freeze 1c420786, fingerprint cbc5bd0a); the CUDA reader the kit's gen 5 worker 9bfcf728", + "commit": "c30ab32c (packaging/release-manifest.json on release-2.0.1; node 7cfa422a); the readers: node same-work-node cc23f9bd (igneum-node, off class-v6-node-review e8773ff5, paired with class-v6 1a938abe4), CPU reference class-v6 1a938abe4, CUDA the kit's gen 6 worker 804a6f7f, pool pool-recheck-202 00c7e1db over class-v6-node-review e8773ff5", "lockfile": "", - "binary": "igneum-pow sha256 7ba781db... (release-2.0.1 c30ab32c, built on build-4); igneum-worker-cuda gen 5 sha256 9bfcf728...", - "network_object": "igneum-devnet-4's class v5 object at epoch 2: id 0x81fbfa3aa413173f, epoch seed 3c3fab43... (the epoch-2 seed block, chain block 3423, common to every chain tonight: the split came after it), day 20734, era 0 seed 7c36b833... (class v5 reads no era; the id is the same under era zero), state stream state-epoch2.igsd1 (sha256 f36e6bba..., 21,132 bytes, 224 records, root 0xf798d1d8...) pulled at 22:18 UK from build-1's seed EVM RPC 27810", + "binary": "igneum-miner recheck-vectors sha256 9d563c41...; igneum-pow sha256 0d3f3fca...; igneum-worker-cuda sha256 804a6f7f...; igneum-pool sha256 b9fb3a60... (D1 pairing) and 2f6378e4... (kit)", + "network_object": "the chain-seed class v6 object: epoch seed af89be5d... (the node1 state stream's block 159357, root 1c583d35..., stream sha256 abb58003...) with the genesis era seed edc4fa84..., generator 6, id 0x2a1d6caab4c24564 (the hash lane's 22:00 UK ruling; their independent export hl-v6-all-cs a4742bfe... equals packs/chain-seed-d20730 file by file)", "activation": "none (a re-check of hashes against one job context, no chain state changes)", "profile_hashes": "" }, - "claim_impact": "the same-work test's live-chain half (the coordinator's third row, 22:1x UK): the readers on the chain's own class v5 object at epoch 2 across the day switch 20734 to 20735; the node and pool readers run it on their release-line engines, the row those two can PASS without the class v6 branch", + "claim_impact": "R2-F03-R02 and R03 on one job context (the chain-seed class v6 object) across the readers that can run it tonight: node, CPU reference, CUDA and pool on three phases with the dataset-day switch at nonce 1572864; PASS only when every reader agrees bit for bit on every nonce; Metal and OpenCL are the morning's", "reviewer": "", - "at": "2026-10-08T21:36:08.520Z" + "at": "2026-10-08T21:49:20.041Z", + "network_label": "on an island, not a network" }, "evidence_records": { "kit:class-v6-fingerprints": { @@ -12141,21 +12155,22 @@ "method": "GPU", "cell": "harness:same-work", "manifest_sha": "c30ab32c", - "run_id": "same-work-20261008-03", - "evidence": "build-1:/srv/artefacts/tas/same-work-20261008-03/job-context.json; build-1:/srv/artefacts/tas/same-work-20261008-03/state-epoch2.igsd1", + "run_id": "same-work-20261008-02", + "evidence": "build-1:/srv/artefacts/tas/same-work-20261008-02/node/node-1.json; build-1:/srv/artefacts/tas/same-work-20261008-02/node/node-2.json; build-1:/srv/artefacts/tas/same-work-20261008-02/node/node-3.json; build-1:/srv/artefacts/tas/same-work-20261008-02/node/node.log; build-1:/srv/artefacts/tas/same-work-20261008-02/references/ref-D.txt; build-1:/srv/artefacts/tas/same-work-20261008-02/references/ref-D1.txt; build-1:/srv/artefacts/tas/same-work-20261008-02/job-context.json; build-1:/srv/artefacts/tas/same-work-20261008-02/pool/kit-row/pool-1.json; build-1:/srv/artefacts/tas/same-work-20261008-02/pool/kit-row/pool-2.json; build-1:/srv/artefacts/tas/same-work-20261008-02/pool/kit-row/pool-3.json", "in_progress": false, "coverage": "partial until every reader has run: bit-for-bit agreement per nonce across node, CPU reference, CUDA, OpenCL, Metal and pool on one job context", "release_identity": { - "commit": "c30ab32c (release-2.0.1; the class v5 freeze 1c420786, fingerprint cbc5bd0a); the CUDA reader the kit's gen 5 worker 9bfcf728", + "commit": "c30ab32c (packaging/release-manifest.json on release-2.0.1; node 7cfa422a); the readers: node same-work-node cc23f9bd (igneum-node, off class-v6-node-review e8773ff5, paired with class-v6 1a938abe4), CPU reference class-v6 1a938abe4, CUDA the kit's gen 6 worker 804a6f7f, pool pool-recheck-202 00c7e1db over class-v6-node-review e8773ff5", "lockfile": "", - "binary": "igneum-pow sha256 7ba781db... (release-2.0.1 c30ab32c, built on build-4); igneum-worker-cuda gen 5 sha256 9bfcf728...", - "network_object": "igneum-devnet-4's class v5 object at epoch 2: id 0x81fbfa3aa413173f, epoch seed 3c3fab43... (the epoch-2 seed block, chain block 3423, common to every chain tonight: the split came after it), day 20734, era 0 seed 7c36b833... (class v5 reads no era; the id is the same under era zero), state stream state-epoch2.igsd1 (sha256 f36e6bba..., 21,132 bytes, 224 records, root 0xf798d1d8...) pulled at 22:18 UK from build-1's seed EVM RPC 27810", + "binary": "igneum-miner recheck-vectors sha256 9d563c41...; igneum-pow sha256 0d3f3fca...; igneum-worker-cuda sha256 804a6f7f...; igneum-pool sha256 b9fb3a60... (D1 pairing) and 2f6378e4... (kit)", + "network_object": "the chain-seed class v6 object: epoch seed af89be5d... (the node1 state stream's block 159357, root 1c583d35..., stream sha256 abb58003...) with the genesis era seed edc4fa84..., generator 6, id 0x2a1d6caab4c24564 (the hash lane's 22:00 UK ruling; their independent export hl-v6-all-cs a4742bfe... equals packs/chain-seed-d20730 file by file)", "activation": "none (a re-check of hashes against one job context, no chain state changes)", "profile_hashes": "" }, - "claim_impact": "the same-work test's live-chain half (the coordinator's third row, 22:1x UK): the readers on the chain's own class v5 object at epoch 2 across the day switch 20734 to 20735; the node and pool readers run it on their release-line engines, the row those two can PASS without the class v6 branch", + "claim_impact": "R2-F03-R02 and R03 on one job context (the chain-seed class v6 object) across the readers that can run it tonight: node, CPU reference, CUDA and pool on three phases with the dataset-day switch at nonce 1572864; PASS only when every reader agrees bit for bit on every nonce; Metal and OpenCL are the morning's", "reviewer": "", - "at": "2026-10-08T21:36:08.520Z" + "at": "2026-10-08T21:49:20.041Z", + "network_label": "on an island, not a network" } }, "in_progress_since": "2026-10-08T21:18:18.084Z", @@ -12197,30 +12212,31 @@ "POW-01", "ROT-02" ], - "run_id": "same-work-20261008-03", - "evidence_path": "build-1:/srv/artefacts/tas/same-work-20261008-03/job-context.json", - "updated": "2026-10-08T21:36:08.520Z", + "run_id": "same-work-20261008-02", + "evidence_path": "build-1:/srv/artefacts/tas/same-work-20261008-02/node/node-1.json; build-1:/srv/artefacts/tas/same-work-20261008-02/node/node-2.json; build-1:/srv/artefacts/tas/same-work-20261008-02/node/node-3.json; build-1:/srv/artefacts/tas/same-work-20261008-02/node/node.log; build-1:/srv/artefacts/tas/same-work-20261008-02/references/ref-D.txt; build-1:/srv/artefacts/tas/same-work-20261008-02/references/ref-D1.txt; build-1:/srv/artefacts/tas/same-work-20261008-02/job-context.json", + "updated": "2026-10-08T21:49:20.041Z", "evidence_record": { "requirement_id": "R2-F03-R03", "decision": "NOT RUN", "method": "GPU", "cell": "harness:same-work", "manifest_sha": "c30ab32c", - "run_id": "same-work-20261008-03", - "evidence": "build-1:/srv/artefacts/tas/same-work-20261008-03/job-context.json", + "run_id": "same-work-20261008-02", + "evidence": "build-1:/srv/artefacts/tas/same-work-20261008-02/node/node-1.json; build-1:/srv/artefacts/tas/same-work-20261008-02/node/node-2.json; build-1:/srv/artefacts/tas/same-work-20261008-02/node/node-3.json; build-1:/srv/artefacts/tas/same-work-20261008-02/node/node.log; build-1:/srv/artefacts/tas/same-work-20261008-02/references/ref-D.txt; build-1:/srv/artefacts/tas/same-work-20261008-02/references/ref-D1.txt; build-1:/srv/artefacts/tas/same-work-20261008-02/job-context.json", "in_progress": false, "coverage": "partial: the day-boundary transition in phase 2 (the one transition every live network crosses hourly at 60x); a class rotation is the same test on a research object until a v6 floor is set", "release_identity": { - "commit": "c30ab32c (release-2.0.1; the class v5 freeze 1c420786, fingerprint cbc5bd0a); the CUDA reader the kit's gen 5 worker 9bfcf728", + "commit": "c30ab32c (packaging/release-manifest.json on release-2.0.1; node 7cfa422a); the readers: node same-work-node cc23f9bd (igneum-node, off class-v6-node-review e8773ff5, paired with class-v6 1a938abe4), CPU reference class-v6 1a938abe4, CUDA the kit's gen 6 worker 804a6f7f, pool pool-recheck-202 00c7e1db over class-v6-node-review e8773ff5", "lockfile": "", - "binary": "igneum-pow sha256 7ba781db... (release-2.0.1 c30ab32c, built on build-4); igneum-worker-cuda gen 5 sha256 9bfcf728...", - "network_object": "igneum-devnet-4's class v5 object at epoch 2: id 0x81fbfa3aa413173f, epoch seed 3c3fab43... (the epoch-2 seed block, chain block 3423, common to every chain tonight: the split came after it), day 20734, era 0 seed 7c36b833... (class v5 reads no era; the id is the same under era zero), state stream state-epoch2.igsd1 (sha256 f36e6bba..., 21,132 bytes, 224 records, root 0xf798d1d8...) pulled at 22:18 UK from build-1's seed EVM RPC 27810", + "binary": "igneum-miner recheck-vectors sha256 9d563c41...; igneum-pow sha256 0d3f3fca...; igneum-worker-cuda sha256 804a6f7f...; igneum-pool sha256 b9fb3a60... (D1 pairing) and 2f6378e4... (kit)", + "network_object": "the chain-seed class v6 object: epoch seed af89be5d... (the node1 state stream's block 159357, root 1c583d35..., stream sha256 abb58003...) with the genesis era seed edc4fa84..., generator 6, id 0x2a1d6caab4c24564 (the hash lane's 22:00 UK ruling; their independent export hl-v6-all-cs a4742bfe... equals packs/chain-seed-d20730 file by file)", "activation": "none (a re-check of hashes against one job context, no chain state changes)", "profile_hashes": "" }, - "claim_impact": "the same-work test's live-chain half (the coordinator's third row, 22:1x UK): the readers on the chain's own class v5 object at epoch 2 across the day switch 20734 to 20735; the node and pool readers run it on their release-line engines, the row those two can PASS without the class v6 branch", + "claim_impact": "R2-F03-R02 and R03 on one job context (the chain-seed class v6 object) across the readers that can run it tonight: node, CPU reference, CUDA and pool on three phases with the dataset-day switch at nonce 1572864; PASS only when every reader agrees bit for bit on every nonce; Metal and OpenCL are the morning's", "reviewer": "", - "at": "2026-10-08T21:36:08.520Z" + "at": "2026-10-08T21:49:20.041Z", + "network_label": "on an island, not a network" }, "evidence_records": { "harness:same-work": { @@ -12229,21 +12245,22 @@ "method": "GPU", "cell": "harness:same-work", "manifest_sha": "c30ab32c", - "run_id": "same-work-20261008-03", - "evidence": "build-1:/srv/artefacts/tas/same-work-20261008-03/job-context.json", + "run_id": "same-work-20261008-02", + "evidence": "build-1:/srv/artefacts/tas/same-work-20261008-02/node/node-1.json; build-1:/srv/artefacts/tas/same-work-20261008-02/node/node-2.json; build-1:/srv/artefacts/tas/same-work-20261008-02/node/node-3.json; build-1:/srv/artefacts/tas/same-work-20261008-02/node/node.log; build-1:/srv/artefacts/tas/same-work-20261008-02/references/ref-D.txt; build-1:/srv/artefacts/tas/same-work-20261008-02/references/ref-D1.txt; build-1:/srv/artefacts/tas/same-work-20261008-02/job-context.json", "in_progress": false, "coverage": "partial: the day-boundary transition in phase 2 (the one transition every live network crosses hourly at 60x); a class rotation is the same test on a research object until a v6 floor is set", "release_identity": { - "commit": "c30ab32c (release-2.0.1; the class v5 freeze 1c420786, fingerprint cbc5bd0a); the CUDA reader the kit's gen 5 worker 9bfcf728", + "commit": "c30ab32c (packaging/release-manifest.json on release-2.0.1; node 7cfa422a); the readers: node same-work-node cc23f9bd (igneum-node, off class-v6-node-review e8773ff5, paired with class-v6 1a938abe4), CPU reference class-v6 1a938abe4, CUDA the kit's gen 6 worker 804a6f7f, pool pool-recheck-202 00c7e1db over class-v6-node-review e8773ff5", "lockfile": "", - "binary": "igneum-pow sha256 7ba781db... (release-2.0.1 c30ab32c, built on build-4); igneum-worker-cuda gen 5 sha256 9bfcf728...", - "network_object": "igneum-devnet-4's class v5 object at epoch 2: id 0x81fbfa3aa413173f, epoch seed 3c3fab43... (the epoch-2 seed block, chain block 3423, common to every chain tonight: the split came after it), day 20734, era 0 seed 7c36b833... (class v5 reads no era; the id is the same under era zero), state stream state-epoch2.igsd1 (sha256 f36e6bba..., 21,132 bytes, 224 records, root 0xf798d1d8...) pulled at 22:18 UK from build-1's seed EVM RPC 27810", + "binary": "igneum-miner recheck-vectors sha256 9d563c41...; igneum-pow sha256 0d3f3fca...; igneum-worker-cuda sha256 804a6f7f...; igneum-pool sha256 b9fb3a60... (D1 pairing) and 2f6378e4... (kit)", + "network_object": "the chain-seed class v6 object: epoch seed af89be5d... (the node1 state stream's block 159357, root 1c583d35..., stream sha256 abb58003...) with the genesis era seed edc4fa84..., generator 6, id 0x2a1d6caab4c24564 (the hash lane's 22:00 UK ruling; their independent export hl-v6-all-cs a4742bfe... equals packs/chain-seed-d20730 file by file)", "activation": "none (a re-check of hashes against one job context, no chain state changes)", "profile_hashes": "" }, - "claim_impact": "the same-work test's live-chain half (the coordinator's third row, 22:1x UK): the readers on the chain's own class v5 object at epoch 2 across the day switch 20734 to 20735; the node and pool readers run it on their release-line engines, the row those two can PASS without the class v6 branch", + "claim_impact": "R2-F03-R02 and R03 on one job context (the chain-seed class v6 object) across the readers that can run it tonight: node, CPU reference, CUDA and pool on three phases with the dataset-day switch at nonce 1572864; PASS only when every reader agrees bit for bit on every nonce; Metal and OpenCL are the morning's", "reviewer": "", - "at": "2026-10-08T21:36:08.520Z" + "at": "2026-10-08T21:49:20.041Z", + "network_label": "on an island, not a network" } }, "approvals": { diff --git a/tools/ci/batches/amd-intel-energy-20261008-01.json b/tools/ci/batches/amd-intel-energy-20261008-01.json index 346ff8e09..8e46bb5ac 100644 --- a/tools/ci/batches/amd-intel-energy-20261008-01.json +++ b/tools/ci/batches/amd-intel-energy-20261008-01.json @@ -1,15 +1,16 @@ { - "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 - } - ] + "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 the project's first rig 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 + } + ], + "note": " (rig names scrubbed for the served registry at 22:2x UK, the steward's identity landing.)" } diff --git a/tools/ci/batches/canary-miner-fix-7cfa422a.json b/tools/ci/batches/canary-miner-fix-7cfa422a.json index 84a18e38d..28733951d 100644 --- a/tools/ci/batches/canary-miner-fix-7cfa422a.json +++ b/tools/ci/batches/canary-miner-fix-7cfa422a.json @@ -3,9 +3,16 @@ "manifest_sha": "7cfa422a", "evidence_dir": "docs/release/evidence", "cells": [ - {"cell": "suite:miner", "cases": ["UX-06"], "status": "PASS", "method": "team-reported", - "evidence": "docs/release/evidence/ux-shipper-2026-10-08.md", - "note": "the fixed miner 7cfa422a on build-1's seed, 20:05:11 to 20:06:11 BST: 49 templates taken in 60 s, no template error, no amount-high-word refusal, no NODE SLOW; MINER SUMMARY 0.006 MH/s (cpu), VOTER votes 20 of 20; lp-4090-11 on the kit from 20:31: zero refusals, 186 blocks accepted in 320 s; the whole fleet's miners on it by 21:48", - "claim_impact": "the miner takes every template the network gives it, including coinbases above a u64"} + { + "cell": "suite:miner", + "cases": [ + "UX-06" + ], + "status": "PASS", + "method": "team-reported", + "evidence": "docs/release/evidence/ux-shipper-2026-10-08.md", + "note": "the fixed miner 7cfa422a on build-1's seed, 20:05:11 to 20:06:11 UK: 49 templates taken in 60 s, no template error, no amount-high-word refusal, no NODE SLOW; MINER SUMMARY 0.006 MH/s (cpu), VOTER votes 20 of 20; lp-4090-11 on the kit from 20:31: zero refusals, 186 blocks accepted in 320 s; the whole fleet's miners on it by 21:48", + "claim_impact": "the miner takes every template the network gives it, including coinbases above a u64" + } ] } diff --git a/tools/ci/batches/family-gate-20261008c.json b/tools/ci/batches/family-gate-20261008c.json index d10613a0d..9b2e12621 100644 --- a/tools/ci/batches/family-gate-20261008c.json +++ b/tools/ci/batches/family-gate-20261008c.json @@ -2,10 +2,16 @@ "run_id": "family-gate-20261008c", "manifest_sha": "1a938abe4", "method": "native", - "cut_tip": "class-v6 1a938abe4 (section 6.13: the chain-seed draw through the acceptance at both era inputs; by the hash lane's 22:00 BST ruling the era-edc4fa84 column, id 2a1d6caab4c24564, is the signing object's and passes, clean of the bit-R class; the era-af89be5d column is the pack hl-v6-all-chainseed's reproduction, void for F0); ac86d7910 for 6.12 and before (family-gate-20261008b)", + "cut_tip": "class-v6 1a938abe4 (section 6.13: the chain-seed draw through the acceptance at both era inputs; by the hash lane's 22:00 UK ruling the era-edc4fa84 column, id 2a1d6caab4c24564, is the signing object's and passes, clean of the bit-R class; the era-af89be5d column is the pack hl-v6-all-chainseed's reproduction, void for F0); ac86d7910 for 6.12 and before (family-gate-20261008b)", "evidence_dir": "docs/analysis/class-v6/logs", - "boxes": ["build-6"], + "boxes": [ + "build-6" + ], "cells": [ - {"cell": "harness:family-gate", "status": "NOT RUN", "evidence": "docs/analysis/class-v6/family-gate.md"} + { + "cell": "harness:family-gate", + "status": "NOT RUN", + "evidence": "docs/analysis/class-v6/family-gate.md" + } ] } diff --git a/tools/ci/batches/incident-u64-coinbase-2026-10-08.json b/tools/ci/batches/incident-u64-coinbase-2026-10-08.json index 4b54c8321..ad0f18458 100644 --- a/tools/ci/batches/incident-u64-coinbase-2026-10-08.json +++ b/tools/ci/batches/incident-u64-coinbase-2026-10-08.json @@ -3,9 +3,16 @@ "manifest_sha": "4cdcc488", "evidence_dir": "docs/release/evidence", "cells": [ - {"cell": "suite:miner", "cases": ["UX-06"], "status": "FAIL", "method": "team-reported", - "evidence": "docs/release/evidence/ux-shipper-2026-10-08.md", - "note": "the shipped miner (4cdcc488, ef0f2ed8) refused every block template whose coinbase exceeded a u64 (rpc/core/src/error.rs:131; the base unit installed only for `inspect`); the fleet fell to a two-key branch, 0 blocks per minute at 19:54 BST", - "claim_impact": "no miner could take the work templates the network gave it above 18.4 IGN of merged subsidy"} + { + "cell": "suite:miner", + "cases": [ + "UX-06" + ], + "status": "FAIL", + "method": "team-reported", + "evidence": "docs/release/evidence/ux-shipper-2026-10-08.md", + "note": "the shipped miner (4cdcc488, ef0f2ed8) refused every block template whose coinbase exceeded a u64 (rpc/core/src/error.rs:131; the base unit installed only for `inspect`); the fleet fell to a two-key branch, 0 blocks per minute at 19:54 UK", + "claim_impact": "no miner could take the work templates the network gave it above 18.4 IGN of merged subsidy" + } ] } diff --git a/tools/ci/batches/p01-20261008-01.json b/tools/ci/batches/p01-20261008-01.json index 52880bcbb..dcfaeed24 100644 --- a/tools/ci/batches/p01-20261008-01.json +++ b/tools/ci/batches/p01-20261008-01.json @@ -24,5 +24,5 @@ "evidence": "build-1:/srv/artefacts/p01/p01-20261008-01/cuda-5090-hl-v5-win.json; build-1:/srv/artefacts/p01/p01-20261008-01/cuda-4090-hl-v5-win.json; build-1:/srv/artefacts/p01/p01-20261008-01/cuda-3090-hl-v5-win.json; build-1:/srv/artefacts/p01/p01-20261008-01/cuda-5090-hl-v6-all.json; build-1:/srv/artefacts/p01/p01-20261008-01/cuda-4090-hl-v6-all.json; build-1:/srv/artefacts/p01/p01-20261008-01/cuda-3090-hl-v6-all.json; build-1:/srv/artefacts/p01/p01-20261008-01/cuda-5090-hl-v6-foldrw.json; build-1:/srv/artefacts/p01/p01-20261008-01/cuda-4090-hl-v6-foldrw.json; build-1:/srv/artefacts/p01/p01-20261008-01/cuda-3090-hl-v6-foldrw.json; build-1:/srv/artefacts/p01/p01-20261008-01/cuda-5090-hl-v6-all-nowin.json; build-1:/srv/artefacts/p01/p01-20261008-01/cuda-4090-hl-v6-all-nowin.json; build-1:/srv/artefacts/p01/p01-20261008-01/cuda-3090-hl-v6-all-nowin.json" } ], - "note": "P01 part A, the CUDA half, complete at 20:41 UK: four packs (hl-v5-win e3da3669 id 0x6554474f410f36f3 gen 5; hl-v6-all 6df3d430 id 0x4de7b836cc40a4ea gen 6; hl-v6-foldrw f0dc3428 id 0xd7eba30115d26dd4; hl-v6-all-nowin 67ceec05 id 0xbe1d6f48928cef4a) on three CUDA cards (RTX 5090 sm_120, 4090 sm_89, 3090 sm_86), twelve runs, every one driver exit 0, answered 1,000,000, agree 1,000,000, disagree 0, missing 0, 41 to 50 s per million; the kit worker 9bfcf728 for gen 5, the generator-6 worker 804a6f7f for gen 6; the twelve JSONs parsed on build-1 with their sha256s. Remaining for PASS: OpenCL (PC 1's RX 7600, the hash lane; no rented AMD card exists tonight) and Metal (the mini, the morning); the case stays NOT RUN in progress until then." + "note": "P01 part A, the CUDA half, complete at 20:41 UK: four packs (hl-v5-win e3da3669 id 0x6554474f410f36f3 gen 5; hl-v6-all 6df3d430 id 0x4de7b836cc40a4ea gen 6; hl-v6-foldrw f0dc3428 id 0xd7eba30115d26dd4; hl-v6-all-nowin 67ceec05 id 0xbe1d6f48928cef4a) on three CUDA cards (RTX 5090 sm_120, 4090 sm_89, 3090 sm_86), twelve runs, every one driver exit 0, answered 1,000,000, agree 1,000,000, disagree 0, missing 0, 41 to 50 s per million; the kit worker 9bfcf728 for gen 5, the generator-6 worker 804a6f7f for gen 6; the twelve JSONs parsed on build-1 with their sha256s. Remaining for PASS: OpenCL (the project's first rig's RX 7600, the hash lane; no rented AMD card exists tonight) and Metal (the mini, the morning); the case stays NOT RUN in progress until then. (rig names scrubbed for the served registry at 22:2x UK, the steward's identity landing.)" } diff --git a/tools/ci/batches/p02-fleet-pods-20261008-01.json b/tools/ci/batches/p02-fleet-pods-20261008-01.json index 0d2033801..914af6e76 100644 --- a/tools/ci/batches/p02-fleet-pods-20261008-01.json +++ b/tools/ci/batches/p02-fleet-pods-20261008-01.json @@ -15,8 +15,9 @@ "cell": "bench:fleet-pods", "status": "NOT RUN", "evidence": "build-1:/srv/artefacts/tas/p02-rows/p02-rows.txt", - "note": "six CUDA retail cells measured (2080 Ti, 3060 12 GB, 3070 8 GB, 4060 8 GB, 4070 12 GB, 4070 Ti): hl-v5-win, hl-v6-all, hl-v6-foldrw rate and board power, every check PASS on the kit fingerprints; RUNNING not PASS because the AMD cells are PC 1 only (no rented AMD listed), the 1080 Ti cell is open, the 1300 MHz lock did not take inside RunPod containers, the 4060 host reports no power, and the v6 rows predate the 04442d9c pack re-export (program id only)" + "note": "six CUDA retail cells measured (2080 Ti, 3060 12 GB, 3070 8 GB, 4060 8 GB, 4070 12 GB, 4070 Ti): hl-v5-win, hl-v6-all, hl-v6-foldrw rate and board power, every check PASS on the kit fingerprints; RUNNING not PASS because the AMD cells are the project's first rig only (no rented AMD listed), the 1080 Ti cell is open, the 1300 MHz lock did not take inside RunPod containers, the 4060 host reports no power, and the v6 rows predate the 04442d9c pack re-export (program id only)" } ], - "method": "GPU" + "method": "GPU", + "note": " (rig names scrubbed for the served registry at 22:2x UK, the steward's identity landing.)" } diff --git a/tools/ci/batches/same-work-20261008-02.json b/tools/ci/batches/same-work-20261008-02.json index 08a8dcc0d..e4c4a1174 100644 --- a/tools/ci/batches/same-work-20261008-02.json +++ b/tools/ci/batches/same-work-20261008-02.json @@ -20,7 +20,7 @@ }, "claim_impact": "R2-F03-R02 and R03 on one job context (the chain-seed class v6 object) across the readers that can run it tonight: node, CPU reference, CUDA and pool on three phases with the dataset-day switch at nonce 1572864; PASS only when every reader agrees bit for bit on every nonce; Metal and OpenCL are the morning's", "network_label": "on an island, not a network", - "note": "The same-work run (the coordinator's ruling 22:0x UK: six readers on one context; the frozen-object context 01 is the CUDA and CPU-only row). The node1 state stream (block af89be5d..., written on build-4 at 15:34 UK, before the 20:00 UK split) keys every item; every cell carries the island label by main's 22:2x UK rule. Day D = 20730 (bytes ...2ffa50), D+1 = 20731 (...2ffb50); phase 2 switches at 1572864 (the midpoint, 32-aligned); genesis day index 20730 and dataset 2^28 words for the engine's growth rule (doublings 0 on both days). CPU reference: igneum-pow hash-bound (class-v6 1a938abe4, binary 0d3f3fca...) on build-4, 21:48 to 21:57 UK, ref-D 7c7be9b5... over [0, 1572864), ref-D1 cad7849f... over [1572864, 3145728); the hash lane's independent million-nonce reference hl-v6-all-cs.txt (b77c61d8..., 22:03 UK) equals ref-D's first million lines byte for byte. Node reader: PASS on all three phases (22:17, 22:21, 22:25 UK; 1,048,576 agree each, 0 disagree, 0 missing; the boundary switched: d28fcfd70ba70a64 before, 45905ff3d608dc12 after, both equal to the reference; the program id unchanged across the day). Reader faults recorded, not disagreements: the node reader's first phase 1 at 22:10 UK read FAIL on every nonce with the program id equal because the standalone engine held the genesis day at 0 and the growth rule doubled the cache fourteen times (fixed at cc23f9bd: install_pow_genesis from the context and the pack, the live miner's own call); the pool lane's D1-pairing run at 22:17 UK hit the same class (its nonce 0 and 1 hashes equal the pre-fix node hashes byte for byte), fix sent 22:18 UK, rerun pending. The pool on the 2.0.2 kit as pinned (release-2.0.2 00c7e1db, node 7cfa422a) is BLOCKED: its node's ProgramClass enum ends at V5, so a class=v6 job line is unnameable (pool/kit-row/pool-{1,2,3}.json carry that refusal in the driver's shape). CUDA: the 5090's phase 1 PASS at 22:00 and 22:24 UK (gen 6 worker 804a6f7f, 47.6 s); phases 2 and 3 running at the time of this record (the fleet lane's runner restarted at 22:22 UK for the three-context file; its stray phase 2 and 3 lines at 22:23 were the restart's artefact, overwritten by the clean sequence). Rule 24 on same-work-node cc23f9bd on build-2: crate check rc 0, igneum-miner suite 30 passed 0 failed.", + "note": "The same-work run (the coordinator's ruling 22:0x UK: six readers on one context; the frozen-object context 01 is the CUDA and CPU-only row). The node1 state stream (block af89be5d..., written on build-4 at 15:34 UK, before the 20:00 UK split) keys every item; every cell carries the island label by main's 22:2x UK rule. Day D = 20730 (bytes ...2ffa50), D+1 = 20731 (...2ffb50); phase 2 switches at 1572864 (the midpoint, 32-aligned); genesis day index 20730 and dataset 2^28 words for the engine's growth rule (doublings 0 on both days). CPU reference: igneum-pow hash-bound (class-v6 1a938abe4, binary 0d3f3fca...) on build-4, 21:48 to 21:57 UK, ref-D 7c7be9b5... over [0, 1572864), ref-D1 cad7849f... over [1572864, 3145728); the hash lane's independent million-nonce reference hl-v6-all-cs.txt (b77c61d8..., 22:03 UK) equals ref-D's first million lines byte for byte. Node reader: PASS on all three phases (22:17, 22:21, 22:25 UK; 1,048,576 agree each, 0 disagree, 0 missing; the boundary switched: d28fcfd70ba70a64 before, 45905ff3d608dc12 after, both equal to the reference; the program id unchanged across the day). Reader faults recorded, not disagreements: the node reader's first phase 1 at 22:10 UK read FAIL on every nonce with the program id equal because the standalone engine held the genesis day at 0 and the growth rule doubled the cache fourteen times (fixed at cc23f9bd: install_pow_genesis from the context and the pack, the live miner's own call); the pool lane's D1-pairing run at 22:17 UK hit the same class (its nonce 0 and 1 hashes equal the pre-fix node hashes byte for byte), fix sent 22:18 UK, rerun pending. The pool on the 2.0.2 kit as pinned (release-2.0.2 00c7e1db, node 7cfa422a) is BLOCKED: its node's ProgramClass enum ends at V5, so a class=v6 job line is unnameable (pool/kit-row/pool-{1,2,3}.json carry that refusal in the driver's shape). CUDA: the 5090's phase 1 PASS at 22:00 and 22:24 UK (gen 6 worker 804a6f7f, 47.6 s); phases 2 and 3 running at the time of this record (the fleet lane's runner restarted at 22:22 UK for the three-context file; its stray phase 2 and 3 lines at 22:23 were the restart's artefact, overwritten by the clean sequence). Rule 24 on same-work-node cc23f9bd on build-2: crate check rc 0, igneum-miner suite 30 passed 0 failed. (served-page words scrubbed at 22:4x UK, the steward's identity landing.)", "cells": [ { "cell": "harness:same-work", @@ -30,7 +30,7 @@ "status": "NOT RUN", "method": "GPU", "evidence": "build-1:/srv/artefacts/tas/same-work-20261008-02/node/node-1.json; build-1:/srv/artefacts/tas/same-work-20261008-02/node/node-2.json; build-1:/srv/artefacts/tas/same-work-20261008-02/node/node-3.json; build-1:/srv/artefacts/tas/same-work-20261008-02/node/node.log; build-1:/srv/artefacts/tas/same-work-20261008-02/references/ref-D.txt; build-1:/srv/artefacts/tas/same-work-20261008-02/references/ref-D1.txt; build-1:/srv/artefacts/tas/same-work-20261008-02/job-context.json; build-1:/srv/artefacts/tas/same-work-20261008-02/pool/kit-row/pool-1.json; build-1:/srv/artefacts/tas/same-work-20261008-02/pool/kit-row/pool-2.json; build-1:/srv/artefacts/tas/same-work-20261008-02/pool/kit-row/pool-3.json", - "note": "node PASS x3, CPU reference written and cross-checked, CUDA 5090 phase 1 PASS and phases 2 and 3 running, pool D1 pairing rerun pending after the install fix, pool kit row BLOCKED by its V5 pins, Metal and OpenCL NOT RUN until the morning (Metal 08:30 UK on the mini, OpenCL 08:30 UK on PC 1); the case stays NOT RUN in progress until every reader has read", + "note": "node PASS x3, CPU reference written and cross-checked, CUDA 5090 phase 1 PASS and phases 2 and 3 running, pool D1 pairing rerun pending after the install fix, pool kit row BLOCKED by its V5 pins, Metal and OpenCL NOT RUN until the morning (Metal 08:30 UK on the mini, OpenCL 08:30 UK on the project's first rig); the case stays NOT RUN in progress until every reader has read", "network_label": "on an island, not a network", "in_progress": true }, @@ -47,4 +47,4 @@ "in_progress": true } ] -} \ No newline at end of file +} diff --git a/tools/ci/identity-check.sh b/tools/ci/identity-check.sh index 86d2457b2..c3d101826 100755 --- a/tools/ci/identity-check.sh +++ b/tools/ci/identity-check.sh @@ -34,7 +34,12 @@ if [ "${1:-}" = "--self-test" ]; then # a served site file carrying a pattern: must fail, unscrubbed printf '
a home path /Users/someone/x
\n' > "$fx/site/leak.html" if IDENTITY_CHECK_REPO="$fx" bash "$0" >/dev/null 2>&1; then echo "self-test failed: a home path in site/leak.html passed"; exit 1; fi - echo "self-test passed: the excluded research path may quote the patterns; an exported document and a served page may not" + rm -f "$fx/site/leak.html" + # a registry source (a batch note) carrying a served-page pattern: must fail (the registry is served at /acceptance) + mkdir -p "$fx/tools/ci/batches"; printf '{"note": "ran on PC 2 overnight"}\n' > "$fx/tools/ci/batches/leak.json"; printf '\\bPC [12]\\b\n' > "$fx/site/forbidden-strings.txt" + if IDENTITY_CHECK_REPO="$fx" bash "$0" >/dev/null 2>&1; then echo "self-test failed: a rig name in a batch note (a served registry source) passed"; exit 1; fi + rm -f "$fx/tools/ci/batches/leak.json" + echo "self-test passed: the excluded research path may quote the patterns; an exported document, a served page and a registry source (a batch, a note, the map) may not" exit 0 fi @@ -100,6 +105,11 @@ fi # build scripts are not served and are not in this pass. SITE_FILES="$(find "$REPO/site" -type f \( -name '*.html' -o -name '*.json' -o -name '*.txt' -o -name '*.xml' -o -name '*.webmanifest' -o -name '*.css' -o -name '*.js' \) \ -not -path '*/node_modules/*' -not -path '*/.vercel/*' -not -path '*/api/*' -not -name 'forbidden-strings.txt' -print)" +# the acceptance registry's sources are served too (8 October 2026, 22:2x UK: /acceptance renders docs/plans/igneum-2.0-test-registry.json, +# which the recorder writes from tools/ci/test-map.json, tools/ci/batches/ and tools/ci/notes/; a rig name in a batch note reached the +# served registry), so those sources take the served-site pattern list as well +REG_FILES="$(find "$REPO/tools/ci/batches" "$REPO/tools/ci/notes" -type f -name '*.json' 2>/dev/null; [ -f "$REPO/tools/ci/test-map.json" ] && echo "$REPO/tools/ci/test-map.json"; [ -f "$REPO/docs/plans/igneum-2.0-test-registry.json" ] && echo "$REPO/docs/plans/igneum-2.0-test-registry.json"; true)" +SITE_FILES="$(printf '%s\n%s\n' "$SITE_FILES" "$REG_FILES" | grep -v '^$' || true)" SITE_PAT="$(printf '%s\n%s\n' "$PAT" "$(grep -vE '^\s*(#|$)' "$REPO/site/forbidden-strings.txt")")" SITE_HITS="$(printf '%s\n' "$SITE_FILES" | xargs grep -En -f <(printf '%s\n' "$SITE_PAT") 2>/dev/null || true)" if [ -n "$SITE_HITS" ]; then diff --git a/tools/ci/merge-to-master.sh b/tools/ci/merge-to-master.sh index a342687fd..669e196be 100755 --- a/tools/ci/merge-to-master.sh +++ b/tools/ci/merge-to-master.sh @@ -349,7 +349,7 @@ else fi # rule 24 (8 October 2026, 17:2x UK): a diff that touches a .rs, Cargo.toml, Cargo.lock, build.rs or .cargo/config runs cargo check # and the crate suite on the box at gate priority for every crate it touches before the merge; docs/ and site/ alone skip it -if [ "$SELF_TEST" != 1 ]; then lock_acquire "$BRANCH" || exit 1; trap 'lock_release; rm -f "$MERGE_PID_FILE" 2>/dev/null' EXIT; fi +if [ "$SELF_TEST" != 1 ]; then lock_acquire "$BRANCH" || exit 1; trap 'lock_release; rm -f "$MERGE_PID_FILE" 2>/dev/null' EXIT; trap 'lock_release; rm -f "$MERGE_PID_FILE" 2>/dev/null; exit 143' INT TERM; fi # a landing stopped by its pid file releases the lock too (22:3x UK: a killed landing left its holder on build-1 until the hand removed it) # inside the lock master cannot move under this landing; when master is ahead of the branch, the branch takes master first (the # registry rebuilt from master's copy with the branch's batches replayed, the map merged structurally, the page regenerated), and that # merge commit carries the branch's green stamp forward as the union of two gated parents (the branch fully, master's tip on its own diff --git a/tools/ci/test-map.json b/tools/ci/test-map.json index 7789806b7..26b040af5 100644 --- a/tools/ci/test-map.json +++ b/tools/ci/test-map.json @@ -576,8 +576,8 @@ } }, "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 (the project's own rig, 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": "the project's own rig and PC 2 bench (OpenCL)", + "command": "the AMD-and-Intel energy lane jobs on the signed-jobs channel: run-ae-pc2-b580-energy-20261008 (the project's second rig, 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 (the project's own rig, 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": "the project's two rigs' bench (OpenCL)", "fixtures": [ "F0", "F1" @@ -631,7 +631,7 @@ } }, "pc:install-update": { - "command": "signed jobs and relay runs on the project's own rig (ae432dc7) and PC 2 (1ccfe586): the installer over the running app (rule 14: installed versions, the process set, the first upload), the OTA path (update-now, the update-return read-back line), and the no-click resume after the install (relay run mining-on-after-200.ps1)", + "command": "signed jobs and relay runs on the project's two rigs (ae432dc7 and 1ccfe586): the installer over the running app (rule 14: installed versions, the process set, the first upload), the OTA path (update-now, the update-return read-back line), and the no-click resume after the install (relay run mining-on-after-200.ps1)", "box_class": "PC (the two Windows PCs; nothing on the Mac)", "fixtures": [ "F2" @@ -700,8 +700,8 @@ } }, "kit:class-v6-fingerprints": { - "command": "KITS_BOX_SCRIPT=kits-v6-on-box.sh tools/class-v5/kits-remote.sh --box 1 (the kit zip with its emulation check), then the kit's workers on every platform: the box's CPU emulation (--check, 96 of 96 vector lanes), the fleet's CUDA 4090 (--check and --bench at 2^24, base nonce 0), the Mac's Metal (proto-metal/packbench.swift --pack) and Apple OpenCL (proto-opencl/host.c --pack --bench-pack), PC 1's RTX 5090 and RX 7600 (tools/class-v5/pc1-v6-bench.ps1), PC 2's Arc B580 (tools/class-v5/arc-v6-bench.ps1); the fingerprint of the 2^24 outputs at base nonce 0 equal on every platform for the all pack and for its known-failed partner, the two distinct", - "box_class": "build box + pods + Mac + PC 1 + PC 2", + "command": "KITS_BOX_SCRIPT=kits-v6-on-box.sh tools/class-v5/kits-remote.sh --box 1 (the kit zip with its emulation check), then the kit's workers on every platform: the box's CPU emulation (--check, 96 of 96 vector lanes), the fleet's CUDA 4090 (--check and --bench at 2^24, base nonce 0), the Mac's Metal (proto-metal/packbench.swift --pack) and Apple OpenCL (proto-opencl/host.c --pack --bench-pack), the project's first rig's RTX 5090 and RX 7600 (tools/class-v5/pc1-v6-bench.ps1), the project's second rig's Arc B580 (tools/class-v5/arc-v6-bench.ps1); the fingerprint of the 2^24 outputs at base nonce 0 equal on every platform for the all pack and for its known-failed partner, the two distinct", + "box_class": "build box + pods + Mac + the project's two rigs", "fixtures": [ "F0", "F2" diff --git a/tools/ci/test-record.mjs b/tools/ci/test-record.mjs index d292cae29..62d922f26 100644 --- a/tools/ci/test-record.mjs +++ b/tools/ci/test-record.mjs @@ -21,6 +21,24 @@ const MAP = process.env.TEST_MAP || path.join(ROOT, 'tools/ci/test-map.json'); const ACCEPT_KEYS = ['accept', 'acceptance', 'accept_text', 'criteria', 'expected']; // whichever the registry uses; all are frozen const DECISIONS = new Set(['NOT RUN', 'BLOCKED', 'FAIL', 'PASS']); const METHODS = new Set(['native', 'GPU', 'SP1', 'model', 'static', 'team-reported']); +export const ISLAND_LABEL = 'on an island, not a network'; +export const ISLAND_SINCE = '2026-10-08T19:00:00Z'; // 20:00 UK on 8 October 2026: devnet-4 has been seventeen islands since the epoch-3 cut (main's word through the coordinator, 22:2x UK) +const ISLAND_RE = /devnet-4|devnet 4|2\.0 devnet|chain id 4465|igneum-devnet-4/i; +export function labelIslands(reg, since = ISLAND_SINCE, label = ISLAND_LABEL) { // every record measured on the 2.0 devnet after `since` carries the label until the fleet is one chain + let n = 0; + for (const c of casesOf(reg)) { + for (const r of Object.values(c.evidence_records || {})) { + if (!r || typeof r !== 'object') continue; + const at = String(r.at || ''); if (!at || at < since) continue; + if (!(r.decision === 'PASS' || r.decision === 'FAIL') || r.method === 'static') { if (r.network_label === label) { delete r.network_label; r.note = String(r.note || '').replace(/ ?\(on an island, not a network: devnet-4 has been islands[^)]*\)/, ''); } continue; } // a measurement is a verdict from a run; a build fact, a reason or a BLOCKED placeholder is not on any network + if (r.network_label === label) continue; + const txt = JSON.stringify([r.release_identity?.network_object, r.evidence, r.note, r.cell, c.evidence_path]); + if (!ISLAND_RE.test(txt)) continue; + r.network_label = label; r.note = (r.note ? r.note + ' ' : '') + `(${label}: devnet-4 has been islands since the epoch-3 cut; labelled ${new Date().toISOString()}.)`; c.updated = new Date().toISOString(); n++; + } + } + return n; +} export function normalize(reg) { // the one-time pass over rows written before the vocabulary: RUNNING -> NOT RUN in progress; DEFERRED -> NOT RUN with the note let n = 0; const now = new Date().toISOString(); for (const c of casesOf(reg)) { @@ -105,6 +123,8 @@ function record(reg, map, batch) { release_identity: { commit: ri.commit || batch.manifest_sha || '', lockfile: ri.lockfile || '', binary: ri.binary || '', network_object: ri.network_object || '', activation: ri.activation || '', profile_hashes: ri.profile_hashes || '' }, claim_impact: cell.claim_impact || batch.claim_impact || '', reviewer: cell.reviewer || batch.reviewer || '', at: now, ...(missing.length ? { blocked_on: missing, reason: `INT-17: missing ${missing.join(', ')}; never PASS without them` } : {}) }; + if (cell.network_label) c.evidence_record.network_label = cell.network_label; + if (!c.evidence_record.network_label && (status === 'PASS' || status === 'FAIL') && method !== 'static' && ISLAND_RE.test(JSON.stringify([c.evidence_record.release_identity?.network_object, c.evidence_record.evidence, c.evidence_record.note]))) c.evidence_record.network_label = ISLAND_LABEL; c.evidence_records[cell.cell] = c.evidence_record; // a lifted legacy 'record' entry that carries only a no-harness reason (no run) is not a run: it never counts in the combined // decision and is dropped once a real cell lands (8 October 2026, 21:5x UK: R2-F03-R01 read NOT RUN on master beside its PASS cell) @@ -154,6 +174,19 @@ if (args.includes('--self-test')) { if (!badMethod) { console.log('self-test failed: a batch with no method was accepted (methods are never conflated)'); fails = 1; } const regO = { cases: [{ id: 'O1', method: 'Automated', accept: 'a', run_status: 'RUNNING', updated: 't', evidence_record: { cell: 'suite:x' } }, { id: 'O2', method: 'Automated', accept: 'b', run_status: 'DEFERRED' }] }; normalize(regO); if (!(regO.cases[0].run_status === 'NOT RUN' && regO.cases[0].in_progress_since === 't' && regO.cases[0].evidence_record.method === 'native' && regO.cases[1].run_status === 'NOT RUN' && /deferred/.test(regO.cases[1].deferral_note))) { console.log(`self-test failed: normalize: ${JSON.stringify(regO)}`); fails = 1; } + // the island label: a record on the 2.0 devnet after the cut takes the label; one before it, or off the devnet, does not; a cell may carry it + const regI = { cases: [ + { id: 'I1', method: 'Automated', accept: 'a', run_status: 'PASS', evidence_records: { x: { decision: 'PASS', at: '2026-10-08T21:00:00Z', release_identity: { network_object: 'igneum-devnet-4, chain id 4465' }, evidence: '/e' } } }, + { id: 'I2', method: 'Automated', accept: 'b', run_status: 'PASS', evidence_records: { x: { decision: 'PASS', at: '2026-10-08T18:00:00Z', release_identity: { network_object: 'igneum-devnet-4' }, evidence: '/e' } } }, + { id: 'I3', method: 'Automated', accept: 'c', run_status: 'PASS', evidence_records: { x: { decision: 'PASS', at: '2026-10-08T21:00:00Z', release_identity: { network_object: 'a research object' }, evidence: '/e' } } }, + { id: 'I4', method: 'Automated', accept: 'd', run_status: 'PASS', evidence_records: { x: { decision: 'PASS', method: 'static', at: '2026-10-08T21:00:00Z', release_identity: { network_object: 'igneum-devnet-4, chain id 4465' }, evidence: '/e' } } }, + { id: 'I5', method: 'Automated', accept: 'e', run_status: 'BLOCKED', evidence_records: { x: { decision: 'BLOCKED', method: 'team-reported', at: '2026-10-08T21:00:00Z', release_identity: { network_object: 'igneum-devnet-4' }, evidence: '/e', network_label: 'on an island, not a network' } } } ] }; + const ni = labelIslands(regI); + if (!(ni === 1 && regI.cases[0].evidence_records.x.network_label === ISLAND_LABEL && !regI.cases[1].evidence_records.x.network_label && !regI.cases[2].evidence_records.x.network_label && !regI.cases[3].evidence_records.x.network_label && !regI.cases[4].evidence_records.x.network_label)) { console.log(`self-test failed: the island label did not land on the devnet-4 record after the cut alone: ${ni}`); fails = 1; } + if (labelIslands(regI) !== 0) { console.log('self-test failed: the island label was applied twice'); fails = 1; } + const regC = { cases: [{ id: 'C9', method: 'Automated', accept: 'a' }] }; + record(regC, { cells: { dn: { command: 'x', box_class: 'b', fixtures: [], cases: ['C9'] } }, not_run: {} }, { run_id: 'rdn', manifest_sha: 'abc', method: 'native', release_identity: { network_object: 'igneum-devnet-4, chain id 4465' }, cells: [{ cell: 'dn', status: 'PASS', evidence: '/e/dn.log' }] }); + if (regC.cases[0].evidence_record.network_label !== ISLAND_LABEL) { console.log('self-test failed: a record naming the 2.0 devnet at record time did not take the island label'); fails = 1; } // a lifted reason-only record beside a real cell: the row reads the cell's decision and the placeholder is gone const regL = { cases: [{ id: 'L1', method: 'Automated', accept: 'a', run_status: 'NOT RUN', evidence_records: { record: { decision: 'NOT RUN', reason: 'no harness yet', at: 't' } } }] }; record(regL, { cells: { lc: { command: 'x', box_class: 'b', fixtures: [], cases: ['L1'] } }, not_run: {} }, { run_id: 'rl', manifest_sha: 'abc', method: 'native', cells: [{ cell: 'lc', status: 'PASS', evidence: '/e/l.log' }] }); @@ -201,6 +234,7 @@ if (args.includes('--self-test')) { } const reg = load(REG); const map = load(MAP); if (args.includes('--check')) { const r = check(reg, map); for (const l of r.lines) console.error(`test-record: ${l}`); console.log(`test-record: ${r.automated} Automated cases, ${r.mapped} mapped to cells, ${r.notRun} NOT RUN with a reason${r.bad ? `, ${r.bad} problems` : ''}`); process.exit(r.bad ? 1 : 0); } +if (args.includes('--label-islands')) { const n = labelIslands(reg); fs.writeFileSync(REG, JSON.stringify(reg, null, 2) + '\n'); console.log(`test-record: ${n} record(s) measured on the 2.0 devnet since ${ISLAND_SINCE} labelled "${ISLAND_LABEL}"`); process.exit(0); } if (args.includes('--normalize')) { const n = normalize(reg); fs.writeFileSync(REG, JSON.stringify(reg, null, 2) + '\n'); console.log(`test-record: normalized ${n} rows to the decision vocabulary and the record schema`); process.exit(0); } if (arg('--cases')) { console.log(((map.cells || {})[arg('--cases')]?.cases || []).join(',')); process.exit(0); } if (arg('--note-file')) { const n = load(arg('--note-file')); args.push('--note', n.suite, n.text); }