{
  "version": "prohibited-inferences-v1.0.0",
  "canonicalReleaseId": "africa-infra-v1.0.0",
  "evidenceCutoff": "2026-08-10",
  "automaticWarnings": true,
  "rules": [
    {
      "code": "CLOUD_REGION_NOT_NATIONAL_DC_CAPACITY",
      "label": "Cloud-region evidence is not national data-centre capacity",
      "triggers": {
        "indicatorIds": [
          "ind-cloud-big3-regions"
        ],
        "dimensions": [
          "CLOUD"
        ]
      },
      "message": "AWS, Azure, or Google Cloud region evidence must not be treated as national data-centre capacity."
    },
    {
      "code": "PROVIDER_SCOPE_NOT_WHOLE_MARKET",
      "label": "Provider scope is bounded",
      "triggers": {
        "indicatorIds": [
          "ind-cloud-big3-regions",
          "ind-cassava-signal"
        ]
      },
      "message": "Provider-specific evidence must not be generalised into a national market or infrastructure fact."
    },
    {
      "code": "ANNOUNCED_PLANNED_NOT_OPERATIONAL",
      "label": "Announced or planned is not operational",
      "triggers": {
        "evidenceStatuses": [
          "ANNOUNCED",
          "PLANNED"
        ]
      },
      "message": "Announced or planned infrastructure must not be presented as operational infrastructure."
    },
    {
      "code": "ELECTRICITY_ACCESS_NOT_GRID_RELIABILITY",
      "label": "Electricity access is not grid reliability",
      "triggers": {
        "dimensions": [
          "POWER"
        ]
      },
      "message": "Electricity-access evidence must not be used as a substitute for national grid-reliability evidence."
    },
    {
      "code": "SUBSCRIPTIONS_NOT_UNIQUE_USERS",
      "label": "Subscriptions are not unique users",
      "triggers": {
        "indicatorIds": [
          "ind-mobile-money-subscriptions",
          "ind-mobile-money-penetration"
        ]
      },
      "message": "Subscription counts or penetration must not be presented as unique payment-user counts."
    },
    {
      "code": "PROVIDER_ANNOUNCEMENT_NOT_NATIONAL_CAPACITY",
      "label": "Provider announcement is not national capacity",
      "triggers": {
        "sourceClasses": [
          "COMPANY_ANNOUNCEMENT"
        ]
      },
      "message": "A provider announcement must not be converted into verified operational national capacity."
    },
    {
      "code": "MISSING_NOT_ZERO",
      "label": "Missing is not zero",
      "triggers": {
        "valueStates": [
          "MISSING"
        ]
      },
      "message": "Missing or unavailable evidence must not be encoded, displayed, or inferred as zero."
    },
    {
      "code": "NON_COMPARABLE_NOT_RANKABLE",
      "label": "Non-comparable evidence cannot rank markets",
      "triggers": {
        "comparability": [
          "NOT_COMPARABLE",
          "CONTEXT_ONLY"
        ]
      },
      "message": "Context-only or non-comparable evidence must not be used in a country league table or investment ranking."
    }
  ]
}
