v1.2.0 — pg-migrations job (opt-in)
What's new
New optional `pg-migrations` job in `python-react-ci.yml` that exercises the consumer's `docker-compose.test.yml` stack and runs `pytest tests/migrations/` against a real PostgreSQL sidecar.
Off by default, so this is non-breaking for consumers that bump to v1.2.0 without enabling it.
Why
mygarage v2.27.0-rc1 shipped migration 054 with two PG-only SQL bugs (`DATETIME` column type, `ADD CONSTRAINT IF NOT EXISTS`) that all CI runs ignored — the SQLite path is typeless and the existing PG path always called `Base.metadata.create_all` first, so the migration's literal SQL never executed against PG.
This job changes that: load a pre-migration `pg_dump` baseline into a clean PG schema, run the migration under test, assert the post-state on real PG.
Adoption
- mygarage: opts in as part of v2.27.0-rc2.
- familycircle, tidewatch, vulnforge, collectionsync: bump to `@v1.2.0` for the version-pin sync; opt in once you ship a `docker-compose.test.yml` and `backend/Dockerfile.test`.
Inputs (all optional, defaults match the mygarage pattern)
```yaml
enable-pg-migrations: true # gate, default false
pg-migrations-compose-file: docker-compose.test.yml
pg-migrations-service: mygarage-test
pg-migrations-pytest-path: tests/migrations/
```
Reference
- mygarage rc2 plan: ${HOME}/.claude/plans (private) — Phase 4.5
- Implementation: `.github/workflows/python-react-ci.yml` lines added under `pg-migrations:`