{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://www.samirac.com/schemas/execution-contract.schema.json",
  "title": "SAQ Execution Contract",
  "description": "Canonical machine-readable execution contract for consequential AI action under SAQ Execution Contract Specification Public Draft v0.1.",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "header",
    "domain_profile",
    "requester",
    "actor",
    "proposed_action",
    "target",
    "lifecycle"
  ],
  "properties": {
    "header": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "contract_id",
        "schema_version",
        "created_at",
        "expires_at",
        "correlation_id",
        "digest",
        "digest_profile"
      ],
      "properties": {
        "contract_id": {
          "$ref": "common-definitions.schema.json#/$defs/identifier"
        },
        "schema_version": {
          "const": "0.1"
        },
        "created_at": {
          "type": "string",
          "format": "date-time"
        },
        "expires_at": {
          "type": "string",
          "format": "date-time"
        },
        "correlation_id": {
          "$ref": "common-definitions.schema.json#/$defs/identifier"
        },
        "digest": {
          "$ref": "common-definitions.schema.json#/$defs/digest"
        },
        "digest_profile": {
          "const": "JCS-SHA-256"
        },
        "extensions": {
          "type": "object",
          "additionalProperties": true
        }
      }
    },
    "domain_profile": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "profile_id",
        "profile_version"
      ],
      "properties": {
        "profile_id": {
          "$ref": "common-definitions.schema.json#/$defs/identifier"
        },
        "profile_version": {
          "type": "string",
          "minLength": 1
        },
        "extensions": {
          "type": "object",
          "additionalProperties": true
        }
      }
    },
    "requester": {
      "$ref": "common-definitions.schema.json#/$defs/requester"
    },
    "actor": {
      "$ref": "common-definitions.schema.json#/$defs/actor"
    },
    "proposed_action": {
      "$ref": "common-definitions.schema.json#/$defs/proposedAction"
    },
    "target": {
      "$ref": "common-definitions.schema.json#/$defs/target"
    },
    "authority_claim": {
      "$ref": "common-definitions.schema.json#/$defs/authorityClaim"
    },
    "delegation_chain": {
      "type": "array",
      "items": {
        "$ref": "common-definitions.schema.json#/$defs/delegationHop"
      }
    },
    "current_state": {
      "$ref": "common-definitions.schema.json#/$defs/stateSnapshot"
    },
    "evidence": {
      "type": "array",
      "minItems": 1,
      "items": {
        "$ref": "common-definitions.schema.json#/$defs/evidenceItem"
      }
    },
    "policy_binding": {
      "$ref": "common-definitions.schema.json#/$defs/policyBinding"
    },
    "risk_and_consequence": {
      "$ref": "common-definitions.schema.json#/$defs/riskAndConsequence"
    },
    "constraints": {
      "$ref": "common-definitions.schema.json#/$defs/constraints"
    },
    "admissibility_decision": {
      "$ref": "common-definitions.schema.json#/$defs/admissibilityDecision"
    },
    "execution_grant": {
      "$ref": "execution-grant.schema.json"
    },
    "execution_receipt": {
      "$ref": "execution-receipt.schema.json"
    },
    "correction_records": {
      "type": "array",
      "items": {
        "$ref": "common-definitions.schema.json#/$defs/correctionRecord"
      }
    },
    "lifecycle": {
      "$ref": "common-definitions.schema.json#/$defs/lifecycle"
    },
    "extensions": {
      "type": "object",
      "additionalProperties": true
    }
  },
  "allOf": [
    {
      "if": {
        "properties": {
          "lifecycle": {
            "properties": {
              "current_state": {
                "enum": [
                  "VALIDATING",
                  "ADMISSIBLE",
                  "CONDITIONAL",
                  "DENIED",
                  "ESCALATED",
                  "DEFERRED",
                  "EXPIRED",
                  "AUTHORIZED",
                  "EXECUTING",
                  "EXECUTED",
                  "FAILED",
                  "RECEIPTED",
                  "CORRECTED",
                  "CLOSED",
                  "REVOKED"
                ]
              }
            }
          }
        }
      },
      "then": {
        "required": [
          "authority_claim",
          "delegation_chain",
          "current_state",
          "evidence",
          "policy_binding",
          "risk_and_consequence",
          "constraints"
        ]
      }
    },
    {
      "if": {
        "properties": {
          "lifecycle": {
            "properties": {
              "current_state": {
                "enum": [
                  "ADMISSIBLE",
                  "CONDITIONAL",
                  "DENIED",
                  "ESCALATED",
                  "DEFERRED",
                  "EXPIRED",
                  "AUTHORIZED",
                  "EXECUTING",
                  "EXECUTED",
                  "FAILED",
                  "RECEIPTED",
                  "CORRECTED",
                  "CLOSED",
                  "REVOKED"
                ]
              }
            }
          }
        }
      },
      "then": {
        "required": [
          "admissibility_decision"
        ]
      }
    },
    {
      "if": {
        "properties": {
          "lifecycle": {
            "properties": {
              "current_state": {
                "enum": [
                  "AUTHORIZED",
                  "EXECUTING",
                  "EXECUTED",
                  "FAILED",
                  "RECEIPTED",
                  "CORRECTED",
                  "CLOSED",
                  "REVOKED"
                ]
              }
            }
          }
        }
      },
      "then": {
        "required": [
          "execution_grant"
        ]
      }
    },
    {
      "if": {
        "properties": {
          "lifecycle": {
            "properties": {
              "current_state": {
                "enum": [
                  "RECEIPTED",
                  "CORRECTED",
                  "CLOSED"
                ]
              }
            }
          }
        }
      },
      "then": {
        "required": [
          "execution_receipt"
        ]
      }
    },
    {
      "if": {
        "properties": {
          "lifecycle": {
            "properties": {
              "current_state": {
                "const": "CORRECTED"
              }
            }
          }
        }
      },
      "then": {
        "required": [
          "correction_records"
        ],
        "properties": {
          "correction_records": {
            "minItems": 1
          }
        }
      }
    }
  ]
}
