← Files EvalDossierARCHIVED FILE

schemas/profile-definition.schema.json

5.35 KB · Oct 5, 2026 · 18:30 UTC

↓ Download file

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/miguel-herrero-systems/evaldossier/v0.1.0/schemas/profile-definition.schema.json",
  "title": "EvalDossier profile definition 0.1",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "protocolVersion",
    "schemaVersion",
    "profileId",
    "version",
    "title",
    "description",
    "publishedAt",
    "publisher",
    "signingKeyId",
    "operation",
    "resultBindingMode",
    "evaluationClass",
    "allowedBases",
    "predicates",
    "aggregationPolicy",
    "mappingPolicy",
    "signatureContext",
    "proof"
  ],
  "properties": {
    "protocolVersion": { "$ref": "https://raw.githubusercontent.com/miguel-herrero-systems/evaldossier/v0.1.0/schemas/common.schema.json#/$defs/protocolVersion" },
    "schemaVersion": { "const": "evaldossier.profile-definition/0.1" },
    "profileId": { "$ref": "https://raw.githubusercontent.com/miguel-herrero-systems/evaldossier/v0.1.0/schemas/common.schema.json#/$defs/identifier" },
    "version": { "type": "string", "pattern": "^[0-9]+\\.[0-9]+(?:\\.[0-9]+)?$" },
    "title": { "type": "string", "minLength": 1, "maxLength": 160 },
    "description": { "type": "string", "minLength": 1, "maxLength": 1000 },
    "publishedAt": { "$ref": "https://raw.githubusercontent.com/miguel-herrero-systems/evaldossier/v0.1.0/schemas/common.schema.json#/$defs/timestamp" },
    "publisher": { "$ref": "https://raw.githubusercontent.com/miguel-herrero-systems/evaldossier/v0.1.0/schemas/common.schema.json#/$defs/embeddedSigner" },
    "signingKeyId": { "$ref": "https://raw.githubusercontent.com/miguel-herrero-systems/evaldossier/v0.1.0/schemas/common.schema.json#/$defs/keyId" },
    "operation": { "enum": ["EVALUATE", "NORMALIZE"] },
    "resultBindingMode": {
      "description": "Whether the profile establishes predicates directly or preserves a typed upstream assessment without upgrading it to truth.",
      "enum": ["DIRECT_PREDICATE_RESULT", "PRESERVE_UPSTREAM_ASSESSMENT"]
    },
    "evaluationClass": {
      "enum": ["DETERMINISTIC", "UPSTREAM_NORMALIZATION", "EVIDENCE_RULES", "PROBABILISTIC"]
    },
    "allowedBases": {
      "type": "array",
      "minItems": 1,
      "uniqueItems": true,
      "items": { "$ref": "https://raw.githubusercontent.com/miguel-herrero-systems/evaldossier/v0.1.0/schemas/common.schema.json#/$defs/resultBasis" }
    },
    "predicates": {
      "type": "array",
      "minItems": 1,
      "maxItems": 64,
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": ["predicateId", "description", "basis"],
        "properties": {
          "predicateId": { "$ref": "https://raw.githubusercontent.com/miguel-herrero-systems/evaldossier/v0.1.0/schemas/common.schema.json#/$defs/identifier" },
          "description": { "type": "string", "minLength": 1, "maxLength": 500 },
          "basis": { "$ref": "https://raw.githubusercontent.com/miguel-herrero-systems/evaldossier/v0.1.0/schemas/common.schema.json#/$defs/resultBasis" }
        }
      }
    },
    "aggregationPolicy": {
      "type": "object",
      "additionalProperties": false,
      "required": ["rule", "unknownHandling", "obligationEligibleBases"],
      "properties": {
        "rule": { "enum": ["ALL_REQUIRED_TRUE", "PRESERVE_UPSTREAM_OVERALL"] },
        "unknownHandling": { "const": "INCONCLUSIVE_WHEN_REQUIRED_PREDICATE_UNDETERMINED" },
        "obligationEligibleBases": {
          "description": "Only these bases may establish an obligation predicate. An empty list deliberately makes every obligation verdict inconclusive.",
          "type": "array",
          "maxItems": 6,
          "uniqueItems": true,
          "items": { "$ref": "https://raw.githubusercontent.com/miguel-herrero-systems/evaldossier/v0.1.0/schemas/common.schema.json#/$defs/resultBasis" }
        }
      }
    },
    "mappingPolicy": {
      "type": "object",
      "additionalProperties": false,
      "required": ["policyId", "description"],
      "properties": {
        "policyId": { "$ref": "https://raw.githubusercontent.com/miguel-herrero-systems/evaldossier/v0.1.0/schemas/common.schema.json#/$defs/identifier" },
        "description": { "type": "string", "minLength": 1, "maxLength": 1000 }
      }
    },
    "signatureContext": { "$ref": "https://raw.githubusercontent.com/miguel-herrero-systems/evaldossier/v0.1.0/schemas/common.schema.json#/$defs/signatureContext" },
    "proof": { "$ref": "https://raw.githubusercontent.com/miguel-herrero-systems/evaldossier/v0.1.0/schemas/common.schema.json#/$defs/proof" }
  },
  "allOf": [
    {
      "if": { "properties": { "operation": { "const": "NORMALIZE" } }, "required": ["operation"] },
      "then": {
        "properties": {
          "resultBindingMode": { "const": "PRESERVE_UPSTREAM_ASSESSMENT" },
          "evaluationClass": { "const": "UPSTREAM_NORMALIZATION" }
        }
      }
    },
    {
      "if": { "properties": { "resultBindingMode": { "const": "PRESERVE_UPSTREAM_ASSESSMENT" } }, "required": ["resultBindingMode"] },
      "then": { "properties": { "aggregationPolicy": { "properties": { "rule": { "const": "PRESERVE_UPSTREAM_OVERALL" } } } } }
    },
    {
      "if": { "properties": { "resultBindingMode": { "const": "DIRECT_PREDICATE_RESULT" } }, "required": ["resultBindingMode"] },
      "then": { "properties": { "operation": { "const": "EVALUATE" } } }
    }
  ]
}

SHA-256: 4f2a85e126958c8219b687d173b3887ce97b32d99af391b85aea1e9b9187dd21