{"abstract":"The higher rate starts 12570 pounds too early.","category":"Tax bracket computation","checks":6,"contract":"solve(income, pension): stipulated allowance taper in whole pounds. Adjusted net income ani = income - pension. The personal allowance 12570 is reduced by 1 for every 2 whole pounds of ani above 100000 (floor of half the excess), never below 0. Taxable = max(0, ani - allowance). Taxable income is taxed 20% up to 37700, 40% from 37700 to 125140, 45% above 125140. Return tax in integer pence.","evaluation_group":"w2-tax_bracket_computation-personal-allowance-taper","failed_approach":"Moving only the basic band onto taxable income leaves the higher band measured on total income.","family":"w2-tax_bracket_computation-personal-allowance-taper-band-base","id":"FA-62461","implementations":{"attempt":{"sha256":"53192dd4b968a7dd6cdabc1c4fc745dc18219d1a630d2a9d11246cd07b765d00","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(income, pension):\n    ani = income - pension\n    allow = 12570\n    if ani > 100000: allow = max(0, allow - (ani - 100000) // 2)\n    taxable = max(0, ani - allow)\n    basic = min(taxable, 37700)\n    higher = max(0, min(ani, 125140) - max(37700, allow))\n    additional = max(0, taxable - 125140)\n    return basic * 20 + higher * 40 + additional * 45\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = [[('regression band-base 1', (50000, 0), 748600), ('regression band-base 2', (110001, 0), 3343240),\n  ('control: pension restores allowance', (130000, 5000), 4243200), ('control: fully tapered', (200000, 0), 7620300),\n  ('control: allowance exhausted exactly', (125140, 0), 4251600),\n  ('control: just beyond exhaustion', (125143, 0), 4251735)],\n [('regression band-base 1', (130000, 5000), 4243200), ('regression band-base 2', (160000, 60000), 2743200),\n  ('control: fully tapered', (200000, 0), 7620300), ('control: allowance exhausted exactly', (125140, 0), 4251600),\n  ('control: just beyond exhaustion', (125143, 0), 4251735), ('control: below allowance', (9000, 0), 0)],\n [('regression band-base 1', (73848, 0), 1697120), ('regression band-base 2', (100003, 0), 2743360),\n  ('control: below allowance', (9000, 0), 0), ('control: large pension', (160000, 60000), 2743200),\n  ('control: mid taper', (140000, 0), 4920300), ('control: basic and higher', (50000, 0), 748600)],\n [('regression band-base 1', (77280, 0), 1834400), ('regression band-base 2', (100001, 5000), 2543240),\n  ('control: basic and higher', (50000, 0), 748600), ('control: odd excess in taper', (110001, 0), 3343240),\n  ('control: pension restores allowance', (130000, 5000), 4243200), ('control: fully tapered', (200000, 0), 7620300)],\n [('regression band-base 1', (112519, 0), 3494320), ('regression band-base 2', (125142, 20000), 3051720),\n  ('control: fully tapered', (200000, 0), 7620300), ('control: allowance exhausted exactly', (125140, 0), 4251600),\n  ('control: just beyond exhaustion', (125143, 0), 4251735), ('control: below allowance', (9000, 0), 0)]]\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":"1e105ab354f4a2b07b4820bf7c3a54dc32fb24b3117c3e063fad41b2241dc380","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(income, pension):\n    ani = income - pension\n    allow = 12570\n    if ani > 100000: allow = max(0, allow - (ani - 100000) // 2)\n    taxable = max(0, ani - allow)\n    basic = max(0, min(ani, 37700) - allow)\n    higher = max(0, min(ani, 125140) - max(37700, allow))\n    additional = max(0, ani - max(125140, allow))\n    return basic * 20 + higher * 40 + additional * 45\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = [[('regression band-base 1', (50000, 0), 748600), ('regression band-base 2', (110001, 0), 3343240),\n  ('control: pension restores allowance', (130000, 5000), 4243200), ('control: fully tapered', (200000, 0), 7620300),\n  ('control: allowance exhausted exactly', (125140, 0), 4251600),\n  ('control: just beyond exhaustion', (125143, 0), 4251735)],\n [('regression band-base 1', (130000, 5000), 4243200), ('regression band-base 2', (160000, 60000), 2743200),\n  ('control: fully tapered', (200000, 0), 7620300), ('control: allowance exhausted exactly', (125140, 0), 4251600),\n  ('control: just beyond exhaustion', (125143, 0), 4251735), ('control: below allowance', (9000, 0), 0)],\n [('regression band-base 1', (73848, 0), 1697120), ('regression band-base 2', (100003, 0), 2743360),\n  ('control: below allowance', (9000, 0), 0), ('control: large pension', (160000, 60000), 2743200),\n  ('control: mid taper', (140000, 0), 4920300), ('control: basic and higher', (50000, 0), 748600)],\n [('regression band-base 1', (77280, 0), 1834400), ('regression band-base 2', (100001, 5000), 2543240),\n  ('control: basic and higher', (50000, 0), 748600), ('control: odd excess in taper', (110001, 0), 3343240),\n  ('control: pension restores allowance', (130000, 5000), 4243200), ('control: fully tapered', (200000, 0), 7620300)],\n [('regression band-base 1', (112519, 0), 3494320), ('regression band-base 2', (125142, 20000), 3051720),\n  ('control: fully tapered', (200000, 0), 7620300), ('control: allowance exhausted exactly', (125140, 0), 4251600),\n  ('control: just beyond exhaustion', (125143, 0), 4251735), ('control: below allowance', (9000, 0), 0)]]\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":"2b632617a0f05302ce444f72dfd46f8c6bc9475e82a87145980a5657e27ca54e","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(income, pension):\n    ani = income - pension\n    allow = 12570\n    if ani > 100000: allow = max(0, allow - (ani - 100000) // 2)\n    taxable = max(0, ani - allow)\n    basic = min(taxable, 37700)\n    higher = max(0, min(taxable, 125140) - 37700)\n    additional = max(0, taxable - 125140)\n    return basic * 20 + higher * 40 + additional * 45\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = [[('regression band-base 1', (50000, 0), 748600), ('regression band-base 2', (110001, 0), 3343240),\n  ('control: pension restores allowance', (130000, 5000), 4243200), ('control: fully tapered', (200000, 0), 7620300),\n  ('control: allowance exhausted exactly', (125140, 0), 4251600),\n  ('control: just beyond exhaustion', (125143, 0), 4251735)],\n [('regression band-base 1', (130000, 5000), 4243200), ('regression band-base 2', (160000, 60000), 2743200),\n  ('control: fully tapered', (200000, 0), 7620300), ('control: allowance exhausted exactly', (125140, 0), 4251600),\n  ('control: just beyond exhaustion', (125143, 0), 4251735), ('control: below allowance', (9000, 0), 0)],\n [('regression band-base 1', (73848, 0), 1697120), ('regression band-base 2', (100003, 0), 2743360),\n  ('control: below allowance', (9000, 0), 0), ('control: large pension', (160000, 60000), 2743200),\n  ('control: mid taper', (140000, 0), 4920300), ('control: basic and higher', (50000, 0), 748600)],\n [('regression band-base 1', (77280, 0), 1834400), ('regression band-base 2', (100001, 5000), 2543240),\n  ('control: basic and higher', (50000, 0), 748600), ('control: odd excess in taper', (110001, 0), 3343240),\n  ('control: pension restores allowance', (130000, 5000), 4243200), ('control: fully tapered', (200000, 0), 7620300)],\n [('regression band-base 1', (112519, 0), 3494320), ('regression band-base 2', (125142, 20000), 3051720),\n  ('control: fully tapered', (200000, 0), 7620300), ('control: allowance exhausted exactly', (125140, 0), 4251600),\n  ('control: just beyond exhaustion', (125143, 0), 4251735), ('control: below allowance', (9000, 0), 0)]]\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-personal-allowance-taper-band-base","generated_at":"2026-09-29T14:47:04.783400+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":"Apply the 37700 and 125140 band limits to taxable income.","root_cause":"Band limits are compared with ani rather than with income after the allowance.","sha256":"1cfabc9b256661580185ad55359b4c7e62b18fecaa63679ec926224b88d5bfd1","title":"Rate bands are applied to total income instead of taxable income · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":40.647,"exit_code":1,"observations":[{"actual":1240600,"check":"regression band-base 1","expected":748600,"passed":false},{"actual":3646040,"check":"regression band-base 2","expected":3343240,"passed":false},{"actual":4246000,"check":"control: pension restores allowance","expected":4243200,"passed":false},{"actual":7620300,"check":"control: fully tapered","expected":7620300,"passed":true},{"actual":4251600,"check":"control: allowance exhausted exactly","expected":4251600,"passed":true},{"actual":4251735,"check":"control: just beyond exhaustion","expected":4251735,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression band-base 1\", \"actual\": 1240600, \"expected\": 748600, \"passed\": false}, {\"check\": \"regression band-base 2\", \"actual\": 3646040, \"expected\": 3343240, \"passed\": false}, {\"check\": \"control: pension restores allowance\", \"actual\": 4246000, \"expected\": 4243200, \"passed\": false}, {\"check\": \"control: fully tapered\", \"actual\": 7620300, \"expected\": 7620300, \"passed\": true}, {\"check\": \"control: allowance exhausted exactly\", \"actual\": 4251600, \"expected\": 4251600, \"passed\": true}, {\"check\": \"control: just beyond exhaustion\", \"actual\": 4251735, \"expected\": 4251735, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":38.086,"exit_code":1,"observations":[{"actual":994600,"check":"regression band-base 1","expected":748600,"passed":false},{"actual":3494640,"check":"regression band-base 2","expected":3343240,"passed":false},{"actual":4244600,"check":"control: pension restores allowance","expected":4243200,"passed":false},{"actual":7620300,"check":"control: fully tapered","expected":7620300,"passed":true},{"actual":4251600,"check":"control: allowance exhausted exactly","expected":4251600,"passed":true},{"actual":4251735,"check":"control: just beyond exhaustion","expected":4251735,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression band-base 1\", \"actual\": 994600, \"expected\": 748600, \"passed\": false}, {\"check\": \"regression band-base 2\", \"actual\": 3494640, \"expected\": 3343240, \"passed\": false}, {\"check\": \"control: pension restores allowance\", \"actual\": 4244600, \"expected\": 4243200, \"passed\": false}, {\"check\": \"control: fully tapered\", \"actual\": 7620300, \"expected\": 7620300, \"passed\": true}, {\"check\": \"control: allowance exhausted exactly\", \"actual\": 4251600, \"expected\": 4251600, \"passed\": true}, {\"check\": \"control: just beyond exhaustion\", \"actual\": 4251735, \"expected\": 4251735, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":41.467,"exit_code":0,"observations":[{"actual":748600,"check":"regression band-base 1","expected":748600,"passed":true},{"actual":3343240,"check":"regression band-base 2","expected":3343240,"passed":true},{"actual":4243200,"check":"control: pension restores allowance","expected":4243200,"passed":true},{"actual":7620300,"check":"control: fully tapered","expected":7620300,"passed":true},{"actual":4251600,"check":"control: allowance exhausted exactly","expected":4251600,"passed":true},{"actual":4251735,"check":"control: just beyond exhaustion","expected":4251735,"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression band-base 1\", \"actual\": 748600, \"expected\": 748600, \"passed\": true}, {\"check\": \"regression band-base 2\", \"actual\": 3343240, \"expected\": 3343240, \"passed\": true}, {\"check\": \"control: pension restores allowance\", \"actual\": 4243200, \"expected\": 4243200, \"passed\": true}, {\"check\": \"control: fully tapered\", \"actual\": 7620300, \"expected\": 7620300, \"passed\": true}, {\"check\": \"control: allowance exhausted exactly\", \"actual\": 4251600, \"expected\": 4251600, \"passed\": true}, {\"check\": \"control: just beyond exhaustion\", \"actual\": 4251735, \"expected\": 4251735, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}