The N=3 target-4 trace gains two validatedLedgerWork events at 42.010s on nodes 0 and 1. Removing only those events reproduces the prior 330-event fingerprint exactly. Retain all replay, hash-agreement and weighted-pressure assertions.
Merge a992572b70; retain validator identity fields, phase locking, manual heartbeat control and extension polling. Share the send observation hook across immediate and delayed transport sends.
LOAD restart called overlay() from tryAdvance/getFetchPack while
overlay_ was still created later in setup. Keep beginConsensus after
the ledger exists.
MultiNode already installed send/message/lifecycle/validation hooks.
Call them from PeerImp, NetworkOPs, and handleNewValidation so
SteppingNetwork forensics are not empty. Production hooks stay empty.
Wait for all deferred reads then sort by parentID/branch. Refill
resumes in SHAMapNodeID order so missing-node requests do not follow
reader completion or heap address order.
xahaud envconfig defaults relational to per-app rwdb, so LOAD latest
after stopNode cannot find the saved ledger. Donor unit tests leave
sqlite files under database_path; match that for restart policy.
JobType aliases, include paths, OverlayImpl method names, Config
COMPRESSION flags, and PeerFinder::Config::makeConfig. HarnessNet
does not compile yet.
Mechanical copy of Transport, SimOverlay/SimTransport, MultiNode,
scheduler/controller/network, and HarnessNet/SteppingDeterminism suites
with xahaud name mappings. Overlay weld onto PeerImp is still required
before these compile.
setupWithoutListeners stores setup without binding sockets. stepping
harnesses can disable signals and the stall detector via peeredEnvconfig.
Config grows observe-only peer/validation hooks, empty in production.
PeerImp arms TimeoutCounterTimer when makePeerTimer is installed.
inlineStrands builds the existing strand type over an inline executor.
Tracking, ping RTT and uptime use getPreciseStopwatch.
getScore draws from Application::getPrng. addPeers, getPeerWithTree and
getPeerWithLedger collect and sort by peer id before scoring so draws
do not follow unordered overlay traversal.
LedgerHistory, TransactionMaster, NodeFamily caches, PeerFinder and
reduce-relay idle checks use getStopwatch. Fetch-pack deadlines use the
same clock. Overlay tx relay, ping sequence and InboundLedger peer
sampling use getPrng; fetch-pack scoring and acquire sampling sort by
peer id first.