52fc3e1ecf
_recommend assumes sorted, deduped grids (core_grid[-1] = biggest, knee sweeps run low->high). The CLI parsed --nodes/--cores in raw order, so e.g. --cores 32,8,16 yielded nonsense. Sort+dedupe in cli.py and reject non-positive/non-integer values; also normalize defensively inside estimate() so the function is correct for any caller. Add estimate/cli tests.