{"abstract":"Every pattern containing a class fails to match.","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":"Advancing by the body length plus one also stops on the bracket.","family":"w2-phone-number-formatting-prefix-patterns-class-close","id":"FA-96801","implementations":{"attempt":{"sha256":"b2acab37c4d2e44e06b514b43856d7a825cedf7ba18048e3869ca47fc39264cc","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 += len(body) + 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"},"broken":{"sha256":"417c42eb9ee3e292ab1172868f4d207b72aac16f8c6ff0670646da76d0e3ff1a","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\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"},"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-close","generated_at":"2026-09-29T14:52:26.024176+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":"Continue after the closing bracket.","root_cause":"After a class the pattern index stops on the closing bracket.","sha256":"b1638579d904e5437b0e9375b1f047049fcd34e7f00612e5f04171d290bee413","title":"Numbering prefix pattern classifier: the closing bracket is read as a literal · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":37.008,"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":"generic","check":"range upper end inclusive","expected":"mobile","passed":false},{"actual":"generic","check":"range lower end inclusive","expected":"mobile","passed":false},{"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":"unknown","check":"range then literal in one class","expected":"class-range","passed":false},{"actual":"unknown","check":"literal then range in one class","expected":"class-literal","passed":false},{"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\": \"generic\", \"expected\": \"mobile\", \"passed\": false}, {\"check\": \"range lower end inclusive\", \"actual\": \"generic\", \"expected\": \"mobile\", \"passed\": false}, {\"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\": \"unknown\", \"expected\": \"class-range\", \"passed\": false}, {\"check\": \"literal then range in one class\", \"actual\": \"unknown\", \"expected\": \"class-literal\", \"passed\": false}, {\"check\": \"no rule matches\", \"actual\": \"unknown\", \"expected\": \"unknown\", \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":38.556,"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":"generic","check":"range upper end inclusive","expected":"mobile","passed":false},{"actual":"generic","check":"range lower end inclusive","expected":"mobile","passed":false},{"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":"unknown","check":"range then literal in one class","expected":"class-range","passed":false},{"actual":"unknown","check":"literal then range in one class","expected":"class-literal","passed":false},{"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\": \"generic\", \"expected\": \"mobile\", \"passed\": false}, {\"check\": \"range lower end inclusive\", \"actual\": \"generic\", \"expected\": \"mobile\", \"passed\": false}, {\"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\": \"unknown\", \"expected\": \"class-range\", \"passed\": false}, {\"check\": \"literal then range in one class\", \"actual\": \"unknown\", \"expected\": \"class-literal\", \"passed\": false}, {\"check\": \"no rule matches\", \"actual\": \"unknown\", \"expected\": \"unknown\", \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":39.691,"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"}