FAILURE MAP
← Case archive

FA-62746 / Tax bracket computation / Open access

Provisional income counts the full benefit instead of half · case 01

Retirees cross the inclusion thresholds with far less other income.

Verified by executionVariant 1 · 7 checks per implementationDownload source bundle ↓JSON ↗

ROOT CAUSE

PI adds benefits rather than benefits/2.

VERIFIED REPAIR

Add half of the benefits to provisional income.

Unsuccessful approach: Adding half the benefits but omitting tax-exempt interest understates provisional income.

Case contract

solve(agi, exempt_interest, benefits, status): stipulated benefit inclusion. Provisional income PI = agi + exempt_interest + benefits/2. Base amounts (b1, b2): single (25000, 34000), mfj (32000, 44000), mfs (0, 0). If PI <= b1 nothing is included; if PI <= b2, include min(benefits/2, (PI - b1)/2); otherwise include min(0.85*benefits, 0.85*(PI - b2) + min(benefits/2, (b2 - b1)/2)). Return the included amount rounded down to whole dollars.

Why this case matters

Tax computations hinge on which slice, threshold, ordering and rounding rule applies at each step; a misplaced boundary silently misstates liabilities.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
from fractions import Fraction
N = 1
observations = []
def solve(agi, exempt_interest, benefits, status):
    b1, b2 = {'single': (25000, 34000), 'mfj': (32000, 44000), 'mfs': (0, 0)}[status]
    B = Fraction(benefits)
    pi = agi + exempt_interest + B
    if pi <= b1: t = Fraction(0)
    elif pi <= b2: t = min(B / 2, (pi - b1) / 2)
    else: t = min(B * 85 / 100, (pi - b2) * 85 / 100 + min(B / 2, Fraction(b2 - b1, 2)))
    return int(t)
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = [[('regression provisional-income 1', (20000, 0, 12000, 'single'), 500),
  ('regression provisional-income 2', (30000, 1000, 20000, 'mfj'), 4500),
  ('partial repair guard 2', (10000, 1000, 40000, 'single'), 3000),
  ('control: second tier', (40000, 0, 20000, 'single'), 17000), ('control: below base', (10000, 0, 10000, 'single'), 0),
  ('control: separate filer', (5000, 0, 8000, 'mfs'), 6800),
  ('control: small benefit first tier', (28000, 0, 2000, 'single'), 1000)],
 [('regression provisional-income 1', (10000, 1000, 40000, 'single'), 3000),
  ('regression provisional-income 2', (20000, 0, 20000, 'mfj'), 0),
  ('partial repair guard 1', (30000, 1000, 8000, 'single'), 4850),
  ('partial repair guard 2', (20000, 1000, 45562, 'single'), 12813),
  ('control: joint with exempt interest', (30000, 1000, 20000, 'mfj'), 4500),
  ('control: separate filer', (5000, 0, 8000, 'mfs'), 6800),
  ('control: small benefit first tier', (28000, 0, 2000, 'single'), 1000),
  ('control: large income', (150000, 5000, 40000, 'mfj'), 34000)],
 [('regression provisional-income 1', (0, 5000, 40000, 'mfj'), 0),
  ('regression provisional-income 2', (45000, 0, 30934, 'mfj'), 19996),
  ('partial repair guard 1', (30000, 1000, 42192, 'mfj'), 12881),
  ('partial repair guard 2', (0, 1000, 20000, 'mfs'), 9350),
  ('control: large income', (150000, 5000, 40000, 'mfj'), 34000),
  ('control: first tier', (20000, 0, 12000, 'single'), 500),
  ('control: second tier', (40000, 0, 20000, 'single'), 17000),
  ('control: below base', (10000, 0, 10000, 'single'), 0)],
 [('regression provisional-income 1', (30000, 1000, 8000, 'single'), 4850),
  ('regression provisional-income 2', (20000, 1000, 45562, 'single'), 12813),
  ('partial repair guard 1', (45000, 1000, 40000, 'single'), 31700),
  ('partial repair guard 2', (0, 5000, 20000, 'mfs'), 12750), ('control: below base', (10000, 0, 10000, 'single'), 0),
  ('control: joint with exempt interest', (30000, 1000, 20000, 'mfj'), 4500),
  ('control: separate filer', (5000, 0, 8000, 'mfs'), 6800),
  ('control: small benefit first tier', (28000, 0, 2000, 'single'), 1000)],
 [('regression provisional-income 1', (30000, 1000, 42192, 'mfj'), 12881),
  ('regression provisional-income 2', (20000, 0, 40000, 'mfj'), 4000),
  ('partial repair guard 1', (20000, 5000, 20000, 'mfj'), 1500),
  ('partial repair guard 2', (30000, 1000, 25710, 'single'), 12876),
  ('control: small benefit first tier', (28000, 0, 2000, 'single'), 1000),
  ('control: large income', (150000, 5000, 40000, 'mfj'), 34000),
  ('control: first tier', (20000, 0, 12000, 'single'), 500),
  ('control: second tier', (40000, 0, 20000, 'single'), 17000)]]
for label, args, expected in cases[N - 1]:
    check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
regression provisional-income 13500500Failed
regression provisional-income 2119504500Failed
partial repair guard 2189503000Failed
control: second tier1700017000Passed
control: below base00Passed
control: separate filer68006800Passed
control: small benefit first tier10001000Passed

SHA-256 / ef8967b8a2d22f3fddb7b3438e747282e2565dfee42a05b19c174d5ea9b4f991

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
from fractions import Fraction
N = 1
observations = []
def solve(agi, exempt_interest, benefits, status):
    b1, b2 = {'single': (25000, 34000), 'mfj': (32000, 44000), 'mfs': (0, 0)}[status]
    B = Fraction(benefits)
    pi = agi + B / 2
    if pi <= b1: t = Fraction(0)
    elif pi <= b2: t = min(B / 2, (pi - b1) / 2)
    else: t = min(B * 85 / 100, (pi - b2) * 85 / 100 + min(B / 2, Fraction(b2 - b1, 2)))
    return int(t)
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = [[('regression provisional-income 1', (20000, 0, 12000, 'single'), 500),
  ('regression provisional-income 2', (30000, 1000, 20000, 'mfj'), 4500),
  ('partial repair guard 2', (10000, 1000, 40000, 'single'), 3000),
  ('control: second tier', (40000, 0, 20000, 'single'), 17000), ('control: below base', (10000, 0, 10000, 'single'), 0),
  ('control: separate filer', (5000, 0, 8000, 'mfs'), 6800),
  ('control: small benefit first tier', (28000, 0, 2000, 'single'), 1000)],
 [('regression provisional-income 1', (10000, 1000, 40000, 'single'), 3000),
  ('regression provisional-income 2', (20000, 0, 20000, 'mfj'), 0),
  ('partial repair guard 1', (30000, 1000, 8000, 'single'), 4850),
  ('partial repair guard 2', (20000, 1000, 45562, 'single'), 12813),
  ('control: joint with exempt interest', (30000, 1000, 20000, 'mfj'), 4500),
  ('control: separate filer', (5000, 0, 8000, 'mfs'), 6800),
  ('control: small benefit first tier', (28000, 0, 2000, 'single'), 1000),
  ('control: large income', (150000, 5000, 40000, 'mfj'), 34000)],
 [('regression provisional-income 1', (0, 5000, 40000, 'mfj'), 0),
  ('regression provisional-income 2', (45000, 0, 30934, 'mfj'), 19996),
  ('partial repair guard 1', (30000, 1000, 42192, 'mfj'), 12881),
  ('partial repair guard 2', (0, 1000, 20000, 'mfs'), 9350),
  ('control: large income', (150000, 5000, 40000, 'mfj'), 34000),
  ('control: first tier', (20000, 0, 12000, 'single'), 500),
  ('control: second tier', (40000, 0, 20000, 'single'), 17000),
  ('control: below base', (10000, 0, 10000, 'single'), 0)],
 [('regression provisional-income 1', (30000, 1000, 8000, 'single'), 4850),
  ('regression provisional-income 2', (20000, 1000, 45562, 'single'), 12813),
  ('partial repair guard 1', (45000, 1000, 40000, 'single'), 31700),
  ('partial repair guard 2', (0, 5000, 20000, 'mfs'), 12750), ('control: below base', (10000, 0, 10000, 'single'), 0),
  ('control: joint with exempt interest', (30000, 1000, 20000, 'mfj'), 4500),
  ('control: separate filer', (5000, 0, 8000, 'mfs'), 6800),
  ('control: small benefit first tier', (28000, 0, 2000, 'single'), 1000)],
 [('regression provisional-income 1', (30000, 1000, 42192, 'mfj'), 12881),
  ('regression provisional-income 2', (20000, 0, 40000, 'mfj'), 4000),
  ('partial repair guard 1', (20000, 5000, 20000, 'mfj'), 1500),
  ('partial repair guard 2', (30000, 1000, 25710, 'single'), 12876),
  ('control: small benefit first tier', (28000, 0, 2000, 'single'), 1000),
  ('control: large income', (150000, 5000, 40000, 'mfj'), 34000),
  ('control: first tier', (20000, 0, 12000, 'single'), 500),
  ('control: second tier', (40000, 0, 20000, 'single'), 17000)]]
for label, args, expected in cases[N - 1]:
    check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
regression provisional-income 1500500Passed
regression provisional-income 240004500Failed
partial repair guard 225003000Failed
control: second tier1700017000Passed
control: below base00Passed
control: separate filer68006800Passed
control: small benefit first tier10001000Passed

SHA-256 / 914baabfc939a3a55fdd846205da872942bb3389de062b8d8061d9c73c44f905

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json
from fractions import Fraction
N = 1
observations = []
def solve(agi, exempt_interest, benefits, status):
    b1, b2 = {'single': (25000, 34000), 'mfj': (32000, 44000), 'mfs': (0, 0)}[status]
    B = Fraction(benefits)
    pi = agi + exempt_interest + B / 2
    if pi <= b1: t = Fraction(0)
    elif pi <= b2: t = min(B / 2, (pi - b1) / 2)
    else: t = min(B * 85 / 100, (pi - b2) * 85 / 100 + min(B / 2, Fraction(b2 - b1, 2)))
    return int(t)
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = [[('regression provisional-income 1', (20000, 0, 12000, 'single'), 500),
  ('regression provisional-income 2', (30000, 1000, 20000, 'mfj'), 4500),
  ('partial repair guard 2', (10000, 1000, 40000, 'single'), 3000),
  ('control: second tier', (40000, 0, 20000, 'single'), 17000), ('control: below base', (10000, 0, 10000, 'single'), 0),
  ('control: separate filer', (5000, 0, 8000, 'mfs'), 6800),
  ('control: small benefit first tier', (28000, 0, 2000, 'single'), 1000)],
 [('regression provisional-income 1', (10000, 1000, 40000, 'single'), 3000),
  ('regression provisional-income 2', (20000, 0, 20000, 'mfj'), 0),
  ('partial repair guard 1', (30000, 1000, 8000, 'single'), 4850),
  ('partial repair guard 2', (20000, 1000, 45562, 'single'), 12813),
  ('control: joint with exempt interest', (30000, 1000, 20000, 'mfj'), 4500),
  ('control: separate filer', (5000, 0, 8000, 'mfs'), 6800),
  ('control: small benefit first tier', (28000, 0, 2000, 'single'), 1000),
  ('control: large income', (150000, 5000, 40000, 'mfj'), 34000)],
 [('regression provisional-income 1', (0, 5000, 40000, 'mfj'), 0),
  ('regression provisional-income 2', (45000, 0, 30934, 'mfj'), 19996),
  ('partial repair guard 1', (30000, 1000, 42192, 'mfj'), 12881),
  ('partial repair guard 2', (0, 1000, 20000, 'mfs'), 9350),
  ('control: large income', (150000, 5000, 40000, 'mfj'), 34000),
  ('control: first tier', (20000, 0, 12000, 'single'), 500),
  ('control: second tier', (40000, 0, 20000, 'single'), 17000),
  ('control: below base', (10000, 0, 10000, 'single'), 0)],
 [('regression provisional-income 1', (30000, 1000, 8000, 'single'), 4850),
  ('regression provisional-income 2', (20000, 1000, 45562, 'single'), 12813),
  ('partial repair guard 1', (45000, 1000, 40000, 'single'), 31700),
  ('partial repair guard 2', (0, 5000, 20000, 'mfs'), 12750), ('control: below base', (10000, 0, 10000, 'single'), 0),
  ('control: joint with exempt interest', (30000, 1000, 20000, 'mfj'), 4500),
  ('control: separate filer', (5000, 0, 8000, 'mfs'), 6800),
  ('control: small benefit first tier', (28000, 0, 2000, 'single'), 1000)],
 [('regression provisional-income 1', (30000, 1000, 42192, 'mfj'), 12881),
  ('regression provisional-income 2', (20000, 0, 40000, 'mfj'), 4000),
  ('partial repair guard 1', (20000, 5000, 20000, 'mfj'), 1500),
  ('partial repair guard 2', (30000, 1000, 25710, 'single'), 12876),
  ('control: small benefit first tier', (28000, 0, 2000, 'single'), 1000),
  ('control: large income', (150000, 5000, 40000, 'mfj'), 34000),
  ('control: first tier', (20000, 0, 12000, 'single'), 500),
  ('control: second tier', (40000, 0, 20000, 'single'), 17000)]]
for label, args, expected in cases[N - 1]:
    check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
regression provisional-income 1500500Passed
regression provisional-income 245004500Passed
partial repair guard 230003000Passed
control: second tier1700017000Passed
control: below base00Passed
control: separate filer68006800Passed
control: small benefit first tier10001000Passed

SHA-256 / 2033fb8db1579508d517c7360b5fcf1b9c22b28dc6d635b20bd05c428a784e39

Verification & scope

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.

Observations recorded using Python 3.12.14 at 2026-09-29T14:47:07.555615+00:00.

Case digest / 4175c209f8a9d9b50990027b1f643fb6c28fbe8d57504215bd7d37513d81fb0e