{"abstract":"\"7[0-4]\" outranks the more specific literal \"72\".","category":"Phone number formatting","checks":9,"contract":"Input [number, rules] with rules [pattern, label] in priority order. Pattern characters: X any digit, [..] a class of single digits and inclusive ranges a-b, other characters literal. A pattern matches when each of its positions matches the corresponding number digit (the number may be longer). Score: literal digit 2, class 1, X 0; the highest score wins and ties keep the earlier rule. No match gives \"unknown\".","evaluation_group":"w2-phone-number-formatting-prefix-patterns","failed_approach":"Ignoring classes in the score ties \"7[0-4]\" with \"7X\" and the wildcard wins by order.","family":"w2-phone-number-formatting-prefix-patterns-class-digit-weight","id":"FA-96786","implementations":{"attempt":{"sha256":"d8f00527eada26d15514277fd45d6bad45cfb2ec2ae0c155bf66052fd5d1156e","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    num, rules = x\n    def match(p, s):\n        i = k = 0\n        while k < len(p):\n            if i >= len(s):\n                return False\n            if p[k] == 'X':\n                ok = s[i].isdigit()\n                k += 1\n            elif p[k] == '[':\n                end = p.index(']', k)\n                body, ok, j = p[k + 1:end], False, 0\n                while j < len(body):\n                    if j + 2 < len(body) and body[j + 1] == '-':\n                        ok = ok or body[j] <= s[i] <= body[j + 2]\n                        j += 3\n                    else:\n                        ok = ok or s[i] == body[j]\n                        j += 1\n                k = end + 1\n            else:\n                ok = s[i] == p[k]\n                k += 1\n            if not ok:\n                return False\n            i += 1\n        return True\n    def score(p):\n        total, depth = 0, 0\n        for c in p:\n            if c == '[':\n                depth += 1\n            elif c == ']':\n                depth -= 1\n            elif c.isdigit() and depth == 0:\n                total += 2\n        return total\n    best = None\n    for p, label in rules:\n        if match(p, num):\n            sc = score(p)\n            if best is None or sc > best[0]:\n                best = (sc, label)\n    return best[1] if best else 'unknown'\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['class beats wildcard', ['72555012', [['7X', 'generic'], ['7[0-4]', 'mobile']]], 'mobile'], ['literal beats class', ['72555012', [['7[0-4]', 'mobile'], ['72', 'special']]], 'special'], ['range upper end inclusive', ['74555012', [['7[0-4]', 'mobile'], ['7X', 'generic']]], 'mobile'], ['range lower end inclusive', ['70555012', [['7[0-4]', 'mobile'], ['7X', 'generic']]], 'mobile'], ['number shorter than the pattern', ['7', [['7X', 'generic']]], 'unknown'], ['tie keeps the first listed rule', ['88555012', [['X8', 'listed-first'], ['8X', 'listed-second']]], 'listed-first'], ['range then literal in one class', ['2555012', [['[0-35]X', 'class-range']]], 'class-range'], ['literal then range in one class', ['5555012', [['[50-3]X', 'class-literal']]], 'class-literal'], ['no rule matches', ['6555012', [['7X', 'generic']]], 'unknown']], [['class beats wildcard', ['72555023', [['7X', 'generic'], ['7[0-4]', 'mobile']]], 'mobile'], ['literal beats class', ['72555023', [['7[0-4]', 'mobile'], ['72', 'special']]], 'special'], ['range upper end inclusive', ['74555023', [['7[0-4]', 'mobile'], ['7X', 'generic']]], 'mobile'], ['range lower end inclusive', ['70555023', [['7[0-4]', 'mobile'], ['7X', 'generic']]], 'mobile'], ['number shorter than the pattern', ['7', [['7X', 'generic']]], 'unknown'], ['tie keeps the first listed rule', ['88555023', [['X8', 'listed-first'], ['8X', 'listed-second']]], 'listed-first'], ['range then literal in one class', ['2555023', [['[0-35]X', 'class-range']]], 'class-range'], ['literal then range in one class', ['5555023', [['[50-3]X', 'class-literal']]], 'class-literal'], ['no rule matches', ['6555023', [['7X', 'generic']]], 'unknown']], [['class beats wildcard', ['72555034', [['7X', 'generic'], ['7[0-4]', 'mobile']]], 'mobile'], ['literal beats class', ['72555034', [['7[0-4]', 'mobile'], ['72', 'special']]], 'special'], ['range upper end inclusive', ['74555034', [['7[0-4]', 'mobile'], ['7X', 'generic']]], 'mobile'], ['range lower end inclusive', ['70555034', [['7[0-4]', 'mobile'], ['7X', 'generic']]], 'mobile'], ['number shorter than the pattern', ['7', [['7X', 'generic']]], 'unknown'], ['tie keeps the first listed rule', ['88555034', [['X8', 'listed-first'], ['8X', 'listed-second']]], 'listed-first'], ['range then literal in one class', ['2555034', [['[0-35]X', 'class-range']]], 'class-range'], ['literal then range in one class', ['5555034', [['[50-3]X', 'class-literal']]], 'class-literal'], ['no rule matches', ['6555034', [['7X', 'generic']]], 'unknown']], [['class beats wildcard', ['72555045', [['7X', 'generic'], ['7[0-4]', 'mobile']]], 'mobile'], ['literal beats class', ['72555045', [['7[0-4]', 'mobile'], ['72', 'special']]], 'special'], ['range upper end inclusive', ['74555045', [['7[0-4]', 'mobile'], ['7X', 'generic']]], 'mobile'], ['range lower end inclusive', ['70555045', [['7[0-4]', 'mobile'], ['7X', 'generic']]], 'mobile'], ['number shorter than the pattern', ['7', [['7X', 'generic']]], 'unknown'], ['tie keeps the first listed rule', ['88555045', [['X8', 'listed-first'], ['8X', 'listed-second']]], 'listed-first'], ['range then literal in one class', ['2555045', [['[0-35]X', 'class-range']]], 'class-range'], ['literal then range in one class', ['5555045', [['[50-3]X', 'class-literal']]], 'class-literal'], ['no rule matches', ['6555045', [['7X', 'generic']]], 'unknown']], [['class beats wildcard', ['72555056', [['7X', 'generic'], ['7[0-4]', 'mobile']]], 'mobile'], ['literal beats class', ['72555056', [['7[0-4]', 'mobile'], ['72', 'special']]], 'special'], ['range upper end inclusive', ['74555056', [['7[0-4]', 'mobile'], ['7X', 'generic']]], 'mobile'], ['range lower end inclusive', ['70555056', [['7[0-4]', 'mobile'], ['7X', 'generic']]], 'mobile'], ['number shorter than the pattern', ['7', [['7X', 'generic']]], 'unknown'], ['tie keeps the first listed rule', ['88555056', [['X8', 'listed-first'], ['8X', 'listed-second']]], 'listed-first'], ['range then literal in one class', ['2555056', [['[0-35]X', 'class-range']]], 'class-range'], ['literal then range in one class', ['5555056', [['[50-3]X', 'class-literal']]], 'class-literal'], ['no rule matches', ['6555056', [['7X', 'generic']]], 'unknown']]]\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":"673d5c7fa15c47631f855573935ca378bd9dd637110b15000c819960e7af58e5","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    num, rules = x\n    def match(p, s):\n        i = k = 0\n        while k < len(p):\n            if i >= len(s):\n                return False\n            if p[k] == 'X':\n                ok = s[i].isdigit()\n                k += 1\n            elif p[k] == '[':\n                end = p.index(']', k)\n                body, ok, j = p[k + 1:end], False, 0\n                while j < len(body):\n                    if j + 2 < len(body) and body[j + 1] == '-':\n                        ok = ok or body[j] <= s[i] <= body[j + 2]\n                        j += 3\n                    else:\n                        ok = ok or s[i] == body[j]\n                        j += 1\n                k = end + 1\n            else:\n                ok = s[i] == p[k]\n                k += 1\n            if not ok:\n                return False\n            i += 1\n        return True\n    def score(p):\n        total, depth = 0, 0\n        for c in p:\n            if c == '[':\n                depth += 1\n            elif c == ']':\n                depth -= 1\n                total += 1\n            elif c.isdigit():\n                total += 2\n        return total\n    best = None\n    for p, label in rules:\n        if match(p, num):\n            sc = score(p)\n            if best is None or sc > best[0]:\n                best = (sc, label)\n    return best[1] if best else 'unknown'\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['class beats wildcard', ['72555012', [['7X', 'generic'], ['7[0-4]', 'mobile']]], 'mobile'], ['literal beats class', ['72555012', [['7[0-4]', 'mobile'], ['72', 'special']]], 'special'], ['range upper end inclusive', ['74555012', [['7[0-4]', 'mobile'], ['7X', 'generic']]], 'mobile'], ['range lower end inclusive', ['70555012', [['7[0-4]', 'mobile'], ['7X', 'generic']]], 'mobile'], ['number shorter than the pattern', ['7', [['7X', 'generic']]], 'unknown'], ['tie keeps the first listed rule', ['88555012', [['X8', 'listed-first'], ['8X', 'listed-second']]], 'listed-first'], ['range then literal in one class', ['2555012', [['[0-35]X', 'class-range']]], 'class-range'], ['literal then range in one class', ['5555012', [['[50-3]X', 'class-literal']]], 'class-literal'], ['no rule matches', ['6555012', [['7X', 'generic']]], 'unknown']], [['class beats wildcard', ['72555023', [['7X', 'generic'], ['7[0-4]', 'mobile']]], 'mobile'], ['literal beats class', ['72555023', [['7[0-4]', 'mobile'], ['72', 'special']]], 'special'], ['range upper end inclusive', ['74555023', [['7[0-4]', 'mobile'], ['7X', 'generic']]], 'mobile'], ['range lower end inclusive', ['70555023', [['7[0-4]', 'mobile'], ['7X', 'generic']]], 'mobile'], ['number shorter than the pattern', ['7', [['7X', 'generic']]], 'unknown'], ['tie keeps the first listed rule', ['88555023', [['X8', 'listed-first'], ['8X', 'listed-second']]], 'listed-first'], ['range then literal in one class', ['2555023', [['[0-35]X', 'class-range']]], 'class-range'], ['literal then range in one class', ['5555023', [['[50-3]X', 'class-literal']]], 'class-literal'], ['no rule matches', ['6555023', [['7X', 'generic']]], 'unknown']], [['class beats wildcard', ['72555034', [['7X', 'generic'], ['7[0-4]', 'mobile']]], 'mobile'], ['literal beats class', ['72555034', [['7[0-4]', 'mobile'], ['72', 'special']]], 'special'], ['range upper end inclusive', ['74555034', [['7[0-4]', 'mobile'], ['7X', 'generic']]], 'mobile'], ['range lower end inclusive', ['70555034', [['7[0-4]', 'mobile'], ['7X', 'generic']]], 'mobile'], ['number shorter than the pattern', ['7', [['7X', 'generic']]], 'unknown'], ['tie keeps the first listed rule', ['88555034', [['X8', 'listed-first'], ['8X', 'listed-second']]], 'listed-first'], ['range then literal in one class', ['2555034', [['[0-35]X', 'class-range']]], 'class-range'], ['literal then range in one class', ['5555034', [['[50-3]X', 'class-literal']]], 'class-literal'], ['no rule matches', ['6555034', [['7X', 'generic']]], 'unknown']], [['class beats wildcard', ['72555045', [['7X', 'generic'], ['7[0-4]', 'mobile']]], 'mobile'], ['literal beats class', ['72555045', [['7[0-4]', 'mobile'], ['72', 'special']]], 'special'], ['range upper end inclusive', ['74555045', [['7[0-4]', 'mobile'], ['7X', 'generic']]], 'mobile'], ['range lower end inclusive', ['70555045', [['7[0-4]', 'mobile'], ['7X', 'generic']]], 'mobile'], ['number shorter than the pattern', ['7', [['7X', 'generic']]], 'unknown'], ['tie keeps the first listed rule', ['88555045', [['X8', 'listed-first'], ['8X', 'listed-second']]], 'listed-first'], ['range then literal in one class', ['2555045', [['[0-35]X', 'class-range']]], 'class-range'], ['literal then range in one class', ['5555045', [['[50-3]X', 'class-literal']]], 'class-literal'], ['no rule matches', ['6555045', [['7X', 'generic']]], 'unknown']], [['class beats wildcard', ['72555056', [['7X', 'generic'], ['7[0-4]', 'mobile']]], 'mobile'], ['literal beats class', ['72555056', [['7[0-4]', 'mobile'], ['72', 'special']]], 'special'], ['range upper end inclusive', ['74555056', [['7[0-4]', 'mobile'], ['7X', 'generic']]], 'mobile'], ['range lower end inclusive', ['70555056', [['7[0-4]', 'mobile'], ['7X', 'generic']]], 'mobile'], ['number shorter than the pattern', ['7', [['7X', 'generic']]], 'unknown'], ['tie keeps the first listed rule', ['88555056', [['X8', 'listed-first'], ['8X', 'listed-second']]], 'listed-first'], ['range then literal in one class', ['2555056', [['[0-35]X', 'class-range']]], 'class-range'], ['literal then range in one class', ['5555056', [['[50-3]X', 'class-literal']]], 'class-literal'], ['no rule matches', ['6555056', [['7X', 'generic']]], 'unknown']]]\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":"1f76afe85952c4a5a0ee9ba5a5aff4620aa9559d96b258b26daa31e775cc3366","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    num, rules = x\n    def match(p, s):\n        i = k = 0\n        while k < len(p):\n            if i >= len(s):\n                return False\n            if p[k] == 'X':\n                ok = s[i].isdigit()\n                k += 1\n            elif p[k] == '[':\n                end = p.index(']', k)\n                body, ok, j = p[k + 1:end], False, 0\n                while j < len(body):\n                    if j + 2 < len(body) and body[j + 1] == '-':\n                        ok = ok or body[j] <= s[i] <= body[j + 2]\n                        j += 3\n                    else:\n                        ok = ok or s[i] == body[j]\n                        j += 1\n                k = end + 1\n            else:\n                ok = s[i] == p[k]\n                k += 1\n            if not ok:\n                return False\n            i += 1\n        return True\n    def score(p):\n        total, depth = 0, 0\n        for c in p:\n            if c == '[':\n                depth += 1\n            elif c == ']':\n                depth -= 1\n                total += 1\n            elif c.isdigit() and depth == 0:\n                total += 2\n        return total\n    best = None\n    for p, label in rules:\n        if match(p, num):\n            sc = score(p)\n            if best is None or sc > best[0]:\n                best = (sc, label)\n    return best[1] if best else 'unknown'\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['class beats wildcard', ['72555012', [['7X', 'generic'], ['7[0-4]', 'mobile']]], 'mobile'], ['literal beats class', ['72555012', [['7[0-4]', 'mobile'], ['72', 'special']]], 'special'], ['range upper end inclusive', ['74555012', [['7[0-4]', 'mobile'], ['7X', 'generic']]], 'mobile'], ['range lower end inclusive', ['70555012', [['7[0-4]', 'mobile'], ['7X', 'generic']]], 'mobile'], ['number shorter than the pattern', ['7', [['7X', 'generic']]], 'unknown'], ['tie keeps the first listed rule', ['88555012', [['X8', 'listed-first'], ['8X', 'listed-second']]], 'listed-first'], ['range then literal in one class', ['2555012', [['[0-35]X', 'class-range']]], 'class-range'], ['literal then range in one class', ['5555012', [['[50-3]X', 'class-literal']]], 'class-literal'], ['no rule matches', ['6555012', [['7X', 'generic']]], 'unknown']], [['class beats wildcard', ['72555023', [['7X', 'generic'], ['7[0-4]', 'mobile']]], 'mobile'], ['literal beats class', ['72555023', [['7[0-4]', 'mobile'], ['72', 'special']]], 'special'], ['range upper end inclusive', ['74555023', [['7[0-4]', 'mobile'], ['7X', 'generic']]], 'mobile'], ['range lower end inclusive', ['70555023', [['7[0-4]', 'mobile'], ['7X', 'generic']]], 'mobile'], ['number shorter than the pattern', ['7', [['7X', 'generic']]], 'unknown'], ['tie keeps the first listed rule', ['88555023', [['X8', 'listed-first'], ['8X', 'listed-second']]], 'listed-first'], ['range then literal in one class', ['2555023', [['[0-35]X', 'class-range']]], 'class-range'], ['literal then range in one class', ['5555023', [['[50-3]X', 'class-literal']]], 'class-literal'], ['no rule matches', ['6555023', [['7X', 'generic']]], 'unknown']], [['class beats wildcard', ['72555034', [['7X', 'generic'], ['7[0-4]', 'mobile']]], 'mobile'], ['literal beats class', ['72555034', [['7[0-4]', 'mobile'], ['72', 'special']]], 'special'], ['range upper end inclusive', ['74555034', [['7[0-4]', 'mobile'], ['7X', 'generic']]], 'mobile'], ['range lower end inclusive', ['70555034', [['7[0-4]', 'mobile'], ['7X', 'generic']]], 'mobile'], ['number shorter than the pattern', ['7', [['7X', 'generic']]], 'unknown'], ['tie keeps the first listed rule', ['88555034', [['X8', 'listed-first'], ['8X', 'listed-second']]], 'listed-first'], ['range then literal in one class', ['2555034', [['[0-35]X', 'class-range']]], 'class-range'], ['literal then range in one class', ['5555034', [['[50-3]X', 'class-literal']]], 'class-literal'], ['no rule matches', ['6555034', [['7X', 'generic']]], 'unknown']], [['class beats wildcard', ['72555045', [['7X', 'generic'], ['7[0-4]', 'mobile']]], 'mobile'], ['literal beats class', ['72555045', [['7[0-4]', 'mobile'], ['72', 'special']]], 'special'], ['range upper end inclusive', ['74555045', [['7[0-4]', 'mobile'], ['7X', 'generic']]], 'mobile'], ['range lower end inclusive', ['70555045', [['7[0-4]', 'mobile'], ['7X', 'generic']]], 'mobile'], ['number shorter than the pattern', ['7', [['7X', 'generic']]], 'unknown'], ['tie keeps the first listed rule', ['88555045', [['X8', 'listed-first'], ['8X', 'listed-second']]], 'listed-first'], ['range then literal in one class', ['2555045', [['[0-35]X', 'class-range']]], 'class-range'], ['literal then range in one class', ['5555045', [['[50-3]X', 'class-literal']]], 'class-literal'], ['no rule matches', ['6555045', [['7X', 'generic']]], 'unknown']], [['class beats wildcard', ['72555056', [['7X', 'generic'], ['7[0-4]', 'mobile']]], 'mobile'], ['literal beats class', ['72555056', [['7[0-4]', 'mobile'], ['72', 'special']]], 'special'], ['range upper end inclusive', ['74555056', [['7[0-4]', 'mobile'], ['7X', 'generic']]], 'mobile'], ['range lower end inclusive', ['70555056', [['7[0-4]', 'mobile'], ['7X', 'generic']]], 'mobile'], ['number shorter than the pattern', ['7', [['7X', 'generic']]], 'unknown'], ['tie keeps the first listed rule', ['88555056', [['X8', 'listed-first'], ['8X', 'listed-second']]], 'listed-first'], ['range then literal in one class', ['2555056', [['[0-35]X', 'class-range']]], 'class-range'], ['literal then range in one class', ['5555056', [['[50-3]X', 'class-literal']]], 'class-literal'], ['no rule matches', ['6555056', [['7X', 'generic']]], 'unknown']]]\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-prefix-patterns-class-digit-weight","generated_at":"2026-09-29T14:52:25.865241+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Numbering-plan tables decide routing, rating and number type from prefixes; specificity and range errors misroute whole blocks of numbers.","repair":"Score digits only outside brackets; a whole class scores 1.","root_cause":"The score counts digit characters inside brackets as literal digits.","sha256":"df13165c1c4a3513ecb72ce0a54939851ab406fe9da7b83a1ee1791aaecf6bb7","title":"Numbering prefix pattern classifier: digits inside a class count as literals · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":39.502,"exit_code":1,"observations":[{"actual":"generic","check":"class beats wildcard","expected":"mobile","passed":false},{"actual":"special","check":"literal beats class","expected":"special","passed":true},{"actual":"mobile","check":"range upper end inclusive","expected":"mobile","passed":true},{"actual":"mobile","check":"range lower end inclusive","expected":"mobile","passed":true},{"actual":"unknown","check":"number shorter than the pattern","expected":"unknown","passed":true},{"actual":"listed-first","check":"tie keeps the first listed rule","expected":"listed-first","passed":true},{"actual":"class-range","check":"range then literal in one class","expected":"class-range","passed":true},{"actual":"class-literal","check":"literal then range in one class","expected":"class-literal","passed":true},{"actual":"unknown","check":"no rule matches","expected":"unknown","passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"class beats wildcard\", \"actual\": \"generic\", \"expected\": \"mobile\", \"passed\": false}, {\"check\": \"literal beats class\", \"actual\": \"special\", \"expected\": \"special\", \"passed\": true}, {\"check\": \"range upper end inclusive\", \"actual\": \"mobile\", \"expected\": \"mobile\", \"passed\": true}, {\"check\": \"range lower end inclusive\", \"actual\": \"mobile\", \"expected\": \"mobile\", \"passed\": true}, {\"check\": \"number shorter than the pattern\", \"actual\": \"unknown\", \"expected\": \"unknown\", \"passed\": true}, {\"check\": \"tie keeps the first listed rule\", \"actual\": \"listed-first\", \"expected\": \"listed-first\", \"passed\": true}, {\"check\": \"range then literal in one class\", \"actual\": \"class-range\", \"expected\": \"class-range\", \"passed\": true}, {\"check\": \"literal then range in one class\", \"actual\": \"class-literal\", \"expected\": \"class-literal\", \"passed\": true}, {\"check\": \"no rule matches\", \"actual\": \"unknown\", \"expected\": \"unknown\", \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":37.06,"exit_code":1,"observations":[{"actual":"mobile","check":"class beats wildcard","expected":"mobile","passed":true},{"actual":"mobile","check":"literal beats class","expected":"special","passed":false},{"actual":"mobile","check":"range upper end inclusive","expected":"mobile","passed":true},{"actual":"mobile","check":"range lower end inclusive","expected":"mobile","passed":true},{"actual":"unknown","check":"number shorter than the pattern","expected":"unknown","passed":true},{"actual":"listed-first","check":"tie keeps the first listed rule","expected":"listed-first","passed":true},{"actual":"class-range","check":"range then literal in one class","expected":"class-range","passed":true},{"actual":"class-literal","check":"literal then range in one class","expected":"class-literal","passed":true},{"actual":"unknown","check":"no rule matches","expected":"unknown","passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"class beats wildcard\", \"actual\": \"mobile\", \"expected\": \"mobile\", \"passed\": true}, {\"check\": \"literal beats class\", \"actual\": \"mobile\", \"expected\": \"special\", \"passed\": false}, {\"check\": \"range upper end inclusive\", \"actual\": \"mobile\", \"expected\": \"mobile\", \"passed\": true}, {\"check\": \"range lower end inclusive\", \"actual\": \"mobile\", \"expected\": \"mobile\", \"passed\": true}, {\"check\": \"number shorter than the pattern\", \"actual\": \"unknown\", \"expected\": \"unknown\", \"passed\": true}, {\"check\": \"tie keeps the first listed rule\", \"actual\": \"listed-first\", \"expected\": \"listed-first\", \"passed\": true}, {\"check\": \"range then literal in one class\", \"actual\": \"class-range\", \"expected\": \"class-range\", \"passed\": true}, {\"check\": \"literal then range in one class\", \"actual\": \"class-literal\", \"expected\": \"class-literal\", \"passed\": true}, {\"check\": \"no rule matches\", \"actual\": \"unknown\", \"expected\": \"unknown\", \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":38.881,"exit_code":0,"observations":[{"actual":"mobile","check":"class beats wildcard","expected":"mobile","passed":true},{"actual":"special","check":"literal beats class","expected":"special","passed":true},{"actual":"mobile","check":"range upper end inclusive","expected":"mobile","passed":true},{"actual":"mobile","check":"range lower end inclusive","expected":"mobile","passed":true},{"actual":"unknown","check":"number shorter than the pattern","expected":"unknown","passed":true},{"actual":"listed-first","check":"tie keeps the first listed rule","expected":"listed-first","passed":true},{"actual":"class-range","check":"range then literal in one class","expected":"class-range","passed":true},{"actual":"class-literal","check":"literal then range in one class","expected":"class-literal","passed":true},{"actual":"unknown","check":"no rule matches","expected":"unknown","passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"class beats wildcard\", \"actual\": \"mobile\", \"expected\": \"mobile\", \"passed\": true}, {\"check\": \"literal beats class\", \"actual\": \"special\", \"expected\": \"special\", \"passed\": true}, {\"check\": \"range upper end inclusive\", \"actual\": \"mobile\", \"expected\": \"mobile\", \"passed\": true}, {\"check\": \"range lower end inclusive\", \"actual\": \"mobile\", \"expected\": \"mobile\", \"passed\": true}, {\"check\": \"number shorter than the pattern\", \"actual\": \"unknown\", \"expected\": \"unknown\", \"passed\": true}, {\"check\": \"tie keeps the first listed rule\", \"actual\": \"listed-first\", \"expected\": \"listed-first\", \"passed\": true}, {\"check\": \"range then literal in one class\", \"actual\": \"class-range\", \"expected\": \"class-range\", \"passed\": true}, {\"check\": \"literal then range in one class\", \"actual\": \"class-literal\", \"expected\": \"class-literal\", \"passed\": true}, {\"check\": \"no rule matches\", \"actual\": \"unknown\", \"expected\": \"unknown\", \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}