Now that we have decided to shift away from building on top of the Carvel tool suite, we are going to have to roll our own preflight check implementation. Ideally this is a generic, extensible implementation that allows us to add additional pre-flight checks in the future.
Pre-flight checks should also have available to them the manifests which would be applied if the pre-flight checks (and potential later validations) are successful. This is particularly useful for the CRD Upgrade Safety pre-flight check because without this information we wouldn't know how the CRDs are changing.