407 lines
21 KiB
JSON
407 lines
21 KiB
JSON
{
|
|
"title": "Igneum 2.0 test harness map",
|
|
"registry": "docs/plans/igneum-2.0-test-registry.json",
|
|
"rule": "a case maps to a cell only where the cell's tests visibly answer it; coverage names what the cell proves and what remains; a mapped cell's green writes RUNNING, PASS only when coverage is full and the evidence file exists; an automated case with no cell reads NOT RUN with its reason, never PASS by inference",
|
|
"cells": {
|
|
"suite:pow": {
|
|
"command": "tools/build-remote.sh --priority gate -- test --release (from igneum-pow/)",
|
|
"box_class": "suite (gate priority)",
|
|
"fixtures": [
|
|
"F0",
|
|
"F1"
|
|
],
|
|
"cases": [
|
|
"POW-02",
|
|
"POW-07",
|
|
"POW-08"
|
|
],
|
|
"coverage": {
|
|
"POW-02": "partial: program derivation, ds55 geometry, the v6 fold, the packs and the spec read-back tests; the independent re-implementation and the index-fold census are the hash lane's harnesses",
|
|
"POW-08": "partial: the freeze list and the generator version pin; the public-claim scrub is the site gate's",
|
|
"POW-07": "the mixed FP32 branch is excluded and unreachable: no class flag reaches an FP op in igneum-pow on master (the mixedfp lane's branch is not on master); evidence the grep of the emitters on master, recorded by the hash lane"
|
|
}
|
|
},
|
|
"suite:app": {
|
|
"command": "tools/build-remote.sh --priority gate -- test --release (from app/igneum-app/)",
|
|
"box_class": "suite (gate priority)",
|
|
"fixtures": [
|
|
"F0",
|
|
"F1"
|
|
],
|
|
"cases": [
|
|
"UX-02",
|
|
"UX-03",
|
|
"UX-07",
|
|
"VER-08"
|
|
],
|
|
"coverage": {
|
|
"UX-02": "partial: the engine state machine's pause, stop and knob tests; the operator study is UX-01's",
|
|
"UX-03": "partial: the card and earnings rendering tests; the net-earnings model against real bills is COM/ECO evidence",
|
|
"UX-07": "partial: the refused-update and manifest tests; the update-return lane's install classes are its own rows",
|
|
"VER-08": "partial: the app's own state-word tests; the wallet and light client rows are VER-01 to VER-03"
|
|
}
|
|
},
|
|
"suite:core": {
|
|
"command": "tools/build-remote.sh --priority gate -- test --release -p kaspa-consensus-core (from the node fork)",
|
|
"box_class": "suite (gate priority)",
|
|
"fixtures": [
|
|
"F0",
|
|
"F1"
|
|
],
|
|
"cases": [
|
|
"FIN-01",
|
|
"INC-01",
|
|
"ROT-06"
|
|
],
|
|
"coverage": {
|
|
"FIN-01": "partial: the finality field and checkpoint tests on the object; ordering under load is the consensus suite and the sim",
|
|
"INC-01": "partial: emission, fee and payout arithmetic tests; the reconciliation over a live chain is the economics lane's",
|
|
"ROT-06": "partial: the dataset activation and digest tests; a live activation is the fast-time harness"
|
|
}
|
|
},
|
|
"suite:consensus": {
|
|
"command": "tools/build-remote.sh --priority gate -- test --release -p kaspa-consensus (from the node fork)",
|
|
"box_class": "suite (gate priority)",
|
|
"fixtures": [
|
|
"F0",
|
|
"F1"
|
|
],
|
|
"cases": [
|
|
"FIN-01",
|
|
"FIN-03",
|
|
"FIN-04",
|
|
"FIN-05",
|
|
"FIN-07",
|
|
"ROT-05",
|
|
"ZKP-01"
|
|
],
|
|
"coverage": {
|
|
"FIN-01": "partial: the finality processes' agreement tests",
|
|
"FIN-03": "partial: rule v4's anchored table and authority expiry tests (bee41b5e)",
|
|
"FIN-04": "partial: the frozen table without its time expiry (rule v4)",
|
|
"FIN-05": "partial: key succession and another scheme's vote refused",
|
|
"FIN-07": "partial: majority-continuity recovery (rule v4)",
|
|
"ROT-05": "partial: the finality-stopped pause tests",
|
|
"ZKP-01": "partial: a proof-less or wrong-statement block refused by consensus"
|
|
}
|
|
},
|
|
"suite:exec": {
|
|
"command": "tools/build-remote.sh --priority gate -- test --release -p igneum-exec (from the node fork)",
|
|
"box_class": "suite (gate priority)",
|
|
"fixtures": [
|
|
"F0",
|
|
"F1"
|
|
],
|
|
"cases": [
|
|
"ZKP-01",
|
|
"ZKP-03",
|
|
"OPS-04",
|
|
"EVM-02"
|
|
],
|
|
"coverage": {
|
|
"ZKP-01": "partial: a real proof verifies, a wrong statement and garbage are refused (nativeverify)",
|
|
"ZKP-03": "partial: a snapshot under another digest refused, the epoch streams bound to the digest",
|
|
"OPS-04": "partial: snapshot install, replay and genesis recapture after a crash",
|
|
"EVM-02": "partial: the replay tests on the day stream; the signature and chain-id binding vectors are an EVM harness still to map"
|
|
}
|
|
},
|
|
"suite:miner": {
|
|
"command": "tools/build-remote.sh --priority gate -- test --release -p igneum-miner (from the node fork)",
|
|
"box_class": "suite (gate priority)",
|
|
"fixtures": [
|
|
"F0",
|
|
"F1"
|
|
],
|
|
"cases": [
|
|
"UX-06",
|
|
"UX-04",
|
|
"POW-01"
|
|
],
|
|
"coverage": {
|
|
"UX-06": "partial: the miner's own template selection tests",
|
|
"UX-04": "partial: payout label and share accounting tests; custody is the pool lane's row",
|
|
"POW-01": "partial: the pack re-check seam against the pack's 96 vectors (recheck_pack); the million-vector campaign is harness:p01-vectors"
|
|
}
|
|
},
|
|
"suite:p2p-flows": {
|
|
"command": "tools/build-remote.sh --priority gate -- test --release -p kaspa-p2p-flows (from the node fork)",
|
|
"box_class": "suite (gate priority)",
|
|
"fixtures": [
|
|
"F0",
|
|
"F1"
|
|
],
|
|
"cases": [
|
|
"OPS-06",
|
|
"ZKP-06"
|
|
],
|
|
"coverage": {
|
|
"OPS-06": "partial: malformed relay messages refused; traffic containment under load is an OPS harness",
|
|
"ZKP-06": "partial: proof relay coverage tests; aggregation completeness is the proving lane's test set"
|
|
}
|
|
},
|
|
"gate:pre-push": {
|
|
"command": "tools/ci/pre-push.sh (every landing; the heavy checks ship to a box)",
|
|
"box_class": "gate",
|
|
"fixtures": [
|
|
"F1"
|
|
],
|
|
"cases": [
|
|
"GOV-05",
|
|
"GOV-06",
|
|
"UX-08"
|
|
],
|
|
"coverage": {
|
|
"GOV-05": "partial: every gate check carries a self-test that fires on a known failure and passes a known success (77 checks); the suites' own oracles are their mutation rows",
|
|
"GOV-06": "partial: the launch-gates, forbidden-strings and scope checks on the served site",
|
|
"UX-08": "partial: the site gate on every served page, plus docs/build/tuning.md (the published tuning and build-settings half, the hash lane's); the open builds and the fee conditions are the shipper's and the site lane's"
|
|
}
|
|
},
|
|
"check:freeze": {
|
|
"command": "consensus/pow/build.rs rule 19 at every kaspa-pow build; packaging/pow-freeze.txt and packaging/d1-freeze.txt",
|
|
"box_class": "build",
|
|
"fixtures": [
|
|
"F0"
|
|
],
|
|
"cases": [
|
|
"GOV-01"
|
|
],
|
|
"coverage": {
|
|
"GOV-01": "partial: the linked igneum-pow tree's fingerprint must match a listed freeze or the build fails, the binary prints which; the manifest (igneum_getManifest) names the object digest; the signed F0 manifest is the node lane's row tonight"
|
|
}
|
|
},
|
|
"harness:fast-time-60x": {
|
|
"command": "the v5 fast-time harness on the devnet object at 60x (infra/fast-time/override-60x.json; the node lane's run shape)",
|
|
"box_class": "harness (lease pool, never build-1)",
|
|
"fixtures": [
|
|
"F0",
|
|
"F3"
|
|
],
|
|
"cases": [
|
|
"ROT-01",
|
|
"ROT-02"
|
|
],
|
|
"coverage": {
|
|
"ROT-01": "partial: hourly boundaries crossed at 60x with every node agreeing",
|
|
"ROT-02": "partial: the weekly and family boundary crossings at 60x"
|
|
}
|
|
},
|
|
"harness:finality-sim": {
|
|
"command": "igneum/harness-sim (the finality lane's scenarios: partition, split populations, long partition)",
|
|
"box_class": "harness",
|
|
"fixtures": [
|
|
"F0",
|
|
"F4"
|
|
],
|
|
"cases": [
|
|
"FIN-02",
|
|
"FIN-08"
|
|
],
|
|
"coverage": {
|
|
"FIN-02": "partial: split honest populations in the simulator; the real-node run is the fault network F4",
|
|
"FIN-08": "partial: the combined boundary and fault scenarios in the simulator; model checking is the formal review"
|
|
}
|
|
},
|
|
"harness:p01-vectors": {
|
|
"command": "tools/ci/p01-vectors.py --worker <the kit's worker> --pack <pack dir> --reference /srv/artefacts/packs/p01-vectors/<pack>.txt --count 1000000 --out <evidence.json>: the worker driven with pool.rs's job lines at an all-pass target, every found hash diffed against the CPU reference list (igneum-pow hash-bound --count 1000000, prehash 00..01, the genesis seeds), exit 1 on any disagreement or unanswered nonce",
|
|
"box_class": "pods (one backend each)",
|
|
"fixtures": [
|
|
"F0",
|
|
"F2"
|
|
],
|
|
"cases": [
|
|
"POW-01"
|
|
],
|
|
"coverage": {
|
|
"POW-01": "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"
|
|
}
|
|
},
|
|
"harness:parser-malformed": {
|
|
"command": "cargo test --release -p igneum-exec --lib -- malformed --nocapture; cargo test --release -p igneum-miner --bins -- malformed --nocapture (node fork branch parser-malformed f0204947, taken into release-2.0.0-node at the node lane's next cut): ten thousand seeded mutations per parser through DayStream::from_bytes plus check, rpc::dispatch over nineteen igneum_ methods, and pool::job_seeds; the summary line per parser is the evidence",
|
|
"box_class": "suite",
|
|
"fixtures": [
|
|
"F5"
|
|
],
|
|
"cases": [
|
|
"POW-06"
|
|
],
|
|
"coverage": {
|
|
"POW-06": "partial: three parsers of external bytes (the state stream, the igneum_ RPC params, the pool job line), ten thousand seeded malformed cases each, zero panics, every case under 500 ms (the slowest 152 microseconds); 'accepted' counts mutations that left a valid input, not a parser fault; the verifier work bound (the other half of the accept text) is the proving lane's measurement"
|
|
}
|
|
},
|
|
"bench:pc1-packs": {
|
|
"command": "tools/ca3-v4-amend/pc1-ca4-packs.ps1 on PC 1 (RTX 5090, the signed-jobs channel, --cards-off, the Power Helper lock at 1,300 MHz, nvidia-smi at 1 Hz, 250 x 2^24 per row, the kit's CUDA worker --bench)",
|
|
"box_class": "PC 1 bench",
|
|
"fixtures": [
|
|
"F0",
|
|
"F1"
|
|
],
|
|
"cases": [
|
|
"GPU-02",
|
|
"GPU-03",
|
|
"GPU-05",
|
|
"POW-08"
|
|
],
|
|
"coverage": {
|
|
"GPU-02": "partial: the paired stock and locked rows on the same board, host and workload (the rate held, 2.37 against 3.26 microjoules per hash on the class v5 pack); the historical 34 to 41 percent claim's full configuration set is owed",
|
|
"GPU-03": "partial: hl-v6-all against hl-v6-foldrw on the 5090, the window's cost per unit of work, registers and blocks per SM, no spill; the mandatory-SKU set is owed",
|
|
"GPU-05": "partial: v3-1g, v3-ds29, v3-ds30, ds55, ds4g-ms complete with their fingerprints, energy per step at stock and at the knee on the 5090 and the 7600; the 8.5 and 11.5 GiB candidates are owed",
|
|
"POW-08": "partial: rw-w4, rw-w32, rw-w64 and the 1p5x long-program packs as regression controls for the excluded levers"
|
|
}
|
|
},
|
|
"bench:pc1-amd": {
|
|
"command": "tools/ca3-v4-amend/pc1-amd-cardin-bench.ps1 on PC 1 (RX 7600, OpenCL, gfx1102, 30 dispatches of 2^24 per size, rate only)",
|
|
"box_class": "PC 1 bench",
|
|
"fixtures": [
|
|
"F0",
|
|
"F1"
|
|
],
|
|
"cases": [
|
|
"GPU-01",
|
|
"GPU-05"
|
|
],
|
|
"coverage": {
|
|
"GPU-01": "partial: the 8 GB AMD cell, fingerprints and rates at 1, 2, 4 and 5.5 GiB; one cell of P02's twelve",
|
|
"GPU-05": "partial: the 8 GB tier's fit rows"
|
|
}
|
|
},
|
|
"bench:fleet-pods": {
|
|
"command": "the fleet lane's one-shot RunPod cards (5090, 4090, H100, 3090) with the same worker --bench and nvidia-smi sampling, the lock through nvidia-smi -lgc",
|
|
"box_class": "rented pods",
|
|
"fixtures": [
|
|
"F0",
|
|
"F1"
|
|
],
|
|
"cases": [
|
|
"GPU-01",
|
|
"GPU-03",
|
|
"POW-08"
|
|
],
|
|
"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"
|
|
}
|
|
},
|
|
"census:class-v6": {
|
|
"command": "the census lane's harness on class-v6-census-fold: the acceptance rule with (c''') on every candidate, the attempts census, the per-site index-bit read, attack-f8 at 2^22 on the live state",
|
|
"box_class": "harness (the lease pool)",
|
|
"fixtures": [
|
|
"F0",
|
|
"F3"
|
|
],
|
|
"cases": [
|
|
"POW-02"
|
|
],
|
|
"coverage": {
|
|
"POW-02": "partial: the fold's index statistics and the grammar bounds on 256 seeds plus the F8 set; the malformed programs are owed to harness:parser-malformed"
|
|
}
|
|
},
|
|
"crosscheck:review-harness": {
|
|
"command": "python3 run_all.py in docs/analysis/review-2026-10-08/harness.zip (the reviewer's C/Python transcription of the V2 to V4 paths; numpy and cc; about 1 GB) on a box, its all_results.json the evidence; the tree's side is igneum-pow's own pins of the same constants (src/verify.rs, src/bind.rs, proto-cuda/packs/igneum-genesis/vectors.json) under suite:pow",
|
|
"box_class": "suite (nice 10)",
|
|
"fixtures": [
|
|
"F0",
|
|
"F3"
|
|
],
|
|
"cases": [
|
|
"POW-01"
|
|
],
|
|
"coverage": {
|
|
"POW-01": "partial: independent execution agrees with the tree on the V2/V3 genesis program id and op mix, the two closed-form hashes, the three census ids and the eight header-bound memory-hard vectors; the v5 object's and the v6 freeze's vectors are outside the transcription's model (its README) and read NOT RUN for this cell; every backend is harness:p01-vectors"
|
|
}
|
|
},
|
|
"harness:family-gate": {
|
|
"command": "IGNEUM_FAMILY_GATE=1 [IGNEUM_FG_CLASS=<class string>] igneum_pow_test --ignored family_gate_era_census (the class v5 crate plus docs/analysis/class-v6/logs/harness-*.diff; one TSV row per drawn era); attack-f8 census --seeds 64 --nonces 1048576 --control window --by-site against the same crate",
|
|
"box_class": "measure (lease pool, 8 to 16 cores per stratum)",
|
|
"fixtures": [
|
|
"F0",
|
|
"F1"
|
|
],
|
|
"cases": [
|
|
"POW-02",
|
|
"ROT-07",
|
|
"ROT-08"
|
|
],
|
|
"coverage": {
|
|
"POW-02": "partial: the acceptance rule's measured rates on drawn classes (the per-candidate rejection, the attempt histogram, the exhaustion count against the independent-attempt arithmetic, the (c'') and (c''') floors' refuse rates and the pre-floor ratio spread per width), the per-site largest-bucket and index-bit statistics at the rule's own 2^20 sample with the seven known-failed seeds (p4, p8, p10, p34, p212, p225, p15), and the F8-form census at 2^20 on the F8 seed set where the attack-f8 mirror validates (0 of 96 warps mismatching); the semantics, termination and memory-bound half and the independent re-implementation are the suite's and the hash lane's; the effect-size limits are the family-gate.md thresholds, predeclared in its section 3",
|
|
"ROT-07": "partial: the acceptance-side ablation rows (layer 8 off against the same-crate windowed control: the draw cost, the floors' costs, the hot-set and 1.2x ceiling, the bit-R read; the mixer and shape axes' per-era invisibility and verifier rows), docs/analysis/class-v6/family-gate.md sections 6.4 to 6.11; the adversarial cost and the GPU setup rows per layer are the hash lane's and the adversary lane's",
|
|
"ROT-08": "partial: the no-rescue control document (38,000 drawn eras of the parameter family through the acceptance, the bound arithmetic on the counts, the honest line of what the gate cannot see), family-gate.md sections 1 to 6; the competitiveness envelope and the economic half are ECO's"
|
|
},
|
|
"evidence": "docs/analysis/class-v6/family-gate.md and docs/analysis/class-v6/logs/ (the TSV rows, the run logs with the pinned binary's sha256 and the lease line, the harness diffs)"
|
|
}
|
|
},
|
|
"not_run": {
|
|
"GOV-02": "the approval is recorded in the registry's approval field; the automated half (thresholds frozen before any run_status) is the gate rule landing by 21:00",
|
|
"GOV-04": "the evidence vault F9 (raw and negative evidence preserved) is the gate rule landing by 21:00: a PASS must carry its evidence file",
|
|
"GOV-08": "the stale-evidence rule (evidence older than the manifest sha reads NOT RUN) is the gate rule landing by 21:00",
|
|
"GPU-04": "the memory-clock ladder has no harness tonight: PC 1 mines nothing under the Devnet 3 off order",
|
|
"GPU-06": "accepted work under ordinary connectivity needs the fault network F4",
|
|
"GPU-07": "the sustained thermal and power soak has no harness tonight: PC 1 mines nothing under the Devnet 3 off order",
|
|
"POW-05": "amortised cheap winning attempts are the attack lanes' grind and era harnesses (tools/attack/f7-era, f9-grind), not in the release matrix; their rows come from those lanes",
|
|
"ADV-04": "selective participation needs the economic model F7 and a live chain window",
|
|
"ADV-06": "process-advantage separation is the adversary lanes' chip study",
|
|
"ADV-07": "lifetime rows are the adversary lanes' models",
|
|
"ROT-03": "miner-voted bring-forward needs a vote harness on the fault network F4",
|
|
"ROT-04": "seed-selection resistance is the census harness (the class v6 invention lane), not yet in the matrix",
|
|
"ECO-01": "the economic model F7 is the economics lane's; no automated harness in the matrix",
|
|
"ECO-02": "F7",
|
|
"ECO-03": "F7",
|
|
"ECO-04": "F7",
|
|
"ECO-05": "F7",
|
|
"ECO-06": "F7",
|
|
"ECO-07": "F7",
|
|
"EVM-01": "no EVM conformance-vector harness is mapped tonight; the exec suite does not run the reference test vectors",
|
|
"EVM-03": "the two-dimensional fee tests need the proving-limit harness",
|
|
"EVM-04": "block context and randomness vectors are an EVM harness still to map",
|
|
"EVM-05": "contract journeys need the DEX lane's integration set on Devnet 4",
|
|
"EVM-06": "wallet, RPC and indexer validation is the explorer and wallet lanes' rows",
|
|
"EVM-07": "execution DoS workloads need the workload catalogue F3",
|
|
"EVM-08": "verifier upgrade tests need the enforced-proving lane's upgrade scenario",
|
|
"ZKP-02": "program and verifier binding vectors are the proving lane's test set, not yet in the matrix",
|
|
"ZKP-04": "reward substitution tests are the proving lane's",
|
|
"ZKP-05": "proof payment idempotence under races needs the capacity harness",
|
|
"ZKP-08": "acceptance-path audit needs the authority test set",
|
|
"CAP-01": "the consumer-shard reproduction is the fleet lane's pods",
|
|
"CAP-02": "proving on the mining configuration is the fleet lane's",
|
|
"CAP-03": "the request-to-payment path is the proving fleet's measurement",
|
|
"CAP-04": "sustained load is the proving fleet's",
|
|
"CAP-05": "overload and recovery is the proving fleet's",
|
|
"CAP-06": "assignment windows are the proving fleet's",
|
|
"CAP-07": "reassignment is the proving fleet's",
|
|
"CAP-08": "customer-verifiable output is the reference apps plus the fleet",
|
|
"INC-02": "revenue separation is the economics lane's model",
|
|
"INC-03": "the modified-client task choice needs an adversarial client harness",
|
|
"INC-04": "demand spikes are the economic model",
|
|
"INC-05": "reservation abuse needs the capacity harness",
|
|
"INC-06": "difficulty and timestamp manipulation needs the fault network F4",
|
|
"INC-07": "self-dealing fees need the economic model and a live window",
|
|
"INC-08": "failure concentration is a live-window measurement",
|
|
"FIN-06": "old-key compromise analysis is the finality lane's long-range scenario, not yet in the sim",
|
|
"VER-01": "light-client bootstrap is the reference apps lane (/light); no automated harness mapped tonight",
|
|
"VER-02": "the evolving-authority statements are the reference apps lane's",
|
|
"VER-03": "payment proof (/receipt) is the reference apps lane's",
|
|
"VER-05": "state reconstruction without founder storage is the OPS no-founder exercise",
|
|
"VER-06": "withholding and corruption detection needs the fault network F4",
|
|
"VER-07": "wallet key protection is the wallet lane's security row",
|
|
"OPS-01": "the no-founder exercise is an operations run, not a suite",
|
|
"OPS-02": "bootstrap diversity needs the fault network F4",
|
|
"OPS-03": "update distribution separation is the update-return lane's row",
|
|
"OPS-05": "proving workload isolation is the fleet's pod row",
|
|
"OPS-07": "runbook detection is an operations run",
|
|
"OPS-08": "repeat independent operation is a cross-release observation",
|
|
"UX-05": "voting keys through pooling is the pool lane's row",
|
|
"COM-01": "commercial evidence, no automated harness",
|
|
"COM-02": "commercial evidence",
|
|
"COM-03": "commercial evidence",
|
|
"COM-04": "commercial evidence",
|
|
"COM-05": "commercial evidence",
|
|
"COM-06": "commercial evidence",
|
|
"COM-07": "commercial evidence",
|
|
"LEAD-02": "leadership comparison, an observation window",
|
|
"LEAD-03": "observation window",
|
|
"LEAD-04": "observation window",
|
|
"LEAD-05": "observation window",
|
|
"LEAD-06": "observation window",
|
|
"LEAD-08": "observation window"
|
|
}
|
|
}
|