{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://terravitahub.com/assets/evidence-governance-core-v1.1.schema.json",
  "title": "Terra Vita Evidence Governance Core Profile",
  "description": "An additive evidence-governance envelope for existing Terra Vita Hub objects. The evidence_governance property is optional so existing objects remain valid. When the envelope is used, all four control families are explicit and every field is recorded as confirmed, unconfirmed or not applicable.",
  "type": "object",
  "additionalProperties": true,
  "properties": {
    "project_id": { "type": ["string", "null"] },
    "project_code": { "type": ["string", "null"] },
    "project_name": { "type": ["string", "null"] },
    "evidence_governance": { "$ref": "#/$defs/evidenceGovernanceEnvelope" },
    "extensions": {
      "type": "object",
      "description": "Optional sector or use-case profiles. Extension content must not be moved into the core evidence-governance envelope.",
      "additionalProperties": true
    }
  },
  "$defs": {
    "controlledField": {
      "type": "object",
      "additionalProperties": false,
      "required": ["status"],
      "properties": {
        "status": {
          "type": "string",
          "enum": ["confirmed", "unconfirmed", "not_applicable"]
        },
        "value": {},
        "evidence_refs": {
          "type": "array",
          "items": { "type": "string", "minLength": 1 },
          "uniqueItems": true
        },
        "recorded_at": { "type": "string", "format": "date-time" },
        "recorded_by": { "type": "string", "minLength": 1 },
        "note": { "type": "string" }
      },
      "allOf": [
        {
          "if": { "properties": { "status": { "const": "confirmed" } }, "required": ["status"] },
          "then": {
            "required": ["value", "evidence_refs"],
            "properties": { "evidence_refs": { "minItems": 1 } }
          }
        },
        {
          "if": { "properties": { "status": { "const": "not_applicable" } }, "required": ["status"] },
          "then": { "required": ["note"] }
        }
      ]
    },
    "authorityControls": {
      "type": "object",
      "additionalProperties": false,
      "required": ["priority", "producer", "owner", "custodian", "legal_authority", "usage_rights"],
      "properties": {
        "priority": { "const": "P0" },
        "producer": { "$ref": "#/$defs/controlledField" },
        "owner": { "$ref": "#/$defs/controlledField" },
        "custodian": { "$ref": "#/$defs/controlledField" },
        "legal_authority": { "$ref": "#/$defs/controlledField" },
        "usage_rights": { "$ref": "#/$defs/controlledField" }
      }
    },
    "validationControls": {
      "type": "object",
      "additionalProperties": false,
      "required": ["priority", "reviewer", "protocol", "review_scope", "accepted_purpose", "uncertainty", "exceptions", "reliance_status"],
      "properties": {
        "priority": { "const": "P0" },
        "reviewer": { "$ref": "#/$defs/controlledField" },
        "protocol": { "$ref": "#/$defs/controlledField" },
        "review_scope": { "$ref": "#/$defs/controlledField" },
        "accepted_purpose": { "$ref": "#/$defs/controlledField" },
        "uncertainty": { "$ref": "#/$defs/controlledField" },
        "exceptions": { "$ref": "#/$defs/controlledField" },
        "reliance_status": { "$ref": "#/$defs/controlledField" }
      }
    },
    "interoperabilityControls": {
      "type": "object",
      "additionalProperties": false,
      "required": ["priority", "external_standard", "schema_version", "mapping", "export_profile", "interoperability_test"],
      "properties": {
        "priority": { "const": "P1" },
        "external_standard": { "$ref": "#/$defs/controlledField" },
        "schema_version": { "$ref": "#/$defs/controlledField" },
        "mapping": { "$ref": "#/$defs/controlledField" },
        "export_profile": { "$ref": "#/$defs/controlledField" },
        "interoperability_test": { "$ref": "#/$defs/controlledField" }
      }
    },
    "lifecycleControls": {
      "type": "object",
      "additionalProperties": false,
      "required": ["priority", "data_steward", "update_trigger", "supersession", "retirement", "change_history"],
      "properties": {
        "priority": { "const": "P1" },
        "data_steward": { "$ref": "#/$defs/controlledField" },
        "update_trigger": { "$ref": "#/$defs/controlledField" },
        "supersession": { "$ref": "#/$defs/controlledField" },
        "retirement": { "$ref": "#/$defs/controlledField" },
        "change_history": { "$ref": "#/$defs/controlledField" }
      }
    },
    "evidenceGovernanceEnvelope": {
      "type": "object",
      "additionalProperties": false,
      "required": ["profile_id", "profile_version", "record_status", "external_conformity_claimed", "authority", "validation", "interoperability", "lifecycle"],
      "properties": {
        "profile_id": { "const": "TV-EG-CORE" },
        "profile_version": { "const": "1.1" },
        "record_status": {
          "type": "string",
          "enum": ["profiled", "held", "test_only", "retired"]
        },
        "external_conformity_claimed": { "const": false },
        "extension_profiles": {
          "type": "array",
          "items": { "type": "string", "minLength": 1 },
          "uniqueItems": true
        },
        "authority": { "$ref": "#/$defs/authorityControls" },
        "validation": { "$ref": "#/$defs/validationControls" },
        "interoperability": { "$ref": "#/$defs/interoperabilityControls" },
        "lifecycle": { "$ref": "#/$defs/lifecycleControls" }
      }
    }
  }
}
