Understanding reset timing - recovery, removal, async assert sync deassert, reset trees, and why sporadic startup failures haunt your design