Migration fails to apply

Inconclusive
The experiment could not produce a trustworthy result. This is not a pass.

The proposed migration has a typo and does not apply. That is not a compatibility pass.

Recorded example: genuine engine output generated Sat, 24 Oct 2026 18:29:59 GMT from the committed fixture. Run it again live below.

Baseline schema
Proposed schema
Previous versionshop-v1
2/2 test files passno database errors
Migration failed
Current versionE2-broken-migration
Not needed: ordinary CI covers this
Not configured

The outlined cell is the compatibility question. The verdict comes only from it, compared against the cell to its left.

Why

  1. Proposed migration 002_broken.sql failed to apply (42P01 relation "customer" does not exist).

Next step

Fix the infrastructure or baseline problem listed in the reasons and re-run. Do not merge on this result.

Starts a throwaway PostgreSQL and runs the full experiment, usually in under 15 seconds.

Evidence

Experiment problem

Observed
Proposed migration 002_broken.sql failed to apply (42P01 relation "customer" does not exist).
Interpretation
The experiment could not support a trustworthy determination.

Schema changes

The proposed migration produced no catalog-level schema changes.

No catalog-level schema changes were detected.

Runs

Proposed migration: 002_broken.sql · PostgreSQL 16.15 (Debian 16.15-1.pgdg12+2) · gate blocks the pipeline (exit 2)

RunMigrationsTest filesDatabase errorsStatements logged
control (old app × baseline schema)1/12/2 pass07
candidate #1 (old app × proposed schema)1/2 failed0/0 pass00
candidate #2 (old app × proposed schema)1/2 failed0/0 pass00

Download this report: JSONMarkdownJUnit XML

What this result does not cover
  • Current application × proposed schema (no current app configured).
  • Differential analysis and coverage were not trusted because the experiment was incomplete.
  • Performance / lock-time analysis (out of scope).
  • Skewcheck only observes code paths that the old application's tests execute; untested paths are reported as coverage gaps, not as safe.
  • Coverage is identifier-level: a statement "touches" a changed object when it names the table (and column, or uses *). It is not a SQL parser.
  • Correlation between an error and a schema change uses a fixed set of deterministic rules (R1–R6). Anything else is reported as ADVISORY, never UNSAFE.
  • Performance, locking and migration runtime on production-sized data are not evaluated.
  • Test files of one run share a database and run sequentially; ordering effects are identical across runs but are not isolated.
  • Data-only migration effects are detected only when a test asserts on the affected data.