=== META ===
{
  "id": "GTPX-SOURCE-MODEL",
  "title": "GTPX Source Model",
  "version": "0.1.0",
  "status": "draft",
  "updated": "2026-04-25",
  "authority": "05_sources/GTPX-SOURCE-MODEL.gtpx",
  "type": "source_model",
  "project": "GTPX",
  "depends_on": [
    "03_language/GTPX-DICTIONARY.gtpx",
    "04_contract/GTPX-CONTRACT-MODEL.gtpx"
  ]
}

=== DATA ===
{
  "purpose": "Defines how sources are declared and referenced in GTPX.",

  "source_types": [
    "PUBLIC",
    "INTERNAL",
    "SPECIALIZED_API",
    "USER_PROVIDED",
    "RUNTIME_PROVIDED"
  ],

  "source_policy": {
    "all_sources_must_be_declared": true,
    "undeclared_sources_are_forbidden": true,
    "each_source_must_have_id": true,
    "source_usage_must_follow_contract": true
  },

  "source_structure": {
    "required_fields": [
      "source_id",
      "source_type",
      "authority_level",
      "freshness_required",
      "citation_required",
      "allowed_usage"
    ]
  },

  "field_definitions": {
    "source_id": "Unique identifier of the source.",
    "source_type": "Type of the source (PUBLIC, INTERNAL, etc.).",
    "authority_level": "Defines trust level of the source.",
    "freshness_required": "Defines whether up-to-date data is required.",
    "citation_required": "Defines whether the source must be explicitly cited.",
    "allowed_usage": "Defines how the source may be used."
  }
}

=== RULES ===
{
  "source_id_must_be_unique": true,
  "source_type_must_be_from_defined_set": true,
  "authority_level_must_be_defined": true,
  "freshness_required_must_be_boolean": true,
  "citation_required_must_be_boolean": true,
  "allowed_usage_must_be_explicit": true,
  "using_undeclared_source_is_invalid": true
}

=== STATUS ===
{
  "state": "draft",
  "open_questions": [
    "Confirm authority level scale definition.",
    "Confirm allowed_usage value set."
  ],
  "next_step": "Create and populate 05_sources/GTPX-SOURCE-RELEVANCE.gtpx."
}