broken_source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    cut = x['as_of']
    control = sum(a for d, a in x['control'] if d <= cut)
    per = {}
    for cust, rows in x['sub'].items():
        per[cust] = sum(a for d, a in rows if d <= cut)
    sub_total = sum(per.values())
    credit = sorted(c for c, v in per.items() if v < 0)
    return {'control': control, 'subledger': sub_total, 'difference': sub_total - control, 'credit_balances': credit, 'open_customers': sum(1 for v in per.values() if v != 0)}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: difference orientation', {'control': [[5, 100], [19, -80], [21, -80]], 'sub': {'bolt': [[5, -80], [1, 250], [5, -80]], 'acme': [[21, 100]], 'dyna': [[20, 400], [1, 250], [20, 100]], 'crux': [[20, 400], [5, 100]]}, 'as_of': 20}, {'control': 20, 'subledger': 1340, 'difference': -1320, 'credit_balances': [], 'open_customers': 3}], ['control 1', {'control': [[21, 250], [20, 250], [21, 400], [21, 250], [20, 250]], 'sub': {'bolt': [[1, -300], [21, 250]], 'crux': [[5, 400], [21, 100]], 'dyna': [[21, -80], [1, 400]]}, 'as_of': 20}, {'control': 500, 'subledger': 500, 'difference': 0, 'credit_balances': ['bolt'], 'open_customers': 3}], ['control 2', {'control': [[1, -80], [21, 400], [20, 400]], 'sub': {'bolt': [[21, 250]], 'crux': [[21, 250], [1, -300], [5, 100]], 'dyna': [[1, -80], [20, 100]], 'acme': [[20, 100], [5, 400], [21, 100]]}, 'as_of': 20}, {'control': 320, 'subledger': 320, 'difference': 0, 'credit_balances': ['crux'], 'open_customers': 3}], ['control 3', {'control': [[10, 100], [9, -80]], 'sub': {'dyna': [[10, -80], [10, 100]]}, 'as_of': 10}, {'control': 20, 'subledger': 20, 'difference': 0, 'credit_balances': [], 'open_customers': 1}], ['control 4', {'control': [[1, 100], [32, 250], [32, 250]], 'sub': {'dyna': [[31, 100], [32, -80]]}, 'as_of': 31}, {'control': 100, 'subledger': 100, 'difference': 0, 'credit_balances': [], 'open_customers': 1}], ['control 5', {'control': [[32, 100], [31, 400], [32, -80]], 'sub': {'dyna': [[1, 400]]}, 'as_of': 31}, {'control': 400, 'subledger': 400, 'difference': 0, 'credit_balances': [], 'open_customers': 1}], ['sample 6', {'control': [[21, 400], [5, 250], [19, 250], [20, 400], [19, -80]], 'sub': {'bolt': [[5, 250]]}, 'as_of': 20}, {'control': 820, 'subledger': 250, 'difference': 570, 'credit_balances': [], 'open_customers': 1}]], [['regression: difference orientation', {'control': [[1, 400], [11, 250]], 'sub': {'dyna': [[1, 250]], 'crux': [[1, 250], [1, 250], [1, 100]], 'acme': [[10, 250], [1, 250], [11, 250]], 'bolt': [[11, 250], [5, 400]]}, 'as_of': 10}, {'control': 400, 'subledger': 1750, 'difference': -1350, 'credit_balances': [], 'open_customers': 4}], ['control 1', {'control': [[31, 250], [5, 100], [5, -80], [32, 100]], 'sub': {'bolt': [[5, -80], [5, 250], [5, 400]], 'dyna': [[1, -300]], 'acme': [[32, -300]]}, 'as_of': 31}, {'control': 270, 'subledger': 270, 'difference': 0, 'credit_balances': ['dyna'], 'open_customers': 2}], ['control 2', {'control': [[5, 100], [1, 250], [5, 250], [10, 250], [5, -80], [11, 250]], 'sub': {'bolt': [[1, 100], [10, 100]], 'acme': [[1, 400]], 'dyna': [[1, -80]], 'crux': [[5, 250]]}, 'as_of': 10}, {'control': 770, 'subledger': 770, 'difference': 0, 'credit_balances': ['dyna'], 'open_customers': 4}], ['control 3', {'control': [[10, 250], [9, -80], [9, -80]], 'sub': {'bolt': [[1, 100], [5, -80], [5, -80]], 'acme': [[10, 100], [10, 250], [10, 400]], 'dyna': [[10, -300], [10, -300]]}, 'as_of': 10}, {'control': 90, 'subledger': 90, 'difference': 0, 'credit_balances': ['bolt', 'dyna'], 'open_customers': 3}], ['control 4', {'control': [[1, 100], [32, 400], [32, -80], [1, -80], [31, 400], [5, -80]], 'sub': {'acme': [[32, -300], [1, -80], [5, -80]], 'crux': [[1, 250], [32, 400], [1, 250]]}, 'as_of': 31}, {'control': 340, 'subledger': 340, 'difference': 0, 'credit_balances': ['acme'], 'open_customers': 2}], ['sample 5', {'control': [[20, 250], [19, 100], [5, 400]], 'sub': {'bolt': [[20, 250]], 'acme': [[1, -300], [1, 100], [1, 250]]}, 'as_of': 20}, {'control': 750, 'subledger': 300, 'difference': 450, 'credit_balances': [], 'open_customers': 2}], ['sample 6', {'control': [[5, 400], [20, -80], [19, 250]], 'sub': {'acme': [[21, 250]], 'bolt': [[20, 250], [1, -80], [1, -80]], 'dyna': [[21, -80], [20, 100]], 'crux': [[5, 400], [21, 400], [20, -300]]}, 'as_of': 20}, {'control': 570, 'subledger': 290, 'difference': 280, 'credit_balances': [], 'open_customers': 3}]], [['regression: difference orientation', {'control': [[9, 250], [11, 100], [11, -80], [11, 250]], 'sub': {'dyna': [[1, 250], [11, 400], [10, -80]], 'acme': [[11, -300], [1, 400], [1, 400]], 'bolt': [[1, -300]]}, 'as_of': 10}, {'control': 250, 'subledger': 670, 'difference': -420, 'credit_balances': ['bolt'], 'open_customers': 3}], ['control 1', {'control': [[1, 100], [9, -80], [5, 100]], 'sub': {'crux': [[11, 400], [10, -80], [11, -80]], 'acme': [[1, 400]], 'bolt': [[10, -300], [5, 400]], 'dyna': [[5, -300], [11, -300], [11, 100]]}, 'as_of': 10}, {'control': 120, 'subledger': 120, 'difference': 0, 'credit_balances': ['crux', 'dyna'], 'open_customers': 4}], ['control 2', {'control': [[30, 250], [30, 250]], 'sub': {'dyna': [[5, 250], [31, 250]]}, 'as_of': 31}, {'control': 500, 'subledger': 500, 'difference': 0, 'credit_balances': [], 'open_customers': 1}], ['control 3', {'control': [[5, 250], [10, 400], [11, 100], [9, 400]], 'sub': {'dyna': [[1, 400], [11, -80], [5, 250]], 'crux': [[10, 400]]}, 'as_of': 10}, {'control': 1050, 'subledger': 1050, 'difference': 0, 'credit_balances': [], 'open_customers': 2}], ['sample 4', {'control': [[1, -80], [1, 100], [32, 400], [31, 250]], 'sub': {'bolt': [[1, 250]]}, 'as_of': 31}, {'control': 270, 'subledger': 250, 'difference': 20, 'credit_balances': [], 'open_customers': 1}], ['sample 5', {'control': [[11, 100], [5, -80], [9, 400]], 'sub': {'acme': [[11, 100], [11, 250], [1, 250]], 'dyna': [[5, 100]], 'bolt': [[5, -300], [5, -300]], 'crux': [[5, 250], [11, -300], [1, 100]]}, 'as_of': 10}, {'control': 320, 'subledger': 100, 'difference': 220, 'credit_balances': ['bolt'], 'open_customers': 4}], ['sample 6', {'control': [[1, -80], [5, 250], [1, 400], [21, -80], [5, 250], [5, 100]], 'sub': {'crux': [[20, -80]], 'acme': [[1, 100]], 'bolt': [[5, 400], [1, 400], [21, 250]]}, 'as_of': 20}, {'control': 920, 'subledger': 820, 'difference': 100, 'credit_balances': ['crux'], 'open_customers': 3}]], [['regression: difference orientation', {'control': [[20, -80], [21, 100]], 'sub': {'dyna': [[1, -80], [20, 250]], 'bolt': [[1, -300], [20, 400], [21, -300]]}, 'as_of': 20}, {'control': -80, 'subledger': 270, 'difference': -350, 'credit_balances': [], 'open_customers': 2}], ['control 1', {'control': [[21, 250], [5, 100], [21, 250]], 'sub': {'bolt': [[21, -300], [5, 100]]}, 'as_of': 20}, {'control': 100, 'subledger': 100, 'difference': 0, 'credit_balances': [], 'open_customers': 1}], ['control 2', {'control': [[19, 400], [1, 400], [19, 250], [1, -80]], 'sub': {'crux': [[21, 100], [5, 100], [1, 400]], 'acme': [[21, -300], [21, -80]], 'dyna': [[5, -80], [20, 100], [1, 100]], 'bolt': [[1, 400], [20, 250], [1, -300]]}, 'as_of': 20}, {'control': 970, 'subledger': 970, 'difference': 0, 'credit_balances': [], 'open_customers': 3}], ['control 3', {'control': [[9, 100], [1, -80], [11, 400], [1, 250]], 'sub': {'acme': [[10, 250]], 'dyna': [[10, -80], [11, -80], [1, 100]]}, 'as_of': 10}, {'control': 270, 'subledger': 270, 'difference': 0, 'credit_balances': [], 'open_customers': 2}], ['control 4', {'control': [[1, 400], [21, 400], [5, 250], [20, 250]], 'sub': {'dyna': [[5, 100], [5, 400], [20, 400]]}, 'as_of': 20}, {'control': 900, 'subledger': 900, 'difference': 0, 'credit_balances': [], 'open_customers': 1}], ['control 5', {'control': [[21, 400], [5, 100]], 'sub': {'bolt': [[5, 100], [21, -300], [21, -300]], 'acme': [[21, 100], [21, -80], [21, 400]], 'crux': [[21, -80], [21, -300], [21, 100]]}, 'as_of': 20}, {'control': 100, 'subledger': 100, 'difference': 0, 'credit_balances': [], 'open_customers': 1}], ['control 6', {'control': [[5, 100], [32, 250]], 'sub': {'crux': [[5, -300], [32, 400]], 'dyna': [[1, 400], [32, 100], [32, -300]]}, 'as_of': 31}, {'control': 100, 'subledger': 100, 'difference': 0, 'credit_balances': ['crux'], 'open_customers': 2}]], [['regression: difference orientation', {'control': [[5, 100], [5, 250], [19, -80], [21, 250], [21, 250]], 'sub': {'crux': [[20, -80], [20, -80]], 'acme': [[21, 100]]}, 'as_of': 20}, {'control': 270, 'subledger': -160, 'difference': 430, 'credit_balances': ['crux'], 'open_customers': 1}], ['regression: difference orientation, partial-repair probe', {'control': [[10, -80], [9, 400], [1, 250]], 'sub': {'crux': [[5, 250], [1, 400], [5, 250]], 'acme': [[10, -80]]}, 'as_of': 10}, {'control': 570, 'subledger': 820, 'difference': -250, 'credit_balances': ['acme'], 'open_customers': 2}], ['control 1', {'control': [[20, -80], [20, 100], [21, -80], [21, 100]], 'sub': {'acme': [[5, 100], [1, -80], [21, 100]]}, 'as_of': 20}, {'control': 20, 'subledger': 20, 'difference': 0, 'credit_balances': [], 'open_customers': 1}], ['control 2', {'control': [[30, 100], [32, -80]], 'sub': {'acme': [[31, 100], [32, 400]]}, 'as_of': 31}, {'control': 100, 'subledger': 100, 'difference': 0, 'credit_balances': [], 'open_customers': 1}], ['control 3', {'control': [[30, 100], [30, 400]], 'sub': {'bolt': [[32, 400]], 'dyna': [[5, 400], [5, 400], [5, -300]]}, 'as_of': 31}, {'control': 500, 'subledger': 500, 'difference': 0, 'credit_balances': [], 'open_customers': 1}], ['control 4', {'control': [[1, -80], [1, 100]], 'sub': {'dyna': [[31, -80], [32, 250], [1, 100]]}, 'as_of': 31}, {'control': 20, 'subledger': 20, 'difference': 0, 'credit_balances': [], 'open_customers': 1}], ['control 5', {'control': [[10, 400], [5, 100], [1, -80], [1, 400]], 'sub': {'crux': [[11, 400], [11, 100], [10, 250]], 'bolt': [[10, -80]], 'dyna': [[1, 400]], 'acme': [[10, 250]]}, 'as_of': 10}, {'control': 820, 'subledger': 820, 'difference': 0, 'credit_balances': ['bolt'], 'open_customers': 4}]]]
for label, args, expected in fixtures[N-1]:
    try:
        actual = solve(args)
    except Exception as exc:
        actual = 'raised ' + type(exc).__name__
    check(label, actual, 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)

source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    cut = x['as_of']
    control = sum(a for d, a in x['control'] if d <= cut)
    per = {}
    for cust, rows in x['sub'].items():
        per[cust] = sum(a for d, a in rows if d <= cut)
    sub_total = sum(per.values())
    credit = sorted(c for c, v in per.items() if v < 0)
    return {'control': control, 'subledger': sub_total, 'difference': abs(control - sub_total), 'credit_balances': credit, 'open_customers': sum(1 for v in per.values() if v != 0)}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: difference orientation', {'control': [[5, 100], [19, -80], [21, -80]], 'sub': {'bolt': [[5, -80], [1, 250], [5, -80]], 'acme': [[21, 100]], 'dyna': [[20, 400], [1, 250], [20, 100]], 'crux': [[20, 400], [5, 100]]}, 'as_of': 20}, {'control': 20, 'subledger': 1340, 'difference': -1320, 'credit_balances': [], 'open_customers': 3}], ['control 1', {'control': [[21, 250], [20, 250], [21, 400], [21, 250], [20, 250]], 'sub': {'bolt': [[1, -300], [21, 250]], 'crux': [[5, 400], [21, 100]], 'dyna': [[21, -80], [1, 400]]}, 'as_of': 20}, {'control': 500, 'subledger': 500, 'difference': 0, 'credit_balances': ['bolt'], 'open_customers': 3}], ['control 2', {'control': [[1, -80], [21, 400], [20, 400]], 'sub': {'bolt': [[21, 250]], 'crux': [[21, 250], [1, -300], [5, 100]], 'dyna': [[1, -80], [20, 100]], 'acme': [[20, 100], [5, 400], [21, 100]]}, 'as_of': 20}, {'control': 320, 'subledger': 320, 'difference': 0, 'credit_balances': ['crux'], 'open_customers': 3}], ['control 3', {'control': [[10, 100], [9, -80]], 'sub': {'dyna': [[10, -80], [10, 100]]}, 'as_of': 10}, {'control': 20, 'subledger': 20, 'difference': 0, 'credit_balances': [], 'open_customers': 1}], ['control 4', {'control': [[1, 100], [32, 250], [32, 250]], 'sub': {'dyna': [[31, 100], [32, -80]]}, 'as_of': 31}, {'control': 100, 'subledger': 100, 'difference': 0, 'credit_balances': [], 'open_customers': 1}], ['control 5', {'control': [[32, 100], [31, 400], [32, -80]], 'sub': {'dyna': [[1, 400]]}, 'as_of': 31}, {'control': 400, 'subledger': 400, 'difference': 0, 'credit_balances': [], 'open_customers': 1}], ['sample 6', {'control': [[21, 400], [5, 250], [19, 250], [20, 400], [19, -80]], 'sub': {'bolt': [[5, 250]]}, 'as_of': 20}, {'control': 820, 'subledger': 250, 'difference': 570, 'credit_balances': [], 'open_customers': 1}]], [['regression: difference orientation', {'control': [[1, 400], [11, 250]], 'sub': {'dyna': [[1, 250]], 'crux': [[1, 250], [1, 250], [1, 100]], 'acme': [[10, 250], [1, 250], [11, 250]], 'bolt': [[11, 250], [5, 400]]}, 'as_of': 10}, {'control': 400, 'subledger': 1750, 'difference': -1350, 'credit_balances': [], 'open_customers': 4}], ['control 1', {'control': [[31, 250], [5, 100], [5, -80], [32, 100]], 'sub': {'bolt': [[5, -80], [5, 250], [5, 400]], 'dyna': [[1, -300]], 'acme': [[32, -300]]}, 'as_of': 31}, {'control': 270, 'subledger': 270, 'difference': 0, 'credit_balances': ['dyna'], 'open_customers': 2}], ['control 2', {'control': [[5, 100], [1, 250], [5, 250], [10, 250], [5, -80], [11, 250]], 'sub': {'bolt': [[1, 100], [10, 100]], 'acme': [[1, 400]], 'dyna': [[1, -80]], 'crux': [[5, 250]]}, 'as_of': 10}, {'control': 770, 'subledger': 770, 'difference': 0, 'credit_balances': ['dyna'], 'open_customers': 4}], ['control 3', {'control': [[10, 250], [9, -80], [9, -80]], 'sub': {'bolt': [[1, 100], [5, -80], [5, -80]], 'acme': [[10, 100], [10, 250], [10, 400]], 'dyna': [[10, -300], [10, -300]]}, 'as_of': 10}, {'control': 90, 'subledger': 90, 'difference': 0, 'credit_balances': ['bolt', 'dyna'], 'open_customers': 3}], ['control 4', {'control': [[1, 100], [32, 400], [32, -80], [1, -80], [31, 400], [5, -80]], 'sub': {'acme': [[32, -300], [1, -80], [5, -80]], 'crux': [[1, 250], [32, 400], [1, 250]]}, 'as_of': 31}, {'control': 340, 'subledger': 340, 'difference': 0, 'credit_balances': ['acme'], 'open_customers': 2}], ['sample 5', {'control': [[20, 250], [19, 100], [5, 400]], 'sub': {'bolt': [[20, 250]], 'acme': [[1, -300], [1, 100], [1, 250]]}, 'as_of': 20}, {'control': 750, 'subledger': 300, 'difference': 450, 'credit_balances': [], 'open_customers': 2}], ['sample 6', {'control': [[5, 400], [20, -80], [19, 250]], 'sub': {'acme': [[21, 250]], 'bolt': [[20, 250], [1, -80], [1, -80]], 'dyna': [[21, -80], [20, 100]], 'crux': [[5, 400], [21, 400], [20, -300]]}, 'as_of': 20}, {'control': 570, 'subledger': 290, 'difference': 280, 'credit_balances': [], 'open_customers': 3}]], [['regression: difference orientation', {'control': [[9, 250], [11, 100], [11, -80], [11, 250]], 'sub': {'dyna': [[1, 250], [11, 400], [10, -80]], 'acme': [[11, -300], [1, 400], [1, 400]], 'bolt': [[1, -300]]}, 'as_of': 10}, {'control': 250, 'subledger': 670, 'difference': -420, 'credit_balances': ['bolt'], 'open_customers': 3}], ['control 1', {'control': [[1, 100], [9, -80], [5, 100]], 'sub': {'crux': [[11, 400], [10, -80], [11, -80]], 'acme': [[1, 400]], 'bolt': [[10, -300], [5, 400]], 'dyna': [[5, -300], [11, -300], [11, 100]]}, 'as_of': 10}, {'control': 120, 'subledger': 120, 'difference': 0, 'credit_balances': ['crux', 'dyna'], 'open_customers': 4}], ['control 2', {'control': [[30, 250], [30, 250]], 'sub': {'dyna': [[5, 250], [31, 250]]}, 'as_of': 31}, {'control': 500, 'subledger': 500, 'difference': 0, 'credit_balances': [], 'open_customers': 1}], ['control 3', {'control': [[5, 250], [10, 400], [11, 100], [9, 400]], 'sub': {'dyna': [[1, 400], [11, -80], [5, 250]], 'crux': [[10, 400]]}, 'as_of': 10}, {'control': 1050, 'subledger': 1050, 'difference': 0, 'credit_balances': [], 'open_customers': 2}], ['sample 4', {'control': [[1, -80], [1, 100], [32, 400], [31, 250]], 'sub': {'bolt': [[1, 250]]}, 'as_of': 31}, {'control': 270, 'subledger': 250, 'difference': 20, 'credit_balances': [], 'open_customers': 1}], ['sample 5', {'control': [[11, 100], [5, -80], [9, 400]], 'sub': {'acme': [[11, 100], [11, 250], [1, 250]], 'dyna': [[5, 100]], 'bolt': [[5, -300], [5, -300]], 'crux': [[5, 250], [11, -300], [1, 100]]}, 'as_of': 10}, {'control': 320, 'subledger': 100, 'difference': 220, 'credit_balances': ['bolt'], 'open_customers': 4}], ['sample 6', {'control': [[1, -80], [5, 250], [1, 400], [21, -80], [5, 250], [5, 100]], 'sub': {'crux': [[20, -80]], 'acme': [[1, 100]], 'bolt': [[5, 400], [1, 400], [21, 250]]}, 'as_of': 20}, {'control': 920, 'subledger': 820, 'difference': 100, 'credit_balances': ['crux'], 'open_customers': 3}]], [['regression: difference orientation', {'control': [[20, -80], [21, 100]], 'sub': {'dyna': [[1, -80], [20, 250]], 'bolt': [[1, -300], [20, 400], [21, -300]]}, 'as_of': 20}, {'control': -80, 'subledger': 270, 'difference': -350, 'credit_balances': [], 'open_customers': 2}], ['control 1', {'control': [[21, 250], [5, 100], [21, 250]], 'sub': {'bolt': [[21, -300], [5, 100]]}, 'as_of': 20}, {'control': 100, 'subledger': 100, 'difference': 0, 'credit_balances': [], 'open_customers': 1}], ['control 2', {'control': [[19, 400], [1, 400], [19, 250], [1, -80]], 'sub': {'crux': [[21, 100], [5, 100], [1, 400]], 'acme': [[21, -300], [21, -80]], 'dyna': [[5, -80], [20, 100], [1, 100]], 'bolt': [[1, 400], [20, 250], [1, -300]]}, 'as_of': 20}, {'control': 970, 'subledger': 970, 'difference': 0, 'credit_balances': [], 'open_customers': 3}], ['control 3', {'control': [[9, 100], [1, -80], [11, 400], [1, 250]], 'sub': {'acme': [[10, 250]], 'dyna': [[10, -80], [11, -80], [1, 100]]}, 'as_of': 10}, {'control': 270, 'subledger': 270, 'difference': 0, 'credit_balances': [], 'open_customers': 2}], ['control 4', {'control': [[1, 400], [21, 400], [5, 250], [20, 250]], 'sub': {'dyna': [[5, 100], [5, 400], [20, 400]]}, 'as_of': 20}, {'control': 900, 'subledger': 900, 'difference': 0, 'credit_balances': [], 'open_customers': 1}], ['control 5', {'control': [[21, 400], [5, 100]], 'sub': {'bolt': [[5, 100], [21, -300], [21, -300]], 'acme': [[21, 100], [21, -80], [21, 400]], 'crux': [[21, -80], [21, -300], [21, 100]]}, 'as_of': 20}, {'control': 100, 'subledger': 100, 'difference': 0, 'credit_balances': [], 'open_customers': 1}], ['control 6', {'control': [[5, 100], [32, 250]], 'sub': {'crux': [[5, -300], [32, 400]], 'dyna': [[1, 400], [32, 100], [32, -300]]}, 'as_of': 31}, {'control': 100, 'subledger': 100, 'difference': 0, 'credit_balances': ['crux'], 'open_customers': 2}]], [['regression: difference orientation', {'control': [[5, 100], [5, 250], [19, -80], [21, 250], [21, 250]], 'sub': {'crux': [[20, -80], [20, -80]], 'acme': [[21, 100]]}, 'as_of': 20}, {'control': 270, 'subledger': -160, 'difference': 430, 'credit_balances': ['crux'], 'open_customers': 1}], ['regression: difference orientation, partial-repair probe', {'control': [[10, -80], [9, 400], [1, 250]], 'sub': {'crux': [[5, 250], [1, 400], [5, 250]], 'acme': [[10, -80]]}, 'as_of': 10}, {'control': 570, 'subledger': 820, 'difference': -250, 'credit_balances': ['acme'], 'open_customers': 2}], ['control 1', {'control': [[20, -80], [20, 100], [21, -80], [21, 100]], 'sub': {'acme': [[5, 100], [1, -80], [21, 100]]}, 'as_of': 20}, {'control': 20, 'subledger': 20, 'difference': 0, 'credit_balances': [], 'open_customers': 1}], ['control 2', {'control': [[30, 100], [32, -80]], 'sub': {'acme': [[31, 100], [32, 400]]}, 'as_of': 31}, {'control': 100, 'subledger': 100, 'difference': 0, 'credit_balances': [], 'open_customers': 1}], ['control 3', {'control': [[30, 100], [30, 400]], 'sub': {'bolt': [[32, 400]], 'dyna': [[5, 400], [5, 400], [5, -300]]}, 'as_of': 31}, {'control': 500, 'subledger': 500, 'difference': 0, 'credit_balances': [], 'open_customers': 1}], ['control 4', {'control': [[1, -80], [1, 100]], 'sub': {'dyna': [[31, -80], [32, 250], [1, 100]]}, 'as_of': 31}, {'control': 20, 'subledger': 20, 'difference': 0, 'credit_balances': [], 'open_customers': 1}], ['control 5', {'control': [[10, 400], [5, 100], [1, -80], [1, 400]], 'sub': {'crux': [[11, 400], [11, 100], [10, 250]], 'bolt': [[10, -80]], 'dyna': [[1, 400]], 'acme': [[10, 250]]}, 'as_of': 10}, {'control': 820, 'subledger': 820, 'difference': 0, 'credit_balances': ['bolt'], 'open_customers': 4}]]]
for label, args, expected in fixtures[N-1]:
    try:
        actual = solve(args)
    except Exception as exc:
        actual = 'raised ' + type(exc).__name__
    check(label, actual, 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)

prompt:
Reconciling differences are reported with the opposite sign.

x = {'control': [[day, amount]], 'sub': {customer: [[day, amount]]}, 'as_of': day}. Only rows dated on or before as_of count. The subledger total nets every customer balance, including credit (negative) balances. Return {'control', 'subledger', 'difference': control - subledger, 'credit_balances': customers with negative balance sorted by name, 'open_customers': count of nonzero balances}.

split: open-access


broken_source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    cut = x['as_of']
    control = sum(a for d, a in x['control'] if d <= cut)
    per = {}
    for cust, rows in x['sub'].items():
        per[cust] = sum(a for d, a in rows if d <= cut)
    sub_total = sum(per.values())
    credit = sorted(c for c, v in per.items() if v < 0)
    return {'control': control, 'subledger': sub_total, 'difference': control - sub_total, 'credit_balances': credit, 'open_customers': sum(1 for v in per.values() if v > 0)}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: open customer count', {'control': [[9, 250], [10, 100], [11, 400]], 'sub': {'dyna': [[1, 400], [11, 400]], 'acme': [[1, -300], [10, 250], [1, -80]], 'bolt': [[1, -80]]}, 'as_of': 10}, {'control': 350, 'subledger': 190, 'difference': 160, 'credit_balances': ['acme', 'bolt'], 'open_customers': 3}], ['regression: open customer count, partial-repair probe', {'control': [[5, 100], [19, -80], [21, -80]], 'sub': {'bolt': [[5, -80], [1, 250], [5, -80]], 'acme': [[21, 100]], 'dyna': [[20, 400], [1, 250], [20, 100]], 'crux': [[20, 400], [5, 100]]}, 'as_of': 20}, {'control': 20, 'subledger': 1340, 'difference': -1320, 'credit_balances': [], 'open_customers': 3}], ['control 1', {'control': [[21, 400], [5, 250], [19, 250], [20, 400], [19, -80]], 'sub': {'bolt': [[5, 250]]}, 'as_of': 20}, {'control': 820, 'subledger': 250, 'difference': 570, 'credit_balances': [], 'open_customers': 1}], ['control 2', {'control': [[9, 100], [10, 100], [9, 400], [10, 100], [1, 250], [9, 250]], 'sub': {'dyna': [[1, 400], [11, 400], [1, 400]]}, 'as_of': 10}, {'control': 1200, 'subledger': 800, 'difference': 400, 'credit_balances': [], 'open_customers': 1}], ['control 3', {'control': [[10, 400], [10, 100], [9, 250], [11, 250], [1, 400]], 'sub': {'bolt': [[11, 400], [10, 400], [5, 100]]}, 'as_of': 10}, {'control': 1150, 'subledger': 500, 'difference': 650, 'credit_balances': [], 'open_customers': 1}], ['control 4', {'control': [[5, 400], [1, 250], [9, -80], [5, -80], [5, 250]], 'sub': {'acme': [[5, 250], [11, 100]], 'crux': [[5, 400]], 'dyna': [[5, 250]]}, 'as_of': 10}, {'control': 740, 'subledger': 900, 'difference': -160, 'credit_balances': [], 'open_customers': 3}], ['control 5', {'control': [[11, 250], [1, -80], [11, 400], [1, -80]], 'sub': {'acme': [[1, 250], [1, -80], [11, 250]], 'bolt': [[11, 100]], 'dyna': [[11, -80]]}, 'as_of': 10}, {'control': -160, 'subledger': 170, 'difference': -330, 'credit_balances': [], 'open_customers': 1}]], [['regression: open customer count', {'control': [[31, 400], [30, 250]], 'sub': {'bolt': [[1, 400], [1, 400], [5, -300]], 'acme': [[32, 250]], 'crux': [[5, -300], [31, 400], [5, -300]]}, 'as_of': 31}, {'control': 650, 'subledger': 300, 'difference': 350, 'credit_balances': ['crux'], 'open_customers': 2}], ['control 1', {'control': [[1, 400], [11, 250]], 'sub': {'dyna': [[1, 250]], 'crux': [[1, 250], [1, 250], [1, 100]], 'acme': [[10, 250], [1, 250], [11, 250]], 'bolt': [[11, 250], [5, 400]]}, 'as_of': 10}, {'control': 400, 'subledger': 1750, 'difference': -1350, 'credit_balances': [], 'open_customers': 4}], ['control 2', {'control': [[20, 250], [19, 100], [5, 400]], 'sub': {'bolt': [[20, 250]], 'acme': [[1, -300], [1, 100], [1, 250]]}, 'as_of': 20}, {'control': 750, 'subledger': 300, 'difference': 450, 'credit_balances': [], 'open_customers': 2}], ['control 3', {'control': [[5, 400], [20, -80], [19, 250]], 'sub': {'acme': [[21, 250]], 'bolt': [[20, 250], [1, -80], [1, -80]], 'dyna': [[21, -80], [20, 100]], 'crux': [[5, 400], [21, 400], [20, -300]]}, 'as_of': 20}, {'control': 570, 'subledger': 290, 'difference': 280, 'credit_balances': [], 'open_customers': 3}], ['control 4', {'control': [[10, 250], [9, -80], [1, 250], [1, 100]], 'sub': {'dyna': [[1, 400], [10, 400]], 'acme': [[10, 250], [5, 400], [11, -300]], 'crux': [[11, 250], [1, 400], [5, -300]], 'bolt': [[5, 250]]}, 'as_of': 10}, {'control': 520, 'subledger': 1800, 'difference': -1280, 'credit_balances': [], 'open_customers': 4}], ['control 5', {'control': [[5, -80], [19, 400], [1, -80]], 'sub': {'crux': [[21, -300], [21, 400]], 'bolt': [[1, 250], [21, 250]], 'dyna': [[21, -300], [20, 250], [5, 250]]}, 'as_of': 20}, {'control': 240, 'subledger': 750, 'difference': -510, 'credit_balances': [], 'open_customers': 2}], ['control 6', {'control': [[10, 100], [5, 250], [5, 400], [11, -80], [1, 400], [9, 400]], 'sub': {'dyna': [[5, 250]]}, 'as_of': 10}, {'control': 1550, 'subledger': 250, 'difference': 1300, 'credit_balances': [], 'open_customers': 1}]], [['regression: open customer count', {'control': [[9, 250], [11, 100], [11, -80], [11, 250]], 'sub': {'dyna': [[1, 250], [11, 400], [10, -80]], 'acme': [[11, -300], [1, 400], [1, 400]], 'bolt': [[1, -300]]}, 'as_of': 10}, {'control': 250, 'subledger': 670, 'difference': -420, 'credit_balances': ['bolt'], 'open_customers': 3}], ['regression: open customer count, partial-repair probe', {'control': [[5, 400], [1, 250], [5, -80], [5, 250], [11, -80], [1, 400]], 'sub': {'dyna': [[11, 100]], 'acme': [[5, 400], [1, 100]], 'crux': [[5, 400], [5, -300]]}, 'as_of': 10}, {'control': 1220, 'subledger': 600, 'difference': 620, 'credit_balances': [], 'open_customers': 2}], ['control 1', {'control': [[1, -80], [1, 100], [32, 400], [31, 250]], 'sub': {'bolt': [[1, 250]]}, 'as_of': 31}, {'control': 270, 'subledger': 250, 'difference': 20, 'credit_balances': [], 'open_customers': 1}], ['control 2', {'control': [[9, 250], [1, 400], [11, 100]], 'sub': {'crux': [[5, -80], [1, 250], [1, 250]]}, 'as_of': 10}, {'control': 650, 'subledger': 420, 'difference': 230, 'credit_balances': [], 'open_customers': 1}], ['control 3', {'control': [[5, 250], [30, 400], [30, -80], [1, -80], [5, 250]], 'sub': {'bolt': [[5, 250]], 'acme': [[1, 250]], 'dyna': [[31, 400]]}, 'as_of': 31}, {'control': 740, 'subledger': 900, 'difference': -160, 'credit_balances': [], 'open_customers': 3}], ['control 4', {'control': [[19, 100], [21, 250], [20, -80], [20, -80], [19, 400], [21, 100]], 'sub': {'dyna': [[21, 100]], 'acme': [[21, 100], [21, 400], [20, 250]], 'crux': [[20, -80], [21, -80], [5, 250]]}, 'as_of': 20}, {'control': 340, 'subledger': 420, 'difference': -80, 'credit_balances': [], 'open_customers': 2}], ['control 5', {'control': [[31, -80], [32, 400], [31, -80], [5, -80], [31, 250]], 'sub': {'dyna': [[1, 400], [1, 250]], 'acme': [[32, -80], [31, 100]]}, 'as_of': 31}, {'control': 10, 'subledger': 750, 'difference': -740, 'credit_balances': [], 'open_customers': 2}]], [['regression: open customer count', {'control': [[31, -80], [5, 100], [31, 100]], 'sub': {'crux': [[32, 250]], 'dyna': [[32, 250]], 'acme': [[1, -300], [32, 250]]}, 'as_of': 31}, {'control': 120, 'subledger': -300, 'difference': 420, 'credit_balances': ['acme'], 'open_customers': 1}], ['control 1', {'control': [[20, -80], [21, 100]], 'sub': {'dyna': [[1, -80], [20, 250]], 'bolt': [[1, -300], [20, 400], [21, -300]]}, 'as_of': 20}, {'control': -80, 'subledger': 270, 'difference': -350, 'credit_balances': [], 'open_customers': 2}], ['control 2', {'control': [[1, -80], [20, -80], [19, -80], [19, -80], [21, 400]], 'sub': {'acme': [[21, 250]]}, 'as_of': 20}, {'control': -320, 'subledger': 0, 'difference': -320, 'credit_balances': [], 'open_customers': 0}], ['control 3', {'control': [[5, 250], [5, 400], [1, -80], [31, 100], [30, 100]], 'sub': {'dyna': [[32, -300]], 'crux': [[5, 250], [1, 250]], 'acme': [[31, 400]]}, 'as_of': 31}, {'control': 770, 'subledger': 900, 'difference': -130, 'credit_balances': [], 'open_customers': 2}], ['control 4', {'control': [[31, 250], [1, -80], [5, 100], [31, 250], [5, 100]], 'sub': {'crux': [[32, -300], [1, 250]]}, 'as_of': 31}, {'control': 620, 'subledger': 250, 'difference': 370, 'credit_balances': [], 'open_customers': 1}], ['control 5', {'control': [[31, 250], [5, -80], [1, 400], [32, 400], [1, 400]], 'sub': {'crux': [[5, 250], [1, 400]]}, 'as_of': 31}, {'control': 970, 'subledger': 650, 'difference': 320, 'credit_balances': [], 'open_customers': 1}], ['control 6', {'control': [[1, 100], [11, 100], [1, 100], [9, 400], [9, 100], [9, 100]], 'sub': {'dyna': [[1, 100], [5, 100]]}, 'as_of': 10}, {'control': 800, 'subledger': 200, 'difference': 600, 'credit_balances': [], 'open_customers': 1}]], [['regression: open customer count', {'control': [[5, 100], [5, 250], [19, -80], [21, 250], [21, 250]], 'sub': {'crux': [[20, -80], [20, -80]], 'acme': [[21, 100]]}, 'as_of': 20}, {'control': 270, 'subledger': -160, 'difference': 430, 'credit_balances': ['crux'], 'open_customers': 1}], ['control 1', {'control': [[1, -80], [5, 100], [20, 400], [19, 250], [1, 250]], 'sub': {'crux': [[20, 250], [20, -80], [20, 250]]}, 'as_of': 20}, {'control': 920, 'subledger': 420, 'difference': 500, 'credit_balances': [], 'open_customers': 1}], ['control 2', {'control': [[9, -80], [11, 400]], 'sub': {'bolt': [[5, 100], [5, 250]], 'acme': [[11, 100], [11, -80], [10, 250]]}, 'as_of': 10}, {'control': -80, 'subledger': 600, 'difference': -680, 'credit_balances': [], 'open_customers': 2}], ['control 3', {'control': [[1, 100], [1, 250], [5, 250], [1, 100], [1, 400], [5, -80]], 'sub': {'bolt': [[10, -80], [10, 400]], 'crux': [[1, 250], [10, 250]]}, 'as_of': 10}, {'control': 1020, 'subledger': 820, 'difference': 200, 'credit_balances': [], 'open_customers': 2}], ['control 4', {'control': [[32, 250], [1, 100], [32, 100], [31, 100], [1, -80]], 'sub': {'dyna': [[5, 100]], 'acme': [[5, 400], [5, -80]], 'crux': [[32, -80]], 'bolt': [[32, -80]]}, 'as_of': 31}, {'control': 120, 'subledger': 420, 'difference': -300, 'credit_balances': [], 'open_customers': 2}], ['control 5', {'control': [[5, 400], [11, 100]], 'sub': {'bolt': [[5, 400], [1, -80]], 'acme': [[5, 400], [1, 100], [5, -300]], 'dyna': [[1, 100]]}, 'as_of': 10}, {'control': 400, 'subledger': 620, 'difference': -220, 'credit_balances': [], 'open_customers': 3}], ['control 6', {'control': [[31, 400], [32, 400]], 'sub': {'acme': [[1, -80], [31, 400]]}, 'as_of': 31}, {'control': 400, 'subledger': 320, 'difference': 80, 'credit_balances': [], 'open_customers': 1}]]]
for label, args, expected in fixtures[N-1]:
    try:
        actual = solve(args)
    except Exception as exc:
        actual = 'raised ' + type(exc).__name__
    check(label, actual, 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)

meaning: Fixture-count band, not measured model difficulty

deps: stdlib

source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    cut = x['as_of']
    control = sum(a for d, a in x['control'] if d <= cut)
    per = {}
    for cust, rows in x['sub'].items():
        per[cust] = sum(a for d, a in rows if d <= cut)
    sub_total = sum(per.values())
    credit = sorted(c for c, v in per.items() if v < 0)
    return {'control': control, 'subledger': sub_total, 'difference': control - sub_total, 'credit_balances': credit, 'open_customers': len(per)}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: open customer count', {'control': [[9, 250], [10, 100], [11, 400]], 'sub': {'dyna': [[1, 400], [11, 400]], 'acme': [[1, -300], [10, 250], [1, -80]], 'bolt': [[1, -80]]}, 'as_of': 10}, {'control': 350, 'subledger': 190, 'difference': 160, 'credit_balances': ['acme', 'bolt'], 'open_customers': 3}], ['regression: open customer count, partial-repair probe', {'control': [[5, 100], [19, -80], [21, -80]], 'sub': {'bolt': [[5, -80], [1, 250], [5, -80]], 'acme': [[21, 100]], 'dyna': [[20, 400], [1, 250], [20, 100]], 'crux': [[20, 400], [5, 100]]}, 'as_of': 20}, {'control': 20, 'subledger': 1340, 'difference': -1320, 'credit_balances': [], 'open_customers': 3}], ['control 1', {'control': [[21, 400], [5, 250], [19, 250], [20, 400], [19, -80]], 'sub': {'bolt': [[5, 250]]}, 'as_of': 20}, {'control': 820, 'subledger': 250, 'difference': 570, 'credit_balances': [], 'open_customers': 1}], ['control 2', {'control': [[9, 100], [10, 100], [9, 400], [10, 100], [1, 250], [9, 250]], 'sub': {'dyna': [[1, 400], [11, 400], [1, 400]]}, 'as_of': 10}, {'control': 1200, 'subledger': 800, 'difference': 400, 'credit_balances': [], 'open_customers': 1}], ['control 3', {'control': [[10, 400], [10, 100], [9, 250], [11, 250], [1, 400]], 'sub': {'bolt': [[11, 400], [10, 400], [5, 100]]}, 'as_of': 10}, {'control': 1150, 'subledger': 500, 'difference': 650, 'credit_balances': [], 'open_customers': 1}], ['control 4', {'control': [[5, 400], [1, 250], [9, -80], [5, -80], [5, 250]], 'sub': {'acme': [[5, 250], [11, 100]], 'crux': [[5, 400]], 'dyna': [[5, 250]]}, 'as_of': 10}, {'control': 740, 'subledger': 900, 'difference': -160, 'credit_balances': [], 'open_customers': 3}], ['control 5', {'control': [[11, 250], [1, -80], [11, 400], [1, -80]], 'sub': {'acme': [[1, 250], [1, -80], [11, 250]], 'bolt': [[11, 100]], 'dyna': [[11, -80]]}, 'as_of': 10}, {'control': -160, 'subledger': 170, 'difference': -330, 'credit_balances': [], 'open_customers': 1}]], [['regression: open customer count', {'control': [[31, 400], [30, 250]], 'sub': {'bolt': [[1, 400], [1, 400], [5, -300]], 'acme': [[32, 250]], 'crux': [[5, -300], [31, 400], [5, -300]]}, 'as_of': 31}, {'control': 650, 'subledger': 300, 'difference': 350, 'credit_balances': ['crux'], 'open_customers': 2}], ['control 1', {'control': [[1, 400], [11, 250]], 'sub': {'dyna': [[1, 250]], 'crux': [[1, 250], [1, 250], [1, 100]], 'acme': [[10, 250], [1, 250], [11, 250]], 'bolt': [[11, 250], [5, 400]]}, 'as_of': 10}, {'control': 400, 'subledger': 1750, 'difference': -1350, 'credit_balances': [], 'open_customers': 4}], ['control 2', {'control': [[20, 250], [19, 100], [5, 400]], 'sub': {'bolt': [[20, 250]], 'acme': [[1, -300], [1, 100], [1, 250]]}, 'as_of': 20}, {'control': 750, 'subledger': 300, 'difference': 450, 'credit_balances': [], 'open_customers': 2}], ['control 3', {'control': [[5, 400], [20, -80], [19, 250]], 'sub': {'acme': [[21, 250]], 'bolt': [[20, 250], [1, -80], [1, -80]], 'dyna': [[21, -80], [20, 100]], 'crux': [[5, 400], [21, 400], [20, -300]]}, 'as_of': 20}, {'control': 570, 'subledger': 290, 'difference': 280, 'credit_balances': [], 'open_customers': 3}], ['control 4', {'control': [[10, 250], [9, -80], [1, 250], [1, 100]], 'sub': {'dyna': [[1, 400], [10, 400]], 'acme': [[10, 250], [5, 400], [11, -300]], 'crux': [[11, 250], [1, 400], [5, -300]], 'bolt': [[5, 250]]}, 'as_of': 10}, {'control': 520, 'subledger': 1800, 'difference': -1280, 'credit_balances': [], 'open_customers': 4}], ['control 5', {'control': [[5, -80], [19, 400], [1, -80]], 'sub': {'crux': [[21, -300], [21, 400]], 'bolt': [[1, 250], [21, 250]], 'dyna': [[21, -300], [20, 250], [5, 250]]}, 'as_of': 20}, {'control': 240, 'subledger': 750, 'difference': -510, 'credit_balances': [], 'open_customers': 2}], ['control 6', {'control': [[10, 100], [5, 250], [5, 400], [11, -80], [1, 400], [9, 400]], 'sub': {'dyna': [[5, 250]]}, 'as_of': 10}, {'control': 1550, 'subledger': 250, 'difference': 1300, 'credit_balances': [], 'open_customers': 1}]], [['regression: open customer count', {'control': [[9, 250], [11, 100], [11, -80], [11, 250]], 'sub': {'dyna': [[1, 250], [11, 400], [10, -80]], 'acme': [[11, -300], [1, 400], [1, 400]], 'bolt': [[1, -300]]}, 'as_of': 10}, {'control': 250, 'subledger': 670, 'difference': -420, 'credit_balances': ['bolt'], 'open_customers': 3}], ['regression: open customer count, partial-repair probe', {'control': [[5, 400], [1, 250], [5, -80], [5, 250], [11, -80], [1, 400]], 'sub': {'dyna': [[11, 100]], 'acme': [[5, 400], [1, 100]], 'crux': [[5, 400], [5, -300]]}, 'as_of': 10}, {'control': 1220, 'subledger': 600, 'difference': 620, 'credit_balances': [], 'open_customers': 2}], ['control 1', {'control': [[1, -80], [1, 100], [32, 400], [31, 250]], 'sub': {'bolt': [[1, 250]]}, 'as_of': 31}, {'control': 270, 'subledger': 250, 'difference': 20, 'credit_balances': [], 'open_customers': 1}], ['control 2', {'control': [[9, 250], [1, 400], [11, 100]], 'sub': {'crux': [[5, -80], [1, 250], [1, 250]]}, 'as_of': 10}, {'control': 650, 'subledger': 420, 'difference': 230, 'credit_balances': [], 'open_customers': 1}], ['control 3', {'control': [[5, 250], [30, 400], [30, -80], [1, -80], [5, 250]], 'sub': {'bolt': [[5, 250]], 'acme': [[1, 250]], 'dyna': [[31, 400]]}, 'as_of': 31}, {'control': 740, 'subledger': 900, 'difference': -160, 'credit_balances': [], 'open_customers': 3}], ['control 4', {'control': [[19, 100], [21, 250], [20, -80], [20, -80], [19, 400], [21, 100]], 'sub': {'dyna': [[21, 100]], 'acme': [[21, 100], [21, 400], [20, 250]], 'crux': [[20, -80], [21, -80], [5, 250]]}, 'as_of': 20}, {'control': 340, 'subledger': 420, 'difference': -80, 'credit_balances': [], 'open_customers': 2}], ['control 5', {'control': [[31, -80], [32, 400], [31, -80], [5, -80], [31, 250]], 'sub': {'dyna': [[1, 400], [1, 250]], 'acme': [[32, -80], [31, 100]]}, 'as_of': 31}, {'control': 10, 'subledger': 750, 'difference': -740, 'credit_balances': [], 'open_customers': 2}]], [['regression: open customer count', {'control': [[31, -80], [5, 100], [31, 100]], 'sub': {'crux': [[32, 250]], 'dyna': [[32, 250]], 'acme': [[1, -300], [32, 250]]}, 'as_of': 31}, {'control': 120, 'subledger': -300, 'difference': 420, 'credit_balances': ['acme'], 'open_customers': 1}], ['control 1', {'control': [[20, -80], [21, 100]], 'sub': {'dyna': [[1, -80], [20, 250]], 'bolt': [[1, -300], [20, 400], [21, -300]]}, 'as_of': 20}, {'control': -80, 'subledger': 270, 'difference': -350, 'credit_balances': [], 'open_customers': 2}], ['control 2', {'control': [[1, -80], [20, -80], [19, -80], [19, -80], [21, 400]], 'sub': {'acme': [[21, 250]]}, 'as_of': 20}, {'control': -320, 'subledger': 0, 'difference': -320, 'credit_balances': [], 'open_customers': 0}], ['control 3', {'control': [[5, 250], [5, 400], [1, -80], [31, 100], [30, 100]], 'sub': {'dyna': [[32, -300]], 'crux': [[5, 250], [1, 250]], 'acme': [[31, 400]]}, 'as_of': 31}, {'control': 770, 'subledger': 900, 'difference': -130, 'credit_balances': [], 'open_customers': 2}], ['control 4', {'control': [[31, 250], [1, -80], [5, 100], [31, 250], [5, 100]], 'sub': {'crux': [[32, -300], [1, 250]]}, 'as_of': 31}, {'control': 620, 'subledger': 250, 'difference': 370, 'credit_balances': [], 'open_customers': 1}], ['control 5', {'control': [[31, 250], [5, -80], [1, 400], [32, 400], [1, 400]], 'sub': {'crux': [[5, 250], [1, 400]]}, 'as_of': 31}, {'control': 970, 'subledger': 650, 'difference': 320, 'credit_balances': [], 'open_customers': 1}], ['control 6', {'control': [[1, 100], [11, 100], [1, 100], [9, 400], [9, 100], [9, 100]], 'sub': {'dyna': [[1, 100], [5, 100]]}, 'as_of': 10}, {'control': 800, 'subledger': 200, 'difference': 600, 'credit_balances': [], 'open_customers': 1}]], [['regression: open customer count', {'control': [[5, 100], [5, 250], [19, -80], [21, 250], [21, 250]], 'sub': {'crux': [[20, -80], [20, -80]], 'acme': [[21, 100]]}, 'as_of': 20}, {'control': 270, 'subledger': -160, 'difference': 430, 'credit_balances': ['crux'], 'open_customers': 1}], ['control 1', {'control': [[1, -80], [5, 100], [20, 400], [19, 250], [1, 250]], 'sub': {'crux': [[20, 250], [20, -80], [20, 250]]}, 'as_of': 20}, {'control': 920, 'subledger': 420, 'difference': 500, 'credit_balances': [], 'open_customers': 1}], ['control 2', {'control': [[9, -80], [11, 400]], 'sub': {'bolt': [[5, 100], [5, 250]], 'acme': [[11, 100], [11, -80], [10, 250]]}, 'as_of': 10}, {'control': -80, 'subledger': 600, 'difference': -680, 'credit_balances': [], 'open_customers': 2}], ['control 3', {'control': [[1, 100], [1, 250], [5, 250], [1, 100], [1, 400], [5, -80]], 'sub': {'bolt': [[10, -80], [10, 400]], 'crux': [[1, 250], [10, 250]]}, 'as_of': 10}, {'control': 1020, 'subledger': 820, 'difference': 200, 'credit_balances': [], 'open_customers': 2}], ['control 4', {'control': [[32, 250], [1, 100], [32, 100], [31, 100], [1, -80]], 'sub': {'dyna': [[5, 100]], 'acme': [[5, 400], [5, -80]], 'crux': [[32, -80]], 'bolt': [[32, -80]]}, 'as_of': 31}, {'control': 120, 'subledger': 420, 'difference': -300, 'credit_balances': [], 'open_customers': 2}], ['control 5', {'control': [[5, 400], [11, 100]], 'sub': {'bolt': [[5, 400], [1, -80]], 'acme': [[5, 400], [1, 100], [5, -300]], 'dyna': [[1, 100]]}, 'as_of': 10}, {'control': 400, 'subledger': 620, 'difference': -220, 'credit_balances': [], 'open_customers': 3}], ['control 6', {'control': [[31, 400], [32, 400]], 'sub': {'acme': [[1, -80], [31, 400]]}, 'as_of': 31}, {'control': 400, 'subledger': 320, 'difference': 80, 'credit_balances': [], 'open_customers': 1}]]]
for label, args, expected in fixtures[N-1]:
    try:
        actual = solve(args)
    except Exception as exc:
        actual = 'raised ' + type(exc).__name__
    check(label, actual, 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)

prompt:
Customers with credit balances are not counted as open.

x = {'control': [[day, amount]], 'sub': {customer: [[day, amount]]}, 'as_of': day}. Only rows dated on or before as_of count. The subledger total nets every customer balance, including credit (negative) balances. Return {'control', 'subledger', 'difference': control - subledger, 'credit_balances': customers with negative balance sorted by name, 'open_customers': count of nonzero balances}.

split: open-access


broken_source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    cut = x['as_of']
    control = sum(a for d, a in x['control'] if d <= cut)
    per = {}
    for cust, rows in x['sub'].items():
        per[cust] = sum(a for d, a in rows if d <= cut)
    sub_total = sum(per.values())
    credit = sorted(c for c, v in per.items() if v <= 0)
    return {'control': control, 'subledger': sub_total, 'difference': control - sub_total, 'credit_balances': credit, 'open_customers': sum(1 for v in per.values() if v != 0)}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: credit balance threshold', {'control': [[5, 100], [19, -80], [21, -80]], 'sub': {'bolt': [[5, -80], [1, 250], [5, -80]], 'acme': [[21, 100]], 'dyna': [[20, 400], [1, 250], [20, 100]], 'crux': [[20, 400], [5, 100]]}, 'as_of': 20}, {'control': 20, 'subledger': 1340, 'difference': -1320, 'credit_balances': [], 'open_customers': 3}], ['regression: credit balance threshold, partial-repair probe', {'control': [[32, -80], [30, -80], [32, 250], [30, 400]], 'sub': {'crux': [[1, -300]], 'acme': [[31, -300]], 'dyna': [[32, 100], [32, 250]], 'bolt': [[32, -80]]}, 'as_of': 31}, {'control': 320, 'subledger': -600, 'difference': 920, 'credit_balances': ['acme', 'crux'], 'open_customers': 2}], ['control 1', {'control': [[21, 400], [5, 250], [19, 250], [20, 400], [19, -80]], 'sub': {'bolt': [[5, 250]]}, 'as_of': 20}, {'control': 820, 'subledger': 250, 'difference': 570, 'credit_balances': [], 'open_customers': 1}], ['control 2', {'control': [[9, 250], [10, 100], [11, 400]], 'sub': {'dyna': [[1, 400], [11, 400]], 'acme': [[1, -300], [10, 250], [1, -80]], 'bolt': [[1, -80]]}, 'as_of': 10}, {'control': 350, 'subledger': 190, 'difference': 160, 'credit_balances': ['acme', 'bolt'], 'open_customers': 3}], ['control 3', {'control': [[9, 100], [10, 100], [9, 400], [10, 100], [1, 250], [9, 250]], 'sub': {'dyna': [[1, 400], [11, 400], [1, 400]]}, 'as_of': 10}, {'control': 1200, 'subledger': 800, 'difference': 400, 'credit_balances': [], 'open_customers': 1}], ['control 4', {'control': [[5, 100], [21, 250], [19, 400], [5, 100]], 'sub': {'dyna': [[21, -80], [21, 100], [20, 400]], 'acme': [[5, 100], [20, -80], [21, -300]], 'bolt': [[5, -80], [21, -300]]}, 'as_of': 20}, {'control': 600, 'subledger': 340, 'difference': 260, 'credit_balances': ['bolt'], 'open_customers': 3}], ['control 5', {'control': [[10, 400], [10, 100], [9, 250], [11, 250], [1, 400]], 'sub': {'bolt': [[11, 400], [10, 400], [5, 100]]}, 'as_of': 10}, {'control': 1150, 'subledger': 500, 'difference': 650, 'credit_balances': [], 'open_customers': 1}]], [['regression: credit balance threshold', {'control': [[5, 400], [20, -80], [19, 250]], 'sub': {'acme': [[21, 250]], 'bolt': [[20, 250], [1, -80], [1, -80]], 'dyna': [[21, -80], [20, 100]], 'crux': [[5, 400], [21, 400], [20, -300]]}, 'as_of': 20}, {'control': 570, 'subledger': 290, 'difference': 280, 'credit_balances': [], 'open_customers': 3}], ['regression: credit balance threshold, partial-repair probe', {'control': [[9, 100], [10, -80], [11, 250], [9, -80], [11, 400]], 'sub': {'dyna': [[10, -300], [11, -80]], 'bolt': [[1, -300]], 'acme': [[11, 100], [10, 250]], 'crux': [[11, 100], [10, -300]]}, 'as_of': 10}, {'control': -60, 'subledger': -650, 'difference': 590, 'credit_balances': ['bolt', 'crux', 'dyna'], 'open_customers': 4}], ['control 1', {'control': [[1, 400], [11, 250]], 'sub': {'dyna': [[1, 250]], 'crux': [[1, 250], [1, 250], [1, 100]], 'acme': [[10, 250], [1, 250], [11, 250]], 'bolt': [[11, 250], [5, 400]]}, 'as_of': 10}, {'control': 400, 'subledger': 1750, 'difference': -1350, 'credit_balances': [], 'open_customers': 4}], ['control 2', {'control': [[20, 250], [19, 100], [5, 400]], 'sub': {'bolt': [[20, 250]], 'acme': [[1, -300], [1, 100], [1, 250]]}, 'as_of': 20}, {'control': 750, 'subledger': 300, 'difference': 450, 'credit_balances': [], 'open_customers': 2}], ['control 3', {'control': [[10, 250], [9, -80], [1, 250], [1, 100]], 'sub': {'dyna': [[1, 400], [10, 400]], 'acme': [[10, 250], [5, 400], [11, -300]], 'crux': [[11, 250], [1, 400], [5, -300]], 'bolt': [[5, 250]]}, 'as_of': 10}, {'control': 520, 'subledger': 1800, 'difference': -1280, 'credit_balances': [], 'open_customers': 4}], ['control 4', {'control': [[5, 250], [10, 250], [1, 400], [1, -80], [11, 400]], 'sub': {'crux': [[11, 250], [11, 100], [5, 250]], 'acme': [[5, 250], [11, -300], [5, 250]], 'bolt': [[11, -300], [5, 400]], 'dyna': [[10, -300]]}, 'as_of': 10}, {'control': 820, 'subledger': 850, 'difference': -30, 'credit_balances': ['dyna'], 'open_customers': 4}], ['control 5', {'control': [[9, 250], [10, 100], [5, -80], [1, 250], [11, 100]], 'sub': {'acme': [[1, -300]], 'bolt': [[5, 400]], 'crux': [[10, -300], [11, -80]]}, 'as_of': 10}, {'control': 520, 'subledger': -200, 'difference': 720, 'credit_balances': ['acme', 'crux'], 'open_customers': 3}]], [['regression: credit balance threshold', {'control': [[5, 400], [1, 250], [5, -80], [5, 250], [11, -80], [1, 400]], 'sub': {'dyna': [[11, 100]], 'acme': [[5, 400], [1, 100]], 'crux': [[5, 400], [5, -300]]}, 'as_of': 10}, {'control': 1220, 'subledger': 600, 'difference': 620, 'credit_balances': [], 'open_customers': 2}], ['regression: credit balance threshold, partial-repair probe', {'control': [[11, 100], [11, 250], [5, 100]], 'sub': {'crux': [[5, -80], [11, 250], [5, -300]], 'dyna': [[11, 400]], 'bolt': [[5, -80], [1, -80], [5, -80]]}, 'as_of': 10}, {'control': 100, 'subledger': -620, 'difference': 720, 'credit_balances': ['bolt', 'crux'], 'open_customers': 2}], ['control 1', {'control': [[9, 250], [11, 100], [11, -80], [11, 250]], 'sub': {'dyna': [[1, 250], [11, 400], [10, -80]], 'acme': [[11, -300], [1, 400], [1, 400]], 'bolt': [[1, -300]]}, 'as_of': 10}, {'control': 250, 'subledger': 670, 'difference': -420, 'credit_balances': ['bolt'], 'open_customers': 3}], ['control 2', {'control': [[1, -80], [1, 100], [32, 400], [31, 250]], 'sub': {'bolt': [[1, 250]]}, 'as_of': 31}, {'control': 270, 'subledger': 250, 'difference': 20, 'credit_balances': [], 'open_customers': 1}], ['control 3', {'control': [[11, 100], [5, -80], [9, 400]], 'sub': {'acme': [[11, 100], [11, 250], [1, 250]], 'dyna': [[5, 100]], 'bolt': [[5, -300], [5, -300]], 'crux': [[5, 250], [11, -300], [1, 100]]}, 'as_of': 10}, {'control': 320, 'subledger': 100, 'difference': 220, 'credit_balances': ['bolt'], 'open_customers': 4}], ['control 4', {'control': [[1, -80], [5, 250], [1, 400], [21, -80], [5, 250], [5, 100]], 'sub': {'crux': [[20, -80]], 'acme': [[1, 100]], 'bolt': [[5, 400], [1, 400], [21, 250]]}, 'as_of': 20}, {'control': 920, 'subledger': 820, 'difference': 100, 'credit_balances': ['crux'], 'open_customers': 3}], ['control 5', {'control': [[11, 250], [5, 250]], 'sub': {'acme': [[1, -80], [11, 100]], 'crux': [[5, 250]], 'dyna': [[11, -300], [5, 250], [1, 250]]}, 'as_of': 10}, {'control': 250, 'subledger': 670, 'difference': -420, 'credit_balances': ['acme'], 'open_customers': 3}]], [['regression: credit balance threshold', {'control': [[31, -80], [5, 100], [31, 100]], 'sub': {'crux': [[32, 250]], 'dyna': [[32, 250]], 'acme': [[1, -300], [32, 250]]}, 'as_of': 31}, {'control': 120, 'subledger': -300, 'difference': 420, 'credit_balances': ['acme'], 'open_customers': 1}], ['regression: credit balance threshold, partial-repair probe', {'control': [[21, -80], [1, 400], [5, -80], [19, 400], [20, 400], [1, 250]], 'sub': {'crux': [[1, -80]], 'dyna': [[20, -80], [20, 400], [5, 100]], 'bolt': [[21, -300]], 'acme': [[1, -80], [21, -80]]}, 'as_of': 20}, {'control': 1370, 'subledger': 260, 'difference': 1110, 'credit_balances': ['acme', 'crux'], 'open_customers': 3}], ['control 1', {'control': [[20, -80], [21, 100]], 'sub': {'dyna': [[1, -80], [20, 250]], 'bolt': [[1, -300], [20, 400], [21, -300]]}, 'as_of': 20}, {'control': -80, 'subledger': 270, 'difference': -350, 'credit_balances': [], 'open_customers': 2}], ['control 2', {'control': [[11, -80], [11, 400], [1, 250], [10, 100], [1, 400], [1, 400]], 'sub': {'dyna': [[11, 400], [5, 100]], 'acme': [[5, -80]], 'crux': [[10, 100], [5, 400], [1, 250]], 'bolt': [[10, 250], [11, 400]]}, 'as_of': 10}, {'control': 1150, 'subledger': 1020, 'difference': 130, 'credit_balances': ['acme'], 'open_customers': 4}], ['control 3', {'control': [[5, 400], [30, 250]], 'sub': {'dyna': [[5, 250], [31, 400]], 'bolt': [[32, 400], [32, -80], [5, 250]], 'crux': [[5, -300], [1, 250], [31, -300]]}, 'as_of': 31}, {'control': 650, 'subledger': 550, 'difference': 100, 'credit_balances': ['crux'], 'open_customers': 3}], ['control 4', {'control': [[31, 250], [1, -80], [5, 100], [31, 250], [5, 100]], 'sub': {'crux': [[32, -300], [1, 250]]}, 'as_of': 31}, {'control': 620, 'subledger': 250, 'difference': 370, 'credit_balances': [], 'open_customers': 1}], ['control 5', {'control': [[31, 250], [5, -80], [1, 400], [32, 400], [1, 400]], 'sub': {'crux': [[5, 250], [1, 400]]}, 'as_of': 31}, {'control': 970, 'subledger': 650, 'difference': 320, 'credit_balances': [], 'open_customers': 1}]], [['regression: credit balance threshold', {'control': [[5, 100], [5, 250], [19, -80], [21, 250], [21, 250]], 'sub': {'crux': [[20, -80], [20, -80]], 'acme': [[21, 100]]}, 'as_of': 20}, {'control': 270, 'subledger': -160, 'difference': 430, 'credit_balances': ['crux'], 'open_customers': 1}], ['regression: credit balance threshold, partial-repair probe', {'control': [[11, -80], [10, 400], [11, -80], [1, 100], [9, 100]], 'sub': {'crux': [[5, -300], [1, -300]], 'dyna': [[5, -80]], 'bolt': [[1, -300], [10, -80], [1, 100]], 'acme': [[10, 250], [11, -80]]}, 'as_of': 10}, {'control': 600, 'subledger': -710, 'difference': 1310, 'credit_balances': ['bolt', 'crux', 'dyna'], 'open_customers': 4}], ['control 1', {'control': [[10, -80], [9, 400], [1, 250]], 'sub': {'crux': [[5, 250], [1, 400], [5, 250]], 'acme': [[10, -80]]}, 'as_of': 10}, {'control': 570, 'subledger': 820, 'difference': -250, 'credit_balances': ['acme'], 'open_customers': 2}], ['control 2', {'control': [[1, -80], [5, 100], [20, 400], [19, 250], [1, 250]], 'sub': {'crux': [[20, 250], [20, -80], [20, 250]]}, 'as_of': 20}, {'control': 920, 'subledger': 420, 'difference': 500, 'credit_balances': [], 'open_customers': 1}], ['control 3', {'control': [[5, 400], [1, 250], [9, 400], [9, 400]], 'sub': {'acme': [[1, -300], [11, -80]], 'bolt': [[1, 250], [10, 250], [5, -300]], 'dyna': [[1, -300], [10, -300], [1, 100]]}, 'as_of': 10}, {'control': 1450, 'subledger': -600, 'difference': 2050, 'credit_balances': ['acme', 'dyna'], 'open_customers': 3}], ['control 4', {'control': [[9, -80], [11, 400]], 'sub': {'bolt': [[5, 100], [5, 250]], 'acme': [[11, 100], [11, -80], [10, 250]]}, 'as_of': 10}, {'control': -80, 'subledger': 600, 'difference': -680, 'credit_balances': [], 'open_customers': 2}], ['control 5', {'control': [[1, 100], [1, 250], [5, 250], [1, 100], [1, 400], [5, -80]], 'sub': {'bolt': [[10, -80], [10, 400]], 'crux': [[1, 250], [10, 250]]}, 'as_of': 10}, {'control': 1020, 'subledger': 820, 'difference': 200, 'credit_balances': [], 'open_customers': 2}]]]
for label, args, expected in fixtures[N-1]:
    try:
        actual = solve(args)
    except Exception as exc:
        actual = 'raised ' + type(exc).__name__
    check(label, actual, 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)

source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    cut = x['as_of']
    control = sum(a for d, a in x['control'] if d <= cut)
    per = {}
    for cust, rows in x['sub'].items():
        per[cust] = sum(a for d, a in rows if d <= cut)
    sub_total = sum(per.values())
    credit = sorted((c for c, v in per.items() if v < 0), key=lambda c: per[c])
    return {'control': control, 'subledger': sub_total, 'difference': control - sub_total, 'credit_balances': credit, 'open_customers': sum(1 for v in per.values() if v != 0)}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: credit balance threshold', {'control': [[5, 100], [19, -80], [21, -80]], 'sub': {'bolt': [[5, -80], [1, 250], [5, -80]], 'acme': [[21, 100]], 'dyna': [[20, 400], [1, 250], [20, 100]], 'crux': [[20, 400], [5, 100]]}, 'as_of': 20}, {'control': 20, 'subledger': 1340, 'difference': -1320, 'credit_balances': [], 'open_customers': 3}], ['regression: credit balance threshold, partial-repair probe', {'control': [[32, -80], [30, -80], [32, 250], [30, 400]], 'sub': {'crux': [[1, -300]], 'acme': [[31, -300]], 'dyna': [[32, 100], [32, 250]], 'bolt': [[32, -80]]}, 'as_of': 31}, {'control': 320, 'subledger': -600, 'difference': 920, 'credit_balances': ['acme', 'crux'], 'open_customers': 2}], ['control 1', {'control': [[21, 400], [5, 250], [19, 250], [20, 400], [19, -80]], 'sub': {'bolt': [[5, 250]]}, 'as_of': 20}, {'control': 820, 'subledger': 250, 'difference': 570, 'credit_balances': [], 'open_customers': 1}], ['control 2', {'control': [[9, 250], [10, 100], [11, 400]], 'sub': {'dyna': [[1, 400], [11, 400]], 'acme': [[1, -300], [10, 250], [1, -80]], 'bolt': [[1, -80]]}, 'as_of': 10}, {'control': 350, 'subledger': 190, 'difference': 160, 'credit_balances': ['acme', 'bolt'], 'open_customers': 3}], ['control 3', {'control': [[9, 100], [10, 100], [9, 400], [10, 100], [1, 250], [9, 250]], 'sub': {'dyna': [[1, 400], [11, 400], [1, 400]]}, 'as_of': 10}, {'control': 1200, 'subledger': 800, 'difference': 400, 'credit_balances': [], 'open_customers': 1}], ['control 4', {'control': [[5, 100], [21, 250], [19, 400], [5, 100]], 'sub': {'dyna': [[21, -80], [21, 100], [20, 400]], 'acme': [[5, 100], [20, -80], [21, -300]], 'bolt': [[5, -80], [21, -300]]}, 'as_of': 20}, {'control': 600, 'subledger': 340, 'difference': 260, 'credit_balances': ['bolt'], 'open_customers': 3}], ['control 5', {'control': [[10, 400], [10, 100], [9, 250], [11, 250], [1, 400]], 'sub': {'bolt': [[11, 400], [10, 400], [5, 100]]}, 'as_of': 10}, {'control': 1150, 'subledger': 500, 'difference': 650, 'credit_balances': [], 'open_customers': 1}]], [['regression: credit balance threshold', {'control': [[5, 400], [20, -80], [19, 250]], 'sub': {'acme': [[21, 250]], 'bolt': [[20, 250], [1, -80], [1, -80]], 'dyna': [[21, -80], [20, 100]], 'crux': [[5, 400], [21, 400], [20, -300]]}, 'as_of': 20}, {'control': 570, 'subledger': 290, 'difference': 280, 'credit_balances': [], 'open_customers': 3}], ['regression: credit balance threshold, partial-repair probe', {'control': [[9, 100], [10, -80], [11, 250], [9, -80], [11, 400]], 'sub': {'dyna': [[10, -300], [11, -80]], 'bolt': [[1, -300]], 'acme': [[11, 100], [10, 250]], 'crux': [[11, 100], [10, -300]]}, 'as_of': 10}, {'control': -60, 'subledger': -650, 'difference': 590, 'credit_balances': ['bolt', 'crux', 'dyna'], 'open_customers': 4}], ['control 1', {'control': [[1, 400], [11, 250]], 'sub': {'dyna': [[1, 250]], 'crux': [[1, 250], [1, 250], [1, 100]], 'acme': [[10, 250], [1, 250], [11, 250]], 'bolt': [[11, 250], [5, 400]]}, 'as_of': 10}, {'control': 400, 'subledger': 1750, 'difference': -1350, 'credit_balances': [], 'open_customers': 4}], ['control 2', {'control': [[20, 250], [19, 100], [5, 400]], 'sub': {'bolt': [[20, 250]], 'acme': [[1, -300], [1, 100], [1, 250]]}, 'as_of': 20}, {'control': 750, 'subledger': 300, 'difference': 450, 'credit_balances': [], 'open_customers': 2}], ['control 3', {'control': [[10, 250], [9, -80], [1, 250], [1, 100]], 'sub': {'dyna': [[1, 400], [10, 400]], 'acme': [[10, 250], [5, 400], [11, -300]], 'crux': [[11, 250], [1, 400], [5, -300]], 'bolt': [[5, 250]]}, 'as_of': 10}, {'control': 520, 'subledger': 1800, 'difference': -1280, 'credit_balances': [], 'open_customers': 4}], ['control 4', {'control': [[5, 250], [10, 250], [1, 400], [1, -80], [11, 400]], 'sub': {'crux': [[11, 250], [11, 100], [5, 250]], 'acme': [[5, 250], [11, -300], [5, 250]], 'bolt': [[11, -300], [5, 400]], 'dyna': [[10, -300]]}, 'as_of': 10}, {'control': 820, 'subledger': 850, 'difference': -30, 'credit_balances': ['dyna'], 'open_customers': 4}], ['control 5', {'control': [[9, 250], [10, 100], [5, -80], [1, 250], [11, 100]], 'sub': {'acme': [[1, -300]], 'bolt': [[5, 400]], 'crux': [[10, -300], [11, -80]]}, 'as_of': 10}, {'control': 520, 'subledger': -200, 'difference': 720, 'credit_balances': ['acme', 'crux'], 'open_customers': 3}]], [['regression: credit balance threshold', {'control': [[5, 400], [1, 250], [5, -80], [5, 250], [11, -80], [1, 400]], 'sub': {'dyna': [[11, 100]], 'acme': [[5, 400], [1, 100]], 'crux': [[5, 400], [5, -300]]}, 'as_of': 10}, {'control': 1220, 'subledger': 600, 'difference': 620, 'credit_balances': [], 'open_customers': 2}], ['regression: credit balance threshold, partial-repair probe', {'control': [[11, 100], [11, 250], [5, 100]], 'sub': {'crux': [[5, -80], [11, 250], [5, -300]], 'dyna': [[11, 400]], 'bolt': [[5, -80], [1, -80], [5, -80]]}, 'as_of': 10}, {'control': 100, 'subledger': -620, 'difference': 720, 'credit_balances': ['bolt', 'crux'], 'open_customers': 2}], ['control 1', {'control': [[9, 250], [11, 100], [11, -80], [11, 250]], 'sub': {'dyna': [[1, 250], [11, 400], [10, -80]], 'acme': [[11, -300], [1, 400], [1, 400]], 'bolt': [[1, -300]]}, 'as_of': 10}, {'control': 250, 'subledger': 670, 'difference': -420, 'credit_balances': ['bolt'], 'open_customers': 3}], ['control 2', {'control': [[1, -80], [1, 100], [32, 400], [31, 250]], 'sub': {'bolt': [[1, 250]]}, 'as_of': 31}, {'control': 270, 'subledger': 250, 'difference': 20, 'credit_balances': [], 'open_customers': 1}], ['control 3', {'control': [[11, 100], [5, -80], [9, 400]], 'sub': {'acme': [[11, 100], [11, 250], [1, 250]], 'dyna': [[5, 100]], 'bolt': [[5, -300], [5, -300]], 'crux': [[5, 250], [11, -300], [1, 100]]}, 'as_of': 10}, {'control': 320, 'subledger': 100, 'difference': 220, 'credit_balances': ['bolt'], 'open_customers': 4}], ['control 4', {'control': [[1, -80], [5, 250], [1, 400], [21, -80], [5, 250], [5, 100]], 'sub': {'crux': [[20, -80]], 'acme': [[1, 100]], 'bolt': [[5, 400], [1, 400], [21, 250]]}, 'as_of': 20}, {'control': 920, 'subledger': 820, 'difference': 100, 'credit_balances': ['crux'], 'open_customers': 3}], ['control 5', {'control': [[11, 250], [5, 250]], 'sub': {'acme': [[1, -80], [11, 100]], 'crux': [[5, 250]], 'dyna': [[11, -300], [5, 250], [1, 250]]}, 'as_of': 10}, {'control': 250, 'subledger': 670, 'difference': -420, 'credit_balances': ['acme'], 'open_customers': 3}]], [['regression: credit balance threshold', {'control': [[31, -80], [5, 100], [31, 100]], 'sub': {'crux': [[32, 250]], 'dyna': [[32, 250]], 'acme': [[1, -300], [32, 250]]}, 'as_of': 31}, {'control': 120, 'subledger': -300, 'difference': 420, 'credit_balances': ['acme'], 'open_customers': 1}], ['regression: credit balance threshold, partial-repair probe', {'control': [[21, -80], [1, 400], [5, -80], [19, 400], [20, 400], [1, 250]], 'sub': {'crux': [[1, -80]], 'dyna': [[20, -80], [20, 400], [5, 100]], 'bolt': [[21, -300]], 'acme': [[1, -80], [21, -80]]}, 'as_of': 20}, {'control': 1370, 'subledger': 260, 'difference': 1110, 'credit_balances': ['acme', 'crux'], 'open_customers': 3}], ['control 1', {'control': [[20, -80], [21, 100]], 'sub': {'dyna': [[1, -80], [20, 250]], 'bolt': [[1, -300], [20, 400], [21, -300]]}, 'as_of': 20}, {'control': -80, 'subledger': 270, 'difference': -350, 'credit_balances': [], 'open_customers': 2}], ['control 2', {'control': [[11, -80], [11, 400], [1, 250], [10, 100], [1, 400], [1, 400]], 'sub': {'dyna': [[11, 400], [5, 100]], 'acme': [[5, -80]], 'crux': [[10, 100], [5, 400], [1, 250]], 'bolt': [[10, 250], [11, 400]]}, 'as_of': 10}, {'control': 1150, 'subledger': 1020, 'difference': 130, 'credit_balances': ['acme'], 'open_customers': 4}], ['control 3', {'control': [[5, 400], [30, 250]], 'sub': {'dyna': [[5, 250], [31, 400]], 'bolt': [[32, 400], [32, -80], [5, 250]], 'crux': [[5, -300], [1, 250], [31, -300]]}, 'as_of': 31}, {'control': 650, 'subledger': 550, 'difference': 100, 'credit_balances': ['crux'], 'open_customers': 3}], ['control 4', {'control': [[31, 250], [1, -80], [5, 100], [31, 250], [5, 100]], 'sub': {'crux': [[32, -300], [1, 250]]}, 'as_of': 31}, {'control': 620, 'subledger': 250, 'difference': 370, 'credit_balances': [], 'open_customers': 1}], ['control 5', {'control': [[31, 250], [5, -80], [1, 400], [32, 400], [1, 400]], 'sub': {'crux': [[5, 250], [1, 400]]}, 'as_of': 31}, {'control': 970, 'subledger': 650, 'difference': 320, 'credit_balances': [], 'open_customers': 1}]], [['regression: credit balance threshold', {'control': [[5, 100], [5, 250], [19, -80], [21, 250], [21, 250]], 'sub': {'crux': [[20, -80], [20, -80]], 'acme': [[21, 100]]}, 'as_of': 20}, {'control': 270, 'subledger': -160, 'difference': 430, 'credit_balances': ['crux'], 'open_customers': 1}], ['regression: credit balance threshold, partial-repair probe', {'control': [[11, -80], [10, 400], [11, -80], [1, 100], [9, 100]], 'sub': {'crux': [[5, -300], [1, -300]], 'dyna': [[5, -80]], 'bolt': [[1, -300], [10, -80], [1, 100]], 'acme': [[10, 250], [11, -80]]}, 'as_of': 10}, {'control': 600, 'subledger': -710, 'difference': 1310, 'credit_balances': ['bolt', 'crux', 'dyna'], 'open_customers': 4}], ['control 1', {'control': [[10, -80], [9, 400], [1, 250]], 'sub': {'crux': [[5, 250], [1, 400], [5, 250]], 'acme': [[10, -80]]}, 'as_of': 10}, {'control': 570, 'subledger': 820, 'difference': -250, 'credit_balances': ['acme'], 'open_customers': 2}], ['control 2', {'control': [[1, -80], [5, 100], [20, 400], [19, 250], [1, 250]], 'sub': {'crux': [[20, 250], [20, -80], [20, 250]]}, 'as_of': 20}, {'control': 920, 'subledger': 420, 'difference': 500, 'credit_balances': [], 'open_customers': 1}], ['control 3', {'control': [[5, 400], [1, 250], [9, 400], [9, 400]], 'sub': {'acme': [[1, -300], [11, -80]], 'bolt': [[1, 250], [10, 250], [5, -300]], 'dyna': [[1, -300], [10, -300], [1, 100]]}, 'as_of': 10}, {'control': 1450, 'subledger': -600, 'difference': 2050, 'credit_balances': ['acme', 'dyna'], 'open_customers': 3}], ['control 4', {'control': [[9, -80], [11, 400]], 'sub': {'bolt': [[5, 100], [5, 250]], 'acme': [[11, 100], [11, -80], [10, 250]]}, 'as_of': 10}, {'control': -80, 'subledger': 600, 'difference': -680, 'credit_balances': [], 'open_customers': 2}], ['control 5', {'control': [[1, 100], [1, 250], [5, 250], [1, 100], [1, 400], [5, -80]], 'sub': {'bolt': [[10, -80], [10, 400]], 'crux': [[1, 250], [10, 250]]}, 'as_of': 10}, {'control': 1020, 'subledger': 820, 'difference': 200, 'credit_balances': [], 'open_customers': 2}]]]
for label, args, expected in fixtures[N-1]:
    try:
        actual = solve(args)
    except Exception as exc:
        actual = 'raised ' + type(exc).__name__
    check(label, actual, 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)

prompt:
Settled customers are listed as having credit balances.

x = {'control': [[day, amount]], 'sub': {customer: [[day, amount]]}, 'as_of': day}. Only rows dated on or before as_of count. The subledger total nets every customer balance, including credit (negative) balances. Return {'control', 'subledger', 'difference': control - subledger, 'credit_balances': customers with negative balance sorted by name, 'open_customers': count of nonzero balances}.

split: open-access


broken_source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    def rnd(n, d):
        q, r = divmod(n, d)
        return q + (1 if 2 * r >= d else 0)
    ytd = dict(x['ytd'])
    wage = tax_exp = cash = withholding = benefits = 0
    for emp, g in x['gross']:
        ben = x['benefit'].get(emp, 0)
        social = min(g, x['wage_base'] - ytd.get(emp, 0))
        ytd[emp] = ytd.get(emp, 0) + g
        ss = rnd(social * x['ss_bp'], 10000)
        med = rnd(g * x['med_bp'], 10000)
        itax = rnd((g - ben) * x['itax_bp'], 10000)
        employer = ss + med
        wage += g
        tax_exp += employer
        cash += g - ss - med - itax - ben
        withholding += ss + med + itax + employer
        benefits += ben
    return {'wage_expense': wage, 'tax_expense': tax_exp, 'cash': cash, 'withholding': withholding, 'benefits': benefits}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: remaining wage base', {'gross': [['ann', 333333], ['di', 100000], ['bob', 1234]], 'ytd': {'ann': 0, 'di': 17000000, 'bob': 16800000}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 1000, 'benefit': {'ann': 12345, 'di': 5000, 'bob': 5000}}, {'wage_expense': 434567, 'tax_expense': 27045, 'cash': 343955, 'withholding': 95312, 'benefits': 22345}], ['regression: remaining wage base, partial-repair probe', {'gross': [['bob', 100000]], 'ytd': {'bob': 16800000}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 1200, 'benefit': {'bob': 5000}}, {'wage_expense': 100000, 'tax_expense': 5170, 'cash': 78430, 'withholding': 21740, 'benefits': 5000}], ['control 1', {'gross': [['di', 1234], ['cy', 50000], ['bob', 50000], ['di', 80000]], 'ytd': {'di': 15000000, 'cy': 16800000, 'bob': 16800000}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 2200, 'benefit': {'di': 12345, 'cy': 0, 'bob': 5000}}, {'wage_expense': 181234, 'tax_expense': 13865, 'cash': 104339, 'withholding': 61070, 'benefits': 29690}], ['control 2', {'gross': [['bob', 100000], ['ann', 250000], ['bob', 80000]], 'ytd': {'bob': 0, 'ann': 15000000}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 2200, 'benefit': {'bob': 5000, 'ann': 0}}, {'wage_expense': 430000, 'tax_expense': 32895, 'cash': 294705, 'withholding': 158190, 'benefits': 10000}], ['control 3', {'gross': [['di', 50000], ['ann', 50000], ['cy', 1234]], 'ytd': {'di': 16800000, 'ann': 16800000, 'cy': 0}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 1000, 'benefit': {'di': 12345, 'ann': 0, 'cy': 5000}}, {'wage_expense': 101234, 'tax_expense': 7745, 'cash': 67755, 'withholding': 23879, 'benefits': 17345}], ['control 4', {'gross': [['bob', 1234], ['cy', 333333], ['bob', 80000]], 'ytd': {'bob': 0, 'cy': 15000000}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 1000, 'benefit': {'bob': 12345, 'cy': 0}}, {'wage_expense': 414567, 'tax_expense': 31715, 'cash': 319174, 'withholding': 102418, 'benefits': 24690}], ['control 5', {'gross': [['cy', 1234], ['ann', 100000]], 'ytd': {'cy': 16800000, 'ann': 16800000}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 1200, 'benefit': {'cy': 12345, 'ann': 5000}}, {'wage_expense': 101234, 'tax_expense': 5265, 'cash': 68557, 'withholding': 20597, 'benefits': 17345}]], [['regression: remaining wage base', {'gross': [['ann', 1234], ['bob', 100000], ['di', 50000], ['ann', 80000]], 'ytd': {'ann': 15000000, 'bob': 0, 'di': 17000000}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 2200, 'benefit': {'ann': 0, 'bob': 12345, 'di': 12345}}, {'wage_expense': 231234, 'tax_expense': 14590, 'cash': 146515, 'withholding': 74619, 'benefits': 24690}], ['regression: remaining wage base, partial-repair probe', {'gross': [['di', 100000], ['cy', 50000]], 'ytd': {'di': 16800000, 'cy': 16800000}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 2200, 'benefit': {'di': 12345, 'cy': 5000}}, {'wage_expense': 150000, 'tax_expense': 8995, 'cash': 94476, 'withholding': 47174, 'benefits': 17345}], ['control 1', {'gross': [['cy', 50000], ['ann', 50000], ['di', 333333]], 'ytd': {'cy': 16700000, 'ann': 15000000, 'di': 0}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 1000, 'benefit': {'cy': 0, 'ann': 12345, 'di': 12345}}, {'wage_expense': 433333, 'tax_expense': 33150, 'cash': 334628, 'withholding': 107165, 'benefits': 24690}], ['control 2', {'gross': [['bob', 100000], ['ann', 250000]], 'ytd': {'bob': 15000000, 'ann': 15000000}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 1000, 'benefit': {'bob': 12345, 'ann': 5000}}, {'wage_expense': 350000, 'tax_expense': 26775, 'cash': 272614, 'withholding': 86816, 'benefits': 17345}], ['control 3', {'gross': [['cy', 333333], ['ann', 333333]], 'ytd': {'cy': 0, 'ann': 16700000}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 2200, 'benefit': {'cy': 12345, 'ann': 5000}}, {'wage_expense': 666666, 'tax_expense': 40253, 'cash': 466218, 'withholding': 223356, 'benefits': 17345}], ['control 4', {'gross': [['bob', 50000], ['bob', 80000]], 'ytd': {'bob': 15000000}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 2200, 'benefit': {'bob': 0}}, {'wage_expense': 130000, 'tax_expense': 9945, 'cash': 91455, 'withholding': 48490, 'benefits': 0}], ['control 5', {'gross': [['di', 250000]], 'ytd': {'di': 0}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 1200, 'benefit': {'di': 12345}}, {'wage_expense': 250000, 'tax_expense': 19125, 'cash': 190011, 'withholding': 66769, 'benefits': 12345}]], [['regression: remaining wage base', {'gross': [['ann', 250000], ['di', 333333], ['ann', 200000]], 'ytd': {'ann': 17000000, 'di': 15000000}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 1000, 'benefit': {'ann': 5000, 'di': 12345}}, {'wage_expense': 783333, 'tax_expense': 32025, 'cash': 652864, 'withholding': 140149, 'benefits': 22345}], ['regression: remaining wage base, partial-repair probe', {'gross': [['di', 250000], ['ann', 250000], ['di', 200000]], 'ytd': {'di': 16800000, 'ann': 0}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 1200, 'benefit': {'di': 12345, 'ann': 5000}}, {'wage_expense': 700000, 'tax_expense': 29370, 'cash': 560502, 'withholding': 139178, 'benefits': 29690}], ['control 1', {'gross': [['ann', 50000], ['cy', 50000], ['bob', 100000]], 'ytd': {'ann': 0, 'cy': 0, 'bob': 0}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 1200, 'benefit': {'ann': 5000, 'cy': 5000, 'bob': 5000}}, {'wage_expense': 200000, 'tax_expense': 15300, 'cash': 147500, 'withholding': 52800, 'benefits': 15000}], ['control 2', {'gross': [['di', 50000], ['cy', 50000]], 'ytd': {'di': 16800000, 'cy': 0}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 1200, 'benefit': {'di': 5000, 'cy': 5000}}, {'wage_expense': 100000, 'tax_expense': 7650, 'cash': 71550, 'withholding': 26100, 'benefits': 10000}], ['control 3', {'gross': [['cy', 250000]], 'ytd': {'cy': 0}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 1200, 'benefit': {'cy': 0}}, {'wage_expense': 250000, 'tax_expense': 19125, 'cash': 200875, 'withholding': 68250, 'benefits': 0}], ['control 4', {'gross': [['cy', 333333]], 'ytd': {'cy': 16800000}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 2200, 'benefit': {'cy': 5000}}, {'wage_expense': 333333, 'tax_expense': 8553, 'cash': 247547, 'withholding': 89339, 'benefits': 5000}], ['control 5', {'gross': [['bob', 333333]], 'ytd': {'bob': 15000000}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 1200, 'benefit': {'bob': 12345}}, {'wage_expense': 333333, 'tax_expense': 25500, 'cash': 256969, 'withholding': 89519, 'benefits': 12345}]], [['regression: remaining wage base', {'gross': [['ann', 100000], ['bob', 100000], ['cy', 250000]], 'ytd': {'ann': 16700000, 'bob': 17000000, 'cy': 16700000}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 2200, 'benefit': {'ann': 12345, 'bob': 5000, 'cy': 0}}, {'wage_expense': 450000, 'tax_expense': 22645, 'cash': 314826, 'withholding': 140474, 'benefits': 17345}], ['control 1', {'gross': [['bob', 100000]], 'ytd': {'bob': 15000000}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 1000, 'benefit': {'bob': 5000}}, {'wage_expense': 100000, 'tax_expense': 7650, 'cash': 77850, 'withholding': 24800, 'benefits': 5000}], ['control 2', {'gross': [['cy', 100000]], 'ytd': {'cy': 0}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 1000, 'benefit': {'cy': 5000}}, {'wage_expense': 100000, 'tax_expense': 7650, 'cash': 77850, 'withholding': 24800, 'benefits': 5000}], ['control 3', {'gross': [['di', 100000], ['bob', 333333]], 'ytd': {'di': 0, 'bob': 16700000}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 1000, 'benefit': {'di': 0, 'bob': 12345}}, {'wage_expense': 433333, 'tax_expense': 22403, 'cash': 356486, 'withholding': 86905, 'benefits': 12345}], ['control 4', {'gross': [['bob', 333333], ['di', 250000], ['ann', 50000], ['bob', 80000]], 'ytd': {'bob': 0, 'di': 16700000, 'ann': 16700000}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 1000, 'benefit': {'bob': 12345, 'di': 0, 'ann': 5000}}, {'wage_expense': 713333, 'tax_expense': 48990, 'cash': 566288, 'withholding': 166345, 'benefits': 29690}], ['control 5', {'gross': [['bob', 333333]], 'ytd': {'bob': 16700000}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 2200, 'benefit': {'bob': 5000}}, {'wage_expense': 333333, 'tax_expense': 14753, 'cash': 241347, 'withholding': 101739, 'benefits': 5000}], ['control 6', {'gross': [['di', 1234], ['ann', 250000], ['cy', 333333], ['di', 80000]], 'ytd': {'di': 15000000, 'ann': 16800000, 'cy': 0}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 2200, 'benefit': {'di': 0, 'ann': 5000, 'cy': 12345}}, {'wage_expense': 664567, 'tax_expense': 39060, 'cash': 465774, 'withholding': 220508, 'benefits': 17345}]], [['regression: remaining wage base', {'gross': [['di', 333333], ['bob', 100000], ['ann', 250000], ['di', 200000]], 'ytd': {'di': 17000000, 'bob': 17000000, 'ann': 16700000}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 1000, 'benefit': {'di': 5000, 'bob': 12345, 'ann': 12345}}, {'wage_expense': 883333, 'tax_expense': 22728, 'cash': 741050, 'withholding': 130321, 'benefits': 34690}], ['control 1', {'gross': [['ann', 333333], ['bob', 250000], ['cy', 1234]], 'ytd': {'ann': 0, 'bob': 16700000, 'cy': 16800000}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 2200, 'benefit': {'ann': 5000, 'bob': 12345, 'cy': 0}}, {'wage_expense': 584567, 'tax_expense': 39140, 'cash': 403294, 'withholding': 203068, 'benefits': 17345}], ['control 2', {'gross': [['di', 1234], ['bob', 333333], ['di', 80000]], 'ytd': {'di': 15000000, 'bob': 0}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 2200, 'benefit': {'di': 0, 'bob': 0}}, {'wage_expense': 414567, 'tax_expense': 31715, 'cash': 291648, 'withholding': 154634, 'benefits': 0}], ['control 3', {'gross': [['di', 250000], ['di', 80000]], 'ytd': {'di': 0}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 1200, 'benefit': {'di': 5000}}, {'wage_expense': 330000, 'tax_expense': 25245, 'cash': 256355, 'withholding': 88890, 'benefits': 10000}], ['control 4', {'gross': [['bob', 50000], ['bob', 200000]], 'ytd': {'bob': 16800000}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 1000, 'benefit': {'bob': 5000}}, {'wage_expense': 250000, 'tax_expense': 7345, 'cash': 208655, 'withholding': 38690, 'benefits': 10000}], ['control 5', {'gross': [['bob', 100000], ['cy', 50000], ['ann', 100000]], 'ytd': {'bob': 15000000, 'cy': 16700000, 'ann': 16800000}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 1000, 'benefit': {'bob': 0, 'cy': 5000, 'ann': 12345}}, {'wage_expense': 250000, 'tax_expense': 16645, 'cash': 192744, 'withholding': 56556, 'benefits': 17345}], ['control 6', {'gross': [['di', 1234]], 'ytd': {'di': 0}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 1200, 'benefit': {'di': 5000}}, {'wage_expense': 1234, 'tax_expense': 95, 'cash': -3409, 'withholding': -262, 'benefits': 5000}]]]
for label, args, expected in fixtures[N-1]:
    try:
        actual = solve(args)
    except Exception as exc:
        actual = 'raised ' + type(exc).__name__
    check(label, actual, 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)

source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    def rnd(n, d):
        q, r = divmod(n, d)
        return q + (1 if 2 * r >= d else 0)
    ytd = dict(x['ytd'])
    wage = tax_exp = cash = withholding = benefits = 0
    for emp, g in x['gross']:
        ben = x['benefit'].get(emp, 0)
        social = g if ytd.get(emp, 0) < x['wage_base'] else 0
        ytd[emp] = ytd.get(emp, 0) + g
        ss = rnd(social * x['ss_bp'], 10000)
        med = rnd(g * x['med_bp'], 10000)
        itax = rnd((g - ben) * x['itax_bp'], 10000)
        employer = ss + med
        wage += g
        tax_exp += employer
        cash += g - ss - med - itax - ben
        withholding += ss + med + itax + employer
        benefits += ben
    return {'wage_expense': wage, 'tax_expense': tax_exp, 'cash': cash, 'withholding': withholding, 'benefits': benefits}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: remaining wage base', {'gross': [['ann', 333333], ['di', 100000], ['bob', 1234]], 'ytd': {'ann': 0, 'di': 17000000, 'bob': 16800000}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 1000, 'benefit': {'ann': 12345, 'di': 5000, 'bob': 5000}}, {'wage_expense': 434567, 'tax_expense': 27045, 'cash': 343955, 'withholding': 95312, 'benefits': 22345}], ['regression: remaining wage base, partial-repair probe', {'gross': [['bob', 100000]], 'ytd': {'bob': 16800000}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 1200, 'benefit': {'bob': 5000}}, {'wage_expense': 100000, 'tax_expense': 5170, 'cash': 78430, 'withholding': 21740, 'benefits': 5000}], ['control 1', {'gross': [['di', 1234], ['cy', 50000], ['bob', 50000], ['di', 80000]], 'ytd': {'di': 15000000, 'cy': 16800000, 'bob': 16800000}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 2200, 'benefit': {'di': 12345, 'cy': 0, 'bob': 5000}}, {'wage_expense': 181234, 'tax_expense': 13865, 'cash': 104339, 'withholding': 61070, 'benefits': 29690}], ['control 2', {'gross': [['bob', 100000], ['ann', 250000], ['bob', 80000]], 'ytd': {'bob': 0, 'ann': 15000000}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 2200, 'benefit': {'bob': 5000, 'ann': 0}}, {'wage_expense': 430000, 'tax_expense': 32895, 'cash': 294705, 'withholding': 158190, 'benefits': 10000}], ['control 3', {'gross': [['di', 50000], ['ann', 50000], ['cy', 1234]], 'ytd': {'di': 16800000, 'ann': 16800000, 'cy': 0}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 1000, 'benefit': {'di': 12345, 'ann': 0, 'cy': 5000}}, {'wage_expense': 101234, 'tax_expense': 7745, 'cash': 67755, 'withholding': 23879, 'benefits': 17345}], ['control 4', {'gross': [['bob', 1234], ['cy', 333333], ['bob', 80000]], 'ytd': {'bob': 0, 'cy': 15000000}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 1000, 'benefit': {'bob': 12345, 'cy': 0}}, {'wage_expense': 414567, 'tax_expense': 31715, 'cash': 319174, 'withholding': 102418, 'benefits': 24690}], ['control 5', {'gross': [['cy', 1234], ['ann', 100000]], 'ytd': {'cy': 16800000, 'ann': 16800000}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 1200, 'benefit': {'cy': 12345, 'ann': 5000}}, {'wage_expense': 101234, 'tax_expense': 5265, 'cash': 68557, 'withholding': 20597, 'benefits': 17345}]], [['regression: remaining wage base', {'gross': [['ann', 1234], ['bob', 100000], ['di', 50000], ['ann', 80000]], 'ytd': {'ann': 15000000, 'bob': 0, 'di': 17000000}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 2200, 'benefit': {'ann': 0, 'bob': 12345, 'di': 12345}}, {'wage_expense': 231234, 'tax_expense': 14590, 'cash': 146515, 'withholding': 74619, 'benefits': 24690}], ['regression: remaining wage base, partial-repair probe', {'gross': [['di', 100000], ['cy', 50000]], 'ytd': {'di': 16800000, 'cy': 16800000}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 2200, 'benefit': {'di': 12345, 'cy': 5000}}, {'wage_expense': 150000, 'tax_expense': 8995, 'cash': 94476, 'withholding': 47174, 'benefits': 17345}], ['control 1', {'gross': [['cy', 50000], ['ann', 50000], ['di', 333333]], 'ytd': {'cy': 16700000, 'ann': 15000000, 'di': 0}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 1000, 'benefit': {'cy': 0, 'ann': 12345, 'di': 12345}}, {'wage_expense': 433333, 'tax_expense': 33150, 'cash': 334628, 'withholding': 107165, 'benefits': 24690}], ['control 2', {'gross': [['bob', 100000], ['ann', 250000]], 'ytd': {'bob': 15000000, 'ann': 15000000}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 1000, 'benefit': {'bob': 12345, 'ann': 5000}}, {'wage_expense': 350000, 'tax_expense': 26775, 'cash': 272614, 'withholding': 86816, 'benefits': 17345}], ['control 3', {'gross': [['cy', 333333], ['ann', 333333]], 'ytd': {'cy': 0, 'ann': 16700000}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 2200, 'benefit': {'cy': 12345, 'ann': 5000}}, {'wage_expense': 666666, 'tax_expense': 40253, 'cash': 466218, 'withholding': 223356, 'benefits': 17345}], ['control 4', {'gross': [['bob', 50000], ['bob', 80000]], 'ytd': {'bob': 15000000}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 2200, 'benefit': {'bob': 0}}, {'wage_expense': 130000, 'tax_expense': 9945, 'cash': 91455, 'withholding': 48490, 'benefits': 0}], ['control 5', {'gross': [['di', 250000]], 'ytd': {'di': 0}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 1200, 'benefit': {'di': 12345}}, {'wage_expense': 250000, 'tax_expense': 19125, 'cash': 190011, 'withholding': 66769, 'benefits': 12345}]], [['regression: remaining wage base', {'gross': [['ann', 250000], ['di', 333333], ['ann', 200000]], 'ytd': {'ann': 17000000, 'di': 15000000}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 1000, 'benefit': {'ann': 5000, 'di': 12345}}, {'wage_expense': 783333, 'tax_expense': 32025, 'cash': 652864, 'withholding': 140149, 'benefits': 22345}], ['regression: remaining wage base, partial-repair probe', {'gross': [['di', 250000], ['ann', 250000], ['di', 200000]], 'ytd': {'di': 16800000, 'ann': 0}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 1200, 'benefit': {'di': 12345, 'ann': 5000}}, {'wage_expense': 700000, 'tax_expense': 29370, 'cash': 560502, 'withholding': 139178, 'benefits': 29690}], ['control 1', {'gross': [['ann', 50000], ['cy', 50000], ['bob', 100000]], 'ytd': {'ann': 0, 'cy': 0, 'bob': 0}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 1200, 'benefit': {'ann': 5000, 'cy': 5000, 'bob': 5000}}, {'wage_expense': 200000, 'tax_expense': 15300, 'cash': 147500, 'withholding': 52800, 'benefits': 15000}], ['control 2', {'gross': [['di', 50000], ['cy', 50000]], 'ytd': {'di': 16800000, 'cy': 0}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 1200, 'benefit': {'di': 5000, 'cy': 5000}}, {'wage_expense': 100000, 'tax_expense': 7650, 'cash': 71550, 'withholding': 26100, 'benefits': 10000}], ['control 3', {'gross': [['cy', 250000]], 'ytd': {'cy': 0}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 1200, 'benefit': {'cy': 0}}, {'wage_expense': 250000, 'tax_expense': 19125, 'cash': 200875, 'withholding': 68250, 'benefits': 0}], ['control 4', {'gross': [['cy', 333333]], 'ytd': {'cy': 16800000}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 2200, 'benefit': {'cy': 5000}}, {'wage_expense': 333333, 'tax_expense': 8553, 'cash': 247547, 'withholding': 89339, 'benefits': 5000}], ['control 5', {'gross': [['bob', 333333]], 'ytd': {'bob': 15000000}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 1200, 'benefit': {'bob': 12345}}, {'wage_expense': 333333, 'tax_expense': 25500, 'cash': 256969, 'withholding': 89519, 'benefits': 12345}]], [['regression: remaining wage base', {'gross': [['ann', 100000], ['bob', 100000], ['cy', 250000]], 'ytd': {'ann': 16700000, 'bob': 17000000, 'cy': 16700000}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 2200, 'benefit': {'ann': 12345, 'bob': 5000, 'cy': 0}}, {'wage_expense': 450000, 'tax_expense': 22645, 'cash': 314826, 'withholding': 140474, 'benefits': 17345}], ['control 1', {'gross': [['bob', 100000]], 'ytd': {'bob': 15000000}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 1000, 'benefit': {'bob': 5000}}, {'wage_expense': 100000, 'tax_expense': 7650, 'cash': 77850, 'withholding': 24800, 'benefits': 5000}], ['control 2', {'gross': [['cy', 100000]], 'ytd': {'cy': 0}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 1000, 'benefit': {'cy': 5000}}, {'wage_expense': 100000, 'tax_expense': 7650, 'cash': 77850, 'withholding': 24800, 'benefits': 5000}], ['control 3', {'gross': [['di', 100000], ['bob', 333333]], 'ytd': {'di': 0, 'bob': 16700000}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 1000, 'benefit': {'di': 0, 'bob': 12345}}, {'wage_expense': 433333, 'tax_expense': 22403, 'cash': 356486, 'withholding': 86905, 'benefits': 12345}], ['control 4', {'gross': [['bob', 333333], ['di', 250000], ['ann', 50000], ['bob', 80000]], 'ytd': {'bob': 0, 'di': 16700000, 'ann': 16700000}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 1000, 'benefit': {'bob': 12345, 'di': 0, 'ann': 5000}}, {'wage_expense': 713333, 'tax_expense': 48990, 'cash': 566288, 'withholding': 166345, 'benefits': 29690}], ['control 5', {'gross': [['bob', 333333]], 'ytd': {'bob': 16700000}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 2200, 'benefit': {'bob': 5000}}, {'wage_expense': 333333, 'tax_expense': 14753, 'cash': 241347, 'withholding': 101739, 'benefits': 5000}], ['control 6', {'gross': [['di', 1234], ['ann', 250000], ['cy', 333333], ['di', 80000]], 'ytd': {'di': 15000000, 'ann': 16800000, 'cy': 0}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 2200, 'benefit': {'di': 0, 'ann': 5000, 'cy': 12345}}, {'wage_expense': 664567, 'tax_expense': 39060, 'cash': 465774, 'withholding': 220508, 'benefits': 17345}]], [['regression: remaining wage base', {'gross': [['di', 333333], ['bob', 100000], ['ann', 250000], ['di', 200000]], 'ytd': {'di': 17000000, 'bob': 17000000, 'ann': 16700000}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 1000, 'benefit': {'di': 5000, 'bob': 12345, 'ann': 12345}}, {'wage_expense': 883333, 'tax_expense': 22728, 'cash': 741050, 'withholding': 130321, 'benefits': 34690}], ['control 1', {'gross': [['ann', 333333], ['bob', 250000], ['cy', 1234]], 'ytd': {'ann': 0, 'bob': 16700000, 'cy': 16800000}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 2200, 'benefit': {'ann': 5000, 'bob': 12345, 'cy': 0}}, {'wage_expense': 584567, 'tax_expense': 39140, 'cash': 403294, 'withholding': 203068, 'benefits': 17345}], ['control 2', {'gross': [['di', 1234], ['bob', 333333], ['di', 80000]], 'ytd': {'di': 15000000, 'bob': 0}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 2200, 'benefit': {'di': 0, 'bob': 0}}, {'wage_expense': 414567, 'tax_expense': 31715, 'cash': 291648, 'withholding': 154634, 'benefits': 0}], ['control 3', {'gross': [['di', 250000], ['di', 80000]], 'ytd': {'di': 0}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 1200, 'benefit': {'di': 5000}}, {'wage_expense': 330000, 'tax_expense': 25245, 'cash': 256355, 'withholding': 88890, 'benefits': 10000}], ['control 4', {'gross': [['bob', 50000], ['bob', 200000]], 'ytd': {'bob': 16800000}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 1000, 'benefit': {'bob': 5000}}, {'wage_expense': 250000, 'tax_expense': 7345, 'cash': 208655, 'withholding': 38690, 'benefits': 10000}], ['control 5', {'gross': [['bob', 100000], ['cy', 50000], ['ann', 100000]], 'ytd': {'bob': 15000000, 'cy': 16700000, 'ann': 16800000}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 1000, 'benefit': {'bob': 0, 'cy': 5000, 'ann': 12345}}, {'wage_expense': 250000, 'tax_expense': 16645, 'cash': 192744, 'withholding': 56556, 'benefits': 17345}], ['control 6', {'gross': [['di', 1234]], 'ytd': {'di': 0}, 'wage_base': 16860000, 'ss_bp': 620, 'med_bp': 145, 'itax_bp': 1200, 'benefit': {'di': 5000}}, {'wage_expense': 1234, 'tax_expense': 95, 'cash': -3409, 'withholding': -262, 'benefits': 5000}]]]
for label, args, expected in fixtures[N-1]:
    try:
        actual = solve(args)
    except Exception as exc:
        actual = 'raised ' + type(exc).__name__
    check(label, actual, 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)

prompt:
Employees past the wage base get a social tax refund on each paycheck.

x = {'gross': [[employee, cents]] (an employee may appear twice), 'ytd': prior year-to-date gross, 'wage_base', 'ss_bp', 'med_bp', 'itax_bp', 'benefit': {employee: pre-tax deduction per paycheck}}. Per paycheck: social wages = min(gross, max(0, wage_base - ytd)), ytd then increases by gross; social tax = round(social wages * ss_bp / 10000), medicare = round(gross * med_bp / 10000) (no cap), income tax = round((gross - benefit) * itax_bp / 10000), all half-up; net = gross - social - medicare - income tax - benefit. The employer matches social and medicare. Return {'wage_expense', 'tax_expense', 'cash', 'withholding', 'benefits'} where withholding holds employee and employer taxes.

split: open-access