{"abstract":"\"13AB\" parses with suffix \"AB\".","category":"Postal address normalization","checks":12,"contract":"Uppercase and split the line. The first token must start with digits: the digits form the house number (an int, which must not be 0); an optional single hyphen is dropped and at most one letter may follow as the suffix. If the second token is a/b with b in 2,3,4 and 0 < a < b it is the fraction and is consumed. Return [number, suffix, fraction, rest] or None.","evaluation_group":"w2-postal-address-normalization-house-number","failed_approach":"Requiring the tail to be alphabetic without allowing it to be empty rejects every plain house number.","family":"w2-postal-address-normalization-house-number-suffix-length","id":"FA-96026","implementations":{"attempt":{"sha256":"5c995978ede43258fe46bfea193cc605a9e1ddf203da3ed795381ee29580ebc5","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    t = x.upper().split()\n    if not t:\n        return None\n    head = t[0]\n    i = 0\n    while i < len(head) and head[i].isdigit():\n        i += 1\n    if i == 0:\n        return None\n    number, tail = int(head[:i]), head[i:]\n    if number == 0:\n        return None\n    if tail.startswith('-'):\n        tail = tail[1:]\n    if len(tail) > 1 or not tail.isalpha():\n        return None\n    frac, k = '', 1\n    if len(t) > 1 and t[1].count('/') == 1:\n        a, b = t[1].split('/')\n        if a.isdigit() and b.isdigit() and b in ('2', '3', '4') and 0 < int(a) < int(b):\n            frac, k = t[1], 2\n    return [number, tail, frac, ' '.join(t[k:])]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['plain number', '13 FAKE ST', [13, '', '', 'FAKE ST']], ['letter suffix', '13b Fake St', [13, 'B', '', 'FAKE ST']], ['hyphenated letter suffix', '13-B FAKE ST', [13, 'B', '', 'FAKE ST']], ['doubled hyphen is malformed', '13--B FAKE ST', None], ['two-letter suffix rejected', '13AB FAKE ST', None], ['half fraction consumed', '13 1/2 FAKE ST', [13, '', '1/2', 'FAKE ST']], ['third fraction consumed', '13 1/3 FAKE ST', [13, '', '1/3', 'FAKE ST']], ['eighths are not house fractions', '13 5/8 FAKE ST', [13, '', '', '5/8 FAKE ST']], ['improper fraction stays in the street', '13 2/2 FAKE ST', [13, '', '', '2/2 FAKE ST']], ['zero numerator stays in the street', '13 0/4 FAKE ST', [13, '', '', '0/4 FAKE ST']], ['house number zero rejected', '0 FAKE ST', None], ['padded zero rejected', '00 FAKE ST', None]], [['plain number', '23 FAKE ST', [23, '', '', 'FAKE ST']], ['letter suffix', '23b Fake St', [23, 'B', '', 'FAKE ST']], ['hyphenated letter suffix', '23-B FAKE ST', [23, 'B', '', 'FAKE ST']], ['doubled hyphen is malformed', '23--B FAKE ST', None], ['two-letter suffix rejected', '23AB FAKE ST', None], ['half fraction consumed', '23 1/2 FAKE ST', [23, '', '1/2', 'FAKE ST']], ['third fraction consumed', '23 1/3 FAKE ST', [23, '', '1/3', 'FAKE ST']], ['eighths are not house fractions', '23 5/8 FAKE ST', [23, '', '', '5/8 FAKE ST']], ['improper fraction stays in the street', '23 2/2 FAKE ST', [23, '', '', '2/2 FAKE ST']], ['zero numerator stays in the street', '23 0/4 FAKE ST', [23, '', '', '0/4 FAKE ST']], ['house number zero rejected', '0 FAKE ST', None], ['padded zero rejected', '00 FAKE ST', None]], [['plain number', '33 FAKE ST', [33, '', '', 'FAKE ST']], ['letter suffix', '33b Fake St', [33, 'B', '', 'FAKE ST']], ['hyphenated letter suffix', '33-B FAKE ST', [33, 'B', '', 'FAKE ST']], ['doubled hyphen is malformed', '33--B FAKE ST', None], ['two-letter suffix rejected', '33AB FAKE ST', None], ['half fraction consumed', '33 1/2 FAKE ST', [33, '', '1/2', 'FAKE ST']], ['third fraction consumed', '33 1/3 FAKE ST', [33, '', '1/3', 'FAKE ST']], ['eighths are not house fractions', '33 5/8 FAKE ST', [33, '', '', '5/8 FAKE ST']], ['improper fraction stays in the street', '33 2/2 FAKE ST', [33, '', '', '2/2 FAKE ST']], ['zero numerator stays in the street', '33 0/4 FAKE ST', [33, '', '', '0/4 FAKE ST']], ['house number zero rejected', '0 FAKE ST', None], ['padded zero rejected', '00 FAKE ST', None]], [['plain number', '43 FAKE ST', [43, '', '', 'FAKE ST']], ['letter suffix', '43b Fake St', [43, 'B', '', 'FAKE ST']], ['hyphenated letter suffix', '43-B FAKE ST', [43, 'B', '', 'FAKE ST']], ['doubled hyphen is malformed', '43--B FAKE ST', None], ['two-letter suffix rejected', '43AB FAKE ST', None], ['half fraction consumed', '43 1/2 FAKE ST', [43, '', '1/2', 'FAKE ST']], ['third fraction consumed', '43 1/3 FAKE ST', [43, '', '1/3', 'FAKE ST']], ['eighths are not house fractions', '43 5/8 FAKE ST', [43, '', '', '5/8 FAKE ST']], ['improper fraction stays in the street', '43 2/2 FAKE ST', [43, '', '', '2/2 FAKE ST']], ['zero numerator stays in the street', '43 0/4 FAKE ST', [43, '', '', '0/4 FAKE ST']], ['house number zero rejected', '0 FAKE ST', None], ['padded zero rejected', '00 FAKE ST', None]], [['plain number', '53 FAKE ST', [53, '', '', 'FAKE ST']], ['letter suffix', '53b Fake St', [53, 'B', '', 'FAKE ST']], ['hyphenated letter suffix', '53-B FAKE ST', [53, 'B', '', 'FAKE ST']], ['doubled hyphen is malformed', '53--B FAKE ST', None], ['two-letter suffix rejected', '53AB FAKE ST', None], ['half fraction consumed', '53 1/2 FAKE ST', [53, '', '1/2', 'FAKE ST']], ['third fraction consumed', '53 1/3 FAKE ST', [53, '', '1/3', 'FAKE ST']], ['eighths are not house fractions', '53 5/8 FAKE ST', [53, '', '', '5/8 FAKE ST']], ['improper fraction stays in the street', '53 2/2 FAKE ST', [53, '', '', '2/2 FAKE ST']], ['zero numerator stays in the street', '53 0/4 FAKE ST', [53, '', '', '0/4 FAKE ST']], ['house number zero rejected', '0 FAKE ST', None], ['padded zero rejected', '00 FAKE ST', None]]]\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":"5e8dcdb1e94ab2a20f73e68e736a89a74c93b5f7b85f1abf53f43b5e55286a2c","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    t = x.upper().split()\n    if not t:\n        return None\n    head = t[0]\n    i = 0\n    while i < len(head) and head[i].isdigit():\n        i += 1\n    if i == 0:\n        return None\n    number, tail = int(head[:i]), head[i:]\n    if number == 0:\n        return None\n    if tail.startswith('-'):\n        tail = tail[1:]\n    if len(tail) > 2 or (tail and not tail.isalpha()):\n        return None\n    frac, k = '', 1\n    if len(t) > 1 and t[1].count('/') == 1:\n        a, b = t[1].split('/')\n        if a.isdigit() and b.isdigit() and b in ('2', '3', '4') and 0 < int(a) < int(b):\n            frac, k = t[1], 2\n    return [number, tail, frac, ' '.join(t[k:])]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['plain number', '13 FAKE ST', [13, '', '', 'FAKE ST']], ['letter suffix', '13b Fake St', [13, 'B', '', 'FAKE ST']], ['hyphenated letter suffix', '13-B FAKE ST', [13, 'B', '', 'FAKE ST']], ['doubled hyphen is malformed', '13--B FAKE ST', None], ['two-letter suffix rejected', '13AB FAKE ST', None], ['half fraction consumed', '13 1/2 FAKE ST', [13, '', '1/2', 'FAKE ST']], ['third fraction consumed', '13 1/3 FAKE ST', [13, '', '1/3', 'FAKE ST']], ['eighths are not house fractions', '13 5/8 FAKE ST', [13, '', '', '5/8 FAKE ST']], ['improper fraction stays in the street', '13 2/2 FAKE ST', [13, '', '', '2/2 FAKE ST']], ['zero numerator stays in the street', '13 0/4 FAKE ST', [13, '', '', '0/4 FAKE ST']], ['house number zero rejected', '0 FAKE ST', None], ['padded zero rejected', '00 FAKE ST', None]], [['plain number', '23 FAKE ST', [23, '', '', 'FAKE ST']], ['letter suffix', '23b Fake St', [23, 'B', '', 'FAKE ST']], ['hyphenated letter suffix', '23-B FAKE ST', [23, 'B', '', 'FAKE ST']], ['doubled hyphen is malformed', '23--B FAKE ST', None], ['two-letter suffix rejected', '23AB FAKE ST', None], ['half fraction consumed', '23 1/2 FAKE ST', [23, '', '1/2', 'FAKE ST']], ['third fraction consumed', '23 1/3 FAKE ST', [23, '', '1/3', 'FAKE ST']], ['eighths are not house fractions', '23 5/8 FAKE ST', [23, '', '', '5/8 FAKE ST']], ['improper fraction stays in the street', '23 2/2 FAKE ST', [23, '', '', '2/2 FAKE ST']], ['zero numerator stays in the street', '23 0/4 FAKE ST', [23, '', '', '0/4 FAKE ST']], ['house number zero rejected', '0 FAKE ST', None], ['padded zero rejected', '00 FAKE ST', None]], [['plain number', '33 FAKE ST', [33, '', '', 'FAKE ST']], ['letter suffix', '33b Fake St', [33, 'B', '', 'FAKE ST']], ['hyphenated letter suffix', '33-B FAKE ST', [33, 'B', '', 'FAKE ST']], ['doubled hyphen is malformed', '33--B FAKE ST', None], ['two-letter suffix rejected', '33AB FAKE ST', None], ['half fraction consumed', '33 1/2 FAKE ST', [33, '', '1/2', 'FAKE ST']], ['third fraction consumed', '33 1/3 FAKE ST', [33, '', '1/3', 'FAKE ST']], ['eighths are not house fractions', '33 5/8 FAKE ST', [33, '', '', '5/8 FAKE ST']], ['improper fraction stays in the street', '33 2/2 FAKE ST', [33, '', '', '2/2 FAKE ST']], ['zero numerator stays in the street', '33 0/4 FAKE ST', [33, '', '', '0/4 FAKE ST']], ['house number zero rejected', '0 FAKE ST', None], ['padded zero rejected', '00 FAKE ST', None]], [['plain number', '43 FAKE ST', [43, '', '', 'FAKE ST']], ['letter suffix', '43b Fake St', [43, 'B', '', 'FAKE ST']], ['hyphenated letter suffix', '43-B FAKE ST', [43, 'B', '', 'FAKE ST']], ['doubled hyphen is malformed', '43--B FAKE ST', None], ['two-letter suffix rejected', '43AB FAKE ST', None], ['half fraction consumed', '43 1/2 FAKE ST', [43, '', '1/2', 'FAKE ST']], ['third fraction consumed', '43 1/3 FAKE ST', [43, '', '1/3', 'FAKE ST']], ['eighths are not house fractions', '43 5/8 FAKE ST', [43, '', '', '5/8 FAKE ST']], ['improper fraction stays in the street', '43 2/2 FAKE ST', [43, '', '', '2/2 FAKE ST']], ['zero numerator stays in the street', '43 0/4 FAKE ST', [43, '', '', '0/4 FAKE ST']], ['house number zero rejected', '0 FAKE ST', None], ['padded zero rejected', '00 FAKE ST', None]], [['plain number', '53 FAKE ST', [53, '', '', 'FAKE ST']], ['letter suffix', '53b Fake St', [53, 'B', '', 'FAKE ST']], ['hyphenated letter suffix', '53-B FAKE ST', [53, 'B', '', 'FAKE ST']], ['doubled hyphen is malformed', '53--B FAKE ST', None], ['two-letter suffix rejected', '53AB FAKE ST', None], ['half fraction consumed', '53 1/2 FAKE ST', [53, '', '1/2', 'FAKE ST']], ['third fraction consumed', '53 1/3 FAKE ST', [53, '', '1/3', 'FAKE ST']], ['eighths are not house fractions', '53 5/8 FAKE ST', [53, '', '', '5/8 FAKE ST']], ['improper fraction stays in the street', '53 2/2 FAKE ST', [53, '', '', '2/2 FAKE ST']], ['zero numerator stays in the street', '53 0/4 FAKE ST', [53, '', '', '0/4 FAKE ST']], ['house number zero rejected', '0 FAKE ST', None], ['padded zero rejected', '00 FAKE ST', None]]]\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":"eaed61f9a53eeba73422981afcd5e065a0cdb1b01ff4621bb02f09bd98753c2c","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    t = x.upper().split()\n    if not t:\n        return None\n    head = t[0]\n    i = 0\n    while i < len(head) and head[i].isdigit():\n        i += 1\n    if i == 0:\n        return None\n    number, tail = int(head[:i]), head[i:]\n    if number == 0:\n        return None\n    if tail.startswith('-'):\n        tail = tail[1:]\n    if len(tail) > 1 or (tail and not tail.isalpha()):\n        return None\n    frac, k = '', 1\n    if len(t) > 1 and t[1].count('/') == 1:\n        a, b = t[1].split('/')\n        if a.isdigit() and b.isdigit() and b in ('2', '3', '4') and 0 < int(a) < int(b):\n            frac, k = t[1], 2\n    return [number, tail, frac, ' '.join(t[k:])]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['plain number', '13 FAKE ST', [13, '', '', 'FAKE ST']], ['letter suffix', '13b Fake St', [13, 'B', '', 'FAKE ST']], ['hyphenated letter suffix', '13-B FAKE ST', [13, 'B', '', 'FAKE ST']], ['doubled hyphen is malformed', '13--B FAKE ST', None], ['two-letter suffix rejected', '13AB FAKE ST', None], ['half fraction consumed', '13 1/2 FAKE ST', [13, '', '1/2', 'FAKE ST']], ['third fraction consumed', '13 1/3 FAKE ST', [13, '', '1/3', 'FAKE ST']], ['eighths are not house fractions', '13 5/8 FAKE ST', [13, '', '', '5/8 FAKE ST']], ['improper fraction stays in the street', '13 2/2 FAKE ST', [13, '', '', '2/2 FAKE ST']], ['zero numerator stays in the street', '13 0/4 FAKE ST', [13, '', '', '0/4 FAKE ST']], ['house number zero rejected', '0 FAKE ST', None], ['padded zero rejected', '00 FAKE ST', None]], [['plain number', '23 FAKE ST', [23, '', '', 'FAKE ST']], ['letter suffix', '23b Fake St', [23, 'B', '', 'FAKE ST']], ['hyphenated letter suffix', '23-B FAKE ST', [23, 'B', '', 'FAKE ST']], ['doubled hyphen is malformed', '23--B FAKE ST', None], ['two-letter suffix rejected', '23AB FAKE ST', None], ['half fraction consumed', '23 1/2 FAKE ST', [23, '', '1/2', 'FAKE ST']], ['third fraction consumed', '23 1/3 FAKE ST', [23, '', '1/3', 'FAKE ST']], ['eighths are not house fractions', '23 5/8 FAKE ST', [23, '', '', '5/8 FAKE ST']], ['improper fraction stays in the street', '23 2/2 FAKE ST', [23, '', '', '2/2 FAKE ST']], ['zero numerator stays in the street', '23 0/4 FAKE ST', [23, '', '', '0/4 FAKE ST']], ['house number zero rejected', '0 FAKE ST', None], ['padded zero rejected', '00 FAKE ST', None]], [['plain number', '33 FAKE ST', [33, '', '', 'FAKE ST']], ['letter suffix', '33b Fake St', [33, 'B', '', 'FAKE ST']], ['hyphenated letter suffix', '33-B FAKE ST', [33, 'B', '', 'FAKE ST']], ['doubled hyphen is malformed', '33--B FAKE ST', None], ['two-letter suffix rejected', '33AB FAKE ST', None], ['half fraction consumed', '33 1/2 FAKE ST', [33, '', '1/2', 'FAKE ST']], ['third fraction consumed', '33 1/3 FAKE ST', [33, '', '1/3', 'FAKE ST']], ['eighths are not house fractions', '33 5/8 FAKE ST', [33, '', '', '5/8 FAKE ST']], ['improper fraction stays in the street', '33 2/2 FAKE ST', [33, '', '', '2/2 FAKE ST']], ['zero numerator stays in the street', '33 0/4 FAKE ST', [33, '', '', '0/4 FAKE ST']], ['house number zero rejected', '0 FAKE ST', None], ['padded zero rejected', '00 FAKE ST', None]], [['plain number', '43 FAKE ST', [43, '', '', 'FAKE ST']], ['letter suffix', '43b Fake St', [43, 'B', '', 'FAKE ST']], ['hyphenated letter suffix', '43-B FAKE ST', [43, 'B', '', 'FAKE ST']], ['doubled hyphen is malformed', '43--B FAKE ST', None], ['two-letter suffix rejected', '43AB FAKE ST', None], ['half fraction consumed', '43 1/2 FAKE ST', [43, '', '1/2', 'FAKE ST']], ['third fraction consumed', '43 1/3 FAKE ST', [43, '', '1/3', 'FAKE ST']], ['eighths are not house fractions', '43 5/8 FAKE ST', [43, '', '', '5/8 FAKE ST']], ['improper fraction stays in the street', '43 2/2 FAKE ST', [43, '', '', '2/2 FAKE ST']], ['zero numerator stays in the street', '43 0/4 FAKE ST', [43, '', '', '0/4 FAKE ST']], ['house number zero rejected', '0 FAKE ST', None], ['padded zero rejected', '00 FAKE ST', None]], [['plain number', '53 FAKE ST', [53, '', '', 'FAKE ST']], ['letter suffix', '53b Fake St', [53, 'B', '', 'FAKE ST']], ['hyphenated letter suffix', '53-B FAKE ST', [53, 'B', '', 'FAKE ST']], ['doubled hyphen is malformed', '53--B FAKE ST', None], ['two-letter suffix rejected', '53AB FAKE ST', None], ['half fraction consumed', '53 1/2 FAKE ST', [53, '', '1/2', 'FAKE ST']], ['third fraction consumed', '53 1/3 FAKE ST', [53, '', '1/3', 'FAKE ST']], ['eighths are not house fractions', '53 5/8 FAKE ST', [53, '', '', '5/8 FAKE ST']], ['improper fraction stays in the street', '53 2/2 FAKE ST', [53, '', '', '2/2 FAKE ST']], ['zero numerator stays in the street', '53 0/4 FAKE ST', [53, '', '', '0/4 FAKE ST']], ['house number zero rejected', '0 FAKE ST', None], ['padded zero rejected', '00 FAKE ST', None]]]\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 addresses. The rules are stipulated for this model only and make no claim of conformance with any postal authority 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-postal-address-normalization-house-number-suffix-length","generated_at":"2026-09-29T14:52:19.010069+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"House-number parsing decides the delivery point; fractions and suffixes distinguish separate dwellings on one lot.","repair":"Allow at most one alphabetic suffix character.","root_cause":"The tail is allowed up to two characters.","sha256":"9928f41271c0e03f81f5bd79047e0ce451fb3f62d4f1f981a7b809b66073b66e","title":"House number parser: two-letter suffixes are accepted · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":38.188,"exit_code":1,"observations":[{"actual":null,"check":"plain number","expected":[13,"","","FAKE ST"],"passed":false},{"actual":[13,"B","","FAKE ST"],"check":"letter suffix","expected":[13,"B","","FAKE ST"],"passed":true},{"actual":[13,"B","","FAKE ST"],"check":"hyphenated letter suffix","expected":[13,"B","","FAKE ST"],"passed":true},{"actual":null,"check":"doubled hyphen is malformed","expected":null,"passed":true},{"actual":null,"check":"two-letter suffix rejected","expected":null,"passed":true},{"actual":null,"check":"half fraction consumed","expected":[13,"","1/2","FAKE ST"],"passed":false},{"actual":null,"check":"third fraction consumed","expected":[13,"","1/3","FAKE ST"],"passed":false},{"actual":null,"check":"eighths are not house fractions","expected":[13,"","","5/8 FAKE ST"],"passed":false},{"actual":null,"check":"improper fraction stays in the street","expected":[13,"","","2/2 FAKE ST"],"passed":false},{"actual":null,"check":"zero numerator stays in the street","expected":[13,"","","0/4 FAKE ST"],"passed":false},{"actual":null,"check":"house number zero rejected","expected":null,"passed":true},{"actual":null,"check":"padded zero rejected","expected":null,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"plain number\", \"actual\": null, \"expected\": [13, \"\", \"\", \"FAKE ST\"], \"passed\": false}, {\"check\": \"letter suffix\", \"actual\": [13, \"B\", \"\", \"FAKE ST\"], \"expected\": [13, \"B\", \"\", \"FAKE ST\"], \"passed\": true}, {\"check\": \"hyphenated letter suffix\", \"actual\": [13, \"B\", \"\", \"FAKE ST\"], \"expected\": [13, \"B\", \"\", \"FAKE ST\"], \"passed\": true}, {\"check\": \"doubled hyphen is malformed\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"two-letter suffix rejected\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"half fraction consumed\", \"actual\": null, \"expected\": [13, \"\", \"1/2\", \"FAKE ST\"], \"passed\": false}, {\"check\": \"third fraction consumed\", \"actual\": null, \"expected\": [13, \"\", \"1/3\", \"FAKE ST\"], \"passed\": false}, {\"check\": \"eighths are not house fractions\", \"actual\": null, \"expected\": [13, \"\", \"\", \"5/8 FAKE ST\"], \"passed\": false}, {\"check\": \"improper fraction stays in the street\", \"actual\": null, \"expected\": [13, \"\", \"\", \"2/2 FAKE ST\"], \"passed\": false}, {\"check\": \"zero numerator stays in the street\", \"actual\": null, \"expected\": [13, \"\", \"\", \"0/4 FAKE ST\"], \"passed\": false}, {\"check\": \"house number zero rejected\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"padded zero rejected\", \"actual\": null, \"expected\": null, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.45,"exit_code":1,"observations":[{"actual":[13,"","","FAKE ST"],"check":"plain number","expected":[13,"","","FAKE ST"],"passed":true},{"actual":[13,"B","","FAKE ST"],"check":"letter suffix","expected":[13,"B","","FAKE ST"],"passed":true},{"actual":[13,"B","","FAKE ST"],"check":"hyphenated letter suffix","expected":[13,"B","","FAKE ST"],"passed":true},{"actual":null,"check":"doubled hyphen is malformed","expected":null,"passed":true},{"actual":[13,"AB","","FAKE ST"],"check":"two-letter suffix rejected","expected":null,"passed":false},{"actual":[13,"","1/2","FAKE ST"],"check":"half fraction consumed","expected":[13,"","1/2","FAKE ST"],"passed":true},{"actual":[13,"","1/3","FAKE ST"],"check":"third fraction consumed","expected":[13,"","1/3","FAKE ST"],"passed":true},{"actual":[13,"","","5/8 FAKE ST"],"check":"eighths are not house fractions","expected":[13,"","","5/8 FAKE ST"],"passed":true},{"actual":[13,"","","2/2 FAKE ST"],"check":"improper fraction stays in the street","expected":[13,"","","2/2 FAKE ST"],"passed":true},{"actual":[13,"","","0/4 FAKE ST"],"check":"zero numerator stays in the street","expected":[13,"","","0/4 FAKE ST"],"passed":true},{"actual":null,"check":"house number zero rejected","expected":null,"passed":true},{"actual":null,"check":"padded zero rejected","expected":null,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"plain number\", \"actual\": [13, \"\", \"\", \"FAKE ST\"], \"expected\": [13, \"\", \"\", \"FAKE ST\"], \"passed\": true}, {\"check\": \"letter suffix\", \"actual\": [13, \"B\", \"\", \"FAKE ST\"], \"expected\": [13, \"B\", \"\", \"FAKE ST\"], \"passed\": true}, {\"check\": \"hyphenated letter suffix\", \"actual\": [13, \"B\", \"\", \"FAKE ST\"], \"expected\": [13, \"B\", \"\", \"FAKE ST\"], \"passed\": true}, {\"check\": \"doubled hyphen is malformed\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"two-letter suffix rejected\", \"actual\": [13, \"AB\", \"\", \"FAKE ST\"], \"expected\": null, \"passed\": false}, {\"check\": \"half fraction consumed\", \"actual\": [13, \"\", \"1/2\", \"FAKE ST\"], \"expected\": [13, \"\", \"1/2\", \"FAKE ST\"], \"passed\": true}, {\"check\": \"third fraction consumed\", \"actual\": [13, \"\", \"1/3\", \"FAKE ST\"], \"expected\": [13, \"\", \"1/3\", \"FAKE ST\"], \"passed\": true}, {\"check\": \"eighths are not house fractions\", \"actual\": [13, \"\", \"\", \"5/8 FAKE ST\"], \"expected\": [13, \"\", \"\", \"5/8 FAKE ST\"], \"passed\": true}, {\"check\": \"improper fraction stays in the street\", \"actual\": [13, \"\", \"\", \"2/2 FAKE ST\"], \"expected\": [13, \"\", \"\", \"2/2 FAKE ST\"], \"passed\": true}, {\"check\": \"zero numerator stays in the street\", \"actual\": [13, \"\", \"\", \"0/4 FAKE ST\"], \"expected\": [13, \"\", \"\", \"0/4 FAKE ST\"], \"passed\": true}, {\"check\": \"house number zero rejected\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"padded zero rejected\", \"actual\": null, \"expected\": null, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":41.928,"exit_code":0,"observations":[{"actual":[13,"","","FAKE ST"],"check":"plain number","expected":[13,"","","FAKE ST"],"passed":true},{"actual":[13,"B","","FAKE ST"],"check":"letter suffix","expected":[13,"B","","FAKE ST"],"passed":true},{"actual":[13,"B","","FAKE ST"],"check":"hyphenated letter suffix","expected":[13,"B","","FAKE ST"],"passed":true},{"actual":null,"check":"doubled hyphen is malformed","expected":null,"passed":true},{"actual":null,"check":"two-letter suffix rejected","expected":null,"passed":true},{"actual":[13,"","1/2","FAKE ST"],"check":"half fraction consumed","expected":[13,"","1/2","FAKE ST"],"passed":true},{"actual":[13,"","1/3","FAKE ST"],"check":"third fraction consumed","expected":[13,"","1/3","FAKE ST"],"passed":true},{"actual":[13,"","","5/8 FAKE ST"],"check":"eighths are not house fractions","expected":[13,"","","5/8 FAKE ST"],"passed":true},{"actual":[13,"","","2/2 FAKE ST"],"check":"improper fraction stays in the street","expected":[13,"","","2/2 FAKE ST"],"passed":true},{"actual":[13,"","","0/4 FAKE ST"],"check":"zero numerator stays in the street","expected":[13,"","","0/4 FAKE ST"],"passed":true},{"actual":null,"check":"house number zero rejected","expected":null,"passed":true},{"actual":null,"check":"padded zero rejected","expected":null,"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"plain number\", \"actual\": [13, \"\", \"\", \"FAKE ST\"], \"expected\": [13, \"\", \"\", \"FAKE ST\"], \"passed\": true}, {\"check\": \"letter suffix\", \"actual\": [13, \"B\", \"\", \"FAKE ST\"], \"expected\": [13, \"B\", \"\", \"FAKE ST\"], \"passed\": true}, {\"check\": \"hyphenated letter suffix\", \"actual\": [13, \"B\", \"\", \"FAKE ST\"], \"expected\": [13, \"B\", \"\", \"FAKE ST\"], \"passed\": true}, {\"check\": \"doubled hyphen is malformed\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"two-letter suffix rejected\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"half fraction consumed\", \"actual\": [13, \"\", \"1/2\", \"FAKE ST\"], \"expected\": [13, \"\", \"1/2\", \"FAKE ST\"], \"passed\": true}, {\"check\": \"third fraction consumed\", \"actual\": [13, \"\", \"1/3\", \"FAKE ST\"], \"expected\": [13, \"\", \"1/3\", \"FAKE ST\"], \"passed\": true}, {\"check\": \"eighths are not house fractions\", \"actual\": [13, \"\", \"\", \"5/8 FAKE ST\"], \"expected\": [13, \"\", \"\", \"5/8 FAKE ST\"], \"passed\": true}, {\"check\": \"improper fraction stays in the street\", \"actual\": [13, \"\", \"\", \"2/2 FAKE ST\"], \"expected\": [13, \"\", \"\", \"2/2 FAKE ST\"], \"passed\": true}, {\"check\": \"zero numerator stays in the street\", \"actual\": [13, \"\", \"\", \"0/4 FAKE ST\"], \"expected\": [13, \"\", \"\", \"0/4 FAKE ST\"], \"passed\": true}, {\"check\": \"house number zero rejected\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"padded zero rejected\", \"actual\": null, \"expected\": null, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}