{"abstract":"\"11\" is classified as a short code.","category":"Phone number formatting","checks":14,"contract":"Strip. \"+\" followed by 8..15 digits is a long code (else invalid). All digits: 3..6 is a short code, 8..15 is a long code rendered with a leading \"+\", anything else invalid. Otherwise 1..11 characters of letters, digits, space, hyphen or dot with at least one letter is an alphanumeric sender. Return [kind, value].","evaluation_group":"w2-phone-number-formatting-sms-sender","failed_approach":"Capping short codes at five digits rejects six-digit codes.","family":"w2-phone-number-formatting-sms-sender-short-code-range","id":"FA-96616","implementations":{"attempt":{"sha256":"909fa1fad49875e592977d051acd52eadcd99e9d16953deefef8d7025f50d29c","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    s = x.strip()\n    if s.startswith('+'):\n        d = s[1:]\n        if d.isdigit() and 8 <= len(d) <= 15:\n            return ['longcode', s]\n        return ['invalid', s]\n    if s.isdigit():\n        if 3 <= len(s) <= 5:\n            return ['shortcode', s]\n        if 8 <= len(s) <= 15:\n            return ['longcode', '+' + s]\n        return ['invalid', s]\n    if 1 <= len(s) <= 11 and any(c.isalpha() for c in s) and all(c.isalnum() or c in ' -.' for c in s):\n        return ['alpha', s]\n    return ['invalid', s]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['three-digit short code', '121', ['shortcode', '121']], ['two digits too short', '11', ['invalid', '11']], ['six-digit short code', '123451', ['shortcode', '123451']], ['bare long number gains a plus', '425550111', ['longcode', '+425550111']], ['plus long number', '+425550111', ['longcode', '+425550111']], ['plus with too few digits', '+12145', ['invalid', '+12145']], ['plus with sixteen digits', '+1234567890123456', ['invalid', '+1234567890123456']], ['alphanumeric sender', ' FAKECO1 ', ['alpha', 'FAKECO1']], ['eleven-character sender', 'FAKECOSHOPS', ['alpha', 'FAKECOSHOPS']], ['twelve-character sender', 'FAKECOSHOPS1', ['invalid', 'FAKECOSHOPS1']], ['digits and hyphen without letters', '12-31', ['invalid', '12-31']], ['sender starting with a digit', '1GO', ['alpha', '1GO']], ['asterisk rejected', 'FAKE*CO', ['invalid', 'FAKE*CO']], ['space allowed', 'FAKE CO', ['alpha', 'FAKE CO']]], [['three-digit short code', '122', ['shortcode', '122']], ['two digits too short', '22', ['invalid', '22']], ['six-digit short code', '123452', ['shortcode', '123452']], ['bare long number gains a plus', '425550122', ['longcode', '+425550122']], ['plus long number', '+425550122', ['longcode', '+425550122']], ['plus with too few digits', '+12245', ['invalid', '+12245']], ['plus with sixteen digits', '+1234567890223456', ['invalid', '+1234567890223456']], ['alphanumeric sender', ' FAKECO2 ', ['alpha', 'FAKECO2']], ['eleven-character sender', 'FAKECOSHOPS', ['alpha', 'FAKECOSHOPS']], ['twelve-character sender', 'FAKECOSHOPS2', ['invalid', 'FAKECOSHOPS2']], ['digits and hyphen without letters', '12-32', ['invalid', '12-32']], ['sender starting with a digit', '2GO', ['alpha', '2GO']], ['asterisk rejected', 'FAKE*CO', ['invalid', 'FAKE*CO']], ['space allowed', 'FAKE CO', ['alpha', 'FAKE CO']]], [['three-digit short code', '123', ['shortcode', '123']], ['two digits too short', '33', ['invalid', '33']], ['six-digit short code', '123453', ['shortcode', '123453']], ['bare long number gains a plus', '425550133', ['longcode', '+425550133']], ['plus long number', '+425550133', ['longcode', '+425550133']], ['plus with too few digits', '+12345', ['invalid', '+12345']], ['plus with sixteen digits', '+1234567890323456', ['invalid', '+1234567890323456']], ['alphanumeric sender', ' FAKECO3 ', ['alpha', 'FAKECO3']], ['eleven-character sender', 'FAKECOSHOPS', ['alpha', 'FAKECOSHOPS']], ['twelve-character sender', 'FAKECOSHOPS3', ['invalid', 'FAKECOSHOPS3']], ['digits and hyphen without letters', '12-33', ['invalid', '12-33']], ['sender starting with a digit', '3GO', ['alpha', '3GO']], ['asterisk rejected', 'FAKE*CO', ['invalid', 'FAKE*CO']], ['space allowed', 'FAKE CO', ['alpha', 'FAKE CO']]], [['three-digit short code', '124', ['shortcode', '124']], ['two digits too short', '44', ['invalid', '44']], ['six-digit short code', '123454', ['shortcode', '123454']], ['bare long number gains a plus', '425550144', ['longcode', '+425550144']], ['plus long number', '+425550144', ['longcode', '+425550144']], ['plus with too few digits', '+12445', ['invalid', '+12445']], ['plus with sixteen digits', '+1234567890423456', ['invalid', '+1234567890423456']], ['alphanumeric sender', ' FAKECO4 ', ['alpha', 'FAKECO4']], ['eleven-character sender', 'FAKECOSHOPS', ['alpha', 'FAKECOSHOPS']], ['twelve-character sender', 'FAKECOSHOPS4', ['invalid', 'FAKECOSHOPS4']], ['digits and hyphen without letters', '12-34', ['invalid', '12-34']], ['sender starting with a digit', '4GO', ['alpha', '4GO']], ['asterisk rejected', 'FAKE*CO', ['invalid', 'FAKE*CO']], ['space allowed', 'FAKE CO', ['alpha', 'FAKE CO']]], [['three-digit short code', '125', ['shortcode', '125']], ['two digits too short', '55', ['invalid', '55']], ['six-digit short code', '123455', ['shortcode', '123455']], ['bare long number gains a plus', '425550155', ['longcode', '+425550155']], ['plus long number', '+425550155', ['longcode', '+425550155']], ['plus with too few digits', '+12545', ['invalid', '+12545']], ['plus with sixteen digits', '+1234567890523456', ['invalid', '+1234567890523456']], ['alphanumeric sender', ' FAKECO5 ', ['alpha', 'FAKECO5']], ['eleven-character sender', 'FAKECOSHOPS', ['alpha', 'FAKECOSHOPS']], ['twelve-character sender', 'FAKECOSHOPS5', ['invalid', 'FAKECOSHOPS5']], ['digits and hyphen without letters', '12-35', ['invalid', '12-35']], ['sender starting with a digit', '5GO', ['alpha', '5GO']], ['asterisk rejected', 'FAKE*CO', ['invalid', 'FAKE*CO']], ['space allowed', 'FAKE CO', ['alpha', 'FAKE CO']]]]\nfor label, arg, expected in fixtures[N - 1]:\n    check(label, solve(arg), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"4ffec879e361250e6462f235bf973a4dee68a8c24ad9a4058b4ba404257e7c7b","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    s = x.strip()\n    if s.startswith('+'):\n        d = s[1:]\n        if d.isdigit() and 8 <= len(d) <= 15:\n            return ['longcode', s]\n        return ['invalid', s]\n    if s.isdigit():\n        if len(s) <= 6:\n            return ['shortcode', s]\n        if 8 <= len(s) <= 15:\n            return ['longcode', '+' + s]\n        return ['invalid', s]\n    if 1 <= len(s) <= 11 and any(c.isalpha() for c in s) and all(c.isalnum() or c in ' -.' for c in s):\n        return ['alpha', s]\n    return ['invalid', s]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['three-digit short code', '121', ['shortcode', '121']], ['two digits too short', '11', ['invalid', '11']], ['six-digit short code', '123451', ['shortcode', '123451']], ['bare long number gains a plus', '425550111', ['longcode', '+425550111']], ['plus long number', '+425550111', ['longcode', '+425550111']], ['plus with too few digits', '+12145', ['invalid', '+12145']], ['plus with sixteen digits', '+1234567890123456', ['invalid', '+1234567890123456']], ['alphanumeric sender', ' FAKECO1 ', ['alpha', 'FAKECO1']], ['eleven-character sender', 'FAKECOSHOPS', ['alpha', 'FAKECOSHOPS']], ['twelve-character sender', 'FAKECOSHOPS1', ['invalid', 'FAKECOSHOPS1']], ['digits and hyphen without letters', '12-31', ['invalid', '12-31']], ['sender starting with a digit', '1GO', ['alpha', '1GO']], ['asterisk rejected', 'FAKE*CO', ['invalid', 'FAKE*CO']], ['space allowed', 'FAKE CO', ['alpha', 'FAKE CO']]], [['three-digit short code', '122', ['shortcode', '122']], ['two digits too short', '22', ['invalid', '22']], ['six-digit short code', '123452', ['shortcode', '123452']], ['bare long number gains a plus', '425550122', ['longcode', '+425550122']], ['plus long number', '+425550122', ['longcode', '+425550122']], ['plus with too few digits', '+12245', ['invalid', '+12245']], ['plus with sixteen digits', '+1234567890223456', ['invalid', '+1234567890223456']], ['alphanumeric sender', ' FAKECO2 ', ['alpha', 'FAKECO2']], ['eleven-character sender', 'FAKECOSHOPS', ['alpha', 'FAKECOSHOPS']], ['twelve-character sender', 'FAKECOSHOPS2', ['invalid', 'FAKECOSHOPS2']], ['digits and hyphen without letters', '12-32', ['invalid', '12-32']], ['sender starting with a digit', '2GO', ['alpha', '2GO']], ['asterisk rejected', 'FAKE*CO', ['invalid', 'FAKE*CO']], ['space allowed', 'FAKE CO', ['alpha', 'FAKE CO']]], [['three-digit short code', '123', ['shortcode', '123']], ['two digits too short', '33', ['invalid', '33']], ['six-digit short code', '123453', ['shortcode', '123453']], ['bare long number gains a plus', '425550133', ['longcode', '+425550133']], ['plus long number', '+425550133', ['longcode', '+425550133']], ['plus with too few digits', '+12345', ['invalid', '+12345']], ['plus with sixteen digits', '+1234567890323456', ['invalid', '+1234567890323456']], ['alphanumeric sender', ' FAKECO3 ', ['alpha', 'FAKECO3']], ['eleven-character sender', 'FAKECOSHOPS', ['alpha', 'FAKECOSHOPS']], ['twelve-character sender', 'FAKECOSHOPS3', ['invalid', 'FAKECOSHOPS3']], ['digits and hyphen without letters', '12-33', ['invalid', '12-33']], ['sender starting with a digit', '3GO', ['alpha', '3GO']], ['asterisk rejected', 'FAKE*CO', ['invalid', 'FAKE*CO']], ['space allowed', 'FAKE CO', ['alpha', 'FAKE CO']]], [['three-digit short code', '124', ['shortcode', '124']], ['two digits too short', '44', ['invalid', '44']], ['six-digit short code', '123454', ['shortcode', '123454']], ['bare long number gains a plus', '425550144', ['longcode', '+425550144']], ['plus long number', '+425550144', ['longcode', '+425550144']], ['plus with too few digits', '+12445', ['invalid', '+12445']], ['plus with sixteen digits', '+1234567890423456', ['invalid', '+1234567890423456']], ['alphanumeric sender', ' FAKECO4 ', ['alpha', 'FAKECO4']], ['eleven-character sender', 'FAKECOSHOPS', ['alpha', 'FAKECOSHOPS']], ['twelve-character sender', 'FAKECOSHOPS4', ['invalid', 'FAKECOSHOPS4']], ['digits and hyphen without letters', '12-34', ['invalid', '12-34']], ['sender starting with a digit', '4GO', ['alpha', '4GO']], ['asterisk rejected', 'FAKE*CO', ['invalid', 'FAKE*CO']], ['space allowed', 'FAKE CO', ['alpha', 'FAKE CO']]], [['three-digit short code', '125', ['shortcode', '125']], ['two digits too short', '55', ['invalid', '55']], ['six-digit short code', '123455', ['shortcode', '123455']], ['bare long number gains a plus', '425550155', ['longcode', '+425550155']], ['plus long number', '+425550155', ['longcode', '+425550155']], ['plus with too few digits', '+12545', ['invalid', '+12545']], ['plus with sixteen digits', '+1234567890523456', ['invalid', '+1234567890523456']], ['alphanumeric sender', ' FAKECO5 ', ['alpha', 'FAKECO5']], ['eleven-character sender', 'FAKECOSHOPS', ['alpha', 'FAKECOSHOPS']], ['twelve-character sender', 'FAKECOSHOPS5', ['invalid', 'FAKECOSHOPS5']], ['digits and hyphen without letters', '12-35', ['invalid', '12-35']], ['sender starting with a digit', '5GO', ['alpha', '5GO']], ['asterisk rejected', 'FAKE*CO', ['invalid', 'FAKE*CO']], ['space allowed', 'FAKE CO', ['alpha', 'FAKE CO']]]]\nfor label, arg, expected in fixtures[N - 1]:\n    check(label, solve(arg), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"fixed":{"sha256":"fb44e76efa4a0ec345206f03b593b6faae0a2d67463db03410463907641e059c","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    s = x.strip()\n    if s.startswith('+'):\n        d = s[1:]\n        if d.isdigit() and 8 <= len(d) <= 15:\n            return ['longcode', s]\n        return ['invalid', s]\n    if s.isdigit():\n        if 3 <= len(s) <= 6:\n            return ['shortcode', s]\n        if 8 <= len(s) <= 15:\n            return ['longcode', '+' + s]\n        return ['invalid', s]\n    if 1 <= len(s) <= 11 and any(c.isalpha() for c in s) and all(c.isalnum() or c in ' -.' for c in s):\n        return ['alpha', s]\n    return ['invalid', s]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['three-digit short code', '121', ['shortcode', '121']], ['two digits too short', '11', ['invalid', '11']], ['six-digit short code', '123451', ['shortcode', '123451']], ['bare long number gains a plus', '425550111', ['longcode', '+425550111']], ['plus long number', '+425550111', ['longcode', '+425550111']], ['plus with too few digits', '+12145', ['invalid', '+12145']], ['plus with sixteen digits', '+1234567890123456', ['invalid', '+1234567890123456']], ['alphanumeric sender', ' FAKECO1 ', ['alpha', 'FAKECO1']], ['eleven-character sender', 'FAKECOSHOPS', ['alpha', 'FAKECOSHOPS']], ['twelve-character sender', 'FAKECOSHOPS1', ['invalid', 'FAKECOSHOPS1']], ['digits and hyphen without letters', '12-31', ['invalid', '12-31']], ['sender starting with a digit', '1GO', ['alpha', '1GO']], ['asterisk rejected', 'FAKE*CO', ['invalid', 'FAKE*CO']], ['space allowed', 'FAKE CO', ['alpha', 'FAKE CO']]], [['three-digit short code', '122', ['shortcode', '122']], ['two digits too short', '22', ['invalid', '22']], ['six-digit short code', '123452', ['shortcode', '123452']], ['bare long number gains a plus', '425550122', ['longcode', '+425550122']], ['plus long number', '+425550122', ['longcode', '+425550122']], ['plus with too few digits', '+12245', ['invalid', '+12245']], ['plus with sixteen digits', '+1234567890223456', ['invalid', '+1234567890223456']], ['alphanumeric sender', ' FAKECO2 ', ['alpha', 'FAKECO2']], ['eleven-character sender', 'FAKECOSHOPS', ['alpha', 'FAKECOSHOPS']], ['twelve-character sender', 'FAKECOSHOPS2', ['invalid', 'FAKECOSHOPS2']], ['digits and hyphen without letters', '12-32', ['invalid', '12-32']], ['sender starting with a digit', '2GO', ['alpha', '2GO']], ['asterisk rejected', 'FAKE*CO', ['invalid', 'FAKE*CO']], ['space allowed', 'FAKE CO', ['alpha', 'FAKE CO']]], [['three-digit short code', '123', ['shortcode', '123']], ['two digits too short', '33', ['invalid', '33']], ['six-digit short code', '123453', ['shortcode', '123453']], ['bare long number gains a plus', '425550133', ['longcode', '+425550133']], ['plus long number', '+425550133', ['longcode', '+425550133']], ['plus with too few digits', '+12345', ['invalid', '+12345']], ['plus with sixteen digits', '+1234567890323456', ['invalid', '+1234567890323456']], ['alphanumeric sender', ' FAKECO3 ', ['alpha', 'FAKECO3']], ['eleven-character sender', 'FAKECOSHOPS', ['alpha', 'FAKECOSHOPS']], ['twelve-character sender', 'FAKECOSHOPS3', ['invalid', 'FAKECOSHOPS3']], ['digits and hyphen without letters', '12-33', ['invalid', '12-33']], ['sender starting with a digit', '3GO', ['alpha', '3GO']], ['asterisk rejected', 'FAKE*CO', ['invalid', 'FAKE*CO']], ['space allowed', 'FAKE CO', ['alpha', 'FAKE CO']]], [['three-digit short code', '124', ['shortcode', '124']], ['two digits too short', '44', ['invalid', '44']], ['six-digit short code', '123454', ['shortcode', '123454']], ['bare long number gains a plus', '425550144', ['longcode', '+425550144']], ['plus long number', '+425550144', ['longcode', '+425550144']], ['plus with too few digits', '+12445', ['invalid', '+12445']], ['plus with sixteen digits', '+1234567890423456', ['invalid', '+1234567890423456']], ['alphanumeric sender', ' FAKECO4 ', ['alpha', 'FAKECO4']], ['eleven-character sender', 'FAKECOSHOPS', ['alpha', 'FAKECOSHOPS']], ['twelve-character sender', 'FAKECOSHOPS4', ['invalid', 'FAKECOSHOPS4']], ['digits and hyphen without letters', '12-34', ['invalid', '12-34']], ['sender starting with a digit', '4GO', ['alpha', '4GO']], ['asterisk rejected', 'FAKE*CO', ['invalid', 'FAKE*CO']], ['space allowed', 'FAKE CO', ['alpha', 'FAKE CO']]], [['three-digit short code', '125', ['shortcode', '125']], ['two digits too short', '55', ['invalid', '55']], ['six-digit short code', '123455', ['shortcode', '123455']], ['bare long number gains a plus', '425550155', ['longcode', '+425550155']], ['plus long number', '+425550155', ['longcode', '+425550155']], ['plus with too few digits', '+12545', ['invalid', '+12545']], ['plus with sixteen digits', '+1234567890523456', ['invalid', '+1234567890523456']], ['alphanumeric sender', ' FAKECO5 ', ['alpha', 'FAKECO5']], ['eleven-character sender', 'FAKECOSHOPS', ['alpha', 'FAKECOSHOPS']], ['twelve-character sender', 'FAKECOSHOPS5', ['invalid', 'FAKECOSHOPS5']], ['digits and hyphen without letters', '12-35', ['invalid', '12-35']], ['sender starting with a digit', '5GO', ['alpha', '5GO']], ['asterisk rejected', 'FAKE*CO', ['invalid', 'FAKE*CO']], ['space allowed', 'FAKE CO', ['alpha', 'FAKE CO']]]]\nfor label, arg, expected in fixtures[N - 1]:\n    check(label, solve(arg), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"A deterministic toy contract over synthetic, obviously fictitious telephone numbers and toy country tables. The rules are stipulated for this model only and make no claim of conformance with any numbering plan or telecommunications standard. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"w2-phone-number-formatting-sms-sender-short-code-range","generated_at":"2026-09-29T14:52:24.379423+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Sender identifiers are normalized before messages are queued; a misclassified sender is rejected by the carrier or impersonates another sender.","repair":"Require three to six digits.","root_cause":"The short-code range has no lower bound.","sha256":"f5b7d4aa5fd777db823f0ecc77a21e6c62469a1d082bf3954d987796758d2e40","title":"SMS sender identifier classifier: two-digit short codes are accepted · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":40.952,"exit_code":1,"observations":[{"actual":["shortcode","121"],"check":"three-digit short code","expected":["shortcode","121"],"passed":true},{"actual":["invalid","11"],"check":"two digits too short","expected":["invalid","11"],"passed":true},{"actual":["invalid","123451"],"check":"six-digit short code","expected":["shortcode","123451"],"passed":false},{"actual":["longcode","+425550111"],"check":"bare long number gains a plus","expected":["longcode","+425550111"],"passed":true},{"actual":["longcode","+425550111"],"check":"plus long number","expected":["longcode","+425550111"],"passed":true},{"actual":["invalid","+12145"],"check":"plus with too few digits","expected":["invalid","+12145"],"passed":true},{"actual":["invalid","+1234567890123456"],"check":"plus with sixteen digits","expected":["invalid","+1234567890123456"],"passed":true},{"actual":["alpha","FAKECO1"],"check":"alphanumeric sender","expected":["alpha","FAKECO1"],"passed":true},{"actual":["alpha","FAKECOSHOPS"],"check":"eleven-character sender","expected":["alpha","FAKECOSHOPS"],"passed":true},{"actual":["invalid","FAKECOSHOPS1"],"check":"twelve-character sender","expected":["invalid","FAKECOSHOPS1"],"passed":true},{"actual":["invalid","12-31"],"check":"digits and hyphen without letters","expected":["invalid","12-31"],"passed":true},{"actual":["alpha","1GO"],"check":"sender starting with a digit","expected":["alpha","1GO"],"passed":true},{"actual":["invalid","FAKE*CO"],"check":"asterisk rejected","expected":["invalid","FAKE*CO"],"passed":true},{"actual":["alpha","FAKE CO"],"check":"space allowed","expected":["alpha","FAKE CO"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"three-digit short code\", \"actual\": [\"shortcode\", \"121\"], \"expected\": [\"shortcode\", \"121\"], \"passed\": true}, {\"check\": \"two digits too short\", \"actual\": [\"invalid\", \"11\"], \"expected\": [\"invalid\", \"11\"], \"passed\": true}, {\"check\": \"six-digit short code\", \"actual\": [\"invalid\", \"123451\"], \"expected\": [\"shortcode\", \"123451\"], \"passed\": false}, {\"check\": \"bare long number gains a plus\", \"actual\": [\"longcode\", \"+425550111\"], \"expected\": [\"longcode\", \"+425550111\"], \"passed\": true}, {\"check\": \"plus long number\", \"actual\": [\"longcode\", \"+425550111\"], \"expected\": [\"longcode\", \"+425550111\"], \"passed\": true}, {\"check\": \"plus with too few digits\", \"actual\": [\"invalid\", \"+12145\"], \"expected\": [\"invalid\", \"+12145\"], \"passed\": true}, {\"check\": \"plus with sixteen digits\", \"actual\": [\"invalid\", \"+1234567890123456\"], \"expected\": [\"invalid\", \"+1234567890123456\"], \"passed\": true}, {\"check\": \"alphanumeric sender\", \"actual\": [\"alpha\", \"FAKECO1\"], \"expected\": [\"alpha\", \"FAKECO1\"], \"passed\": true}, {\"check\": \"eleven-character sender\", \"actual\": [\"alpha\", \"FAKECOSHOPS\"], \"expected\": [\"alpha\", \"FAKECOSHOPS\"], \"passed\": true}, {\"check\": \"twelve-character sender\", \"actual\": [\"invalid\", \"FAKECOSHOPS1\"], \"expected\": [\"invalid\", \"FAKECOSHOPS1\"], \"passed\": true}, {\"check\": \"digits and hyphen without letters\", \"actual\": [\"invalid\", \"12-31\"], \"expected\": [\"invalid\", \"12-31\"], \"passed\": true}, {\"check\": \"sender starting with a digit\", \"actual\": [\"alpha\", \"1GO\"], \"expected\": [\"alpha\", \"1GO\"], \"passed\": true}, {\"check\": \"asterisk rejected\", \"actual\": [\"invalid\", \"FAKE*CO\"], \"expected\": [\"invalid\", \"FAKE*CO\"], \"passed\": true}, {\"check\": \"space allowed\", \"actual\": [\"alpha\", \"FAKE CO\"], \"expected\": [\"alpha\", \"FAKE CO\"], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.452,"exit_code":1,"observations":[{"actual":["shortcode","121"],"check":"three-digit short code","expected":["shortcode","121"],"passed":true},{"actual":["shortcode","11"],"check":"two digits too short","expected":["invalid","11"],"passed":false},{"actual":["shortcode","123451"],"check":"six-digit short code","expected":["shortcode","123451"],"passed":true},{"actual":["longcode","+425550111"],"check":"bare long number gains a plus","expected":["longcode","+425550111"],"passed":true},{"actual":["longcode","+425550111"],"check":"plus long number","expected":["longcode","+425550111"],"passed":true},{"actual":["invalid","+12145"],"check":"plus with too few digits","expected":["invalid","+12145"],"passed":true},{"actual":["invalid","+1234567890123456"],"check":"plus with sixteen digits","expected":["invalid","+1234567890123456"],"passed":true},{"actual":["alpha","FAKECO1"],"check":"alphanumeric sender","expected":["alpha","FAKECO1"],"passed":true},{"actual":["alpha","FAKECOSHOPS"],"check":"eleven-character sender","expected":["alpha","FAKECOSHOPS"],"passed":true},{"actual":["invalid","FAKECOSHOPS1"],"check":"twelve-character sender","expected":["invalid","FAKECOSHOPS1"],"passed":true},{"actual":["invalid","12-31"],"check":"digits and hyphen without letters","expected":["invalid","12-31"],"passed":true},{"actual":["alpha","1GO"],"check":"sender starting with a digit","expected":["alpha","1GO"],"passed":true},{"actual":["invalid","FAKE*CO"],"check":"asterisk rejected","expected":["invalid","FAKE*CO"],"passed":true},{"actual":["alpha","FAKE CO"],"check":"space allowed","expected":["alpha","FAKE CO"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"three-digit short code\", \"actual\": [\"shortcode\", \"121\"], \"expected\": [\"shortcode\", \"121\"], \"passed\": true}, {\"check\": \"two digits too short\", \"actual\": [\"shortcode\", \"11\"], \"expected\": [\"invalid\", \"11\"], \"passed\": false}, {\"check\": \"six-digit short code\", \"actual\": [\"shortcode\", \"123451\"], \"expected\": [\"shortcode\", \"123451\"], \"passed\": true}, {\"check\": \"bare long number gains a plus\", \"actual\": [\"longcode\", \"+425550111\"], \"expected\": [\"longcode\", \"+425550111\"], \"passed\": true}, {\"check\": \"plus long number\", \"actual\": [\"longcode\", \"+425550111\"], \"expected\": [\"longcode\", \"+425550111\"], \"passed\": true}, {\"check\": \"plus with too few digits\", \"actual\": [\"invalid\", \"+12145\"], \"expected\": [\"invalid\", \"+12145\"], \"passed\": true}, {\"check\": \"plus with sixteen digits\", \"actual\": [\"invalid\", \"+1234567890123456\"], \"expected\": [\"invalid\", \"+1234567890123456\"], \"passed\": true}, {\"check\": \"alphanumeric sender\", \"actual\": [\"alpha\", \"FAKECO1\"], \"expected\": [\"alpha\", \"FAKECO1\"], \"passed\": true}, {\"check\": \"eleven-character sender\", \"actual\": [\"alpha\", \"FAKECOSHOPS\"], \"expected\": [\"alpha\", \"FAKECOSHOPS\"], \"passed\": true}, {\"check\": \"twelve-character sender\", \"actual\": [\"invalid\", \"FAKECOSHOPS1\"], \"expected\": [\"invalid\", \"FAKECOSHOPS1\"], \"passed\": true}, {\"check\": \"digits and hyphen without letters\", \"actual\": [\"invalid\", \"12-31\"], \"expected\": [\"invalid\", \"12-31\"], \"passed\": true}, {\"check\": \"sender starting with a digit\", \"actual\": [\"alpha\", \"1GO\"], \"expected\": [\"alpha\", \"1GO\"], \"passed\": true}, {\"check\": \"asterisk rejected\", \"actual\": [\"invalid\", \"FAKE*CO\"], \"expected\": [\"invalid\", \"FAKE*CO\"], \"passed\": true}, {\"check\": \"space allowed\", \"actual\": [\"alpha\", \"FAKE CO\"], \"expected\": [\"alpha\", \"FAKE CO\"], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":43.203,"exit_code":0,"observations":[{"actual":["shortcode","121"],"check":"three-digit short code","expected":["shortcode","121"],"passed":true},{"actual":["invalid","11"],"check":"two digits too short","expected":["invalid","11"],"passed":true},{"actual":["shortcode","123451"],"check":"six-digit short code","expected":["shortcode","123451"],"passed":true},{"actual":["longcode","+425550111"],"check":"bare long number gains a plus","expected":["longcode","+425550111"],"passed":true},{"actual":["longcode","+425550111"],"check":"plus long number","expected":["longcode","+425550111"],"passed":true},{"actual":["invalid","+12145"],"check":"plus with too few digits","expected":["invalid","+12145"],"passed":true},{"actual":["invalid","+1234567890123456"],"check":"plus with sixteen digits","expected":["invalid","+1234567890123456"],"passed":true},{"actual":["alpha","FAKECO1"],"check":"alphanumeric sender","expected":["alpha","FAKECO1"],"passed":true},{"actual":["alpha","FAKECOSHOPS"],"check":"eleven-character sender","expected":["alpha","FAKECOSHOPS"],"passed":true},{"actual":["invalid","FAKECOSHOPS1"],"check":"twelve-character sender","expected":["invalid","FAKECOSHOPS1"],"passed":true},{"actual":["invalid","12-31"],"check":"digits and hyphen without letters","expected":["invalid","12-31"],"passed":true},{"actual":["alpha","1GO"],"check":"sender starting with a digit","expected":["alpha","1GO"],"passed":true},{"actual":["invalid","FAKE*CO"],"check":"asterisk rejected","expected":["invalid","FAKE*CO"],"passed":true},{"actual":["alpha","FAKE CO"],"check":"space allowed","expected":["alpha","FAKE CO"],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"three-digit short code\", \"actual\": [\"shortcode\", \"121\"], \"expected\": [\"shortcode\", \"121\"], \"passed\": true}, {\"check\": \"two digits too short\", \"actual\": [\"invalid\", \"11\"], \"expected\": [\"invalid\", \"11\"], \"passed\": true}, {\"check\": \"six-digit short code\", \"actual\": [\"shortcode\", \"123451\"], \"expected\": [\"shortcode\", \"123451\"], \"passed\": true}, {\"check\": \"bare long number gains a plus\", \"actual\": [\"longcode\", \"+425550111\"], \"expected\": [\"longcode\", \"+425550111\"], \"passed\": true}, {\"check\": \"plus long number\", \"actual\": [\"longcode\", \"+425550111\"], \"expected\": [\"longcode\", \"+425550111\"], \"passed\": true}, {\"check\": \"plus with too few digits\", \"actual\": [\"invalid\", \"+12145\"], \"expected\": [\"invalid\", \"+12145\"], \"passed\": true}, {\"check\": \"plus with sixteen digits\", \"actual\": [\"invalid\", \"+1234567890123456\"], \"expected\": [\"invalid\", \"+1234567890123456\"], \"passed\": true}, {\"check\": \"alphanumeric sender\", \"actual\": [\"alpha\", \"FAKECO1\"], \"expected\": [\"alpha\", \"FAKECO1\"], \"passed\": true}, {\"check\": \"eleven-character sender\", \"actual\": [\"alpha\", \"FAKECOSHOPS\"], \"expected\": [\"alpha\", \"FAKECOSHOPS\"], \"passed\": true}, {\"check\": \"twelve-character sender\", \"actual\": [\"invalid\", \"FAKECOSHOPS1\"], \"expected\": [\"invalid\", \"FAKECOSHOPS1\"], \"passed\": true}, {\"check\": \"digits and hyphen without letters\", \"actual\": [\"invalid\", \"12-31\"], \"expected\": [\"invalid\", \"12-31\"], \"passed\": true}, {\"check\": \"sender starting with a digit\", \"actual\": [\"alpha\", \"1GO\"], \"expected\": [\"alpha\", \"1GO\"], \"passed\": true}, {\"check\": \"asterisk rejected\", \"actual\": [\"invalid\", \"FAKE*CO\"], \"expected\": [\"invalid\", \"FAKE*CO\"], \"passed\": true}, {\"check\": \"space allowed\", \"actual\": [\"alpha\", \"FAKE CO\"], \"expected\": [\"alpha\", \"FAKE CO\"], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}