{
  "schemaVersion": 1,
  "tool": {
    "name": "skewcheck",
    "version": "0.1.0"
  },
  "executionId": "example-E-missing-baseline",
  "project": "fixture/E-missing-baseline",
  "createdAt": "2026-10-24T18:29:58.998Z",
  "baselineRevision": "shop-v0-missing",
  "candidateRevision": "E-missing-baseline",
  "database": {
    "serverVersion": null
  },
  "proposedMigrations": [
    "002_loyalty.sql"
  ],
  "experiment": [
    "control: old application (shop-v0-missing) × baseline schema (1 migrations)",
    "candidate ×2: old application (shop-v0-missing) × proposed schema (2 migrations)"
  ],
  "verdict": "INCONCLUSIVE",
  "blocking": true,
  "exitCode": 2,
  "summary": "The experiment could not produce a trustworthy result. This is not a pass.",
  "reasons": [
    "Baseline application revision \"shop-v0-missing\" could not be resolved (../_app_does_not_exist not found).",
    "The control run (old application on the baseline schema) did not execute."
  ],
  "recommendedAction": "Fix the infrastructure or baseline problem listed in the reasons and re-run. Do not merge on this result.",
  "complete": false,
  "findings": [
    {
      "kind": "infrastructure",
      "facts": [
        "Baseline application revision \"shop-v0-missing\" could not be resolved (../_app_does_not_exist not found)."
      ],
      "interpretation": "The experiment could not support a trustworthy determination."
    },
    {
      "kind": "infrastructure",
      "facts": [
        "The control run (old application on the baseline schema) did not execute."
      ],
      "interpretation": "The experiment could not support a trustworthy determination."
    }
  ],
  "schemaChanges": [],
  "coverage": [],
  "coverageSummary": "Not computed (experiment incomplete).",
  "runs": [],
  "skippedChecks": [
    "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)."
  ],
  "limitations": [
    "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."
  ],
  "policy": {
    "advisory": "warn",
    "noEvidence": "block",
    "inconclusive": "block",
    "candidateRepeats": 2,
    "testTimeoutMs": 60000,
    "maxBaselineFailureRatio": 0.5,
    "protectedPaths": [],
    "repairBranchPrefixes": [
      "skewcheck-repair/"
    ]
  }
}