{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://hbfnetwork.org/schemas/run-spec-v1.schema.json",
  "title": "HBF Scientific RunSpec v1",
  "type": "object",
  "required": ["schema_version", "lab_id", "model", "inputs", "policy", "random_seed"],
  "properties": {
    "schema_version": {"const": "hbf-runspec-1.0"},
    "lab_id": {"type": "string", "minLength": 1},
    "request_id": {"type": "string"},
    "model": {
      "type": "object",
      "required": ["model_id", "model_version", "registry_version"],
      "properties": {
        "model_id": {"type": "string"},
        "model_version": {"type": "string"},
        "registry_version": {"type": "string"},
        "source_hashes": {"type": "array", "items": {"type": "string", "pattern": "^[a-f0-9]{64}$"}}
      }
    },
    "fidelity": {
      "type": "object",
      "required": ["reaction", "plasma", "transport", "geometry", "detector", "power_balance"],
      "properties": {
        "reaction": {"type": "string"},
        "plasma": {"type": "string"},
        "transport": {"type": "string"},
        "geometry": {"type": "string"},
        "detector": {"type": "string"},
        "power_balance": {"type": "string"}
      }
    },
    "inputs": {"type": "object"},
    "uncertainty": {
      "type": "object",
      "properties": {
        "method": {"enum": ["none", "linearized", "monte_carlo", "ensemble"]},
        "samples": {"type": "integer", "minimum": 1},
        "distributions": {"type": "object"},
        "covariance_artifact": {"type": ["string", "null"]}
      }
    },
    "policy": {
      "type": "object",
      "required": ["out_of_domain", "unsupported_model", "stale_result"],
      "properties": {
        "out_of_domain": {"enum": ["reject", "abstain"]},
        "unsupported_model": {"enum": ["reject", "abstain"]},
        "stale_result": {"const": "disable_current_export"}
      }
    },
    "random_seed": {"type": "integer", "minimum": 0, "maximum": 4294967295}
  },
  "additionalProperties": true
}
