diff --git a/docs/fud-ledger.md b/docs/fud-ledger.md index 9da30c1bb..1368776cc 100644 --- a/docs/fud-ledger.md +++ b/docs/fud-ledger.md @@ -2351,3 +2351,9 @@ Same rule as the counts above. 167 entries. The bucket "Decided or closed by rule" counts each entry once: M8, M11 and P16 move there from Answered, so Answered is 28 less those three plus M16 and E17, as the table states; the sum of the rows is 167 with M8, M11, P16 and F3, F17 counted in Decided only. + +## Status updates, 7 October 2026 (01:5x UTC, the 0.3.17 canary) + +### N6. A fresh node could not join the devnet while a signal window was open + +Open 6 October 2026 22:43Z to the 0.3.17 publish (the fix rides 0.3.17; main's ruling (a), 7 October 01:5x UK). Class: upstream's Toccata IBD guard (`protocol/flows/src/ibd/flow.rs`, `sync_and_validate_pruning_proof`) compares the syncer's relay-block version with the plain block version before requesting the pruning proof; from publish 2 (the sixteen-field object, the class v4 window open) the sink carries legal version-1026 signal blocks, so every FRESH node on the headers-proof IBD path refused every peer ("peer relayed block ... header version mismatch: got 1026, expected 2 at DAA score ..."). Found by the 0.3.17 canary (a fresh pod on 02d15a87: 483 refusals in 15 minutes, peers 0, blocks 0); the line is on f1ea7a38, the live node. Who it touched: nobody known. Every node that moved tonight had a datadir (the relay path, no pruning proof) or began its IBD before the hub took the object; the site's download buttons offered 0.3.16 to anyone, and a new install since 23:43 UK would have sat at 0 blocks. Fix: the comparison gated like the header processor's rule (`block_version_of` under `header_signals_active`), known-failed test first (a node with the window object syncs a chain carrying 1026 headers on IBD and relay; a 1026 header with no window still refused). Checklist line from here: a cut's canary is a FRESH node joining the LIVE object's chain, which carries signal headers once a window is open; the pre-cut harness (`infra/fast-time/node-compat.mjs`) carries a chain with signal-version headers under an open window. Confirmation after the 0.3.17 publish: the fleet's fresh-join read on a pod.