Keep the explicit checkpoint wrapper and verify its exact caller reason alongside the retained cleanup owner. Refs #4610