=== META ===
{
  "id": "GTPX-ERROR-MODEL",
  "title": "GTPX Error Model",
  "version": "0.1.0",
  "status": "draft",
  "updated": "2026-04-25",
  "authority": "07_validation/GTPX-ERROR-MODEL.gtpx",
  "type": "validation_error_model",
  "project": "GTPX",
  "depends_on": [
    "07_validation/GTPX-VALIDATION-MODEL.gtpx"
  ]
}

=== DATA ===
{
  "purpose": "Defines error types, classification, and handling in GTPX.",

  "error_policy": {
    "all_errors_must_be_explicit": true,
    "silent_errors_are_forbidden": true,
    "error_must_be_classified": true,
    "error_must_block_execution_if_critical": true
  },

  "error_types": [
    "structure_error",
    "contract_error",
    "completeness_error",
    "source_error",
    "hash_error"
  ],

  "error_definitions": {
    "structure_error": "Message does not follow required syntax or structure.",
    "contract_error": "Request violates contract constraints.",
    "completeness_error": "Required data is missing.",
    "source_error": "Source is missing, invalid, or unverified.",
    "hash_error": "Payload hash is invalid or mismatched."
  },

  "error_severity_levels": [
    "critical",
    "non_critical"
  ],

  "severity_definitions": {
    "critical": "Execution must stop immediately.",
    "non_critical": "Execution may continue but must report the issue."
  },

  "error_handling_rules": [
    "critical_errors_must_block_execution",
    "non_critical_errors_must_be_reported",
    "errors_must_be_traceable",
    "errors_must_be_returned_in_response"
  ]
}

=== RULES ===
{
  "error_type_must_be_from_defined_set": true,
  "error_severity_must_be_defined": true,
  "error_without_type_is_invalid": true,
  "error_without_severity_is_invalid": true,
  "all_errors_must_be_included_in_response": true
}

=== STATUS ===
{
  "state": "draft",
  "open_questions": [
    "Confirm if additional error types are required.",
    "Confirm if severity must be numeric or remain categorical."
  ],
  "next_step": "Create and populate 07_validation/GTPX-COMPLETENESS.gtpx."
}