Even though the path property in refine() accepts an array, it will only display the error if you set just one path.
To show multiple paths, you need to use .superRefine() instead of .refine(). See Display error messages in multiple locations using zod.
You can also chain .refine() calls, which I recommend in this situation. You can have two errors one for "At least one warehouse..." and one for "At least on cluster...".