Runs a batch of HeadlessRunners with bounded concurrency.
Each runner is created lazily inside its slot, run to completion, then
destroyed before the next one reuses that slot. Memory stays capped at
concurrency × one-game, regardless of total batch size — you can sweep
thousands of seeds without OOMing.
Normally called via HarnessRunner.run; use directly only if you
need to build runners from non-seed factories.
Runs a batch of HeadlessRunners with bounded concurrency.
Each runner is created lazily inside its slot, run to completion, then destroyed before the next one reuses that slot. Memory stays capped at
concurrency × one-game, regardless of total batch size — you can sweep thousands of seeds without OOMing.Normally called via HarnessRunner.run; use directly only if you need to build runners from non-seed factories.