When a new ruleset is applied with a new Image profile (a new ESXi version), the ESXi hosts still boot to the old Image profile (old ESXi version).
This situation occurs when you update the active ruleset/create a new ruleset without updating the corresponding host entries in the auto deploy cache. The first time a host boots, the Auto Deploy server parses the host attributes against the active ruleset to determine (1) the image profile to install on the host, (2) the host profile to configure the host, and (3) where in the vCenter inventory to add the host. This information then gets saved in the auto deploy cache and reused on all future reboots.
With this approach, each host only gets parsed against the active ruleset once (on the initial boot), after which the results get saved and reused on all subsequent reboots.
Connect-VIServer -Server <vCenter_fqdn>
Test-DeployRuleSetCompliance <esxi_host_fqdn>
Test-DeployRuleSetCompliance <esxi_host_fqdn> | Repair-DeployRuleSetCompliance
foreach ($esx in Get-VMHost) {$esx | test-deployrulesetcompliance | Repair-DeployRuleSetCompliance}