{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "urn:orbiplex:schema:inference-execution-posture:v1",
  "title": "Inference Execution Posture v1",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "schema", "posture/id", "assertion/owner", "subject/ref", "scope/ref",
    "generation", "processing-boundary/ref", "locality", "provider/disclosure",
    "provider/refs", "valid/from", "evidence/requirements", "extensions"
  ],
  "properties": {
    "schema": { "const": "inference-execution-posture.v1" },
    "posture/id": { "$ref": "inference-provenance-common.v1.schema.json#/$defs/digest" },
    "assertion/owner": { "$ref": "inference-provenance-common.v1.schema.json#/$defs/ref" },
    "subject/ref": { "$ref": "inference-provenance-common.v1.schema.json#/$defs/ref" },
    "scope/ref": { "$ref": "inference-provenance-common.v1.schema.json#/$defs/ref" },
    "generation": { "type": "integer", "minimum": 1, "maximum": 9007199254740991 },
    "processing-boundary/ref": { "$ref": "inference-provenance-common.v1.schema.json#/$defs/ref" },
    "locality": { "enum": ["local-only", "may-use-non-local", "non-local-required", "unknown"] },
    "provider/disclosure": { "$ref": "inference-provenance-common.v1.schema.json#/$defs/provider-disclosure" },
    "provider/refs": {
      "type": "array", "maxItems": 32, "uniqueItems": true,
      "items": { "$ref": "inference-provenance-common.v1.schema.json#/$defs/provider-ref" }
    },
    "valid/from": { "type": "string", "format": "date-time" },
    "valid/until": { "type": "string", "format": "date-time" },
    "evidence/requirements": {
      "type": "array", "maxItems": 32, "uniqueItems": true,
      "items": { "$ref": "inference-provenance-common.v1.schema.json#/$defs/evidence-requirement" }
    },
    "extensions": { "$ref": "inference-provenance-common.v1.schema.json#/$defs/extensions" }
  },
  "allOf": [
    {
      "if": {
        "required": ["provider/disclosure"],
        "properties": { "provider/disclosure": { "const": "partial" } }
      },
      "then": { "properties": { "provider/refs": { "minItems": 1 } } }
    },
    {
      "if": {
        "required": ["provider/disclosure"],
        "properties": { "provider/disclosure": { "enum": ["withheld", "unknown"] } }
      },
      "then": { "properties": { "provider/refs": { "maxItems": 0 } } }
    }
  ]
}
