{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://genesiscode.dev/schemas/roadmap-baseline-statement-v0.1.json",
  "title": "GenesisCode Roadmap Baseline Statement v0.1",
  "type": "object",
  "additionalProperties": false,
  "required": ["authoritative", "baselineIdentitySha256", "build", "captureDate", "evidenceClass", "hostObservation", "kind", "overall", "version", "workloadPolicyIdentitySha256", "workloads"],
  "properties": {
    "authoritative": {"const": false},
    "baselineIdentitySha256": {"$ref": "#/$defs/sha256"},
    "build": {"$ref": "#/$defs/build"},
    "captureDate": {"type": "string", "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},
    "evidenceClass": {"const": "E0"},
    "hostObservation": {"$ref": "REFERENCE_HOST_OBSERVATION_v0.1.schema.json"},
    "kind": {"const": "genesis/roadmap-baseline-statement-v0.1"},
    "overall": {"$ref": "#/$defs/overall"},
    "version": {"const": "0.1"},
    "workloadPolicyIdentitySha256": {"$ref": "#/$defs/sha256"},
    "workloads": {
      "type": "array",
      "minItems": 10,
      "maxItems": 10,
      "items": {"$ref": "#/$defs/workload"}
    }
  },
  "$defs": {
    "sha256": {"type": "string", "pattern": "^[0-9a-f]{64}$"},
    "build": {
      "type": "object",
      "additionalProperties": false,
      "required": ["binarySha256", "profile", "rustcHost", "rustcVersion", "sourceDirty", "sourceDirtyMaterialSha256", "sourceRevision"],
      "properties": {
        "binarySha256": {"$ref": "#/$defs/sha256"},
        "profile": {"const": "selfhost-strict"},
        "rustcHost": {"type": "string", "minLength": 1},
        "rustcVersion": {"type": "string", "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+$"},
        "sourceDirty": {"type": "boolean"},
        "sourceDirtyMaterialSha256": {"oneOf": [{"$ref": "#/$defs/sha256"}, {"type": "null"}]},
        "sourceRevision": {"type": "string", "pattern": "^[0-9a-f]{40}$"}
      }
    },
    "sample": {
      "type": "object",
      "additionalProperties": false,
      "required": ["durationNs", "failureCode", "index", "outcome", "semanticCheck"],
      "properties": {
        "durationNs": {"oneOf": [{"type": "integer", "minimum": 1}, {"type": "null"}]},
        "failureCode": {"oneOf": [{"type": "string", "pattern": "^[a-z][a-z0-9-]+$"}, {"type": "null"}]},
        "index": {"type": "integer", "minimum": 0},
        "outcome": {"enum": ["passed", "runner-error", "timeout"]},
        "semanticCheck": {"enum": ["failed", "passed"]}
      }
    },
    "failure": {
      "type": "object",
      "additionalProperties": false,
      "required": ["code", "detail"],
      "properties": {
        "code": {"type": "string", "pattern": "^[a-z][a-z0-9-]+$"},
        "detail": {"type": "string", "minLength": 1}
      }
    },
    "summary": {
      "type": "object",
      "additionalProperties": false,
      "required": ["decisionStatistic", "decisionValue", "lowerMedian95", "mad", "median", "p95", "targetPass", "unit", "upperMedian95"],
      "properties": {
        "decisionStatistic": {"enum": ["lower-median-95-bound", "upper-median-95-bound"]},
        "decisionValue": {"type": "integer", "minimum": 0},
        "lowerMedian95": {"type": "integer", "minimum": 0},
        "mad": {"type": "integer", "minimum": 0},
        "median": {"type": "integer", "minimum": 0},
        "p95": {"type": "integer", "minimum": 0},
        "targetPass": {"type": "boolean"},
        "unit": {"enum": ["bytes-per-second", "nanoseconds"]},
        "upperMedian95": {"type": "integer", "minimum": 0}
      }
    },
    "workload": {
      "type": "object",
      "additionalProperties": false,
      "required": ["expectedDescriptorSha256", "failures", "id", "policyStatus", "samples", "status", "summary", "target", "warmupSamples"],
      "properties": {
        "expectedDescriptorSha256": {"$ref": "#/$defs/sha256"},
        "failures": {"type": "array", "items": {"$ref": "#/$defs/failure"}},
        "id": {"pattern": "^PB-(?:[1-9]|10)$"},
        "policyStatus": {"enum": ["active", "decision-gated", "roadmap-blocked"]},
        "samples": {"type": "array", "items": {"$ref": "#/$defs/sample"}},
        "status": {"enum": ["decision-gated", "observed", "runner-unavailable"]},
        "summary": {"oneOf": [{"$ref": "#/$defs/summary"}, {"type": "null"}]},
        "target": {"$ref": "ROADMAP_WORKLOADS_v0.1.schema.json#/$defs/target"},
        "warmupSamples": {"type": "array", "items": {"$ref": "#/$defs/sample"}}
      }
    },
    "overall": {
      "type": "object",
      "additionalProperties": false,
      "required": ["budgetFailing", "budgetPassing", "decisionGated", "observed", "runnerUnavailable", "status"],
      "properties": {
        "budgetFailing": {"type": "integer", "minimum": 0},
        "budgetPassing": {"type": "integer", "minimum": 0},
        "decisionGated": {"type": "integer", "minimum": 0},
        "observed": {"type": "integer", "minimum": 0},
        "runnerUnavailable": {"type": "integer", "minimum": 0},
        "status": {"const": "observed-with-failures"}
      }
    }
  }
}
