=== META ===
{
  "id": "GTPX-REQUEST-MODEL",
  "title": "GTPX Request Model",
  "version": "0.1.0",
  "status": "draft",
  "updated": "2026-04-25",
  "authority": "06_protocol/GTPX-REQUEST-MODEL.gtpx",
  "type": "protocol_request",
  "project": "GTPX",
  "depends_on": [
    "03_language/GTPX-SYNTAX.gtpx",
    "03_language/GTPX-SEMANTICS.gtpx",
    "04_contract/GTPX-CONTRACT-CORE.gtpx",
    "05_sources/GTPX-SOURCE-MODEL.gtpx"
  ]
}

=== DATA ===
{
  "purpose": "Defines the canonical structure of a GTPX request.",

  "request_policy": {
    "structure_is_mandatory": true,
    "all_sections_must_exist": true,
    "missing_section_results_in_blocked": true,
    "implicit_fields_are_forbidden": true
  },

  "sections": [
    "CONTRACT",
    "AGENT",
    "PURPOSE",
    "CONTEXT",
    "SOURCE_SET",
    "FILE_SET",
    "REQUEST",
    "EXPECTED_OUTPUT",
    "PAYLOAD_HASH",
    "END_OF_MESSAGE"
  ],

  "section_definitions": {
    "CONTRACT": "Contains the full GTPX contract controlling behavior.",
    "AGENT": "Defines which AI model or processing entity is used.",
    "PURPOSE": "Defines why the request is made.",
    "CONTEXT": "Provides all necessary background information.",
    "SOURCE_SET": "Defines allowed and required sources.",
    "FILE_SET": "Defines attached or referenced files.",
    "REQUEST": "Defines the exact task to be executed.",
    "EXPECTED_OUTPUT": "Defines required structure and format of the response.",
    "PAYLOAD_HASH": "Defines integrity hash of the full request.",
    "END_OF_MESSAGE": "Marks explicit end of request."
  }
}

=== RULES ===
{
  "section_order_must_follow_syntax": true,
  "all_sections_are_required": true,
  "payload_hash_must_match_content": true,
  "end_of_message_is_mandatory": true,
  "request_without_contract_is_invalid": true,
  "request_without_hash_is_invalid": true
}

=== STATUS ===
{
  "state": "draft",
  "open_questions": [
    "Confirm whether FILE_SET can be empty or must always exist.",
    "Confirm whether AGENT must be strictly defined or inferred from contract."
  ],
  "next_step": "Create and populate 06_protocol/GTPX-RESPONSE-MODEL.gtpx."
}