{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://autoqa.example/schemas/project-contract.schema.json",
  "title": "AutoQA Project Evaluation Contract",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "documentType",
    "schemaVersion",
    "contractId",
    "contractVersion",
    "projectName",
    "status",
    "createdAt",
    "instructionDocuments",
    "sourcePolicy",
    "criteria",
    "decisionTargets",
    "decisionPolicy",
    "humanReviewPolicy",
    "feedbackPolicy",
    "securityPolicy",
    "auditPolicy"
  ],
  "properties": {
    "documentType": {
      "const": "project_contract"
    },
    "schemaVersion": {
      "$ref": "common.schema.json#/$defs/SemVer"
    },
    "contractId": {
      "$ref": "common.schema.json#/$defs/Identifier"
    },
    "contractVersion": {
      "$ref": "common.schema.json#/$defs/SemVer"
    },
    "projectName": {
      "type": "string",
      "minLength": 1
    },
    "description": {
      "type": "string"
    },
    "status": {
      "type": "string",
      "enum": [
        "draft",
        "approved",
        "deprecated",
        "retired"
      ]
    },
    "createdAt": {
      "$ref": "common.schema.json#/$defs/DateTime"
    },
    "effectiveFrom": {
      "$ref": "common.schema.json#/$defs/DateTime"
    },
    "supersedesContractVersion": {
      "$ref": "common.schema.json#/$defs/SemVer"
    },
    "owners": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "actorId",
          "role"
        ],
        "properties": {
          "actorId": {
            "$ref": "common.schema.json#/$defs/Identifier"
          },
          "role": {
            "type": "string",
            "enum": [
              "project_owner",
              "rubric_owner",
              "domain_expert",
              "qa_owner"
            ]
          }
        }
      }
    },
    "instructionDocuments": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "instructionId",
          "title",
          "authority",
          "content",
          "contentHash"
        ],
        "properties": {
          "instructionId": {
            "$ref": "common.schema.json#/$defs/Identifier"
          },
          "title": {
            "type": "string",
            "minLength": 1
          },
          "authority": {
            "type": "string",
            "enum": [
              "primary",
              "supplemental",
              "example",
              "historical"
            ]
          },
          "content": {
            "type": "string",
            "minLength": 1
          },
          "contentHash": {
            "$ref": "common.schema.json#/$defs/ContentHash"
          },
          "precedenceRank": {
            "type": "integer",
            "minimum": 1
          }
        }
      }
    },
    "sourcePolicy": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "worldMode",
        "parametricKnowledgePolicy",
        "externalRetrievalAllowed",
        "defaultCitationRequirement",
        "evidenceClasses",
        "conflictPolicy",
        "snapshotRequired"
      ],
      "properties": {
        "worldMode": {
          "type": "string",
          "enum": [
            "closed_world",
            "open_world",
            "hybrid"
          ]
        },
        "parametricKnowledgePolicy": {
          "type": "string",
          "enum": [
            "never_evidence",
            "common_knowledge_only",
            "allowed_with_verification"
          ]
        },
        "externalRetrievalAllowed": {
          "type": "boolean"
        },
        "defaultCitationRequirement": {
          "type": "string",
          "enum": [
            "none",
            "material_claims",
            "all_verifiable_claims",
            "project_defined"
          ]
        },
        "snapshotRequired": {
          "type": "boolean"
        },
        "conflictPolicy": {
          "type": "string",
          "minLength": 1
        },
        "freshnessRules": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "evidenceClasses": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "classId",
              "name",
              "permitted",
              "authorityRank"
            ],
            "properties": {
              "classId": {
                "$ref": "common.schema.json#/$defs/Identifier"
              },
              "name": {
                "type": "string",
                "minLength": 1
              },
              "description": {
                "type": "string"
              },
              "permitted": {
                "type": "boolean"
              },
              "authorityRank": {
                "type": "integer",
                "minimum": 0
              }
            }
          }
        }
      }
    },
    "criteria": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "criterionId",
          "name",
          "requirement",
          "intent",
          "criterionType",
          "scope",
          "subjectivity",
          "instructionRefs",
          "applicability",
          "proofPolicy",
          "evidencePolicy",
          "anchors",
          "dependencies",
          "precedence",
          "defaultSeverity",
          "defaultDecisionEffect",
          "tags"
        ],
        "properties": {
          "criterionId": {
            "$ref": "common.schema.json#/$defs/Identifier"
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "requirement": {
            "type": "string",
            "minLength": 1
          },
          "intent": {
            "type": "string",
            "minLength": 1
          },
          "criterionType": {
            "type": "string",
            "enum": [
              "required_presence",
              "prohibited_presence",
              "conditional",
              "factual",
              "grounding",
              "inferential_warrant",
              "comparative",
              "completeness",
              "holistic_quality",
              "mechanically_verifiable",
              "annotation_fidelity"
            ]
          },
          "scope": {
            "type": "string",
            "enum": [
              "attempt",
              "claim",
              "citation",
              "annotation",
              "global",
              "batch"
            ]
          },
          "subjectivity": {
            "type": "string",
            "enum": [
              "objective",
              "bounded_judgment",
              "holistic_expert"
            ]
          },
          "instructionRefs": {
            "type": "array",
            "minItems": 1,
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "instructionId",
                "locator"
              ],
              "properties": {
                "instructionId": {
                  "$ref": "common.schema.json#/$defs/Identifier"
                },
                "locator": {
                  "type": "string",
                  "minLength": 1
                },
                "quotedText": {
                  "type": "string"
                }
              }
            }
          },
          "applicability": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "ruleText",
              "condition"
            ],
            "properties": {
              "ruleText": {
                "type": "string",
                "minLength": 1
              },
              "condition": {
                "$ref": "common.schema.json#/$defs/Condition"
              }
            }
          },
          "proofPolicy": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "positiveProofRequired",
              "positiveProofStandard",
              "failureCondition",
              "passOnNoViolation",
              "allowPartialCredit",
              "allowCompensation"
            ],
            "properties": {
              "positiveProofRequired": {
                "type": "boolean"
              },
              "positiveProofStandard": {
                "type": "string",
                "minLength": 1
              },
              "failureCondition": {
                "type": "string",
                "minLength": 1
              },
              "omissionCondition": {
                "type": "string"
              },
              "passOnNoViolation": {
                "type": "boolean"
              },
              "allowPartialCredit": {
                "type": "boolean"
              },
              "allowCompensation": {
                "type": "boolean"
              }
            }
          },
          "evidencePolicy": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "allowedEvidenceClassIds",
              "minimumAuthorityRank",
              "citationRequired",
              "externalVerificationMode",
              "deterministicValidatorIds"
            ],
            "properties": {
              "allowedEvidenceClassIds": {
                "type": "array",
                "uniqueItems": true,
                "items": {
                  "$ref": "common.schema.json#/$defs/Identifier"
                }
              },
              "minimumAuthorityRank": {
                "type": "integer",
                "minimum": 0
              },
              "citationRequired": {
                "type": "boolean"
              },
              "externalVerificationMode": {
                "type": "string",
                "enum": [
                  "forbidden",
                  "optional",
                  "required"
                ]
              },
              "deterministicValidatorIds": {
                "type": "array",
                "uniqueItems": true,
                "items": {
                  "$ref": "common.schema.json#/$defs/Identifier"
                }
              }
            }
          },
          "anchors": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "anchorId",
                "label",
                "example",
                "expectedVerdict"
              ],
              "properties": {
                "anchorId": {
                  "$ref": "common.schema.json#/$defs/Identifier"
                },
                "label": {
                  "type": "string",
                  "minLength": 1
                },
                "description": {
                  "type": "string"
                },
                "example": {
                  "type": "string",
                  "minLength": 1
                },
                "expectedVerdict": {
                  "$ref": "common.schema.json#/$defs/CriterionVerdict"
                },
                "notes": {
                  "type": "string"
                }
              }
            }
          },
          "validAlternatives": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "exceptions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "dependencies": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "requiredBeforeCriterionIds",
              "impliesCriterionIds"
            ],
            "properties": {
              "requiredBeforeCriterionIds": {
                "type": "array",
                "uniqueItems": true,
                "items": {
                  "$ref": "common.schema.json#/$defs/Identifier"
                }
              },
              "impliesCriterionIds": {
                "type": "array",
                "uniqueItems": true,
                "items": {
                  "$ref": "common.schema.json#/$defs/Identifier"
                }
              }
            }
          },
          "precedence": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "overridesCriterionIds",
              "overriddenByCriterionIds"
            ],
            "properties": {
              "overridesCriterionIds": {
                "type": "array",
                "uniqueItems": true,
                "items": {
                  "$ref": "common.schema.json#/$defs/Identifier"
                }
              },
              "overriddenByCriterionIds": {
                "type": "array",
                "uniqueItems": true,
                "items": {
                  "$ref": "common.schema.json#/$defs/Identifier"
                }
              }
            }
          },
          "defaultSeverity": {
            "$ref": "common.schema.json#/$defs/Severity"
          },
          "defaultDecisionEffect": {
            "type": "string",
            "enum": [
              "none",
              "accept_with_note",
              "rework",
              "reject",
              "escalate"
            ]
          },
          "tags": {
            "type": "array",
            "uniqueItems": true,
            "items": {
              "type": "string"
            }
          }
        }
      }
    },
    "decisionPolicy": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "policyVersion",
        "allowedActions",
        "rules",
        "defaultAction",
        "tieBreakOrder",
        "confidencePolicy"
      ],
      "properties": {
        "policyVersion": {
          "$ref": "common.schema.json#/$defs/SemVer"
        },
        "allowedActions": {
          "type": "array",
          "minItems": 1,
          "uniqueItems": true,
          "items": {
            "$ref": "common.schema.json#/$defs/OperationalAction"
          }
        },
        "rules": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "target",
              "ruleId",
              "priority",
              "description",
              "match",
              "action",
              "terminal"
            ],
            "properties": {
              "ruleId": {
                "$ref": "common.schema.json#/$defs/Identifier"
              },
              "priority": {
                "type": "integer",
                "minimum": 1
              },
              "description": {
                "type": "string",
                "minLength": 1
              },
              "match": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "criterionIds": {
                    "type": "array",
                    "uniqueItems": true,
                    "items": {
                      "type": "string"
                    }
                  },
                  "criterionTags": {
                    "type": "array",
                    "uniqueItems": true,
                    "items": {
                      "type": "string"
                    }
                  },
                  "verdicts": {
                    "type": "array",
                    "uniqueItems": true,
                    "items": {
                      "$ref": "common.schema.json#/$defs/CriterionVerdict"
                    }
                  },
                  "severities": {
                    "type": "array",
                    "uniqueItems": true,
                    "items": {
                      "$ref": "common.schema.json#/$defs/Severity"
                    }
                  },
                  "decisionEffects": {
                    "type": "array",
                    "uniqueItems": true,
                    "items": {
                      "type": "string",
                      "enum": [
                        "none",
                        "accept_with_note",
                        "rework",
                        "reject",
                        "escalate"
                      ]
                    }
                  },
                  "minimumCalibratedConfidence": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 1
                  },
                  "hasUnresolvedFindings": {
                    "type": "boolean"
                  },
                  "annotationDisagreementTypes": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "minProperties": 1
              },
              "action": {
                "$ref": "common.schema.json#/$defs/OperationalAction"
              },
              "terminal": {
                "type": "boolean"
              },
              "explanationTemplate": {
                "type": "string"
              },
              "target": {
                "$ref": "common.schema.json#/$defs/DecisionTarget"
              }
            }
          }
        },
        "defaultAction": {
          "$ref": "common.schema.json#/$defs/OperationalAction"
        },
        "tieBreakOrder": {
          "type": "array",
          "minItems": 1,
          "uniqueItems": true,
          "items": {
            "$ref": "common.schema.json#/$defs/OperationalAction"
          }
        },
        "confidencePolicy": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "requiresCalibrationForActions",
            "uncalibratedAction"
          ],
          "properties": {
            "requiresCalibrationForActions": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "$ref": "common.schema.json#/$defs/OperationalAction"
              }
            },
            "uncalibratedAction": {
              "$ref": "common.schema.json#/$defs/OperationalAction"
            },
            "minimumCalibrationCasesPerSlice": {
              "type": "integer",
              "minimum": 1
            }
          }
        }
      }
    },
    "humanReviewPolicy": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "maxInteractionsPerCase",
        "onlyAskIfDecisionChanging",
        "hideProvisionalDecision",
        "requireAmbiguityOption",
        "allowedQuestionTypes"
      ],
      "properties": {
        "maxInteractionsPerCase": {
          "type": "integer",
          "minimum": 0,
          "maximum": 1
        },
        "onlyAskIfDecisionChanging": {
          "type": "boolean"
        },
        "hideProvisionalDecision": {
          "type": "boolean"
        },
        "requireAmbiguityOption": {
          "type": "boolean"
        },
        "allowedQuestionTypes": {
          "type": "array",
          "uniqueItems": true,
          "items": {
            "type": "string",
            "enum": [
              "applicability",
              "instruction_precedence",
              "evidence_authority",
              "inference_permission",
              "severity",
              "valid_alternative",
              "rubric_ambiguity",
              "domain_expertise"
            ]
          }
        },
        "expertiseRoutingRules": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "feedbackPolicy": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "audiences",
        "maxItemsPerAudience",
        "includeValidatedStrengths",
        "validateRepairs",
        "priorityOrder"
      ],
      "properties": {
        "audiences": {
          "type": "array",
          "uniqueItems": true,
          "items": {
            "type": "string",
            "enum": [
              "attempter",
              "reviewer",
              "project_owner"
            ]
          }
        },
        "maxItemsPerAudience": {
          "type": "integer",
          "minimum": 1
        },
        "includeValidatedStrengths": {
          "type": "boolean"
        },
        "validateRepairs": {
          "type": "boolean"
        },
        "priorityOrder": {
          "type": "array",
          "minItems": 1,
          "uniqueItems": true,
          "items": {
            "type": "string",
            "enum": [
              "decisive",
              "critical",
              "major",
              "minor",
              "strength"
            ]
          }
        }
      }
    },
    "securityPolicy": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "treatCandidateContentAsUntrusted",
        "ignoreEmbeddedEvaluatorInstructions",
        "requireStructuredOutputs",
        "allowCandidateToOverrideRubric"
      ],
      "properties": {
        "treatCandidateContentAsUntrusted": {
          "type": "boolean"
        },
        "ignoreEmbeddedEvaluatorInstructions": {
          "type": "boolean"
        },
        "requireStructuredOutputs": {
          "type": "boolean"
        },
        "allowCandidateToOverrideRubric": {
          "type": "boolean"
        },
        "redactionRules": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "auditPolicy": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "retainExactSourceSnapshots",
        "retainPromptVersions",
        "retainModelRunMetadata",
        "retainHumanResolutions",
        "replayRequired"
      ],
      "properties": {
        "retainExactSourceSnapshots": {
          "type": "boolean"
        },
        "retainPromptVersions": {
          "type": "boolean"
        },
        "retainModelRunMetadata": {
          "type": "boolean"
        },
        "retainHumanResolutions": {
          "type": "boolean"
        },
        "replayRequired": {
          "type": "boolean"
        },
        "retentionDays": {
          "type": "integer",
          "minimum": 1
        }
      }
    },
    "metadata": {
      "type": "object",
      "additionalProperties": true
    },
    "decisionTargets": {
      "type": "array",
      "minItems": 1,
      "uniqueItems": true,
      "items": {
        "$ref": "common.schema.json#/$defs/DecisionTarget"
      }
    }
  }
}
