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
- 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)
| Run | Migrations | Test files | Database errors | Statements logged |
|---|
| control (old app × baseline schema) | 1/1 | 2/2 pass | 0 | 7 |
| candidate #1 (old app × proposed schema) | 1/2 failed | 0/0 pass | 0 | 0 |
| candidate #2 (old app × proposed schema) | 1/2 failed | 0/0 pass | 0 | 0 |
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.