{
  "$defs": {
    "Check": {
      "description": "One doctor check: what it looked at, how it went, and how to fix it.",
      "properties": {
        "name": {
          "$ref": "#/$defs/CheckName",
          "description": "What was checked."
        },
        "status": {
          "$ref": "#/$defs/CheckStatus",
          "description": "How the check went."
        },
        "detail": {
          "description": "What the check found.",
          "title": "Detail",
          "type": "string"
        },
        "fix": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "What to do about it, when there is something to do.",
          "title": "Fix"
        }
      },
      "required": [
        "name",
        "status",
        "detail"
      ],
      "title": "Check",
      "type": "object"
    },
    "CheckName": {
      "description": "The checks, in the order the doctor runs them.",
      "enum": [
        "Python",
        "gmsh",
        "CAD kernel",
        "Docker",
        "Elmer image",
        "Native Elmer",
        "Runs disk",
        "Artifacts disk",
        "Docker disk",
        "Solve path"
      ],
      "title": "CheckName",
      "type": "string"
    },
    "CheckStatus": {
      "description": "How a check went.",
      "enum": [
        "ok",
        "warn",
        "fail",
        "skip"
      ],
      "title": "CheckStatus",
      "type": "string"
    }
  },
  "description": "Every doctor check in order, with the count of blockers and warnings.",
  "properties": {
    "checks": {
      "description": "The checks, in the order they ran.",
      "items": {
        "$ref": "#/$defs/Check"
      },
      "title": "Checks",
      "type": "array"
    },
    "blockers": {
      "description": "How many checks failed.",
      "readOnly": true,
      "title": "Blockers",
      "type": "integer"
    },
    "warnings": {
      "description": "How many checks warned.",
      "readOnly": true,
      "title": "Warnings",
      "type": "integer"
    }
  },
  "required": [
    "checks",
    "blockers",
    "warnings"
  ],
  "title": "DoctorReport",
  "type": "object"
}
