Thanks. Regarding column renames, should we version-control them or run them ad hoc once the new schema change is deployed? If we put them in a repo, should we use a migration tool to manage them or build a small abstraction ourselves?

I’m wondering what the 'best practice' is for these kinds of schema migrations (not just schema evolution). Additive changes can easily be handled with mergeSchema and on_schema_change: append_new_columns, but what about semantic changes like renames, which can easily be misinterpreted as add/drop operations and lead to unnecessary reruns of, say, incremental dbt models?

Should we mix schema evolution with version-controlled migrations? If so, how should that work in practice? For example, what happens if automated schema evolution changes collide with schema migrations that we commit to the repo and run through CI/CD with an approval gate?