{
  "$defs": {
    "AdapterIdentity": {
      "additionalProperties": false,
      "properties": {
        "name": {
          "title": "Name",
          "type": "string"
        },
        "version": {
          "title": "Version",
          "type": "string"
        }
      },
      "required": [
        "name",
        "version"
      ],
      "title": "AdapterIdentity",
      "type": "object"
    },
    "Finding": {
      "additionalProperties": false,
      "description": "A conclusion of a qualitative analysis, with the path that shows it.",
      "properties": {
        "at": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "When a requirement was first violated",
          "title": "At"
        },
        "holds": {
          "title": "Holds",
          "type": "boolean"
        },
        "kind": {
          "enum": [
            "hazard",
            "expectation",
            "ambiguity",
            "bound",
            "conformance",
            "requirement"
          ],
          "title": "Kind",
          "type": "string"
        },
        "message": {
          "title": "Message",
          "type": "string"
        },
        "path": {
          "default": [],
          "items": {
            "$ref": "#/$defs/Step"
          },
          "title": "Path",
          "type": "array"
        },
        "proven": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A requirement's verdict proven on guaranteed bounds: over the whole horizon, for every value of the scenario's intervals",
          "title": "Proven"
        },
        "subject": {
          "title": "Subject",
          "type": "string"
        },
        "verdict": {
          "anyOf": [
            {
              "enum": [
                "holds",
                "violated",
                "not_evaluated"
              ],
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A requirement's verdict: `holds` is false both when it is violated and when it could not be evaluated",
          "title": "Verdict"
        }
      },
      "required": [
        "kind",
        "subject",
        "holds",
        "message"
      ],
      "title": "Finding",
      "type": "object"
    },
    "Series": {
      "additionalProperties": false,
      "properties": {
        "points": {
          "items": {
            "maxItems": 2,
            "minItems": 2,
            "prefixItems": [
              {
                "type": "number"
              },
              {
                "type": "number"
              }
            ],
            "type": "array"
          },
          "title": "Points",
          "type": "array"
        },
        "tube": {
          "default": [],
          "description": "Guaranteed bounds: (from, to, low, high) \u2014 the true value stays within [low, high] over [from, to]",
          "items": {
            "maxItems": 4,
            "minItems": 4,
            "prefixItems": [
              {
                "type": "number"
              },
              {
                "type": "number"
              },
              {
                "type": "number"
              },
              {
                "type": "number"
              }
            ],
            "type": "array"
          },
          "title": "Tube",
          "type": "array"
        },
        "unit": {
          "title": "Unit",
          "type": "string"
        }
      },
      "required": [
        "unit",
        "points"
      ],
      "title": "Series",
      "type": "object"
    },
    "Spread": {
      "additionalProperties": false,
      "description": "A summary over independent replications: its mean and confidence interval.",
      "properties": {
        "confidence": {
          "title": "Confidence",
          "type": "number"
        },
        "high": {
          "title": "High",
          "type": "number"
        },
        "low": {
          "title": "Low",
          "type": "number"
        },
        "mean": {
          "title": "Mean",
          "type": "number"
        },
        "n": {
          "title": "N",
          "type": "integer"
        },
        "stdev": {
          "title": "Stdev",
          "type": "number"
        },
        "values": {
          "items": {
            "type": "number"
          },
          "title": "Values",
          "type": "array"
        }
      },
      "required": [
        "n",
        "mean",
        "stdev",
        "low",
        "high",
        "confidence",
        "values"
      ],
      "title": "Spread",
      "type": "object"
    },
    "Step": {
      "additionalProperties": false,
      "description": "One state on an explained path, and why the system got there.",
      "properties": {
        "because": {
          "title": "Because",
          "type": "string"
        },
        "state": {
          "additionalProperties": {
            "type": "string"
          },
          "title": "State",
          "type": "object"
        }
      },
      "required": [
        "state",
        "because"
      ],
      "title": "Step",
      "type": "object"
    },
    "Summary": {
      "additionalProperties": false,
      "properties": {
        "description": {
          "title": "Description",
          "type": "string"
        },
        "unit": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Unit"
        },
        "value": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string"
            }
          ],
          "title": "Value"
        }
      },
      "required": [
        "value",
        "description"
      ],
      "title": "Summary",
      "type": "object"
    }
  },
  "$id": "mokili.result/1",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false,
  "description": "What the engine produced: `simulated` values from a simulation engine, or\n`inferred` conclusions from a qualitative analysis. Never a measurement.\n\nWith replications, each numeric summary is the mean over them, `spread`\ngives its interval, and the series are those of the first replication.",
  "properties": {
    "adapter": {
      "$ref": "#/$defs/AdapterIdentity"
    },
    "findings": {
      "default": [],
      "items": {
        "$ref": "#/$defs/Finding"
      },
      "title": "Findings",
      "type": "array"
    },
    "provenance": {
      "default": "simulated",
      "enum": [
        "simulated",
        "inferred"
      ],
      "title": "Provenance",
      "type": "string"
    },
    "replications": {
      "default": 1,
      "title": "Replications",
      "type": "integer"
    },
    "scenario": {
      "pattern": "^sha256:[0-9a-f]{64}$",
      "title": "Scenario",
      "type": "string"
    },
    "schema": {
      "const": "mokili.result/1",
      "title": "Schema",
      "type": "string"
    },
    "series": {
      "additionalProperties": {
        "$ref": "#/$defs/Series"
      },
      "title": "Series",
      "type": "object"
    },
    "spread": {
      "additionalProperties": {
        "$ref": "#/$defs/Spread"
      },
      "default": {},
      "title": "Spread",
      "type": "object"
    },
    "summaries": {
      "additionalProperties": {
        "$ref": "#/$defs/Summary"
      },
      "title": "Summaries",
      "type": "object"
    },
    "time_unit": {
      "title": "Time Unit",
      "type": "string"
    }
  },
  "required": [
    "schema",
    "scenario",
    "adapter",
    "time_unit",
    "series",
    "summaries"
  ],
  "title": "Result",
  "type": "object"
}
