igneum-pool recheck: the pack's genesis day index installed with its dataset size before the first epoch (--genesis-day overrides). The same-work lane's class, 8 October 2026 22:10 UK: a standalone process holds the genesis day at 0, the cache growth rule doubled the cache fourteen times by day 20730, and every hash of the D1-pairing row disagreed with the reference while igneum-pow's own class v6 seam reproduced it exactly; the live miner installs both from the template, the reader now from the pack

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
igneum-labs 2026-10-08 21:18:53 +00:00
parent 04cf78f26b
commit 04fcb275f8
2 changed files with 40 additions and 32 deletions

48
pool/Cargo.lock generated
View file

@ -2938,7 +2938,7 @@ dependencies = [
[[package]]
name = "kaspa-addresses"
version = "2.0.1"
version = "2.0.2"
dependencies = [
"borsh",
"js-sys",
@ -2952,7 +2952,7 @@ dependencies = [
[[package]]
name = "kaspa-consensus-client"
version = "2.0.1"
version = "2.0.2"
dependencies = [
"ahash",
"borsh",
@ -2981,7 +2981,7 @@ dependencies = [
[[package]]
name = "kaspa-consensus-core"
version = "2.0.1"
version = "2.0.2"
dependencies = [
"arc-swap",
"async-trait",
@ -3022,7 +3022,7 @@ dependencies = [
[[package]]
name = "kaspa-consensus-notify"
version = "2.0.1"
version = "2.0.2"
dependencies = [
"async-channel 2.3.1",
"cfg-if",
@ -3041,7 +3041,7 @@ dependencies = [
[[package]]
name = "kaspa-consensus-wasm"
version = "2.0.1"
version = "2.0.2"
dependencies = [
"cfg-if",
"faster-hex",
@ -3065,7 +3065,7 @@ dependencies = [
[[package]]
name = "kaspa-core"
version = "2.0.1"
version = "2.0.2"
dependencies = [
"anyhow",
"cfg-if",
@ -3084,7 +3084,7 @@ dependencies = [
[[package]]
name = "kaspa-grpc-client"
version = "2.0.1"
version = "2.0.2"
dependencies = [
"async-channel 2.3.1",
"async-stream",
@ -3116,7 +3116,7 @@ dependencies = [
[[package]]
name = "kaspa-grpc-core"
version = "2.0.1"
version = "2.0.2"
dependencies = [
"async-channel 2.3.1",
"async-stream",
@ -3147,7 +3147,7 @@ dependencies = [
[[package]]
name = "kaspa-hashes"
version = "2.0.1"
version = "2.0.2"
dependencies = [
"blake2b_simd",
"blake3",
@ -3167,7 +3167,7 @@ dependencies = [
[[package]]
name = "kaspa-index-core"
version = "2.0.1"
version = "2.0.2"
dependencies = [
"async-channel 2.3.1",
"async-trait",
@ -3186,7 +3186,7 @@ dependencies = [
[[package]]
name = "kaspa-math"
version = "2.0.1"
version = "2.0.2"
dependencies = [
"borsh",
"faster-hex",
@ -3205,14 +3205,14 @@ dependencies = [
[[package]]
name = "kaspa-merkle"
version = "2.0.1"
version = "2.0.2"
dependencies = [
"kaspa-hashes",
]
[[package]]
name = "kaspa-mining-errors"
version = "2.0.1"
version = "2.0.2"
dependencies = [
"kaspa-consensus-core",
"thiserror 2.0.18",
@ -3220,7 +3220,7 @@ dependencies = [
[[package]]
name = "kaspa-muhash"
version = "2.0.1"
version = "2.0.2"
dependencies = [
"kaspa-hashes",
"kaspa-math",
@ -3230,7 +3230,7 @@ dependencies = [
[[package]]
name = "kaspa-notify"
version = "2.0.1"
version = "2.0.2"
dependencies = [
"async-channel 2.3.1",
"async-trait",
@ -3261,7 +3261,7 @@ dependencies = [
[[package]]
name = "kaspa-pow"
version = "2.0.1"
version = "2.0.2"
dependencies = [
"hex",
"igneum-pow",
@ -3279,7 +3279,7 @@ dependencies = [
[[package]]
name = "kaspa-rpc-core"
version = "2.0.1"
version = "2.0.2"
dependencies = [
"async-channel 2.3.1",
"async-trait",
@ -3320,7 +3320,7 @@ dependencies = [
[[package]]
name = "kaspa-rpc-macros"
version = "2.0.1"
version = "2.0.2"
dependencies = [
"convert_case 0.6.0",
"proc-macro-error",
@ -3332,7 +3332,7 @@ dependencies = [
[[package]]
name = "kaspa-smt"
version = "2.0.1"
version = "2.0.2"
dependencies = [
"blake3",
"kaspa-hashes",
@ -3342,7 +3342,7 @@ dependencies = [
[[package]]
name = "kaspa-txscript"
version = "2.0.1"
version = "2.0.2"
dependencies = [
"ark-bn254",
"ark-ec",
@ -3384,7 +3384,7 @@ dependencies = [
[[package]]
name = "kaspa-txscript-errors"
version = "2.0.1"
version = "2.0.2"
dependencies = [
"borsh",
"kaspa-hashes",
@ -3394,7 +3394,7 @@ dependencies = [
[[package]]
name = "kaspa-utils"
version = "2.0.1"
version = "2.0.2"
dependencies = [
"async-channel 2.3.1",
"borsh",
@ -3416,7 +3416,7 @@ dependencies = [
[[package]]
name = "kaspa-utils-tower"
version = "2.0.1"
version = "2.0.2"
dependencies = [
"bytes",
"cfg-if",
@ -3432,7 +3432,7 @@ dependencies = [
[[package]]
name = "kaspa-wasm-core"
version = "2.0.1"
version = "2.0.2"
dependencies = [
"faster-hex",
"hexplay",

View file

@ -307,7 +307,7 @@ pub fn cli(args: &[String]) -> i32 {
return self_test();
}
let (Some(jc_path), Some(phase), Some(out)) = (arg(args, "--job-context"), arg(args, "--phase").and_then(|s| s.parse::<u64>().ok()), arg(args, "--out")) else {
eprintln!("usage: igneum-pool recheck --job-context <job-context.json> --phase 1|2|3 [--state <igsd1>] [--dataset-log2 N] [--manifest <sha>] [--sample 64] [--threads N] --out <evidence.json>");
eprintln!("usage: igneum-pool recheck --job-context <job-context.json> --phase 1|2|3 [--state <igsd1>] [--dataset-log2 N] [--genesis-day D] [--manifest <sha>] [--sample 64] [--threads N] --out <evidence.json>");
return 2;
};
let t0 = Instant::now();
@ -346,6 +346,7 @@ pub fn cli(args: &[String]) -> i32 {
None => "no --state: the engine's own provider, or none".to_string(),
};
let dataset_flag = arg(args, "--dataset-log2").and_then(|s| s.parse::<u32>().ok());
let genesis_day_flag = arg(args, "--genesis-day").and_then(|s| s.parse::<u64>().ok());
let engine = IgneumEngine::new();
let mut fields = Vec::new();
let mut jobs = Vec::new();
@ -372,14 +373,21 @@ pub fn cli(args: &[String]) -> i32 {
reference.insert(n, h);
}
}
// the dataset size the pack was built for, before its epoch is built (the flag overrides the pack)
if let Some(l) = dataset_flag.or(f.log2_words)
&& l != kaspa_consensus_core::igneum::pow_genesis_dataset_log2()
{
install_pow_genesis(pow_genesis_day_index(), l);
eprintln!("recheck: dataset 2^{l} words (the pack's dataset.log2_words)");
}
let line = job_line(i as u64 + 1, &prehash, seg, &f);
// the pack's geometry, before its epoch is built: the dataset size (dataset.log2_words, the flag overriding)
// AND the genesis day index, the first segment's day (the same-work lane's class, 8 October 2026 22:10 UK:
// a standalone process holds the genesis day at 0 and the growth rule doubled the cache fourteen times by
// day 20730, every item wrong; the live miner installs both from the template, the reader from the pack)
if i == 0
&& let Ok(j0) = parse_job(&line)
{
let l = dataset_flag.or(f.log2_words).unwrap_or_else(kaspa_consensus_core::igneum::pow_genesis_dataset_log2);
let g = genesis_day_flag.unwrap_or(j0.seeds.day);
if (g, l) != (pow_genesis_day_index(), kaspa_consensus_core::igneum::pow_genesis_dataset_log2()) {
install_pow_genesis(g, l);
}
eprintln!("recheck: genesis day {g}, dataset 2^{l} words (the pack's geometry; --genesis-day and --dataset-log2 override)");
}
let job = match parse_job(&line) {
Ok(j) => j,
Err(e) => {