{
  "id": "CMP-089",
  "slug": "cmp-089",
  "title": "Some opt-in must be described somewhere",
  "statement": "The description or the message flow must describe some form of opt-in, however briefly.",
  "rationale": "This is the floor beneath every other consent rule: a submission that never mentions how anyone joined the list is indistinguishable from one where nobody did. It is a different failure from a thin description — the elements are not merely incomplete, the subject is absent — and it is fixed by writing a sentence rather than by improving one.",
  "layer": "CAMPAIGN",
  "layerSlug": "campaign",
  "object": "campaign.description + campaign.message_flow",
  "severity": "BLOCKING",
  "detectability": [
    "AI_FORM"
  ],
  "failureClass": "RETRY_FIELD",
  "authorities": [
    "Bandwidth"
  ],
  "codes": [
    {
      "provider": "Bandwidth",
      "code": "2100",
      "remediable": true
    }
  ],
  "applicability": {
    "excludeUseCases": [
      "M2M"
    ]
  },
  "applicabilityText": "Applies when the use case is NOT M2M.",
  "universal": false,
  "remediation": "Write one sentence saying where consumers agree to receive the messages, then expand it into a full flow. Done when a reader can answer \"how did these people end up on this list?\" from the submission alone.",
  "example": "Customers opt in at checkout on acmecoffee.com by ticking a box to receive offers by text.",
  "notes": "The presence floor beneath CMP-059's quality bar. Kept separate because they fail and are fixed differently: CMP-059 grades a described mechanism against a standard, while this one asks whether a mechanism was described at all, and a submission failing this one fails CMP-059 for a reason that would mislead.",
  "phase": "approval",
  "automated": true,
  "url": "https://ekas.io/rules/10dlc/campaign/cmp-089/",
  "markdown": "https://ekas.io/rules/10dlc/campaign/cmp-089.md",
  "registry": "https://ekas.io/rules/10dlc/",
  "updated": "2026-07-25",
  "licence": "CC BY 4.0 — https://creativecommons.org/licenses/by/4.0/"
}
