{"abstract":"Two equally specific rules resolve to the later one.","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":"Sorting the rules before scanning breaks ties by pattern text instead of priority.","family":"w2-phone-number-formatting-prefix-patterns-tie-order","id":"FA-96791","implementations":{"attempt":{"sha256":"322a4b615924a5d9f2fbb7a585c8dedcaacf7fa15286417a087ab57ede3684db","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 sorted(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":"3f54270ba2d610ca5401324b0eac303510cffbdc569c9dd3a3c49cfe054c059c","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"},"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-tie-order","generated_at":"2026-09-29T14:52:25.950117+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":"Replace the best rule only on a strictly higher score.","root_cause":"The best rule is replaced on equal scores.","sha256":"a688d3d2dc3fbc59e5431fbe0eeefea69279d40f35f958a275b1ccbf1163cc87","title":"Numbering prefix pattern classifier: ties go to the last rule · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":43.374,"exit_code":1,"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-second","check":"tie keeps the first listed rule","expected":"listed-first","passed":false},{"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\": \"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-second\", \"expected\": \"listed-first\", \"passed\": false}, {\"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":40.58,"exit_code":1,"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-second","check":"tie keeps the first listed rule","expected":"listed-first","passed":false},{"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\": \"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-second\", \"expected\": \"listed-first\", \"passed\": false}, {\"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":39.169,"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"}