{
  "id": "CMP-USECASE-ENUM",
  "slug": "cmp-usecase-enum",
  "title": "Use case must be a recognised TCR value",
  "statement": "The declared use case must be one of the recognised TCR use-case values.",
  "rationale": "The use case drives the consent standard, the throughput granted, and the filtering applied, so an unrecognised value cannot be processed at all. Free-text or dropdown-label values coerced silently to a catch-all are worse than an error, because the campaign is then judged against rules nobody chose.",
  "layer": "CAMPAIGN",
  "layerSlug": "campaign",
  "object": "campaign.usecase",
  "severity": "BLOCKING",
  "detectability": [
    "DETERMINISTIC"
  ],
  "failureClass": "RETRY_FIELD",
  "authorities": [
    "TCR",
    "Twilio",
    "Bandwidth",
    "AWS"
  ],
  "applicabilityText": "Applies to every 10DLC registration.",
  "universal": true,
  "remediation": "Select a use case from the standard TCR list rather than typing a description. If none fits exactly, MIXED is the catch-all — but it carries promotional-grade consent obligations.",
  "example": "Use case: MARKETING",
  "pitfalls": [
    "Silent coercion of an unrecognised value to MIXED hides the problem and changes which rules apply."
  ],
  "notes": "Carries a descriptive id rather than a catalog one because no catalog row states this requirement; it is the precondition the use-case matrix rules depend on. It previously carried the id CMP-140, which belongs to an unrelated row (\"read mnoMetadata.minMsgSamples per MNO\") and made that row read as covered when nothing implements it.",
  "phase": "approval",
  "automated": true,
  "url": "https://ekas.io/rules/10dlc/campaign/cmp-usecase-enum/",
  "markdown": "https://ekas.io/rules/10dlc/campaign/cmp-usecase-enum.md",
  "registry": "https://ekas.io/rules/10dlc/",
  "updated": "2026-07-25",
  "licence": "CC BY 4.0 — https://creativecommons.org/licenses/by/4.0/"
}
