diff --git a/docs/plans/release-0.3.18.md b/docs/plans/release-0.3.18.md index 7e0c0427..966e8f76 100644 --- a/docs/plans/release-0.3.18.md +++ b/docs/plans/release-0.3.18.md @@ -105,3 +105,5 @@ Tips (node lane, 03:5xZ): release tree 4f4bb9c9 on ca3-v4-0317-fix (cherry-pick **Dated fault for this tree (the node lane, 05:05Z, found by the Mac's headers-proof join gate, not by a canary):** when the devnet's pruning point first leaves genesis (chain DAA 185,799, about eight hours from 05:00Z at 1 bps), every fresh join by headers proof fails for the next 2,644 DAA (about 45 minutes) with "IBD with headers proof ... unsuccessful (DAA window data has only N entries)": upstream's sampled-window walk (661 samples at rate 4) runs out at a gap in the trusted blocks instead of reaching genesis. Nodes already on the chain are untouched. Fix: joiner-side on the trusted path only, digest-neutral (the walk accepts a window that runs out at origin when the block is younger than the span), coming on ca3-v4-0318 (hash to follow); 0.3.18 carries it. Any fresh-join canary timed inside that 45-minute window FAILS from this, not from the idle-peer fix: time 0.3.18's canary outside it (before about 12:50Z or after about 13:40Z, to be firmed from the live DAA). **Main's rule for the 0.3.18 cut (05:1xZ):** it carries the node lane's joiner-side fix for the pruning-point fault (on the 0.3.18 tree the N6 guard would otherwise ban the syncer for ten minutes per retry), and **0.3.18 is live on every node before 13:30 UK (12:30Z)**, ahead of the devnet's first pruning (DAA 185,799, about 14:00 UK). If the full canary cannot close by then, publish 1 goes on the clean form plus the node lane's harness for that case, and the cases follow as confirmation, as with the hotfix. Every new chain, the testnet genesis included, meets the same fault once at its first pruning: the testnet go checklist (docs/plans/testnet-go.md) gets the line. + +**Correction (the node lane, 05:1xZ): the devnet does NOT meet the young-window fault, and the 185,799 clock was wrong** (the canary's 155,700 headers were taken for the chain's DAA; live DAA was 250,809 at 05:00Z, the hub's 39th pruning move was at 03:46Z and the 03:50Z fresh join synced clean). Pruning samples sit at multiples of the finality depth (pruning.rs is_pruning_sample); the devnet's finality depth is 43,200 blocks, so its first non-genesis pruning point was at blue score 43,200, sixteen window spans past genesis, and the walk from any devnet pruning point fills its window. The fault needs a pruning point within 2,644 DAA of genesis, which only a chain with finality depth under 2,644 can have: the fast-time profile (120) where the gate found it. The testnet at the compiled numbers never meets it either. So: no fresh-join window to avoid, the 45-minute rule is dropped, main's "before 13:30 UK" rule for 0.3.18 no longer rests on this fault (main to confirm), and the testnet go line is softened to a note. The fix still rides 0.3.18 (joiner-side, digest-neutral, relaxes the rule only when the walk ended within one sample of genesis, impossible on the devnet; unit test green on the box; hash to follow). diff --git a/docs/plans/testnet-go.md b/docs/plans/testnet-go.md index 2b0bf441..8d408c9f 100644 --- a/docs/plans/testnet-go.md +++ b/docs/plans/testnet-go.md @@ -116,4 +116,4 @@ NET=testnet ./install-rpc-from-mac.sh seed1.testnet # the public RPC again The node binary for the seeds: `node tools/build-job.mjs run --node /Users/joshm/Projects/igneum/vendor/igneum-node-testnet-infra --target ae432dc7 --targets linux --no-tests` then `node tools/build-job.mjs fetch ` (lands in `infra/cross/out/`). -- First pruning (dated, found 7 October 2026 on the devnet): when the pruning point first leaves genesis, every fresh join by headers proof fails for the next 2,644 DAA (about 45 minutes) unless the node carries the joiner-side window fix (0.3.18, ca3-v4-0318); the testnet ships on a node that has it, and the go checklist reads the fix commit back on every seed before go. +- Young-window note (7 October 2026): a chain whose finality depth is under 2,644 blocks (the fast-time profile, not the devnet at 43,200 and not the testnet at the compiled numbers) refuses fresh joins by headers proof for 2,644 DAA after its first pruning; the joiner-side fix rides 0.3.18 (ca3-v4-0318). No action at go; the line stays as the record.