{
  "runId": "E2E-AI-20260901-A",
  "environment": "dev2/ou00 via local ngrok",
  "verdict": "BLOCKED",
  "fixture": {
    "shiftId": 2989,
    "marker": "E2E-AI-20260901-A",
    "weekStart": "2027-03-15",
    "openDraftShift": true
  },
  "dispatch": {
    "endpoint": "POST /api/ou00/schedule/ai/generate",
    "solverType": "math",
    "status": 200,
    "jobId": "039bdff1-2081-42fd-ae17-572e09668551",
    "initialJobStatus": "pending"
  },
  "terminalStatus": {
    "status": "failed",
    "suggestionId": null,
    "error": "Database schema is missing scheduleAvailability.recurrenceWeeks required by ScheduleDataGatherer"
  },
  "schemaEvidence": {
    "scheduleAvailabilityColumns": ["availabilityId", "employeeId", "dayOfWeek", "startTime", "endTime", "isPreferred", "effectiveFrom", "effectiveUntil", "createdAt", "updatedAt"],
    "missingRequiredColumns": ["recurrenceWeeks", "weekIndex"]
  },
  "deterministicCoverage": {
    "result": "PASS_WITH_2_DEPRECATIONS",
    "tests": 556,
    "assertions": 2673,
    "covers": [
      "generation dispatch rollback and recovery",
      "AI and math job coexistence",
      "cancellation race terminality",
      "atomic safe application",
      "draft/unpublished application boundary",
      "provenance and analytics",
      "PTO, overlap, availability, overtime and malformed-solver rejection",
      "LLM timeout and service-failure fallback"
    ]
  },
  "releaseClassification": "Generation, cancellation, suggestion application and provenance are not credited as live E2E until the availability cadence migration is reviewed/applied and the complete HTTP matrix is rerun.",
  "cleanup": {
    "job": {"deleted": 1, "remaining": 0, "verified": true},
    "shift": {"deleted": 1, "remaining": 0, "verified": true},
    "independentMarkerScan": 0
  }
}
