{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://hbfnetwork.org/schemas/result-spec-v1.schema.json",
  "title": "HBF Scientific ResultSpec v1",
  "type": "object",
  "required": ["schema_version", "status", "scientific_status", "input_fingerprint", "result_hash", "model", "domain", "outputs", "uncertainty", "numerics", "warnings", "omitted_physics", "claim_boundary"],
  "properties": {
    "schema_version": {"const": "hbf-resultspec-1.0"},
    "status": {"enum": ["SUCCEEDED", "FAILED", "CANCELLED", "ABSTAINED", "OUT_OF_DOMAIN"]},
    "scientific_status": {"enum": ["EDUCATIONAL_TOY", "VERIFIED_KERNEL", "BENCHMARK_REPRODUCED", "CROSS_CODE_BENCHMARKED", "EXPERIMENTALLY_VALIDATED", "OUT_OF_DOMAIN"]},
    "input_fingerprint": {"type": "string", "pattern": "^[a-f0-9]{64}$"},
    "result_hash": {"type": "string", "pattern": "^[a-f0-9]{64}$"},
    "model": {"type": "object", "required": ["model_id", "model_version", "registry_version", "source_hashes"]},
    "domain": {
      "type": "object",
      "required": ["status", "in_domain_fraction", "policy"],
      "properties": {
        "status": {"enum": ["IN_DOMAIN", "PARTIAL", "OUT_OF_DOMAIN", "NOT_APPLICABLE"]},
        "in_domain_fraction": {"type": ["number", "null"], "minimum": 0, "maximum": 1},
        "policy": {"type": "string"}
      }
    },
    "outputs": {"type": "object"},
    "uncertainty": {
      "type": "object",
      "required": ["measurement", "model_form", "transcription", "numerical", "structural", "scenario", "sampling"],
      "properties": {
        "measurement": {}, "model_form": {}, "transcription": {}, "numerical": {}, "structural": {}, "scenario": {}, "sampling": {}
      }
    },
    "numerics": {"type": "object", "required": ["method", "convergence", "wall_time_s"]},
    "warnings": {"type": "array"},
    "omitted_physics": {"type": "array", "items": {"type": "string"}},
    "claim_boundary": {"type": "string", "minLength": 1},
    "export_state": {"enum": ["CURRENT", "DISABLED_DIRTY", "LAST_SUCCESSFUL_EXPLICIT_ONLY", "NOT_EXPORTABLE"]}
  },
  "additionalProperties": true
}
