NewRuntime constructed the engine via NewWithParams, which carries no logger, and
Transitive had no SetLogger — so t.log stayed at its log.Noop() default forever.
Every internal engine decision (verify drops, AddBlock rejections, build-loop
stalls, vote-path faults) was silently discarded; a live rebuild storm ran 4M
iterations with zero engine log lines. Add SetLogger (nil/zero-safe) and wire
cfg.Logger in NewRuntime alongside the existing gossiperProposer logger.