What exactly is required to get automated history cleanup to run?

How are your processes deployed? The only other thing I can think of is that perhaps some of the older processes were not “registered” with the engine. You have jobExecutorDeploymentAware set to true which means that it will only pick up jobs that are registered with the engine. If you set it to false, it should pick up all jobs. See this thread Deployment-Aware Job Executor for more details.