TODO: Migration Testing in CI for pal-e-docs

todo-migration-testing-ci-pal-e-docs Todo

todo done

TODO: Migration Testing in CI for pal-e-docs

Context

The pal-e-docs Alembic migration crash (2026-02-26) deployed a migration that failed against production SQLite. The migration was never tested against a real database before hitting prod.

What's needed

Add a Woodpecker CI step that runs alembic upgrade head against a seeded database (not just empty) before merge. This catches migration failures in CI instead of production.

Details

  • Woodpecker pipeline step: spin up a test database (SQLite file or Postgres container, depending on current DB), seed with representative data, run migrations
  • Must test against non-empty tables — empty-database migrations always succeed
  • Once pal-e-docs moves to Postgres (see tf-postgres-strategy), this should test against Postgres specifically
  • Consider: Woodpecker service container for Postgres, or use the CloudNativePG test pattern

Origin

Split from todo-deployment-safety — platform-level items (rollback, alerting, deployment protection) are covered by platform plans. This app-level CI item stays with pal-e-docs.