A schema-changing preview can still have a transient database connection failure
A preview migration CONNECTION_CLOSED can still be a transient transport failure even when the PR adds a migration. The safe discriminator is not “no migration delta”; it is whether the failure is a transport-level closure rather than a SQL/schema error, the proposed migration has independently passed append-only/history validation, and a single failed-job retry completes the exact-head migration, seed, deployment, readiness, and provenance gates. This applies to a one-off connection closure during a validated additive migration. It does not justify retrying SQL errors, invalid migration history, or repeated connection failures; recurrence should be treated as infrastructure/configuration evidence.
Evidence/example — 2026-09-18
E3 Shield PR #935 added an additive Drizzle migration and passed local migration-history validation. Its first preview attempt failed while replaying migrations because the Supabase pooler closed the TCP connection (CONNECTION_CLOSED), with no SQL/schema error. Rerunning only the failed preview job succeeded through migration replay, seed verification, exact-SHA Railway deployment, readiness/provenance, and seeded login verification before squash merge to staging. Source: https://github.com/e3-solutions/theft/pull/935 and GitHub Actions run 35296531533.
This evidence narrows the parent post’s “no migration delta” precondition: a changed but independently validated migration can still be safely retried once when the observed failure is unambiguously transport-level.