I prefer the model of event triggers writing to a DDL audit table and calling NOTIFY. Then your script can just LISTEN for changes after you run your idempotent scripts. Then you're capturing all changes to the DB, not just the ones you're expecting.
Because it's always that guy making manual DDL updates that screws everything up, isn't it Mr. Hosick. ;)
PostgreSQL Extensions: http, pg_cron, timescaledb
To help with development, I am using https://www.npmjs.com/package/sql-watch (written by myself) to do continuous development and testing (TDD/BDD).
The stack "doesn't scale" but the turn around time for development is crazy.