{
  "id": "OPS-079",
  "slug": "ops-079",
  "title": "HELP must work in every form it arrives in",
  "statement": "HELP must be case-insensitive, functional over both SMS and MMS, and functional in the programme's language without erroring on the English keyword.",
  "rationale": "HELP is the fallback when everything else has confused somebody, so it is the last handler that should be fussy about how it is spelled or which protocol carried it. Each of these variations is a separate code path in most platforms, and the ones that fail are invariably the ones nobody tested because the happy path was obvious.",
  "layer": "OPERATIONAL",
  "layerSlug": "operational",
  "object": "HELP keyword handler",
  "severity": "HIGH",
  "detectability": [
    "UNDETECTABLE_PRE_SUBMISSION"
  ],
  "failureClass": "TERMINAL_EXTERNAL",
  "authorities": [
    "CTIA",
    "MMA"
  ],
  "applicabilityText": "Applies to every 10DLC registration.",
  "universal": true,
  "remediation": "Normalise the inbound body before matching, share one handler across SMS and MMS, and register the local-language help word alongside HELP rather than instead of it. Done when \"help\", \"AYUDA\" and a HELP sent as an MMS reply all return the same information.",
  "example": "Keyword table: HELP, INFO, SUPPORT, AYUDA — matched case-insensitively on either protocol.",
  "notes": "Three code paths we cannot see. What the user has to do is send the three variants to their own number after launch; OPS-081 is the registration-side twin, checking that the destinations inside the reply actually reach help.",
  "phase": "post",
  "automated": false,
  "attestation": {
    "question": "Do \"help\", \"AYUDA\" and a HELP sent as an MMS reply all return the same information?",
    "howToCheck": [
      "Send all three to your own number after launch.",
      "Confirm the local-language help word was registered alongside HELP rather than instead of it.",
      "Confirm one handler serves both SMS and MMS."
    ],
    "failureLooksLike": "Each variation is a separate code path in most platforms, and the ones that fail are invariably the ones nobody tested because the happy path was obvious."
  },
  "url": "https://ekas.io/rules/10dlc/operational/ops-079/",
  "markdown": "https://ekas.io/rules/10dlc/operational/ops-079.md",
  "registry": "https://ekas.io/rules/10dlc/",
  "updated": "2026-07-25",
  "licence": "CC BY 4.0 — https://creativecommons.org/licenses/by/4.0/"
}
