The recorder keeps records per (case, cell, run): the latest run is the cell's word, an older run stays as evidence, an older FAIL stands until a batch supersedes it by name (the same-work hand's class); the P01 batch re-recorded so its CUDA evidence returns to POW-01; the token-value generator's write line names the decisions' real statuses
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
51edbe9ae4
commit
efbf6317bd
4 changed files with 281 additions and 72 deletions
|
|
@ -1377,32 +1377,31 @@
|
|||
"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; build-1:/srv/artefacts/tas/same-work-20261008-01/cuda-5090-1.json; build-1:/srv/artefacts/tas/same-work-20261008-01/cuda-5090-2.json; build-1:/srv/artefacts/tas/same-work-20261008-01/cuda-5090-3.json; build-1:/srv/artefacts/tas/same-work-20261008-01/cuda-4090-1.json; build-1:/srv/artefacts/tas/same-work-20261008-01/cuda-4090-2.json; build-1:/srv/artefacts/tas/same-work-20261008-01/cuda-4090-3.json; build-1:/srv/artefacts/tas/same-work-20261008-01/cuda-3090-1.json; build-1:/srv/artefacts/tas/same-work-20261008-01/cuda-3090-2.json; build-1:/srv/artefacts/tas/same-work-20261008-01/cuda-3090-3.json; build-1:/srv/artefacts/tas/same-work-20261008-01/opencl-rx7600-take1.report.txt; build-1:/srv/artefacts/tas/same-work-20261008-01/opencl-rx7600.report.txt; build-1:/srv/artefacts/tas/202-5d53a591-1176efb9/node-5d53a591/box4-miner.log",
|
||||
"run_id": "same-work-20261008-01",
|
||||
"updated": "2026-10-09T05:16:46.737Z",
|
||||
"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; build-1:/srv/artefacts/tas/202-5d53a591-1176efb9/node-5d53a591/box4-miner.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; build-1:/srv/artefacts/tas/same-work-20261008-01/cuda-5090-1.json; build-1:/srv/artefacts/tas/same-work-20261008-01/cuda-5090-2.json; build-1:/srv/artefacts/tas/same-work-20261008-01/cuda-5090-3.json; build-1:/srv/artefacts/tas/same-work-20261008-01/cuda-4090-1.json; build-1:/srv/artefacts/tas/same-work-20261008-01/cuda-4090-2.json; build-1:/srv/artefacts/tas/same-work-20261008-01/cuda-4090-3.json; build-1:/srv/artefacts/tas/same-work-20261008-01/cuda-3090-1.json; build-1:/srv/artefacts/tas/same-work-20261008-01/cuda-3090-2.json; build-1:/srv/artefacts/tas/same-work-20261008-01/cuda-3090-3.json; build-1:/srv/artefacts/tas/same-work-20261008-01/opencl-rx7600-take1.report.txt; build-1:/srv/artefacts/tas/same-work-20261008-01/opencl-rx7600.report.txt",
|
||||
"run_id": "p01-20261008-01",
|
||||
"updated": "2026-10-09T08:44:49.530Z",
|
||||
"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; build-1:/srv/artefacts/tas/same-work-20261008-01/cuda-5090-1.json; build-1:/srv/artefacts/tas/same-work-20261008-01/cuda-5090-2.json; build-1:/srv/artefacts/tas/same-work-20261008-01/cuda-5090-3.json; build-1:/srv/artefacts/tas/same-work-20261008-01/cuda-4090-1.json; build-1:/srv/artefacts/tas/same-work-20261008-01/cuda-4090-2.json; build-1:/srv/artefacts/tas/same-work-20261008-01/cuda-4090-3.json; build-1:/srv/artefacts/tas/same-work-20261008-01/cuda-3090-1.json; build-1:/srv/artefacts/tas/same-work-20261008-01/cuda-3090-2.json; build-1:/srv/artefacts/tas/same-work-20261008-01/cuda-3090-3.json; build-1:/srv/artefacts/tas/same-work-20261008-01/opencl-rx7600-take1.report.txt; build-1:/srv/artefacts/tas/same-work-20261008-01/opencl-rx7600.report.txt",
|
||||
"in_progress": true,
|
||||
"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-09T05:16:46.737Z",
|
||||
"note": "the 5090, the 4090 and the 3090 PASS on all three phases of the frozen object across the day switch; OpenCL PASS x3 on the first rig's RX 7600 (the day switch seen; take 1 a job fault); Metal 08:30 UK, the last reader; CPU reference cross-checked against the hash lane's P01 file; in progress | Context 01 at build-1:/srv/artefacts/tas/same-work-20261008-01/job-context.json (sha256 d2540e02...). CPU reference: igneum-pow hash-bound (class-v6 1a938abe4, binary 0d3f3fca...) on build-4, 21:46 to 21:55 UK, ref-D c49fed11... over [0, 1572864), ref-D1 5ae1220d... over [1572864, 3145728); ref-D's first million lines equal the hash lane's P01 reference /srv/artefacts/packs/p01-vectors/hl-v6-all.txt byte for byte. The node1 state stream (block af89be5d...) was written on build-4 at 15:34 UK, before the 20:00 UK split; the cell carries the island label by main's 22:2x UK rule. CUDA: the 5090 PASS on all three phases (the gen 6 worker 804a6f7f, the driver at c8b65a26 or later; 23:16 to 23:20 UK: cuda-5090-1.json 1b36fb8a..., cuda-5090-2.json 70200bff... with the day switch at 1572864 driven through the worker's prepare and both boundary hashes equal to the reference (69abfadf816e767e before, 5b3fb17ad84744fd after), cuda-5090-3.json f2ecf5c7...; 1,048,576 agree each, 0 disagree, 0 missing); the 4090 PASS on all three phases (23:22 to 23:25 UK: cuda-4090-1.json cd0f5aee..., cuda-4090-2.json f864f950... with the day switch at 1572864, cuda-4090-3.json 126bd552...; 1,048,576 agree each, 0 disagree, 0 missing); The 3090 PASS on all three phases (05:07 to 05:10 UK; cuda-3090-{1,2,3}.json afa3d4a4..., 167875f9..., cc956dee...; 1,048,576 agree each, 0 disagree, 0 missing; the day switch at 1572864 with the same boundary hashes as every other reader): the fleet lane's first run on that pod at 00:35 UK never ran a phase (its verify rule demanded two reference files where a context carries one, then its put failed on the pod's flapping ssh; a runner fault, reported once), the rerun from 04:57 UK ran detached on the pod under a pid file with a collector pulling each JSON. So the CUDA cell reads three cards on this context. Metal and OpenCL are the morning's reads (08:30 UK). The case stays NOT RUN in progress until every reader has read (the coordinator's ruling 23:1x UK: a PASS by inference is forbidden). OPENCL on the first rig's RX 7600: take 1 (05:54 UK, opencl-rx7600-take1.report.txt 7fb1ee95...) was a job fault on the rig, not a reader result (the script matched an older gen-5-stamped pack of the same name in the rig's jobs tree; the worker refused it as class v5 against a class v6 job); take 2 (run-ca3-pc1-samework01-opencl-7600-20261009-b, the packs by exact path, 06:03 to 06:05 UK) reads PASS on all three phases: p1 digest 1517d572..., p2 91d63d8b... across the day switch 20730 to 20731 at 1572864 (the D+1 pack prepared in 486 ms, the boundary block 8,192 of 8,192 lines), p3 e483e82a..., each 1,048,576 of 1,048,576 equal to ref-D's and ref-D1's slices, both pack ids 0x4de7b836cc40a4ea generator 6 in the RESULT lines; 'RESULT verdict all PASS context=same-work-20261008-01 reader=opencl card=rx7600'; the report opencl-rx7600.report.txt (sha256 84683b16..., read back on build-1 at 06:09 UK). So the OpenCL reader on the RX 7600 reads all three contexts equal to the CPU reference across their day switches; Metal is the sixth reader on every context, 08:30 UK.",
|
||||
"network_label": "on an island, not a network"
|
||||
"at": "2026-10-09T08:44:49.530Z",
|
||||
"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.) Re-recorded at 09:5x UK once the recorder kept records per run: the twelve CUDA evidence files return to POW-01's evidence_path beside the same-work run's record."
|
||||
},
|
||||
"in_progress_since": "2026-10-08T20:07:26.255Z",
|
||||
"approvals": {
|
||||
|
|
@ -1442,24 +1441,23 @@
|
|||
"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; build-1:/srv/artefacts/tas/same-work-20261008-01/cuda-5090-1.json; build-1:/srv/artefacts/tas/same-work-20261008-01/cuda-5090-2.json; build-1:/srv/artefacts/tas/same-work-20261008-01/cuda-5090-3.json; build-1:/srv/artefacts/tas/same-work-20261008-01/cuda-4090-1.json; build-1:/srv/artefacts/tas/same-work-20261008-01/cuda-4090-2.json; build-1:/srv/artefacts/tas/same-work-20261008-01/cuda-4090-3.json; build-1:/srv/artefacts/tas/same-work-20261008-01/cuda-3090-1.json; build-1:/srv/artefacts/tas/same-work-20261008-01/cuda-3090-2.json; build-1:/srv/artefacts/tas/same-work-20261008-01/cuda-3090-3.json; build-1:/srv/artefacts/tas/same-work-20261008-01/opencl-rx7600-take1.report.txt; build-1:/srv/artefacts/tas/same-work-20261008-01/opencl-rx7600.report.txt",
|
||||
"in_progress": true,
|
||||
"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-09T05:16:46.737Z",
|
||||
"note": "the 5090, the 4090 and the 3090 PASS on all three phases of the frozen object across the day switch; OpenCL PASS x3 on the first rig's RX 7600 (the day switch seen; take 1 a job fault); Metal 08:30 UK, the last reader; CPU reference cross-checked against the hash lane's P01 file; in progress | Context 01 at build-1:/srv/artefacts/tas/same-work-20261008-01/job-context.json (sha256 d2540e02...). CPU reference: igneum-pow hash-bound (class-v6 1a938abe4, binary 0d3f3fca...) on build-4, 21:46 to 21:55 UK, ref-D c49fed11... over [0, 1572864), ref-D1 5ae1220d... over [1572864, 3145728); ref-D's first million lines equal the hash lane's P01 reference /srv/artefacts/packs/p01-vectors/hl-v6-all.txt byte for byte. The node1 state stream (block af89be5d...) was written on build-4 at 15:34 UK, before the 20:00 UK split; the cell carries the island label by main's 22:2x UK rule. CUDA: the 5090 PASS on all three phases (the gen 6 worker 804a6f7f, the driver at c8b65a26 or later; 23:16 to 23:20 UK: cuda-5090-1.json 1b36fb8a..., cuda-5090-2.json 70200bff... with the day switch at 1572864 driven through the worker's prepare and both boundary hashes equal to the reference (69abfadf816e767e before, 5b3fb17ad84744fd after), cuda-5090-3.json f2ecf5c7...; 1,048,576 agree each, 0 disagree, 0 missing); the 4090 PASS on all three phases (23:22 to 23:25 UK: cuda-4090-1.json cd0f5aee..., cuda-4090-2.json f864f950... with the day switch at 1572864, cuda-4090-3.json 126bd552...; 1,048,576 agree each, 0 disagree, 0 missing); The 3090 PASS on all three phases (05:07 to 05:10 UK; cuda-3090-{1,2,3}.json afa3d4a4..., 167875f9..., cc956dee...; 1,048,576 agree each, 0 disagree, 0 missing; the day switch at 1572864 with the same boundary hashes as every other reader): the fleet lane's first run on that pod at 00:35 UK never ran a phase (its verify rule demanded two reference files where a context carries one, then its put failed on the pod's flapping ssh; a runner fault, reported once), the rerun from 04:57 UK ran detached on the pod under a pid file with a collector pulling each JSON. So the CUDA cell reads three cards on this context. Metal and OpenCL are the morning's reads (08:30 UK). The case stays NOT RUN in progress until every reader has read (the coordinator's ruling 23:1x UK: a PASS by inference is forbidden). OPENCL on the first rig's RX 7600: take 1 (05:54 UK, opencl-rx7600-take1.report.txt 7fb1ee95...) was a job fault on the rig, not a reader result (the script matched an older gen-5-stamped pack of the same name in the rig's jobs tree; the worker refused it as class v5 against a class v6 job); take 2 (run-ca3-pc1-samework01-opencl-7600-20261009-b, the packs by exact path, 06:03 to 06:05 UK) reads PASS on all three phases: p1 digest 1517d572..., p2 91d63d8b... across the day switch 20730 to 20731 at 1572864 (the D+1 pack prepared in 486 ms, the boundary block 8,192 of 8,192 lines), p3 e483e82a..., each 1,048,576 of 1,048,576 equal to ref-D's and ref-D1's slices, both pack ids 0x4de7b836cc40a4ea generator 6 in the RESULT lines; 'RESULT verdict all PASS context=same-work-20261008-01 reader=opencl card=rx7600'; the report opencl-rx7600.report.txt (sha256 84683b16..., read back on build-1 at 06:09 UK). So the OpenCL reader on the RX 7600 reads all three contexts equal to the CPU reference across their day switches; Metal is the sixth reader on every context, 08:30 UK.",
|
||||
"network_label": "on an island, not a network"
|
||||
"at": "2026-10-09T08:44:49.530Z",
|
||||
"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.) Re-recorded at 09:5x UK once the recorder kept records per run: the twelve CUDA evidence files return to POW-01's evidence_path beside the same-work run's record."
|
||||
},
|
||||
"suite:miner": {
|
||||
"requirement_id": "POW-01",
|
||||
|
|
@ -1483,6 +1481,30 @@
|
|||
"reviewer": "",
|
||||
"at": "2026-10-09T00:33:39.243Z",
|
||||
"note": "suite GREEN (rc 0, every test passed); the cell covers its cases partially, so the case reads NOT RUN in progress with this evidence until its own acceptance is exercised; miner on release-2.0.2-node 5d53a591 with the key-succession parent and the class v5 freeze igneum-pow (box4, 25s) | 2.0.2 pair gate on build-4, 00:26 UTC: kit 2: release-manifest-check green on 1176efb9 (node block kit2b-line 5d53a591); 77b5acc5..1176efb9 moves pool/ and packaging only; 5d53a591 = fix 2 + the wedge fix on kit 1's tree (cf32be79, the record-store fold, read red on the fresh-sync read at 00:55 and rides 2.0.3); kit 2 carries the roll and the entries on its own four-block rule-33 record, kit 1 re-cut 490ebcfe/5db25637 the clean fallback Every suite cell maps its cases partially, so the green suites read NOT RUN in progress with their logs as evidence, never PASS by inference. Kit 2's rule-33 record (four blocks) lands with the entries; INT-07's FAIL on 94e4c6ba stands until then."
|
||||
},
|
||||
"harness:p01-vectors@same-work-20261008-01": {
|
||||
"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; build-1:/srv/artefacts/tas/same-work-20261008-01/cuda-5090-1.json; build-1:/srv/artefacts/tas/same-work-20261008-01/cuda-5090-2.json; build-1:/srv/artefacts/tas/same-work-20261008-01/cuda-5090-3.json; build-1:/srv/artefacts/tas/same-work-20261008-01/cuda-4090-1.json; build-1:/srv/artefacts/tas/same-work-20261008-01/cuda-4090-2.json; build-1:/srv/artefacts/tas/same-work-20261008-01/cuda-4090-3.json; build-1:/srv/artefacts/tas/same-work-20261008-01/cuda-3090-1.json; build-1:/srv/artefacts/tas/same-work-20261008-01/cuda-3090-2.json; build-1:/srv/artefacts/tas/same-work-20261008-01/cuda-3090-3.json; build-1:/srv/artefacts/tas/same-work-20261008-01/opencl-rx7600-take1.report.txt; build-1:/srv/artefacts/tas/same-work-20261008-01/opencl-rx7600.report.txt",
|
||||
"in_progress": true,
|
||||
"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",
|
||||
"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)",
|
||||
"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",
|
||||
"reviewer": "",
|
||||
"at": "2026-10-09T05:16:46.737Z",
|
||||
"note": "the 5090, the 4090 and the 3090 PASS on all three phases of the frozen object across the day switch; OpenCL PASS x3 on the first rig's RX 7600 (the day switch seen; take 1 a job fault); Metal 08:30 UK, the last reader; CPU reference cross-checked against the hash lane's P01 file; in progress | Context 01 at build-1:/srv/artefacts/tas/same-work-20261008-01/job-context.json (sha256 d2540e02...). CPU reference: igneum-pow hash-bound (class-v6 1a938abe4, binary 0d3f3fca...) on build-4, 21:46 to 21:55 UK, ref-D c49fed11... over [0, 1572864), ref-D1 5ae1220d... over [1572864, 3145728); ref-D's first million lines equal the hash lane's P01 reference /srv/artefacts/packs/p01-vectors/hl-v6-all.txt byte for byte. The node1 state stream (block af89be5d...) was written on build-4 at 15:34 UK, before the 20:00 UK split; the cell carries the island label by main's 22:2x UK rule. CUDA: the 5090 PASS on all three phases (the gen 6 worker 804a6f7f, the driver at c8b65a26 or later; 23:16 to 23:20 UK: cuda-5090-1.json 1b36fb8a..., cuda-5090-2.json 70200bff... with the day switch at 1572864 driven through the worker's prepare and both boundary hashes equal to the reference (69abfadf816e767e before, 5b3fb17ad84744fd after), cuda-5090-3.json f2ecf5c7...; 1,048,576 agree each, 0 disagree, 0 missing); the 4090 PASS on all three phases (23:22 to 23:25 UK: cuda-4090-1.json cd0f5aee..., cuda-4090-2.json f864f950... with the day switch at 1572864, cuda-4090-3.json 126bd552...; 1,048,576 agree each, 0 disagree, 0 missing); The 3090 PASS on all three phases (05:07 to 05:10 UK; cuda-3090-{1,2,3}.json afa3d4a4..., 167875f9..., cc956dee...; 1,048,576 agree each, 0 disagree, 0 missing; the day switch at 1572864 with the same boundary hashes as every other reader): the fleet lane's first run on that pod at 00:35 UK never ran a phase (its verify rule demanded two reference files where a context carries one, then its put failed on the pod's flapping ssh; a runner fault, reported once), the rerun from 04:57 UK ran detached on the pod under a pid file with a collector pulling each JSON. So the CUDA cell reads three cards on this context. Metal and OpenCL are the morning's reads (08:30 UK). The case stays NOT RUN in progress until every reader has read (the coordinator's ruling 23:1x UK: a PASS by inference is forbidden). OPENCL on the first rig's RX 7600: take 1 (05:54 UK, opencl-rx7600-take1.report.txt 7fb1ee95...) was a job fault on the rig, not a reader result (the script matched an older gen-5-stamped pack of the same name in the rig's jobs tree; the worker refused it as class v5 against a class v6 job); take 2 (run-ca3-pc1-samework01-opencl-7600-20261009-b, the packs by exact path, 06:03 to 06:05 UK) reads PASS on all three phases: p1 digest 1517d572..., p2 91d63d8b... across the day switch 20730 to 20731 at 1572864 (the D+1 pack prepared in 486 ms, the boundary block 8,192 of 8,192 lines), p3 e483e82a..., each 1,048,576 of 1,048,576 equal to ref-D's and ref-D1's slices, both pack ids 0x4de7b836cc40a4ea generator 6 in the RESULT lines; 'RESULT verdict all PASS context=same-work-20261008-01 reader=opencl card=rx7600'; the report opencl-rx7600.report.txt (sha256 84683b16..., read back on build-1 at 06:09 UK). So the OpenCL reader on the RX 7600 reads all three contexts equal to the CPU reference across their day switches; Metal is the sixth reader on every context, 08:30 UK.",
|
||||
"network_label": "on an island, not a network"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
@ -17195,7 +17217,12 @@
|
|||
],
|
||||
"threshold_status": "PROPOSED - FREEZE BEFORE TEST",
|
||||
"run_status": "NOT RUN",
|
||||
"master_status": "NOT RUN"
|
||||
"master_status": "NOT RUN",
|
||||
"updated": "2026-10-09T08:44:49.530Z",
|
||||
"evidence_record": {
|
||||
"reason": "TV-01 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Protocol + independent panel); a supplemental layer, never counted as independent evidence; not yet named in the map",
|
||||
"at": "2026-10-09T08:44:49.530Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TV-02",
|
||||
|
|
@ -17224,7 +17251,12 @@
|
|||
],
|
||||
"threshold_status": "PROPOSED - FREEZE BEFORE TEST",
|
||||
"run_status": "NOT RUN",
|
||||
"master_status": "NOT RUN"
|
||||
"master_status": "NOT RUN",
|
||||
"updated": "2026-10-09T08:44:49.530Z",
|
||||
"evidence_record": {
|
||||
"reason": "TV-02 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Protocol + measurement); a supplemental layer, never counted as independent evidence; not yet named in the map",
|
||||
"at": "2026-10-09T08:44:49.530Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TV-03",
|
||||
|
|
@ -17253,7 +17285,12 @@
|
|||
],
|
||||
"threshold_status": "PROPOSED - FREEZE BEFORE TEST",
|
||||
"run_status": "NOT RUN",
|
||||
"master_status": "NOT RUN"
|
||||
"master_status": "NOT RUN",
|
||||
"updated": "2026-10-09T08:44:49.530Z",
|
||||
"evidence_record": {
|
||||
"reason": "TV-03 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Release + ecosystem); a supplemental layer, never counted as independent evidence; not yet named in the map",
|
||||
"at": "2026-10-09T08:44:49.530Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TV-04",
|
||||
|
|
@ -17283,7 +17320,12 @@
|
|||
],
|
||||
"threshold_status": "PROPOSED - FREEZE BEFORE TEST",
|
||||
"run_status": "NOT RUN",
|
||||
"master_status": "NOT RUN"
|
||||
"master_status": "NOT RUN",
|
||||
"updated": "2026-10-09T08:44:49.530Z",
|
||||
"evidence_record": {
|
||||
"reason": "TV-04 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Economics + protocol); a supplemental layer, never counted as independent evidence; not yet named in the map",
|
||||
"at": "2026-10-09T08:44:49.530Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TV-05",
|
||||
|
|
@ -17315,7 +17357,12 @@
|
|||
],
|
||||
"threshold_status": "PROPOSED - FREEZE BEFORE TEST",
|
||||
"run_status": "NOT RUN",
|
||||
"master_status": "NOT RUN"
|
||||
"master_status": "NOT RUN",
|
||||
"updated": "2026-10-09T08:44:49.530Z",
|
||||
"evidence_record": {
|
||||
"reason": "TV-05 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Hardware reviewer + economics); a supplemental layer, never counted as independent evidence; not yet named in the map",
|
||||
"at": "2026-10-09T08:44:49.530Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TV-06",
|
||||
|
|
@ -17345,7 +17392,12 @@
|
|||
],
|
||||
"threshold_status": "PROPOSED - FREEZE BEFORE TEST",
|
||||
"run_status": "NOT RUN",
|
||||
"master_status": "NOT RUN"
|
||||
"master_status": "NOT RUN",
|
||||
"updated": "2026-10-09T08:44:49.530Z",
|
||||
"evidence_record": {
|
||||
"reason": "TV-06 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Economics + application); a supplemental layer, never counted as independent evidence; not yet named in the map",
|
||||
"at": "2026-10-09T08:44:49.530Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TV-07",
|
||||
|
|
@ -17377,7 +17429,12 @@
|
|||
],
|
||||
"threshold_status": "PROPOSED - FREEZE BEFORE TEST",
|
||||
"run_status": "NOT RUN",
|
||||
"master_status": "NOT RUN"
|
||||
"master_status": "NOT RUN",
|
||||
"updated": "2026-10-09T08:44:49.530Z",
|
||||
"evidence_record": {
|
||||
"reason": "TV-07 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Protocol + independent security); a supplemental layer, never counted as independent evidence; not yet named in the map",
|
||||
"at": "2026-10-09T08:44:49.530Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TV-08",
|
||||
|
|
@ -17406,7 +17463,12 @@
|
|||
],
|
||||
"threshold_status": "PROPOSED - FREEZE BEFORE TEST",
|
||||
"run_status": "NOT RUN",
|
||||
"master_status": "NOT RUN"
|
||||
"master_status": "NOT RUN",
|
||||
"updated": "2026-10-09T08:44:49.530Z",
|
||||
"evidence_record": {
|
||||
"reason": "TV-08 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Wallet + independent users); a supplemental layer, never counted as independent evidence; not yet named in the map",
|
||||
"at": "2026-10-09T08:44:49.530Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TV-09",
|
||||
|
|
@ -17436,7 +17498,12 @@
|
|||
],
|
||||
"threshold_status": "PROPOSED - FREEZE BEFORE TEST",
|
||||
"run_status": "NOT RUN",
|
||||
"master_status": "NOT RUN"
|
||||
"master_status": "NOT RUN",
|
||||
"updated": "2026-10-09T08:44:49.530Z",
|
||||
"evidence_record": {
|
||||
"reason": "TV-09 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Wallet + consensus); a supplemental layer, never counted as independent evidence; not yet named in the map",
|
||||
"at": "2026-10-09T08:44:49.530Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TV-10",
|
||||
|
|
@ -17468,7 +17535,12 @@
|
|||
],
|
||||
"threshold_status": "PROPOSED - FREEZE BEFORE TEST",
|
||||
"run_status": "NOT RUN",
|
||||
"master_status": "NOT RUN"
|
||||
"master_status": "NOT RUN",
|
||||
"updated": "2026-10-09T08:44:49.530Z",
|
||||
"evidence_record": {
|
||||
"reason": "TV-10 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Protocol + application); a supplemental layer, never counted as independent evidence; not yet named in the map",
|
||||
"at": "2026-10-09T08:44:49.530Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TV-11",
|
||||
|
|
@ -17499,7 +17571,12 @@
|
|||
],
|
||||
"threshold_status": "PROPOSED - FREEZE BEFORE TEST",
|
||||
"run_status": "NOT RUN",
|
||||
"master_status": "NOT RUN"
|
||||
"master_status": "NOT RUN",
|
||||
"updated": "2026-10-09T08:44:49.530Z",
|
||||
"evidence_record": {
|
||||
"reason": "TV-11 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Pool + independent operators); a supplemental layer, never counted as independent evidence; not yet named in the map",
|
||||
"at": "2026-10-09T08:44:49.530Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TV-12",
|
||||
|
|
@ -17530,7 +17607,12 @@
|
|||
],
|
||||
"threshold_status": "PROPOSED - FREEZE BEFORE TEST",
|
||||
"run_status": "NOT RUN",
|
||||
"master_status": "NOT RUN"
|
||||
"master_status": "NOT RUN",
|
||||
"updated": "2026-10-09T08:44:49.530Z",
|
||||
"evidence_record": {
|
||||
"reason": "TV-12 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Release + independent security); a supplemental layer, never counted as independent evidence; not yet named in the map",
|
||||
"at": "2026-10-09T08:44:49.530Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TV-13",
|
||||
|
|
@ -17559,7 +17641,12 @@
|
|||
],
|
||||
"threshold_status": "PROPOSED - FREEZE BEFORE TEST",
|
||||
"run_status": "NOT RUN",
|
||||
"master_status": "NOT RUN"
|
||||
"master_status": "NOT RUN",
|
||||
"updated": "2026-10-09T08:44:49.530Z",
|
||||
"evidence_record": {
|
||||
"reason": "TV-13 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Maintainers + independent finance); a supplemental layer, never counted as independent evidence; not yet named in the map",
|
||||
"at": "2026-10-09T08:44:49.530Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TV-14",
|
||||
|
|
@ -17591,7 +17678,12 @@
|
|||
],
|
||||
"threshold_status": "PROPOSED - FREEZE BEFORE TEST",
|
||||
"run_status": "NOT RUN",
|
||||
"master_status": "NOT RUN"
|
||||
"master_status": "NOT RUN",
|
||||
"updated": "2026-10-09T08:44:49.530Z",
|
||||
"evidence_record": {
|
||||
"reason": "TV-14 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Independent operations panel); a supplemental layer, never counted as independent evidence; not yet named in the map",
|
||||
"at": "2026-10-09T08:44:49.530Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TV-15",
|
||||
|
|
@ -17621,7 +17713,12 @@
|
|||
],
|
||||
"threshold_status": "PROPOSED - FREEZE BEFORE TEST",
|
||||
"run_status": "NOT RUN",
|
||||
"master_status": "NOT RUN"
|
||||
"master_status": "NOT RUN",
|
||||
"updated": "2026-10-09T08:44:49.530Z",
|
||||
"evidence_record": {
|
||||
"reason": "TV-15 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Protocol + governance); a supplemental layer, never counted as independent evidence; not yet named in the map",
|
||||
"at": "2026-10-09T08:44:49.530Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TV-16",
|
||||
|
|
@ -17649,7 +17746,12 @@
|
|||
],
|
||||
"threshold_status": "PROPOSED - FREEZE BEFORE TEST",
|
||||
"run_status": "NOT RUN",
|
||||
"master_status": "NOT RUN"
|
||||
"master_status": "NOT RUN",
|
||||
"updated": "2026-10-09T08:44:49.530Z",
|
||||
"evidence_record": {
|
||||
"reason": "TV-16 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Ecosystem + independent reviewer); a supplemental layer, never counted as independent evidence; not yet named in the map",
|
||||
"at": "2026-10-09T08:44:49.530Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TV-17",
|
||||
|
|
@ -17678,7 +17780,12 @@
|
|||
],
|
||||
"threshold_status": "PROPOSED - FREEZE BEFORE TEST",
|
||||
"run_status": "NOT RUN",
|
||||
"master_status": "NOT RUN"
|
||||
"master_status": "NOT RUN",
|
||||
"updated": "2026-10-09T08:44:49.530Z",
|
||||
"evidence_record": {
|
||||
"reason": "TV-17 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Measurement steward); a supplemental layer, never counted as independent evidence; not yet named in the map",
|
||||
"at": "2026-10-09T08:44:49.530Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TV-18",
|
||||
|
|
@ -17708,7 +17815,12 @@
|
|||
],
|
||||
"threshold_status": "PROPOSED - FREEZE BEFORE TEST",
|
||||
"run_status": "NOT RUN",
|
||||
"master_status": "NOT RUN"
|
||||
"master_status": "NOT RUN",
|
||||
"updated": "2026-10-09T08:44:49.530Z",
|
||||
"evidence_record": {
|
||||
"reason": "TV-18 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Economics + measurement); a supplemental layer, never counted as independent evidence; not yet named in the map",
|
||||
"at": "2026-10-09T08:44:49.530Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TV-19",
|
||||
|
|
@ -17737,7 +17849,12 @@
|
|||
],
|
||||
"threshold_status": "PROPOSED - FREEZE BEFORE TEST",
|
||||
"run_status": "NOT RUN",
|
||||
"master_status": "NOT RUN"
|
||||
"master_status": "NOT RUN",
|
||||
"updated": "2026-10-09T08:44:49.530Z",
|
||||
"evidence_record": {
|
||||
"reason": "TV-19 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Ecosystem + external developers); a supplemental layer, never counted as independent evidence; not yet named in the map",
|
||||
"at": "2026-10-09T08:44:49.530Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TV-20",
|
||||
|
|
@ -17767,7 +17884,12 @@
|
|||
],
|
||||
"threshold_status": "PROPOSED - FREEZE BEFORE TEST",
|
||||
"run_status": "NOT RUN",
|
||||
"master_status": "NOT RUN"
|
||||
"master_status": "NOT RUN",
|
||||
"updated": "2026-10-09T08:44:49.530Z",
|
||||
"evidence_record": {
|
||||
"reason": "TV-20 (token value gate, scope PAYMENT CAPABILITY): no gate executed; the harness is the owner role's (Application + wallet); a supplemental layer, never counted as independent evidence; not yet named in the map",
|
||||
"at": "2026-10-09T08:44:49.530Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TV-21",
|
||||
|
|
@ -17798,7 +17920,12 @@
|
|||
],
|
||||
"threshold_status": "PROPOSED - FREEZE BEFORE TEST",
|
||||
"run_status": "NOT RUN",
|
||||
"master_status": "NOT RUN"
|
||||
"master_status": "NOT RUN",
|
||||
"updated": "2026-10-09T08:44:49.530Z",
|
||||
"evidence_record": {
|
||||
"reason": "TV-21 (token value gate, scope PAID WORK CAPABILITY): no gate executed; the harness is the owner role's (Proving + independent customers); a supplemental layer, never counted as independent evidence; not yet named in the map",
|
||||
"at": "2026-10-09T08:44:49.530Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TV-22",
|
||||
|
|
@ -17827,7 +17954,12 @@
|
|||
],
|
||||
"threshold_status": "PROPOSED - FREEZE BEFORE TEST",
|
||||
"run_status": "NOT RUN",
|
||||
"master_status": "NOT RUN"
|
||||
"master_status": "NOT RUN",
|
||||
"updated": "2026-10-09T08:44:49.530Z",
|
||||
"evidence_record": {
|
||||
"reason": "TV-22 (token value gate, scope WORK MARKET CAPABILITY): no gate executed; the harness is the owner role's (Application + independent operators); a supplemental layer, never counted as independent evidence; not yet named in the map",
|
||||
"at": "2026-10-09T08:44:49.530Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TV-23",
|
||||
|
|
@ -17855,7 +17987,12 @@
|
|||
],
|
||||
"threshold_status": "PROPOSED - FREEZE BEFORE TEST",
|
||||
"run_status": "NOT RUN",
|
||||
"master_status": "NOT RUN"
|
||||
"master_status": "NOT RUN",
|
||||
"updated": "2026-10-09T08:44:49.530Z",
|
||||
"evidence_record": {
|
||||
"reason": "TV-23 (token value gate, scope SERVICE BONDS IF ENABLED): no gate executed; the harness is the owner role's (Economics + security); a supplemental layer, never counted as independent evidence; not yet named in the map",
|
||||
"at": "2026-10-09T08:44:49.530Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TV-24",
|
||||
|
|
@ -17884,7 +18021,12 @@
|
|||
],
|
||||
"threshold_status": "PROPOSED - FREEZE BEFORE TEST",
|
||||
"run_status": "NOT RUN",
|
||||
"master_status": "NOT RUN"
|
||||
"master_status": "NOT RUN",
|
||||
"updated": "2026-10-09T08:44:49.530Z",
|
||||
"evidence_record": {
|
||||
"reason": "TV-24 (token value gate, scope AI IF ENABLED): no gate executed; the harness is the owner role's (Compute + independent reviewer); a supplemental layer, never counted as independent evidence; not yet named in the map",
|
||||
"at": "2026-10-09T08:44:49.530Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TV-25",
|
||||
|
|
@ -17913,7 +18055,12 @@
|
|||
],
|
||||
"threshold_status": "PROPOSED - FREEZE BEFORE TEST",
|
||||
"run_status": "NOT RUN",
|
||||
"master_status": "NOT RUN"
|
||||
"master_status": "NOT RUN",
|
||||
"updated": "2026-10-09T08:44:49.530Z",
|
||||
"evidence_record": {
|
||||
"reason": "TV-25 (token value gate, scope AGENTS IF ENABLED): no gate executed; the harness is the owner role's (Application + security); a supplemental layer, never counted as independent evidence; not yet named in the map",
|
||||
"at": "2026-10-09T08:44:49.530Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TV-26",
|
||||
|
|
@ -17942,7 +18089,12 @@
|
|||
],
|
||||
"threshold_status": "PROPOSED - FREEZE BEFORE TEST",
|
||||
"run_status": "NOT RUN",
|
||||
"master_status": "NOT RUN"
|
||||
"master_status": "NOT RUN",
|
||||
"updated": "2026-10-09T08:44:49.530Z",
|
||||
"evidence_record": {
|
||||
"reason": "TV-26 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Cryptography + protocol); a supplemental layer, never counted as independent evidence; not yet named in the map",
|
||||
"at": "2026-10-09T08:44:49.530Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TV-27",
|
||||
|
|
@ -17971,7 +18123,12 @@
|
|||
],
|
||||
"threshold_status": "PROPOSED - FREEZE BEFORE TEST",
|
||||
"run_status": "NOT RUN",
|
||||
"master_status": "NOT RUN"
|
||||
"master_status": "NOT RUN",
|
||||
"updated": "2026-10-09T08:44:49.530Z",
|
||||
"evidence_record": {
|
||||
"reason": "TV-27 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Security + product); a supplemental layer, never counted as independent evidence; not yet named in the map",
|
||||
"at": "2026-10-09T08:44:49.530Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TV-28",
|
||||
|
|
@ -18000,7 +18157,12 @@
|
|||
],
|
||||
"threshold_status": "PROPOSED - FREEZE BEFORE TEST",
|
||||
"run_status": "NOT RUN",
|
||||
"master_status": "NOT RUN"
|
||||
"master_status": "NOT RUN",
|
||||
"updated": "2026-10-09T08:44:49.530Z",
|
||||
"evidence_record": {
|
||||
"reason": "TV-28 (token value gate, scope STABLE/BRIDGE IF ENABLED): no gate executed; the harness is the owner role's (Application + security + counsel); a supplemental layer, never counted as independent evidence; not yet named in the map",
|
||||
"at": "2026-10-09T08:44:49.530Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TV-29",
|
||||
|
|
@ -18029,7 +18191,12 @@
|
|||
],
|
||||
"threshold_status": "PROPOSED - FREEZE BEFORE TEST",
|
||||
"run_status": "NOT RUN",
|
||||
"master_status": "NOT RUN"
|
||||
"master_status": "NOT RUN",
|
||||
"updated": "2026-10-09T08:44:49.530Z",
|
||||
"evidence_record": {
|
||||
"reason": "TV-29 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Protocol + operations); a supplemental layer, never counted as independent evidence; not yet named in the map",
|
||||
"at": "2026-10-09T08:44:49.530Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TV-30",
|
||||
|
|
@ -18058,7 +18225,12 @@
|
|||
],
|
||||
"threshold_status": "PROPOSED - FREEZE BEFORE TEST",
|
||||
"run_status": "NOT RUN",
|
||||
"master_status": "NOT RUN"
|
||||
"master_status": "NOT RUN",
|
||||
"updated": "2026-10-09T08:44:49.530Z",
|
||||
"evidence_record": {
|
||||
"reason": "TV-30 (token value gate, scope CORE): no gate executed; the harness is the owner role's (GPU + measurement); a supplemental layer, never counted as independent evidence; not yet named in the map",
|
||||
"at": "2026-10-09T08:44:49.530Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TV-31",
|
||||
|
|
@ -18087,7 +18259,12 @@
|
|||
],
|
||||
"threshold_status": "PROPOSED - FREEZE BEFORE TEST",
|
||||
"run_status": "NOT RUN",
|
||||
"master_status": "NOT RUN"
|
||||
"master_status": "NOT RUN",
|
||||
"updated": "2026-10-09T08:44:49.530Z",
|
||||
"evidence_record": {
|
||||
"reason": "TV-31 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Qualified counsel); a supplemental layer, never counted as independent evidence; not yet named in the map",
|
||||
"at": "2026-10-09T08:44:49.530Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TV-32",
|
||||
|
|
@ -18118,7 +18295,12 @@
|
|||
],
|
||||
"threshold_status": "PROPOSED - FREEZE BEFORE TEST",
|
||||
"run_status": "NOT RUN",
|
||||
"master_status": "NOT RUN"
|
||||
"master_status": "NOT RUN",
|
||||
"updated": "2026-10-09T08:44:49.530Z",
|
||||
"evidence_record": {
|
||||
"reason": "TV-32 (token value gate, scope LEADERSHIP CLAIM): no gate executed; the harness is the owner role's (Independent acceptance panel); a supplemental layer, never counted as independent evidence; not yet named in the map",
|
||||
"at": "2026-10-09T08:44:49.530Z"
|
||||
}
|
||||
}
|
||||
],
|
||||
"notes": [
|
||||
|
|
@ -18409,8 +18591,8 @@
|
|||
"status": "RATIFIED",
|
||||
"owner": "founder",
|
||||
"word": "capped issuance, no tail escape clause, no forecast-triggered minting, no ordinary parameter vote that expands the cap; subject to the pre-launch security-funding gate TV-04 (a fail means delay or an open reconsideration, never an undisclosed rescue)",
|
||||
"ratified_by": "founder",
|
||||
"ratified_at": "2026-10-09T08:13:50.568Z",
|
||||
"ratified_by": "founder",
|
||||
"recorded_against": "its specification, release and acceptance tests before activation (the coordinator's relay of the founder's ratification, 9 October 2026, 09:2x UK)",
|
||||
"condition": "subject to TV-04"
|
||||
},
|
||||
|
|
@ -18421,8 +18603,8 @@
|
|||
"status": "RATIFIED WITH PARAMETER PENDING",
|
||||
"owner": "founder",
|
||||
"word": "the same-cap emission comparison is approved (current pacing vs a longer distribution; code-generated figures for years 1, 2, 5, 10, 20 with rounding and terminal behaviour; no founder reserve); the final schedule stays PENDING EVIDENCE, neither alternative frozen",
|
||||
"ratified_by": "founder",
|
||||
"ratified_at": "2026-10-09T08:13:50.670Z",
|
||||
"ratified_by": "founder",
|
||||
"recorded_against": "its specification, release and acceptance tests before activation (the coordinator's relay of the founder's ratification, 9 October 2026, 09:2x UK)",
|
||||
"condition": "the final schedule PENDING EVIDENCE"
|
||||
},
|
||||
|
|
@ -18433,8 +18615,8 @@
|
|||
"status": "RATIFIED",
|
||||
"owner": "founder",
|
||||
"word": "separate accountable budgets for hashing, internal proving, external work and maintenance, every payment counted once; external prover revenue never counted as miner security, maintenance and Labs profit at once",
|
||||
"ratified_by": "founder",
|
||||
"ratified_at": "2026-10-09T08:13:50.772Z",
|
||||
"ratified_by": "founder",
|
||||
"recorded_against": "its specification, release and acceptance tests before activation (the coordinator's relay of the founder's ratification, 9 October 2026, 09:2x UK)"
|
||||
},
|
||||
{
|
||||
|
|
@ -18444,8 +18626,8 @@
|
|||
"status": "RATIFIED WITH PARAMETER PENDING",
|
||||
"owner": "founder",
|
||||
"word": "explicit auditable routing with no hidden company allocation; the 80/20 split is emission allocation only; the external-job fee or burn rate is NOT ratified, comparative pricing tests decide",
|
||||
"ratified_by": "founder",
|
||||
"ratified_at": "2026-10-09T08:13:50.871Z",
|
||||
"ratified_by": "founder",
|
||||
"recorded_against": "its specification, release and acceptance tests before activation (the coordinator's relay of the founder's ratification, 9 October 2026, 09:2x UK)",
|
||||
"condition": "the external-job fee or burn rate not ratified; comparative pricing tests decide"
|
||||
},
|
||||
|
|
@ -18456,8 +18638,8 @@
|
|||
"status": "RATIFIED",
|
||||
"owner": "founder",
|
||||
"word": "a recovery certificate is never ordinary finality on any wallet, receipt, API or bridge; labels do not repair an unsafe recovery rule, which still needs its tests",
|
||||
"ratified_by": "founder",
|
||||
"ratified_at": "2026-10-09T08:13:50.972Z",
|
||||
"ratified_by": "founder",
|
||||
"recorded_against": "its specification, release and acceptance tests before activation (the coordinator's relay of the founder's ratification, 9 October 2026, 09:2x UK)"
|
||||
},
|
||||
{
|
||||
|
|
@ -18467,8 +18649,8 @@
|
|||
"status": "RATIFIED",
|
||||
"owner": "founder",
|
||||
"word": "separate claims; public wording \"Designed to compete for leadership among GPU-first networks.\"; after testing, the demonstrated advantage is named, never a blanket number one",
|
||||
"ratified_by": "founder",
|
||||
"ratified_at": "2026-10-09T08:13:51.074Z",
|
||||
"ratified_by": "founder",
|
||||
"recorded_against": "its specification, release and acceptance tests before activation (the coordinator's relay of the founder's ratification, 9 October 2026, 09:2x UK)"
|
||||
}
|
||||
]
|
||||
|
|
|
|||
|
|
@ -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 (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.)"
|
||||
"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.) Re-recorded at 09:5x UK once the recorder kept records per run: the twelve CUDA evidence files return to POW-01's evidence_path beside the same-work run's record."
|
||||
}
|
||||
|
|
|
|||
|
|
@ -127,15 +127,31 @@ function record(reg, map, batch) {
|
|||
...(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;
|
||||
// one record per (case, cell, run) (9 October 2026, 09:4x UK, the same-work hand's class: a second run on the same cell had replaced
|
||||
// the first run's record and dropped its evidence from evidence_path). The latest run sits under the cell's own key; an older run's
|
||||
// record moves to "<cell>@<run_id>" and keeps counting; the same run_id replayed overwrites its own record; "supersedes": [run_id, ...]
|
||||
// on the cell or the batch drops the named older records on that cell (a rerun after a fix, a FAIL replaced by its retest), so an
|
||||
// older FAIL stands until a batch supersedes it by name.
|
||||
const supersedes = new Set([...(Array.isArray(cell.supersedes) ? cell.supersedes : cell.supersedes ? [cell.supersedes] : []), ...(Array.isArray(batch.supersedes) ? batch.supersedes : batch.supersedes ? [batch.supersedes] : [])].map(String));
|
||||
for (const [k, r] of Object.entries(c.evidence_records)) {
|
||||
const onCell = k === cell.cell || k.startsWith(`${cell.cell}@`);
|
||||
if (onCell && r && supersedes.has(String(r.run_id))) delete c.evidence_records[k];
|
||||
}
|
||||
const prior = c.evidence_records[cell.cell];
|
||||
if (prior && prior.run_id && String(prior.run_id) !== String(batch.run_id)) c.evidence_records[`${cell.cell}@${prior.run_id}`] = prior;
|
||||
for (const [k, r] of Object.entries(c.evidence_records)) if (k.startsWith(`${cell.cell}@`) && String(r.run_id) === String(batch.run_id)) delete c.evidence_records[k]; // the run's own older copy under an @ key
|
||||
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)
|
||||
for (const [k, r] of Object.entries(c.evidence_records)) if (k !== cell.cell && !r.run_id && !r.evidence && r.reason) delete c.evidence_records[k];
|
||||
const decs = Object.values(c.evidence_records).filter((r) => r.run_id || r.evidence || r.decision === 'BLOCKED').map((r) => r.decision);
|
||||
// the latest run on each cell is that cell's word; an older run's record (the "<cell>@<run_id>" keys) stays as evidence and votes only
|
||||
// when it is a FAIL, which stands until a batch supersedes it by name
|
||||
const voters = Object.entries(c.evidence_records).filter(([k, r]) => !k.includes('@') || r.decision === 'FAIL').map(([, r]) => r);
|
||||
const decs = voters.filter((r) => r.run_id || r.evidence || r.decision === 'BLOCKED').map((r) => r.decision);
|
||||
const combined = decs.includes('FAIL') ? 'FAIL' : decs.includes('BLOCKED') ? 'BLOCKED' : decs.every((d) => d === 'PASS') ? 'PASS' : 'NOT RUN';
|
||||
c.run_status = combined; c.run_id = batch.run_id; c.updated = now;
|
||||
c.evidence_path = [...new Set(Object.values(c.evidence_records).map((r) => r.evidence).filter(Boolean))].join('; ');
|
||||
if (combined !== 'NOT RUN') delete c.in_progress_since; else if (decs.some(() => true) && Object.values(c.evidence_records).some((r) => r.in_progress)) c.in_progress_since = c.in_progress_since || now;
|
||||
if (combined !== 'NOT RUN') delete c.in_progress_since; else if (decs.some(() => true) && voters.some((r) => r.in_progress)) c.in_progress_since = c.in_progress_since || now;
|
||||
const ap = cell.approvals || batch.approvals || {}; c.approvals = { scope_approved: ap.scope_approved ?? c.approvals?.scope_approved ?? null, implementation_complete: ap.implementation_complete ?? c.approvals?.implementation_complete ?? null, evidence_reproduced: ap.evidence_reproduced ?? c.approvals?.evidence_reproduced ?? null, claim_authorised: ap.claim_authorised ?? c.approvals?.claim_authorised ?? null };
|
||||
touched.push(id);
|
||||
}
|
||||
|
|
@ -172,7 +188,7 @@ if (args.includes('--self-test')) {
|
|||
fs.mkdirSync(`${d}/dir`); const relDir = path.relative(ROOT, `${d}/dir`); let badDir = '';
|
||||
try { record(reg, map, { run_id: 'x', manifest_sha: 'abc', method: 'native', cells: [{ cell: 'pow', status: 'FAIL', evidence: relDir }] }); } catch (e) { badDir = String(e.message); }
|
||||
if (!/is a directory/.test(badDir)) { console.log(`self-test failed: a directory cited as evidence was accepted: ${badDir}`); fails = 1; }
|
||||
fs.writeFileSync(`${d}/dir/f.log`, 'x'); let okFile = true; try { record(reg, map, { run_id: 'x', manifest_sha: 'abc', method: 'native', cells: [{ cell: 'pow', status: 'FAIL', evidence: `${relDir}/f.log` }] }); } catch { okFile = false; }
|
||||
fs.writeFileSync(`${d}/dir/f.log`, 'x'); let okFile = true; try { record(reg, map, { run_id: 'x', manifest_sha: 'abc', method: 'native', cells: [{ cell: 'pow', status: 'NOT RUN', evidence: `${relDir}/f.log` }] }); } catch { okFile = false; }
|
||||
if (!okFile) { console.log('self-test failed: a tree file that exists was refused as evidence'); fails = 1; }
|
||||
process.env.TEST_RECORD_NO_TREE = '1';
|
||||
if (!badStatus) { console.log('self-test failed: a status outside the vocabulary was accepted'); fails = 1; }
|
||||
|
|
@ -180,6 +196,17 @@ 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; }
|
||||
// records per run: two runs on one cell both count; the same run replayed overwrites its own; supersedes drops a named older run
|
||||
const regR = { cases: [{ id: 'R1', method: 'Automated', accept: 'a' }] }; const mapR = { cells: { rc: { command: 'x', box_class: 'b', fixtures: [], cases: ['R1'] } }, not_run: {} };
|
||||
record(regR, mapR, { run_id: 'run-a', manifest_sha: 'm', method: 'native', cells: [{ cell: 'rc', status: 'FAIL', evidence: '/e/a.log' }] });
|
||||
record(regR, mapR, { run_id: 'run-b', manifest_sha: 'm', method: 'native', cells: [{ cell: 'rc', status: 'PASS', evidence: '/e/b.log' }] });
|
||||
const kR = Object.keys(regR.cases[0].evidence_records).sort().join();
|
||||
if (!(kR === 'rc,rc@run-a' && regR.cases[0].run_status === 'FAIL' && /a\.log/.test(regR.cases[0].evidence_path) && /b\.log/.test(regR.cases[0].evidence_path))) { console.log(`self-test failed: a second run on a cell dropped the first: ${kR} ${regR.cases[0].run_status} ${regR.cases[0].evidence_path}`); fails = 1; }
|
||||
record(regR, mapR, { run_id: 'run-b', manifest_sha: 'm', method: 'native', cells: [{ cell: 'rc', status: 'PASS', evidence: '/e/b2.log' }] });
|
||||
if (!(Object.keys(regR.cases[0].evidence_records).length === 2 && regR.cases[0].evidence_records.rc.evidence === '/e/b2.log')) { console.log('self-test failed: the same run replayed did not overwrite its own record'); fails = 1; }
|
||||
record(regR, mapR, { run_id: 'run-c', manifest_sha: 'm', method: 'native', supersedes: ['run-a'], cells: [{ cell: 'rc', status: 'PASS', evidence: '/e/c.log' }] });
|
||||
const kR2 = Object.keys(regR.cases[0].evidence_records).sort().join();
|
||||
if (!(kR2 === 'rc,rc@run-b' && regR.cases[0].run_status === 'PASS' && !/a\.log/.test(regR.cases[0].evidence_path))) { console.log(`self-test failed: supersedes did not drop the named FAIL run: ${kR2} ${regR.cases[0].run_status}`); 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' } } },
|
||||
|
|
@ -199,7 +226,7 @@ if (args.includes('--self-test')) {
|
|||
if (!(regL.cases[0].run_status === 'PASS' && !('record' in regL.cases[0].evidence_records))) { console.log(`self-test failed: a lifted reason-only record kept a PASS cell at NOT RUN or survived beside it: ${JSON.stringify(regL.cases[0].evidence_records)}`); fails = 1; }
|
||||
record(reg, map, { run_id: 'r1p', manifest_sha: 'abc', method: 'native', cells: [{ cell: 'pow', status: 'PASS', evidence: '/e/pow.log' }] });
|
||||
if (acceptSnapshot(reg) !== before) { console.log('self-test failed: a record changed an accept text'); fails = 1; }
|
||||
if (!(touched.length === 1 && reg.cases[0].run_status === 'PASS' && reg.cases[0].run_id === 'r1p' && reg.cases[0].evidence_record.manifest_sha === 'abc' && reg.cases[0].evidence_path === '/e/pow.log' && reg.cases[0].updated)) { console.log(`self-test failed: the run was not written to the mapped case's live fields: ${JSON.stringify(reg.cases[0])}`); fails = 1; }
|
||||
if (!(touched.length === 1 && reg.cases[0].run_status === 'PASS' && reg.cases[0].run_id === 'r1p' && reg.cases[0].evidence_record.manifest_sha === 'abc' && reg.cases[0].evidence_path.split('; ').includes('/e/pow.log') && reg.cases[0].updated)) { console.log(`self-test failed: the run was not written to the mapped case's live fields: ${JSON.stringify(reg.cases[0])}`); fails = 1; }
|
||||
if (!(reg.cases[1].run_status === 'NOT RUN' && /corpus/.test(reg.cases[1].evidence_record.reason))) { console.log('self-test failed: an unmapped Automated case did not read NOT RUN with its reason'); fails = 1; }
|
||||
if (reg.cases[0].run_status !== 'PASS') { console.log('self-test failed: the PASS after the RUNNING pass did not land'); fails = 1; }
|
||||
const stamp1 = reg.cases[1].updated; record(reg, map, { run_id: 'r1b', manifest_sha: 'abc', evidence_dir: '/e', method: 'native', cells: [{ cell: 'pow', status: 'PASS', evidence: '/e/pow.log' }] });
|
||||
|
|
@ -243,7 +270,7 @@ if (args.includes('--self-test')) {
|
|||
let threw = false; try { record(reg, map, { run_id: 'r2', manifest_sha: 'x', method: 'native', cells: [{ cell: 'ghost', status: 'PASS' }] }); } catch { threw = true; }
|
||||
if (!threw) { console.log('self-test failed: a batch naming a cell not in the map was accepted'); fails = 1; }
|
||||
fs.rmSync(d, { recursive: true, force: true });
|
||||
if (!fails) console.log('self-test passed: a complete map checks; an unknown case id and an unmapped Automated case are refused; a run batch writes run_status, run_id, evidence_path, updated and the evidence record to the mapped cases only, leaves every accept text byte-identical, gives an unmapped Automated case NOT RUN with its reason and a manual case nothing; a batch naming an unknown cell is refused; --note appends a dated note to a suite and never touches an accept text; an unchanged NOT RUN row is not re-stamped; a cell with a missing prerequisite is BLOCKED, never PASS (INT-17); a cut batch needs the binary on a box, the commit string read back and the kit ISA clean line; a cell may narrow its write to named cases; the decision vocabulary is exactly NOT RUN, BLOCKED, FAIL, PASS with RUNNING read as in progress; every record carries the p.139 fields and the four approvals, never inferred; several cells on one case keep every record and combine the decision');
|
||||
if (!fails) console.log('self-test passed: records are kept per (case, cell, run): the latest run is the word of its cell, an older run stays as evidence and an older FAIL stands until superseded by name, the same run replayed overwrites itself; a complete map checks; an unknown case id and an unmapped Automated case are refused; a run batch writes run_status, run_id, evidence_path, updated and the evidence record to the mapped cases only, leaves every accept text byte-identical, gives an unmapped Automated case NOT RUN with its reason and a manual case nothing; a batch naming an unknown cell is refused; --note appends a dated note to a suite and never touches an accept text; an unchanged NOT RUN row is not re-stamped; a cell with a missing prerequisite is BLOCKED, never PASS (INT-17); a cut batch needs the binary on a box, the commit string read back and the kit ISA clean line; a cell may narrow its write to named cases; the decision vocabulary is exactly NOT RUN, BLOCKED, FAIL, PASS with RUNNING read as in progress; every record carries the p.139 fields and the four approvals, never inferred; several cells on one case keep every record and combine the decision');
|
||||
process.exit(fails);
|
||||
}
|
||||
const reg = load(REG); const map = load(MAP);
|
||||
|
|
|
|||
|
|
@ -92,7 +92,7 @@ if (args.includes('--check')) {
|
|||
if (args.includes('--write')) {
|
||||
merge(reg, vr); merge(reg, tv); mergeDecisions(reg, decisions); const n = mapReasons(map, tv);
|
||||
fs.writeFileSync(REG, JSON.stringify(reg, null, 2) + '\n'); fs.writeFileSync(MAP, JSON.stringify(map, null, 2) + '\n');
|
||||
console.log(`token-value-suite: VR written (${vr.tests.length} rules), TV written (${tv.tests.length} gates), decisions ${decisions.length} (UNAPPROVED); ${n} NOT RUN reasons in the map`);
|
||||
console.log(`token-value-suite: VR written (${vr.tests.length} rules), TV written (${tv.tests.length} gates), decisions ${decisions.length} (${(reg.decisions || []).map((x) => x.status).filter((v, i, a) => a.indexOf(v) === i).join(', ')}); ${n} NOT RUN reasons in the map`);
|
||||
process.exit(0);
|
||||
}
|
||||
console.error('usage: token-value-suite.mjs --file <rules-and-gates.json> [--write | --check] | --self-test'); process.exit(2);
|
||||
|
|
|
|||
Loading…
Reference in a new issue