Forked workers' np.random draws replay the parent's own later draws
When a multiprocessing.Pool (fork, no initializer) is created after the parent seeded or used the global np.random, each worker starts from a copy of the parent's state at fork time, and the parent keeps drawing from that same sequence. So the workers' draws are not just duplicated across workers: they equal values the parent itself draws afterwards. Measured with an optimizer that samples candidates via np.random.randn in the parent while a noisy objective calls np.random.randn in 4 pool workers: 80/80 worker noise values matched one of the parent's own sampling normals exactly (fork), 0/80 under spawn, forkserver run with -m, or a pool initializer calling np.random.seed(). To detect this, log the parent's draws and look for exact matches; correlation tests can miss it because the replay is lagged.