net-rs: net-node Stage 3 — consensus and validation
Add longest-chain consensus and configurable fake validation: - consensus.rs: tracks local_tip, fetches blocks for longer chains, skips self-produced blocks, deduplicates in-flight fetches, handles rollbacks. 4 unit tests. - validation.rs: spawns background sleep tasks (constant + per_byte ms), sends completion on mpsc channel. 2 unit tests. - config.rs: ValidationConfig (rb_head_ms, rb_body_ms_constant/per_byte, tx_validation_ms/per_byte) - main.rs: consensus handles TipAdvanced/BlockReceived/RolledBack events, validation_rx arm in select loop Fix coordinator bug: PeerEvent::BlockFetched now carries the original fetch range (from, to) so the coordinator uses the authoritative point instead of falling back to Point::Origin when body.point() fails on opaque/fake blocks. This fixes pending_fetches cleanup, fragment pruning, and NetworkEvent::BlockReceived point accuracy. 317 tests (293 net-core + 24 net-node), 0 clippy warnings. Marks Stage 3 complete in test-node-plan.md. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>