{"abstract":"A couple with 1.5 parts gets a negative extra-part count that raises the capped tax.","category":"Tax bracket computation","checks":6,"contract":"solve(income, halves, couple): stipulated household quotient. Parts p = halves/2; the base is 2 parts for a couple and 1 otherwise (fewer halves than the base returns 'ERR:parts'). Tax with all parts = p * T(income/p) using slices 0% to 11294, 11% to 28797, 30% to 82341, 41% to 177106, 45% above. The benefit of each half-part beyond the base is capped at 1759: tax = max(full, T_base - 1759 * extra_halves) where T_base = base * T(income/base). Return whole units rounded down.","evaluation_group":"w2-tax_bracket_computation-family-quotient-cap","failed_approach":"Rejecting only fewer than two halves still accepts couples with three halves.","family":"w2-tax_bracket_computation-family-quotient-cap-parts-validation","id":"FA-62636","implementations":{"attempt":{"sha256":"2c187ead166d94099da18272073d0bba6f24fcffc706b0f1e80929ff1a0dbd12","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(income, halves, couple):\n    def prog(x, br):\n        tax, lower = Fraction(0), 0\n        for upper, rate in br:\n            top = x if upper is None else min(x, upper)\n            if top > lower: tax += (top - lower) * Fraction(rate) / 100\n            if upper is None or x <= upper: break\n            lower = upper\n        return tax\n    def cents(v):\n        v = v * 100\n        return int(v + Fraction(1, 2)) if v >= 0 else -int(-v + Fraction(1, 2))\n    \n    base = 2 if couple else 1\n    if halves < 2: return 'ERR:parts'\n    scale = [[11294, '0'], [28797, '11'], [82341, '30'], [177106, '41'], [None, '45']]\n    def tax_for(p): return p * prog(Fraction(income) / p, scale)\n    full = tax_for(Fraction(halves, 2))\n    capped = tax_for(Fraction(base)) - 1759 * (halves - 2 * base)\n    return int(max(full, capped))\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = [[('regression parts-validation 1', (50000, 3, True), 'ERR:parts'),\n  ('regression parts-validation 2', (50000, 2, True), 'ERR:parts'),\n  ('control: single one part', (40000, 2, False), 5286), ('control: couple two parts', (80000, 4, True), 10572),\n  ('control: couple with two children', (80000, 6, True), 7054),\n  ('control: low income family', (30000, 5, True), 194)],\n [('regression parts-validation 1', (40000, 1, False), 'ERR:parts'),\n  ('regression parts-validation 2', (40000, 3, True), 'ERR:parts'),\n  ('partial repair guard 2', (16932, 3, True), 'ERR:parts'), ('control: low income family', (30000, 5, True), 194),\n  ('control: too few parts', (50000, 3, True), 'ERR:parts'), ('control: single parent', (60000, 3, False), 9527),\n  ('control: large family high income', (250000, 8, True), 63921)],\n [('regression parts-validation 1', (281381, 1, False), 'ERR:parts'),\n  ('regression parts-validation 2', (40000, 1, True), 'ERR:parts'),\n  ('partial repair guard 1', (40000, 2, True), 'ERR:parts'), ('partial repair guard 2', (23136, 3, True), 'ERR:parts'),\n  ('control: large family high income', (250000, 8, True), 63921),\n  ('control: single one part', (40000, 2, False), 5286), ('control: couple two parts', (80000, 4, True), 10572),\n  ('control: couple with two children', (80000, 6, True), 7054)],\n [('regression parts-validation 1', (65970, 1, True), 'ERR:parts'),\n  ('regression parts-validation 2', (16932, 3, True), 'ERR:parts'),\n  ('partial repair guard 1', (125562, 2, True), 'ERR:parts'), ('partial repair guard 2', (80000, 3, True), 'ERR:parts'),\n  ('control: couple with two children', (80000, 6, True), 7054), ('control: low income family', (30000, 5, True), 194),\n  ('control: too few parts', (50000, 3, True), 'ERR:parts'), ('control: single parent', (60000, 3, False), 9527)],\n [('regression parts-validation 1', (95963, 1, False), 'ERR:parts'),\n  ('regression parts-validation 2', (40000, 2, True), 'ERR:parts'),\n  ('partial repair guard 1', (80000, 2, True), 'ERR:parts'), ('partial repair guard 2', (150000, 2, True), 'ERR:parts'),\n  ('control: single parent', (60000, 3, False), 9527), ('control: large family high income', (250000, 8, True), 63921),\n  ('control: single one part', (40000, 2, False), 5286), ('control: couple two parts', (80000, 4, True), 10572)]]\nfor label, args, expected in cases[N - 1]:\n    check(label, solve(*args), 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":"8b30484489d3cbb8f57f8e5d06e2a31e01a5747f2fa765aa9b3ccc620cc279da","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(income, halves, couple):\n    def prog(x, br):\n        tax, lower = Fraction(0), 0\n        for upper, rate in br:\n            top = x if upper is None else min(x, upper)\n            if top > lower: tax += (top - lower) * Fraction(rate) / 100\n            if upper is None or x <= upper: break\n            lower = upper\n        return tax\n    def cents(v):\n        v = v * 100\n        return int(v + Fraction(1, 2)) if v >= 0 else -int(-v + Fraction(1, 2))\n    \n    base = 2 if couple else 1\n    pass\n    scale = [[11294, '0'], [28797, '11'], [82341, '30'], [177106, '41'], [None, '45']]\n    def tax_for(p): return p * prog(Fraction(income) / p, scale)\n    full = tax_for(Fraction(halves, 2))\n    capped = tax_for(Fraction(base)) - 1759 * (halves - 2 * base)\n    return int(max(full, capped))\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = [[('regression parts-validation 1', (50000, 3, True), 'ERR:parts'),\n  ('regression parts-validation 2', (50000, 2, True), 'ERR:parts'),\n  ('control: single one part', (40000, 2, False), 5286), ('control: couple two parts', (80000, 4, True), 10572),\n  ('control: couple with two children', (80000, 6, True), 7054),\n  ('control: low income family', (30000, 5, True), 194)],\n [('regression parts-validation 1', (40000, 1, False), 'ERR:parts'),\n  ('regression parts-validation 2', (40000, 3, True), 'ERR:parts'),\n  ('partial repair guard 2', (16932, 3, True), 'ERR:parts'), ('control: low income family', (30000, 5, True), 194),\n  ('control: too few parts', (50000, 3, True), 'ERR:parts'), ('control: single parent', (60000, 3, False), 9527),\n  ('control: large family high income', (250000, 8, True), 63921)],\n [('regression parts-validation 1', (281381, 1, False), 'ERR:parts'),\n  ('regression parts-validation 2', (40000, 1, True), 'ERR:parts'),\n  ('partial repair guard 1', (40000, 2, True), 'ERR:parts'), ('partial repair guard 2', (23136, 3, True), 'ERR:parts'),\n  ('control: large family high income', (250000, 8, True), 63921),\n  ('control: single one part', (40000, 2, False), 5286), ('control: couple two parts', (80000, 4, True), 10572),\n  ('control: couple with two children', (80000, 6, True), 7054)],\n [('regression parts-validation 1', (65970, 1, True), 'ERR:parts'),\n  ('regression parts-validation 2', (16932, 3, True), 'ERR:parts'),\n  ('partial repair guard 1', (125562, 2, True), 'ERR:parts'), ('partial repair guard 2', (80000, 3, True), 'ERR:parts'),\n  ('control: couple with two children', (80000, 6, True), 7054), ('control: low income family', (30000, 5, True), 194),\n  ('control: too few parts', (50000, 3, True), 'ERR:parts'), ('control: single parent', (60000, 3, False), 9527)],\n [('regression parts-validation 1', (95963, 1, False), 'ERR:parts'),\n  ('regression parts-validation 2', (40000, 2, True), 'ERR:parts'),\n  ('partial repair guard 1', (80000, 2, True), 'ERR:parts'), ('partial repair guard 2', (150000, 2, True), 'ERR:parts'),\n  ('control: single parent', (60000, 3, False), 9527), ('control: large family high income', (250000, 8, True), 63921),\n  ('control: single one part', (40000, 2, False), 5286), ('control: couple two parts', (80000, 4, True), 10572)]]\nfor label, args, expected in cases[N - 1]:\n    check(label, solve(*args), 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":"3354fef2d8aae676e5d18cd96a0fe3c0f4d39015807e06ce8cdc3f068a5b3e70","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(income, halves, couple):\n    def prog(x, br):\n        tax, lower = Fraction(0), 0\n        for upper, rate in br:\n            top = x if upper is None else min(x, upper)\n            if top > lower: tax += (top - lower) * Fraction(rate) / 100\n            if upper is None or x <= upper: break\n            lower = upper\n        return tax\n    def cents(v):\n        v = v * 100\n        return int(v + Fraction(1, 2)) if v >= 0 else -int(-v + Fraction(1, 2))\n    \n    base = 2 if couple else 1\n    if halves < 2 * base: return 'ERR:parts'\n    scale = [[11294, '0'], [28797, '11'], [82341, '30'], [177106, '41'], [None, '45']]\n    def tax_for(p): return p * prog(Fraction(income) / p, scale)\n    full = tax_for(Fraction(halves, 2))\n    capped = tax_for(Fraction(base)) - 1759 * (halves - 2 * base)\n    return int(max(full, capped))\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = [[('regression parts-validation 1', (50000, 3, True), 'ERR:parts'),\n  ('regression parts-validation 2', (50000, 2, True), 'ERR:parts'),\n  ('control: single one part', (40000, 2, False), 5286), ('control: couple two parts', (80000, 4, True), 10572),\n  ('control: couple with two children', (80000, 6, True), 7054),\n  ('control: low income family', (30000, 5, True), 194)],\n [('regression parts-validation 1', (40000, 1, False), 'ERR:parts'),\n  ('regression parts-validation 2', (40000, 3, True), 'ERR:parts'),\n  ('partial repair guard 2', (16932, 3, True), 'ERR:parts'), ('control: low income family', (30000, 5, True), 194),\n  ('control: too few parts', (50000, 3, True), 'ERR:parts'), ('control: single parent', (60000, 3, False), 9527),\n  ('control: large family high income', (250000, 8, True), 63921)],\n [('regression parts-validation 1', (281381, 1, False), 'ERR:parts'),\n  ('regression parts-validation 2', (40000, 1, True), 'ERR:parts'),\n  ('partial repair guard 1', (40000, 2, True), 'ERR:parts'), ('partial repair guard 2', (23136, 3, True), 'ERR:parts'),\n  ('control: large family high income', (250000, 8, True), 63921),\n  ('control: single one part', (40000, 2, False), 5286), ('control: couple two parts', (80000, 4, True), 10572),\n  ('control: couple with two children', (80000, 6, True), 7054)],\n [('regression parts-validation 1', (65970, 1, True), 'ERR:parts'),\n  ('regression parts-validation 2', (16932, 3, True), 'ERR:parts'),\n  ('partial repair guard 1', (125562, 2, True), 'ERR:parts'), ('partial repair guard 2', (80000, 3, True), 'ERR:parts'),\n  ('control: couple with two children', (80000, 6, True), 7054), ('control: low income family', (30000, 5, True), 194),\n  ('control: too few parts', (50000, 3, True), 'ERR:parts'), ('control: single parent', (60000, 3, False), 9527)],\n [('regression parts-validation 1', (95963, 1, False), 'ERR:parts'),\n  ('regression parts-validation 2', (40000, 2, True), 'ERR:parts'),\n  ('partial repair guard 1', (80000, 2, True), 'ERR:parts'), ('partial repair guard 2', (150000, 2, True), 'ERR:parts'),\n  ('control: single parent', (60000, 3, False), 9527), ('control: large family high income', (250000, 8, True), 63921),\n  ('control: single one part', (40000, 2, False), 5286), ('control: couple two parts', (80000, 4, True), 10572)]]\nfor label, args, expected in cases[N - 1]:\n    check(label, solve(*args), 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, bounded teaching model with a stipulated toy contract; it makes no claim of conformance to any real regulation, standard, or institution's rules. 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-tax_bracket_computation-family-quotient-cap-parts-validation","generated_at":"2026-09-29T14:47:06.623937+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Tax computations hinge on which slice, threshold, ordering and rounding rule applies at each step; a misplaced boundary silently misstates liabilities.","repair":"Return ERR:parts when halves are fewer than twice the base parts.","root_cause":"The minimum number of halves for the household type is not validated.","sha256":"ec6d62faf28b781df3c726e6da38fd11cc00da5dc20bc8f61e47baaa5e80b0ac","title":"A couple declared with a single part is accepted · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":47.367,"exit_code":1,"observations":[{"actual":4929,"check":"regression parts-validation 1","expected":"ERR:parts","passed":false},{"actual":8286,"check":"regression parts-validation 2","expected":"ERR:parts","passed":false},{"actual":5286,"check":"control: single one part","expected":5286,"passed":true},{"actual":10572,"check":"control: couple two parts","expected":10572,"passed":true},{"actual":7054,"check":"control: couple with two children","expected":7054,"passed":true},{"actual":194,"check":"control: low income family","expected":194,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression parts-validation 1\", \"actual\": 4929, \"expected\": \"ERR:parts\", \"passed\": false}, {\"check\": \"regression parts-validation 2\", \"actual\": 8286, \"expected\": \"ERR:parts\", \"passed\": false}, {\"check\": \"control: single one part\", \"actual\": 5286, \"expected\": 5286, \"passed\": true}, {\"check\": \"control: couple two parts\", \"actual\": 10572, \"expected\": 10572, \"passed\": true}, {\"check\": \"control: couple with two children\", \"actual\": 7054, \"expected\": 7054, \"passed\": true}, {\"check\": \"control: low income family\", \"actual\": 194, \"expected\": 194, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":43.498,"exit_code":1,"observations":[{"actual":4929,"check":"regression parts-validation 1","expected":"ERR:parts","passed":false},{"actual":8286,"check":"regression parts-validation 2","expected":"ERR:parts","passed":false},{"actual":5286,"check":"control: single one part","expected":5286,"passed":true},{"actual":10572,"check":"control: couple two parts","expected":10572,"passed":true},{"actual":7054,"check":"control: couple with two children","expected":7054,"passed":true},{"actual":194,"check":"control: low income family","expected":194,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression parts-validation 1\", \"actual\": 4929, \"expected\": \"ERR:parts\", \"passed\": false}, {\"check\": \"regression parts-validation 2\", \"actual\": 8286, \"expected\": \"ERR:parts\", \"passed\": false}, {\"check\": \"control: single one part\", \"actual\": 5286, \"expected\": 5286, \"passed\": true}, {\"check\": \"control: couple two parts\", \"actual\": 10572, \"expected\": 10572, \"passed\": true}, {\"check\": \"control: couple with two children\", \"actual\": 7054, \"expected\": 7054, \"passed\": true}, {\"check\": \"control: low income family\", \"actual\": 194, \"expected\": 194, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":46.892,"exit_code":0,"observations":[{"actual":"ERR:parts","check":"regression parts-validation 1","expected":"ERR:parts","passed":true},{"actual":"ERR:parts","check":"regression parts-validation 2","expected":"ERR:parts","passed":true},{"actual":5286,"check":"control: single one part","expected":5286,"passed":true},{"actual":10572,"check":"control: couple two parts","expected":10572,"passed":true},{"actual":7054,"check":"control: couple with two children","expected":7054,"passed":true},{"actual":194,"check":"control: low income family","expected":194,"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression parts-validation 1\", \"actual\": \"ERR:parts\", \"expected\": \"ERR:parts\", \"passed\": true}, {\"check\": \"regression parts-validation 2\", \"actual\": \"ERR:parts\", \"expected\": \"ERR:parts\", \"passed\": true}, {\"check\": \"control: single one part\", \"actual\": 5286, \"expected\": 5286, \"passed\": true}, {\"check\": \"control: couple two parts\", \"actual\": 10572, \"expected\": 10572, \"passed\": true}, {\"check\": \"control: couple with two children\", \"actual\": 7054, \"expected\": 7054, \"passed\": true}, {\"check\": \"control: low income family\", \"actual\": 194, \"expected\": 194, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}