I’m with you right up until “We want these checks to run on production”. Right now it sounds like you are manually verifying your queries which is why you’re getting unexpected behaviours.
You should be running these validations inside of a separate CI environment, which will build modified nodes in a short-lived schema that is dropped when your PR is merged. (Unmodified nodes will still defer to production - this is called “Slim CI”)
Read more about how CI works here: Continuous integration in dbt Cloud | dbt Developer Hub, and how we implemented it at my last company here: How we sped up our CI runs by 10x using Slim CI