{"abstract":"Back-dated entries appear at the end of the ledger with wrong running balances.","category":"Double-entry ledger accounting","checks":7,"contract":"x = {'normal': 'D'|'C', 'opening': balance before all lines, 'lines': [[seq, day, side, amount]], 'from': day, 'to': day}. Balances are signed positive on the normal side. The report opening is the opening plus every line dated before 'from'. Lines dated from..to inclusive are listed in (day, seq) order with the running balance after each; closing is the last running balance (the report opening if none). Return {'opening', 'rows': [[seq, day, running]], 'closing'}.","contract_signature":"x","evaluation_group":"w2-double-entry-ledger-accounting-account-running-balance","failed_approach":"Sorting by day alone leaves same-day lines in arrival order rather than sequence order.","family":"w2-double-entry-ledger-accounting-account-running-balance-line-ordering-key","id":"FA-58066","implementations":{"attempt":{"sha256":"d685313e4e2d8212030f483022fbe7dfaf9bc04b2bb4056753465467a6d68b24","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    sign = {'D': 1, 'C': -1} if x['normal'] == 'D' else {'D': -1, 'C': 1}\n    lines = sorted(x['lines'], key=lambda l: l[1])\n    opening = x['opening'] + sum(sign[s] * a for q, d, s, a in lines if d < x['from'])\n    bal = opening\n    rows = []\n    for seq, date, side, amt in lines:\n        if x['from'] <= date <= x['to']:\n            bal += sign[side] * amt\n            rows.append([seq, date, bal])\n    return {'opening': opening, 'rows': rows, 'closing': bal}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression: line ordering key', {'normal': 'C', 'opening': 250, 'lines': [[6, 5, 'D', 300], [4, 5, 'D', 300], [1, 8, 'D', 300], [5, 8, 'C', 10], [2, 8, 'D', 125], [3, 8, 'C', 10]], 'from': 1, 'to': 8}, {'opening': 250, 'rows': [[4, 5, -50], [6, 5, -350], [1, 8, -650], [2, 8, -775], [3, 8, -765], [5, 8, -755]], 'closing': -755}], ['control 1', {'normal': 'C', 'opening': 0, 'lines': [[3, 5, 'C', 50], [6, 1, 'C', 10], [5, 10, 'C', 50], [4, 12, 'D', 300], [8, 5, 'D', 125], [2, 5, 'C', 125], [7, 12, 'D', 125], [1, 12, 'C', 50]], 'from': 6, 'to': 6}, {'opening': 60, 'rows': [], 'closing': 60}], ['control 2', {'normal': 'D', 'opening': 1000, 'lines': [[1, 8, 'D', 125], [8, 1, 'D', 125], [2, 10, 'D', 125], [7, 10, 'D', 50], [6, 5, 'C', 300], [3, 12, 'D', 300], [5, 12, 'C', 125], [4, 1, 'C', 125]], 'from': 6, 'to': 8}, {'opening': 700, 'rows': [[1, 8, 825]], 'closing': 825}], ['control 3', {'normal': 'D', 'opening': 250, 'lines': [[4, 5, 'D', 300], [3, 8, 'C', 125], [2, 5, 'C', 10], [1, 8, 'D', 50]], 'from': 6, 'to': 8}, {'opening': 540, 'rows': [[1, 8, 590], [3, 8, 465]], 'closing': 465}], ['control 4', {'normal': 'C', 'opening': 0, 'lines': [[5, 12, 'C', 125], [3, 5, 'C', 10], [4, 1, 'D', 50], [8, 5, 'C', 125], [1, 10, 'C', 10], [6, 1, 'C', 10], [7, 8, 'C', 125], [2, 3, 'C', 10]], 'from': 6, 'to': 6}, {'opening': 105, 'rows': [], 'closing': 105}], ['control 5', {'normal': 'D', 'opening': 1000, 'lines': [[4, 5, 'C', 300], [2, 1, 'C', 300], [1, 3, 'C', 50], [3, 12, 'C', 125], [5, 5, 'D', 50]], 'from': 3, 'to': 10}, {'opening': 700, 'rows': [[1, 3, 650], [4, 5, 350], [5, 5, 400]], 'closing': 400}], ['control 6', {'normal': 'D', 'opening': 250, 'lines': [[1, 8, 'D', 50], [2, 3, 'D', 125], [3, 10, 'C', 125]], 'from': 1, 'to': 1}, {'opening': 250, 'rows': [], 'closing': 250}]], [['regression: line ordering key', {'normal': 'C', 'opening': 250, 'lines': [[4, 8, 'C', 50], [1, 10, 'C', 50], [2, 12, 'D', 125], [6, 10, 'D', 125], [5, 5, 'D', 10], [3, 12, 'D', 50]], 'from': 3, 'to': 8}, {'opening': 250, 'rows': [[5, 5, 240], [4, 8, 290]], 'closing': 290}], ['regression: line ordering key, partial-repair probe', {'normal': 'C', 'opening': 250, 'lines': [[2, 8, 'C', 125], [3, 3, 'D', 300], [1, 8, 'D', 50]], 'from': 1, 'to': 8}, {'opening': 250, 'rows': [[3, 3, -50], [1, 8, -100], [2, 8, 25]], 'closing': 25}], ['control 1', {'normal': 'D', 'opening': 1000, 'lines': [[2, 5, 'C', 300], [3, 3, 'D', 125], [4, 8, 'C', 50], [1, 5, 'C', 125], [5, 3, 'C', 300]], 'from': 5, 'to': 10}, {'opening': 825, 'rows': [[1, 5, 700], [2, 5, 400], [4, 8, 350]], 'closing': 350}], ['control 2', {'normal': 'D', 'opening': 0, 'lines': [[3, 5, 'D', 125], [5, 3, 'D', 50], [2, 1, 'C', 125], [4, 8, 'D', 125], [1, 5, 'C', 10]], 'from': 5, 'to': 7}, {'opening': -75, 'rows': [[1, 5, -85], [3, 5, 40]], 'closing': 40}], ['control 3', {'normal': 'D', 'opening': 0, 'lines': [[6, 3, 'C', 50], [7, 1, 'C', 50], [1, 3, 'C', 300], [5, 12, 'D', 50], [4, 5, 'C', 300], [3, 12, 'D', 10], [2, 1, 'D', 50]], 'from': 5, 'to': 10}, {'opening': -350, 'rows': [[4, 5, -650]], 'closing': -650}], ['control 4', {'normal': 'C', 'opening': 250, 'lines': [[1, 8, 'D', 300], [2, 3, 'D', 10], [3, 3, 'D', 10], [4, 12, 'C', 300], [5, 12, 'D', 10]], 'from': 1, 'to': 1}, {'opening': 250, 'rows': [], 'closing': 250}], ['control 5', {'normal': 'D', 'opening': 250, 'lines': [[6, 8, 'C', 300], [4, 1, 'C', 50], [1, 8, 'D', 300], [5, 1, 'D', 50], [2, 3, 'D', 300], [3, 5, 'C', 125]], 'from': 5, 'to': 7}, {'opening': 550, 'rows': [[3, 5, 425]], 'closing': 425}]], [['regression: line ordering key', {'normal': 'C', 'opening': 0, 'lines': [[3, 1, 'D', 10], [2, 5, 'D', 125], [1, 1, 'D', 10], [5, 5, 'D', 300], [4, 3, 'C', 125]], 'from': 3, 'to': 8}, {'opening': -20, 'rows': [[4, 3, 105], [2, 5, -20], [5, 5, -320]], 'closing': -320}], ['regression: line ordering key, partial-repair probe', {'normal': 'C', 'opening': 1000, 'lines': [[4, 10, 'D', 125], [2, 1, 'D', 50], [3, 12, 'D', 10], [5, 3, 'C', 125], [6, 8, 'D', 10], [1, 8, 'D', 50]], 'from': 1, 'to': 8}, {'opening': 1000, 'rows': [[2, 1, 950], [5, 3, 1075], [1, 8, 1025], [6, 8, 1015]], 'closing': 1015}], ['control 1', {'normal': 'C', 'opening': 250, 'lines': [[2, 12, 'C', 50], [1, 8, 'C', 125], [3, 5, 'D', 125]], 'from': 5, 'to': 7}, {'opening': 250, 'rows': [[3, 5, 125]], 'closing': 125}], ['control 2', {'normal': 'D', 'opening': 1000, 'lines': [[2, 8, 'C', 125], [1, 8, 'D', 50], [3, 5, 'D', 125]], 'from': 3, 'to': 5}, {'opening': 1000, 'rows': [[3, 5, 1125]], 'closing': 1125}], ['control 3', {'normal': 'D', 'opening': 250, 'lines': [[6, 8, 'D', 10], [3, 1, 'D', 300], [1, 8, 'D', 50], [2, 10, 'C', 10], [5, 5, 'C', 10], [4, 5, 'D', 125]], 'from': 1, 'to': 3}, {'opening': 250, 'rows': [[3, 1, 550]], 'closing': 550}], ['control 4', {'normal': 'D', 'opening': 1000, 'lines': [[2, 8, 'C', 10], [1, 12, 'C', 10], [3, 5, 'C', 50]], 'from': 6, 'to': 8}, {'opening': 950, 'rows': [[2, 8, 940]], 'closing': 940}], ['control 5', {'normal': 'C', 'opening': 0, 'lines': [[1, 8, 'D', 125], [3, 10, 'C', 300], [2, 3, 'C', 300]], 'from': 3, 'to': 5}, {'opening': 0, 'rows': [[2, 3, 300]], 'closing': 300}]], [['regression: line ordering key', {'normal': 'D', 'opening': 250, 'lines': [[2, 5, 'D', 300], [3, 5, 'C', 50], [6, 8, 'D', 10], [7, 3, 'D', 300], [5, 5, 'C', 50], [4, 3, 'C', 10], [1, 5, 'D', 300]], 'from': 3, 'to': 5}, {'opening': 250, 'rows': [[4, 3, 240], [7, 3, 540], [1, 5, 840], [2, 5, 1140], [3, 5, 1090], [5, 5, 1040]], 'closing': 1040}], ['control 1', {'normal': 'C', 'opening': 250, 'lines': [[2, 3, 'D', 10], [3, 5, 'D', 50], [4, 8, 'D', 10], [1, 5, 'D', 300]], 'from': 6, 'to': 6}, {'opening': -110, 'rows': [], 'closing': -110}], ['control 2', {'normal': 'D', 'opening': 1000, 'lines': [[7, 8, 'C', 125], [5, 12, 'C', 10], [6, 5, 'D', 10], [4, 10, 'D', 10], [3, 8, 'C', 10], [2, 8, 'D', 50], [1, 5, 'D', 10]], 'from': 3, 'to': 5}, {'opening': 1000, 'rows': [[1, 5, 1010], [6, 5, 1020]], 'closing': 1020}], ['control 3', {'normal': 'C', 'opening': 1000, 'lines': [[5, 5, 'C', 300], [3, 1, 'D', 10], [2, 10, 'D', 10], [4, 5, 'C', 300], [1, 5, 'C', 10]], 'from': 1, 'to': 3}, {'opening': 1000, 'rows': [[3, 1, 990]], 'closing': 990}], ['control 4', {'normal': 'C', 'opening': 0, 'lines': [[1, 5, 'D', 300], [4, 8, 'C', 300], [3, 12, 'C', 50], [2, 10, 'C', 125]], 'from': 1, 'to': 6}, {'opening': 0, 'rows': [[1, 5, -300]], 'closing': -300}], ['control 5', {'normal': 'C', 'opening': 1000, 'lines': [[2, 12, 'C', 50], [1, 3, 'C', 125], [3, 1, 'D', 10], [4, 5, 'D', 50]], 'from': 6, 'to': 11}, {'opening': 1065, 'rows': [], 'closing': 1065}], ['control 6', {'normal': 'D', 'opening': 1000, 'lines': [[2, 10, 'C', 300], [1, 10, 'C', 10], [6, 12, 'C', 50], [5, 5, 'D', 300], [3, 3, 'C', 50], [4, 12, 'D', 50]], 'from': 5, 'to': 5}, {'opening': 950, 'rows': [[5, 5, 1250]], 'closing': 1250}]], [['regression: line ordering key', {'normal': 'C', 'opening': 250, 'lines': [[3, 8, 'C', 10], [2, 5, 'C', 10], [1, 8, 'C', 300]], 'from': 1, 'to': 8}, {'opening': 250, 'rows': [[2, 5, 260], [1, 8, 560], [3, 8, 570]], 'closing': 570}], ['control 1', {'normal': 'C', 'opening': 250, 'lines': [[3, 5, 'C', 300], [5, 5, 'C', 50], [4, 5, 'C', 300], [2, 10, 'D', 300], [1, 12, 'D', 300]], 'from': 5, 'to': 5}, {'opening': 250, 'rows': [[3, 5, 550], [4, 5, 850], [5, 5, 900]], 'closing': 900}], ['control 2', {'normal': 'D', 'opening': 1000, 'lines': [[3, 5, 'D', 10], [7, 5, 'C', 10], [5, 8, 'D', 50], [4, 3, 'C', 300], [6, 10, 'C', 300], [8, 10, 'D', 125], [1, 1, 'C', 10], [2, 5, 'C', 125]], 'from': 1, 'to': 1}, {'opening': 1000, 'rows': [[1, 1, 990]], 'closing': 990}], ['control 3', {'normal': 'D', 'opening': 1000, 'lines': [[3, 3, 'D', 125], [6, 5, 'C', 125], [2, 8, 'C', 125], [1, 10, 'C', 125], [5, 12, 'C', 125], [7, 5, 'C', 300], [4, 5, 'D', 300]], 'from': 6, 'to': 8}, {'opening': 1000, 'rows': [[2, 8, 875]], 'closing': 875}], ['control 4', {'normal': 'C', 'opening': 0, 'lines': [[3, 8, 'C', 300], [1, 1, 'C', 10], [2, 12, 'C', 125]], 'from': 3, 'to': 3}, {'opening': 10, 'rows': [], 'closing': 10}], ['control 5', {'normal': 'D', 'opening': 1000, 'lines': [[4, 5, 'D', 300], [5, 12, 'D', 125], [3, 12, 'D', 125], [1, 1, 'D', 300], [2, 8, 'C', 10]], 'from': 3, 'to': 5}, {'opening': 1300, 'rows': [[4, 5, 1600]], 'closing': 1600}], ['control 6', {'normal': 'C', 'opening': 1000, 'lines': [[2, 8, 'C', 300], [3, 5, 'D', 300], [4, 8, 'C', 50], [5, 1, 'C', 300], [1, 5, 'C', 10]], 'from': 6, 'to': 11}, {'opening': 1010, 'rows': [[2, 8, 1310], [4, 8, 1360]], 'closing': 1360}]]]\nfor label, args, expected in fixtures[N-1]:\n    try:\n        actual = solve(args)\n    except Exception as exc:\n        actual = 'raised ' + type(exc).__name__\n    check(label, actual, expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"2ba347c1fe3e45aeebbb16efd664b702a66e754dd1947cfc942fcffd20e0a8d6","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    sign = {'D': 1, 'C': -1} if x['normal'] == 'D' else {'D': -1, 'C': 1}\n    lines = sorted(x['lines'], key=lambda l: l[0])\n    opening = x['opening'] + sum(sign[s] * a for q, d, s, a in lines if d < x['from'])\n    bal = opening\n    rows = []\n    for seq, date, side, amt in lines:\n        if x['from'] <= date <= x['to']:\n            bal += sign[side] * amt\n            rows.append([seq, date, bal])\n    return {'opening': opening, 'rows': rows, 'closing': bal}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression: line ordering key', {'normal': 'C', 'opening': 250, 'lines': [[6, 5, 'D', 300], [4, 5, 'D', 300], [1, 8, 'D', 300], [5, 8, 'C', 10], [2, 8, 'D', 125], [3, 8, 'C', 10]], 'from': 1, 'to': 8}, {'opening': 250, 'rows': [[4, 5, -50], [6, 5, -350], [1, 8, -650], [2, 8, -775], [3, 8, -765], [5, 8, -755]], 'closing': -755}], ['control 1', {'normal': 'C', 'opening': 0, 'lines': [[3, 5, 'C', 50], [6, 1, 'C', 10], [5, 10, 'C', 50], [4, 12, 'D', 300], [8, 5, 'D', 125], [2, 5, 'C', 125], [7, 12, 'D', 125], [1, 12, 'C', 50]], 'from': 6, 'to': 6}, {'opening': 60, 'rows': [], 'closing': 60}], ['control 2', {'normal': 'D', 'opening': 1000, 'lines': [[1, 8, 'D', 125], [8, 1, 'D', 125], [2, 10, 'D', 125], [7, 10, 'D', 50], [6, 5, 'C', 300], [3, 12, 'D', 300], [5, 12, 'C', 125], [4, 1, 'C', 125]], 'from': 6, 'to': 8}, {'opening': 700, 'rows': [[1, 8, 825]], 'closing': 825}], ['control 3', {'normal': 'D', 'opening': 250, 'lines': [[4, 5, 'D', 300], [3, 8, 'C', 125], [2, 5, 'C', 10], [1, 8, 'D', 50]], 'from': 6, 'to': 8}, {'opening': 540, 'rows': [[1, 8, 590], [3, 8, 465]], 'closing': 465}], ['control 4', {'normal': 'C', 'opening': 0, 'lines': [[5, 12, 'C', 125], [3, 5, 'C', 10], [4, 1, 'D', 50], [8, 5, 'C', 125], [1, 10, 'C', 10], [6, 1, 'C', 10], [7, 8, 'C', 125], [2, 3, 'C', 10]], 'from': 6, 'to': 6}, {'opening': 105, 'rows': [], 'closing': 105}], ['control 5', {'normal': 'D', 'opening': 1000, 'lines': [[4, 5, 'C', 300], [2, 1, 'C', 300], [1, 3, 'C', 50], [3, 12, 'C', 125], [5, 5, 'D', 50]], 'from': 3, 'to': 10}, {'opening': 700, 'rows': [[1, 3, 650], [4, 5, 350], [5, 5, 400]], 'closing': 400}], ['control 6', {'normal': 'D', 'opening': 250, 'lines': [[1, 8, 'D', 50], [2, 3, 'D', 125], [3, 10, 'C', 125]], 'from': 1, 'to': 1}, {'opening': 250, 'rows': [], 'closing': 250}]], [['regression: line ordering key', {'normal': 'C', 'opening': 250, 'lines': [[4, 8, 'C', 50], [1, 10, 'C', 50], [2, 12, 'D', 125], [6, 10, 'D', 125], [5, 5, 'D', 10], [3, 12, 'D', 50]], 'from': 3, 'to': 8}, {'opening': 250, 'rows': [[5, 5, 240], [4, 8, 290]], 'closing': 290}], ['regression: line ordering key, partial-repair probe', {'normal': 'C', 'opening': 250, 'lines': [[2, 8, 'C', 125], [3, 3, 'D', 300], [1, 8, 'D', 50]], 'from': 1, 'to': 8}, {'opening': 250, 'rows': [[3, 3, -50], [1, 8, -100], [2, 8, 25]], 'closing': 25}], ['control 1', {'normal': 'D', 'opening': 1000, 'lines': [[2, 5, 'C', 300], [3, 3, 'D', 125], [4, 8, 'C', 50], [1, 5, 'C', 125], [5, 3, 'C', 300]], 'from': 5, 'to': 10}, {'opening': 825, 'rows': [[1, 5, 700], [2, 5, 400], [4, 8, 350]], 'closing': 350}], ['control 2', {'normal': 'D', 'opening': 0, 'lines': [[3, 5, 'D', 125], [5, 3, 'D', 50], [2, 1, 'C', 125], [4, 8, 'D', 125], [1, 5, 'C', 10]], 'from': 5, 'to': 7}, {'opening': -75, 'rows': [[1, 5, -85], [3, 5, 40]], 'closing': 40}], ['control 3', {'normal': 'D', 'opening': 0, 'lines': [[6, 3, 'C', 50], [7, 1, 'C', 50], [1, 3, 'C', 300], [5, 12, 'D', 50], [4, 5, 'C', 300], [3, 12, 'D', 10], [2, 1, 'D', 50]], 'from': 5, 'to': 10}, {'opening': -350, 'rows': [[4, 5, -650]], 'closing': -650}], ['control 4', {'normal': 'C', 'opening': 250, 'lines': [[1, 8, 'D', 300], [2, 3, 'D', 10], [3, 3, 'D', 10], [4, 12, 'C', 300], [5, 12, 'D', 10]], 'from': 1, 'to': 1}, {'opening': 250, 'rows': [], 'closing': 250}], ['control 5', {'normal': 'D', 'opening': 250, 'lines': [[6, 8, 'C', 300], [4, 1, 'C', 50], [1, 8, 'D', 300], [5, 1, 'D', 50], [2, 3, 'D', 300], [3, 5, 'C', 125]], 'from': 5, 'to': 7}, {'opening': 550, 'rows': [[3, 5, 425]], 'closing': 425}]], [['regression: line ordering key', {'normal': 'C', 'opening': 0, 'lines': [[3, 1, 'D', 10], [2, 5, 'D', 125], [1, 1, 'D', 10], [5, 5, 'D', 300], [4, 3, 'C', 125]], 'from': 3, 'to': 8}, {'opening': -20, 'rows': [[4, 3, 105], [2, 5, -20], [5, 5, -320]], 'closing': -320}], ['regression: line ordering key, partial-repair probe', {'normal': 'C', 'opening': 1000, 'lines': [[4, 10, 'D', 125], [2, 1, 'D', 50], [3, 12, 'D', 10], [5, 3, 'C', 125], [6, 8, 'D', 10], [1, 8, 'D', 50]], 'from': 1, 'to': 8}, {'opening': 1000, 'rows': [[2, 1, 950], [5, 3, 1075], [1, 8, 1025], [6, 8, 1015]], 'closing': 1015}], ['control 1', {'normal': 'C', 'opening': 250, 'lines': [[2, 12, 'C', 50], [1, 8, 'C', 125], [3, 5, 'D', 125]], 'from': 5, 'to': 7}, {'opening': 250, 'rows': [[3, 5, 125]], 'closing': 125}], ['control 2', {'normal': 'D', 'opening': 1000, 'lines': [[2, 8, 'C', 125], [1, 8, 'D', 50], [3, 5, 'D', 125]], 'from': 3, 'to': 5}, {'opening': 1000, 'rows': [[3, 5, 1125]], 'closing': 1125}], ['control 3', {'normal': 'D', 'opening': 250, 'lines': [[6, 8, 'D', 10], [3, 1, 'D', 300], [1, 8, 'D', 50], [2, 10, 'C', 10], [5, 5, 'C', 10], [4, 5, 'D', 125]], 'from': 1, 'to': 3}, {'opening': 250, 'rows': [[3, 1, 550]], 'closing': 550}], ['control 4', {'normal': 'D', 'opening': 1000, 'lines': [[2, 8, 'C', 10], [1, 12, 'C', 10], [3, 5, 'C', 50]], 'from': 6, 'to': 8}, {'opening': 950, 'rows': [[2, 8, 940]], 'closing': 940}], ['control 5', {'normal': 'C', 'opening': 0, 'lines': [[1, 8, 'D', 125], [3, 10, 'C', 300], [2, 3, 'C', 300]], 'from': 3, 'to': 5}, {'opening': 0, 'rows': [[2, 3, 300]], 'closing': 300}]], [['regression: line ordering key', {'normal': 'D', 'opening': 250, 'lines': [[2, 5, 'D', 300], [3, 5, 'C', 50], [6, 8, 'D', 10], [7, 3, 'D', 300], [5, 5, 'C', 50], [4, 3, 'C', 10], [1, 5, 'D', 300]], 'from': 3, 'to': 5}, {'opening': 250, 'rows': [[4, 3, 240], [7, 3, 540], [1, 5, 840], [2, 5, 1140], [3, 5, 1090], [5, 5, 1040]], 'closing': 1040}], ['control 1', {'normal': 'C', 'opening': 250, 'lines': [[2, 3, 'D', 10], [3, 5, 'D', 50], [4, 8, 'D', 10], [1, 5, 'D', 300]], 'from': 6, 'to': 6}, {'opening': -110, 'rows': [], 'closing': -110}], ['control 2', {'normal': 'D', 'opening': 1000, 'lines': [[7, 8, 'C', 125], [5, 12, 'C', 10], [6, 5, 'D', 10], [4, 10, 'D', 10], [3, 8, 'C', 10], [2, 8, 'D', 50], [1, 5, 'D', 10]], 'from': 3, 'to': 5}, {'opening': 1000, 'rows': [[1, 5, 1010], [6, 5, 1020]], 'closing': 1020}], ['control 3', {'normal': 'C', 'opening': 1000, 'lines': [[5, 5, 'C', 300], [3, 1, 'D', 10], [2, 10, 'D', 10], [4, 5, 'C', 300], [1, 5, 'C', 10]], 'from': 1, 'to': 3}, {'opening': 1000, 'rows': [[3, 1, 990]], 'closing': 990}], ['control 4', {'normal': 'C', 'opening': 0, 'lines': [[1, 5, 'D', 300], [4, 8, 'C', 300], [3, 12, 'C', 50], [2, 10, 'C', 125]], 'from': 1, 'to': 6}, {'opening': 0, 'rows': [[1, 5, -300]], 'closing': -300}], ['control 5', {'normal': 'C', 'opening': 1000, 'lines': [[2, 12, 'C', 50], [1, 3, 'C', 125], [3, 1, 'D', 10], [4, 5, 'D', 50]], 'from': 6, 'to': 11}, {'opening': 1065, 'rows': [], 'closing': 1065}], ['control 6', {'normal': 'D', 'opening': 1000, 'lines': [[2, 10, 'C', 300], [1, 10, 'C', 10], [6, 12, 'C', 50], [5, 5, 'D', 300], [3, 3, 'C', 50], [4, 12, 'D', 50]], 'from': 5, 'to': 5}, {'opening': 950, 'rows': [[5, 5, 1250]], 'closing': 1250}]], [['regression: line ordering key', {'normal': 'C', 'opening': 250, 'lines': [[3, 8, 'C', 10], [2, 5, 'C', 10], [1, 8, 'C', 300]], 'from': 1, 'to': 8}, {'opening': 250, 'rows': [[2, 5, 260], [1, 8, 560], [3, 8, 570]], 'closing': 570}], ['control 1', {'normal': 'C', 'opening': 250, 'lines': [[3, 5, 'C', 300], [5, 5, 'C', 50], [4, 5, 'C', 300], [2, 10, 'D', 300], [1, 12, 'D', 300]], 'from': 5, 'to': 5}, {'opening': 250, 'rows': [[3, 5, 550], [4, 5, 850], [5, 5, 900]], 'closing': 900}], ['control 2', {'normal': 'D', 'opening': 1000, 'lines': [[3, 5, 'D', 10], [7, 5, 'C', 10], [5, 8, 'D', 50], [4, 3, 'C', 300], [6, 10, 'C', 300], [8, 10, 'D', 125], [1, 1, 'C', 10], [2, 5, 'C', 125]], 'from': 1, 'to': 1}, {'opening': 1000, 'rows': [[1, 1, 990]], 'closing': 990}], ['control 3', {'normal': 'D', 'opening': 1000, 'lines': [[3, 3, 'D', 125], [6, 5, 'C', 125], [2, 8, 'C', 125], [1, 10, 'C', 125], [5, 12, 'C', 125], [7, 5, 'C', 300], [4, 5, 'D', 300]], 'from': 6, 'to': 8}, {'opening': 1000, 'rows': [[2, 8, 875]], 'closing': 875}], ['control 4', {'normal': 'C', 'opening': 0, 'lines': [[3, 8, 'C', 300], [1, 1, 'C', 10], [2, 12, 'C', 125]], 'from': 3, 'to': 3}, {'opening': 10, 'rows': [], 'closing': 10}], ['control 5', {'normal': 'D', 'opening': 1000, 'lines': [[4, 5, 'D', 300], [5, 12, 'D', 125], [3, 12, 'D', 125], [1, 1, 'D', 300], [2, 8, 'C', 10]], 'from': 3, 'to': 5}, {'opening': 1300, 'rows': [[4, 5, 1600]], 'closing': 1600}], ['control 6', {'normal': 'C', 'opening': 1000, 'lines': [[2, 8, 'C', 300], [3, 5, 'D', 300], [4, 8, 'C', 50], [5, 1, 'C', 300], [1, 5, 'C', 10]], 'from': 6, 'to': 11}, {'opening': 1010, 'rows': [[2, 8, 1310], [4, 8, 1360]], 'closing': 1360}]]]\nfor label, args, expected in fixtures[N-1]:\n    try:\n        actual = solve(args)\n    except Exception as exc:\n        actual = 'raised ' + type(exc).__name__\n    check(label, actual, expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"A deterministic bounded teaching model with stipulated toy bookkeeping rules stated in the contract; amounts are integer cents; it makes no claim of conformance to any accounting standard or product. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"w2-double-entry-ledger-accounting-account-running-balance-line-ordering-key","generated_at":"2026-09-29T14:46:23.174094+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Ledger software must keep debits equal to credits and apply normal-balance, period and cutoff rules exactly; small sign or boundary slips silently misstate financial statements.","root_cause":"Lines are ordered by sequence number only, ignoring the posting date.","sha256":"90a1b028c18ee9f5ac391b8ca4f75ded3078e9b6e03e91e1bc50f3696d160854","title":"Account running balance report: line ordering key · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":40.917,"exit_code":1,"observations":[{"actual":{"closing":-755,"opening":250,"rows":[[6,5,-50],[4,5,-350],[1,8,-650],[5,8,-640],[2,8,-765],[3,8,-755]]},"check":"regression: line ordering key","expected":{"closing":-755,"opening":250,"rows":[[4,5,-50],[6,5,-350],[1,8,-650],[2,8,-775],[3,8,-765],[5,8,-755]]},"passed":false},{"actual":{"closing":60,"opening":60,"rows":[]},"check":"control 1","expected":{"closing":60,"opening":60,"rows":[]},"passed":true},{"actual":{"closing":825,"opening":700,"rows":[[1,8,825]]},"check":"control 2","expected":{"closing":825,"opening":700,"rows":[[1,8,825]]},"passed":true},{"actual":{"closing":465,"opening":540,"rows":[[3,8,415],[1,8,465]]},"check":"control 3","expected":{"closing":465,"opening":540,"rows":[[1,8,590],[3,8,465]]},"passed":false},{"actual":{"closing":105,"opening":105,"rows":[]},"check":"control 4","expected":{"closing":105,"opening":105,"rows":[]},"passed":true},{"actual":{"closing":400,"opening":700,"rows":[[1,3,650],[4,5,350],[5,5,400]]},"check":"control 5","expected":{"closing":400,"opening":700,"rows":[[1,3,650],[4,5,350],[5,5,400]]},"passed":true},{"actual":{"closing":250,"opening":250,"rows":[]},"check":"control 6","expected":{"closing":250,"opening":250,"rows":[]},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: line ordering key\", \"actual\": {\"opening\": 250, \"rows\": [[6, 5, -50], [4, 5, -350], [1, 8, -650], [5, 8, -640], [2, 8, -765], [3, 8, -755]], \"closing\": -755}, \"expected\": {\"opening\": 250, \"rows\": [[4, 5, -50], [6, 5, -350], [1, 8, -650], [2, 8, -775], [3, 8, -765], [5, 8, -755]], \"closing\": -755}, \"passed\": false}, {\"check\": \"control 1\", \"actual\": {\"opening\": 60, \"rows\": [], \"closing\": 60}, \"expected\": {\"opening\": 60, \"rows\": [], \"closing\": 60}, \"passed\": true}, {\"check\": \"control 2\", \"actual\": {\"opening\": 700, \"rows\": [[1, 8, 825]], \"closing\": 825}, \"expected\": {\"opening\": 700, \"rows\": [[1, 8, 825]], \"closing\": 825}, \"passed\": true}, {\"check\": \"control 3\", \"actual\": {\"opening\": 540, \"rows\": [[3, 8, 415], [1, 8, 465]], \"closing\": 465}, \"expected\": {\"opening\": 540, \"rows\": [[1, 8, 590], [3, 8, 465]], \"closing\": 465}, \"passed\": false}, {\"check\": \"control 4\", \"actual\": {\"opening\": 105, \"rows\": [], \"closing\": 105}, \"expected\": {\"opening\": 105, \"rows\": [], \"closing\": 105}, \"passed\": true}, {\"check\": \"control 5\", \"actual\": {\"opening\": 700, \"rows\": [[1, 3, 650], [4, 5, 350], [5, 5, 400]], \"closing\": 400}, \"expected\": {\"opening\": 700, \"rows\": [[1, 3, 650], [4, 5, 350], [5, 5, 400]], \"closing\": 400}, \"passed\": true}, {\"check\": \"control 6\", \"actual\": {\"opening\": 250, \"rows\": [], \"closing\": 250}, \"expected\": {\"opening\": 250, \"rows\": [], \"closing\": 250}, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.755,"exit_code":1,"observations":[{"actual":{"closing":-755,"opening":250,"rows":[[1,8,-50],[2,8,-175],[3,8,-165],[4,5,-465],[5,8,-455],[6,5,-755]]},"check":"regression: line ordering key","expected":{"closing":-755,"opening":250,"rows":[[4,5,-50],[6,5,-350],[1,8,-650],[2,8,-775],[3,8,-765],[5,8,-755]]},"passed":false},{"actual":{"closing":60,"opening":60,"rows":[]},"check":"control 1","expected":{"closing":60,"opening":60,"rows":[]},"passed":true},{"actual":{"closing":825,"opening":700,"rows":[[1,8,825]]},"check":"control 2","expected":{"closing":825,"opening":700,"rows":[[1,8,825]]},"passed":true},{"actual":{"closing":465,"opening":540,"rows":[[1,8,590],[3,8,465]]},"check":"control 3","expected":{"closing":465,"opening":540,"rows":[[1,8,590],[3,8,465]]},"passed":true},{"actual":{"closing":105,"opening":105,"rows":[]},"check":"control 4","expected":{"closing":105,"opening":105,"rows":[]},"passed":true},{"actual":{"closing":400,"opening":700,"rows":[[1,3,650],[4,5,350],[5,5,400]]},"check":"control 5","expected":{"closing":400,"opening":700,"rows":[[1,3,650],[4,5,350],[5,5,400]]},"passed":true},{"actual":{"closing":250,"opening":250,"rows":[]},"check":"control 6","expected":{"closing":250,"opening":250,"rows":[]},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: line ordering key\", \"actual\": {\"opening\": 250, \"rows\": [[1, 8, -50], [2, 8, -175], [3, 8, -165], [4, 5, -465], [5, 8, -455], [6, 5, -755]], \"closing\": -755}, \"expected\": {\"opening\": 250, \"rows\": [[4, 5, -50], [6, 5, -350], [1, 8, -650], [2, 8, -775], [3, 8, -765], [5, 8, -755]], \"closing\": -755}, \"passed\": false}, {\"check\": \"control 1\", \"actual\": {\"opening\": 60, \"rows\": [], \"closing\": 60}, \"expected\": {\"opening\": 60, \"rows\": [], \"closing\": 60}, \"passed\": true}, {\"check\": \"control 2\", \"actual\": {\"opening\": 700, \"rows\": [[1, 8, 825]], \"closing\": 825}, \"expected\": {\"opening\": 700, \"rows\": [[1, 8, 825]], \"closing\": 825}, \"passed\": true}, {\"check\": \"control 3\", \"actual\": {\"opening\": 540, \"rows\": [[1, 8, 590], [3, 8, 465]], \"closing\": 465}, \"expected\": {\"opening\": 540, \"rows\": [[1, 8, 590], [3, 8, 465]], \"closing\": 465}, \"passed\": true}, {\"check\": \"control 4\", \"actual\": {\"opening\": 105, \"rows\": [], \"closing\": 105}, \"expected\": {\"opening\": 105, \"rows\": [], \"closing\": 105}, \"passed\": true}, {\"check\": \"control 5\", \"actual\": {\"opening\": 700, \"rows\": [[1, 3, 650], [4, 5, 350], [5, 5, 400]], \"closing\": 400}, \"expected\": {\"opening\": 700, \"rows\": [[1, 3, 650], [4, 5, 350], [5, 5, 400]], \"closing\": 400}, \"passed\": true}, {\"check\": \"control 6\", \"actual\": {\"opening\": 250, \"rows\": [], \"closing\": 250}, \"expected\": {\"opening\": 250, \"rows\": [], \"closing\": 250}, \"passed\": true}], \"passed\": false}\n"}},"member_only":{"stages":["fixed"],"fields":["implementations.fixed","verification.fixed","harness","repair"],"note":"The verified repair, its recorded checks, the repair description, and the scoring harness are available to members."}}