FAILURE MAP
← Case archive

FA-57956 / Double-entry ledger accounting / Open access

Bank reconciliation: check recording error sign · case 01

A check recorded for too much reduces cash further instead of restoring it.

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

ROOT CAUSE

The correction is actual minus recorded rather than recorded minus actual.

THE FAILURE

The correction is actual minus recorded rather than recorded minus actual.

Unsuccessful approach: Always subtracting the difference is right for under-recorded checks but still reduces cash for over-recorded ones.

Case contract

x = {'bank': statement balance, 'book': ledger cash balance, 'items': [[kind, ...]]}. Bank side: deposit_in_transit adds, outstanding_check subtracts, bank_error adds its signed correction. Book side (each produces an adjusting entry [kind, signed amount] in input order): bank_fee and nsf subtract, interest adds, collection [kind, face, fee] adds face - fee, check_error [kind, recorded, actual] adds recorded - actual. Other kinds are ignored. Return {'adjusted_bank', 'adjusted_book', 'reconciled', 'entries'}.

Why this case matters

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.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    bank = x['bank']
    book = x['book']
    entries = []
    for item in x['items']:
        kind = item[0]
        if kind == 'deposit_in_transit':
            bank += item[1]
        elif kind == 'outstanding_check':
            bank -= item[1]
        elif kind == 'bank_error':
            bank += item[1]
        else:
            if kind == 'bank_fee' or kind == 'nsf':
                adj = -item[1]
            elif kind == 'interest':
                adj = item[1]
            elif kind == 'collection':
                adj = item[1] - item[2]
            elif kind == 'check_error':
                adj = item[2] - item[1]
            else:
                continue
            book += adj
            entries.append([kind, adj])
    return {'adjusted_bank': bank, 'adjusted_book': book, 'reconciled': bank == book, 'entries': entries}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: check recording error sign', {'bank': 8000, 'book': 9000, 'items': [['interest', 15], ['bank_fee', 400], ['check_error', 2100, 450]]}, {'adjusted_bank': 8000, 'adjusted_book': 10265, 'reconciled': False, 'entries': [['interest', 15], ['bank_fee', -400], ['check_error', 1650]]}], ['control 1', {'bank': 10000, 'book': 10000, 'items': [['bank_fee', 90], ['interest', 15], ['bank_error', 1200], ['nsf', 1200], ['memo', 250], ['memo', 1200]]}, {'adjusted_bank': 11200, 'adjusted_book': 8725, 'reconciled': False, 'entries': [['bank_fee', -90], ['interest', 15], ['nsf', -1200]]}], ['control 2', {'bank': 10000, 'book': 10000, 'items': [['deposit_in_transit', 1200], ['deposit_in_transit', 400], ['bank_fee', 90], ['bank_fee', 1200], ['deposit_in_transit', 400]]}, {'adjusted_bank': 12000, 'adjusted_book': 8710, 'reconciled': False, 'entries': [['bank_fee', -90], ['bank_fee', -1200]]}], ['control 3', {'bank': 8000, 'book': 9000, 'items': [['interest', 1200], ['bank_error', 400], ['interest', 400], ['bank_error', 250], ['interest', 400]]}, {'adjusted_bank': 8650, 'adjusted_book': 11000, 'reconciled': False, 'entries': [['interest', 1200], ['interest', 400], ['interest', 400]]}], ['control 4', {'bank': 12500, 'book': 11800, 'items': [['deposit_in_transit', 1200], ['bank_fee', 250], ['bank_error', -1200], ['bank_fee', 1200]]}, {'adjusted_bank': 12500, 'adjusted_book': 10350, 'reconciled': False, 'entries': [['bank_fee', -250], ['bank_fee', -1200]]}], ['control 5', {'bank': 10000, 'book': 9000, 'items': [['outstanding_check', 15], ['interest', 1200], ['interest', 1200], ['collection', 12000, 0], ['collection', 4000, 15], ['outstanding_check', 90]]}, {'adjusted_bank': 9895, 'adjusted_book': 27385, 'reconciled': False, 'entries': [['interest', 1200], ['interest', 1200], ['collection', 12000], ['collection', 3985]]}], ['control 6', {'bank': 12500, 'book': 10000, 'items': [['interest', 250], ['bank_fee', 90], ['memo', 15], ['bank_error', -15], ['collection', 4000, 15]]}, {'adjusted_bank': 12485, 'adjusted_book': 14145, 'reconciled': False, 'entries': [['interest', 250], ['bank_fee', -90], ['collection', 3985]]}]], [['regression: check recording error sign', {'bank': 10000, 'book': 11800, 'items': [['check_error', 2100, 540], ['nsf', 15], ['interest', 400], ['outstanding_check', 400], ['bank_error', -400], ['deposit_in_transit', 15]]}, {'adjusted_bank': 9215, 'adjusted_book': 13745, 'reconciled': False, 'entries': [['check_error', 1560], ['nsf', -15], ['interest', 400]]}], ['control 1', {'bank': 8000, 'book': 9000, 'items': [['deposit_in_transit', 400], ['outstanding_check', 400], ['memo', 15], ['outstanding_check', 250], ['memo', 1200], ['deposit_in_transit', 250]]}, {'adjusted_bank': 8000, 'adjusted_book': 9000, 'reconciled': False, 'entries': []}], ['control 2', {'bank': 12500, 'book': 9000, 'items': [['nsf', 400], ['bank_error', -90], ['bank_fee', 90]]}, {'adjusted_bank': 12410, 'adjusted_book': 8510, 'reconciled': False, 'entries': [['nsf', -400], ['bank_fee', -90]]}], ['control 3', {'bank': 8000, 'book': 11800, 'items': [['memo', 400], ['bank_fee', 1200], ['interest', 90], ['memo', 400], ['interest', 15], ['bank_error', -400], ['memo', 250]]}, {'adjusted_bank': 7600, 'adjusted_book': 10705, 'reconciled': False, 'entries': [['bank_fee', -1200], ['interest', 90], ['interest', 15]]}], ['control 4', {'bank': 8000, 'book': 11800, 'items': [['bank_fee', 1200], ['interest', 250], ['bank_error', -1200]]}, {'adjusted_bank': 6800, 'adjusted_book': 10850, 'reconciled': False, 'entries': [['bank_fee', -1200], ['interest', 250]]}], ['control 5', {'bank': 8000, 'book': 9000, 'items': [['collection', 4000, 25], ['nsf', 400], ['bank_fee', 15], ['deposit_in_transit', 400]]}, {'adjusted_bank': 8400, 'adjusted_book': 12560, 'reconciled': False, 'entries': [['collection', 3975], ['nsf', -400], ['bank_fee', -15]]}], ['control 6', {'bank': 12500, 'book': 9000, 'items': [['bank_error', 90], ['deposit_in_transit', 400], ['bank_error', -400], ['outstanding_check', 400]]}, {'adjusted_bank': 12190, 'adjusted_book': 9000, 'reconciled': False, 'entries': []}]], [['regression: check recording error sign', {'bank': 10000, 'book': 11800, 'items': [['deposit_in_transit', 1200], ['check_error', 450, 459], ['check_error', 540, 450], ['bank_error', 15]]}, {'adjusted_bank': 11215, 'adjusted_book': 11881, 'reconciled': False, 'entries': [['check_error', -9], ['check_error', 90]]}], ['control 1', {'bank': 10000, 'book': 11800, 'items': [['collection', 4000, 15], ['outstanding_check', 1200], ['bank_error', 400], ['bank_fee', 1200], ['bank_error', 400]]}, {'adjusted_bank': 9600, 'adjusted_book': 14585, 'reconciled': False, 'entries': [['collection', 3985], ['bank_fee', -1200]]}], ['control 2', {'bank': 10000, 'book': 9000, 'items': [['deposit_in_transit', 1200], ['interest', 250], ['nsf', 250], ['outstanding_check', 400], ['deposit_in_transit', 15], ['collection', 12000, 0]]}, {'adjusted_bank': 10815, 'adjusted_book': 21000, 'reconciled': False, 'entries': [['interest', 250], ['nsf', -250], ['collection', 12000]]}], ['control 3', {'bank': 10000, 'book': 9000, 'items': [['collection', 150, 15], ['nsf', 15], ['deposit_in_transit', 90], ['memo', 1200], ['collection', 900, 25], ['interest', 90], ['deposit_in_transit', 400]]}, {'adjusted_bank': 10490, 'adjusted_book': 10085, 'reconciled': False, 'entries': [['collection', 135], ['nsf', -15], ['collection', 875], ['interest', 90]]}], ['control 4', {'bank': 10000, 'book': 10000, 'items': [['interest', 90], ['memo', 250], ['memo', 15], ['check_error', 540, 540], ['bank_fee', 400]]}, {'adjusted_bank': 10000, 'adjusted_book': 9690, 'reconciled': False, 'entries': [['interest', 90], ['check_error', 0], ['bank_fee', -400]]}], ['control 5', {'bank': 12500, 'book': 11800, 'items': [['bank_error', -90], ['deposit_in_transit', 400], ['collection', 12000, 15], ['deposit_in_transit', 90], ['bank_error', 250], ['check_error', 540, 540]]}, {'adjusted_bank': 13150, 'adjusted_book': 23785, 'reconciled': False, 'entries': [['collection', 11985], ['check_error', 0]]}], ['control 6', {'bank': 12500, 'book': 10000, 'items': [['deposit_in_transit', 250], ['interest', 15], ['bank_error', 90], ['interest', 90], ['collection', 150, 0], ['outstanding_check', 400]]}, {'adjusted_bank': 12440, 'adjusted_book': 10255, 'reconciled': False, 'entries': [['interest', 15], ['interest', 90], ['collection', 150]]}]], [['regression: check recording error sign', {'bank': 12500, 'book': 11800, 'items': [['collection', 4000, 0], ['bank_error', 400], ['check_error', 450, 459]]}, {'adjusted_bank': 12900, 'adjusted_book': 15791, 'reconciled': False, 'entries': [['collection', 4000], ['check_error', -9]]}], ['regression: check recording error sign, partial-repair probe', {'bank': 12500, 'book': 9000, 'items': [['collection', 2500, 15], ['check_error', 2100, 2109], ['bank_fee', 15], ['bank_error', -15], ['bank_fee', 1200], ['check_error', 2100, 540]]}, {'adjusted_bank': 12485, 'adjusted_book': 11821, 'reconciled': False, 'entries': [['collection', 2485], ['check_error', -9], ['bank_fee', -15], ['bank_fee', -1200], ['check_error', 1560]]}], ['control 1', {'bank': 12500, 'book': 9000, 'items': [['deposit_in_transit', 250], ['bank_error', -90], ['bank_error', 90]]}, {'adjusted_bank': 12750, 'adjusted_book': 9000, 'reconciled': False, 'entries': []}], ['control 2', {'bank': 12500, 'book': 10000, 'items': [['deposit_in_transit', 15], ['bank_error', -15], ['nsf', 90], ['collection', 2500, 25], ['outstanding_check', 90], ['collection', 900, 0]]}, {'adjusted_bank': 12410, 'adjusted_book': 13285, 'reconciled': False, 'entries': [['nsf', -90], ['collection', 2475], ['collection', 900]]}], ['control 3', {'bank': 8000, 'book': 10000, 'items': [['deposit_in_transit', 90], ['bank_error', 15], ['collection', 4000, 0], ['interest', 250]]}, {'adjusted_bank': 8105, 'adjusted_book': 14250, 'reconciled': False, 'entries': [['collection', 4000], ['interest', 250]]}], ['control 4', {'bank': 12500, 'book': 9000, 'items': [['bank_error', -1200], ['memo', 15], ['bank_fee', 15], ['outstanding_check', 400], ['outstanding_check', 400]]}, {'adjusted_bank': 10500, 'adjusted_book': 8985, 'reconciled': False, 'entries': [['bank_fee', -15]]}], ['control 5', {'bank': 8000, 'book': 9000, 'items': [['deposit_in_transit', 250], ['bank_error', -90], ['deposit_in_transit', 400], ['collection', 12000, 0]]}, {'adjusted_bank': 8560, 'adjusted_book': 21000, 'reconciled': False, 'entries': [['collection', 12000]]}]], [['regression: check recording error sign', {'bank': 12500, 'book': 10000, 'items': [['outstanding_check', 250], ['collection', 4000, 25], ['check_error', 2100, 450], ['outstanding_check', 250], ['bank_fee', 90], ['interest', 1200], ['outstanding_check', 15]]}, {'adjusted_bank': 11985, 'adjusted_book': 16735, 'reconciled': False, 'entries': [['collection', 3975], ['check_error', 1650], ['bank_fee', -90], ['interest', 1200]]}], ['control 1', {'bank': 12500, 'book': 11800, 'items': [['nsf', 400], ['bank_fee', 250], ['bank_error', 250]]}, {'adjusted_bank': 12750, 'adjusted_book': 11150, 'reconciled': False, 'entries': [['nsf', -400], ['bank_fee', -250]]}], ['control 2', {'bank': 10000, 'book': 10000, 'items': [['outstanding_check', 90], ['memo', 250], ['bank_fee', 15], ['interest', 1200], ['memo', 250], ['deposit_in_transit', 15]]}, {'adjusted_bank': 9925, 'adjusted_book': 11185, 'reconciled': False, 'entries': [['bank_fee', -15], ['interest', 1200]]}], ['control 3', {'bank': 8000, 'book': 10000, 'items': [['nsf', 1200], ['collection', 4000, 15], ['interest', 400]]}, {'adjusted_bank': 8000, 'adjusted_book': 13185, 'reconciled': False, 'entries': [['nsf', -1200], ['collection', 3985], ['interest', 400]]}], ['control 4', {'bank': 10000, 'book': 11800, 'items': [['bank_error', -250], ['deposit_in_transit', 250], ['bank_fee', 250]]}, {'adjusted_bank': 10000, 'adjusted_book': 11550, 'reconciled': False, 'entries': [['bank_fee', -250]]}], ['control 5', {'bank': 12500, 'book': 10000, 'items': [['bank_error', -15], ['collection', 150, 25], ['nsf', 400], ['nsf', 15], ['collection', 2500, 0], ['interest', 1200]]}, {'adjusted_bank': 12485, 'adjusted_book': 13410, 'reconciled': False, 'entries': [['collection', 125], ['nsf', -400], ['nsf', -15], ['collection', 2500], ['interest', 1200]]}], ['control 6', {'bank': 8000, 'book': 10000, 'items': [['collection', 12000, 0], ['interest', 400], ['outstanding_check', 90], ['nsf', 90], ['bank_error', -1200], ['nsf', 400]]}, {'adjusted_bank': 6710, 'adjusted_book': 21910, 'reconciled': False, 'entries': [['collection', 12000], ['interest', 400], ['nsf', -90], ['nsf', -400]]}]]]
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)
Boundary fixtureActualExpectedOutcome
regression: check recording error sign{'adjusted_bank': 8000, 'adjusted_book': 6965, 'entries': [['interest', 15], ['bank_fee', -400], ['check_error', -1650]], 'reconciled': False}{'adjusted_bank': 8000, 'adjusted_book': 10265, 'entries': [['interest', 15], ['bank_fee', -400], ['check_error', 1650]], 'reconciled': False}Failed
control 1{'adjusted_bank': 11200, 'adjusted_book': 8725, 'entries': [['bank_fee', -90], ['interest', 15], ['nsf', -1200]], 'reconciled': False}{'adjusted_bank': 11200, 'adjusted_book': 8725, 'entries': [['bank_fee', -90], ['interest', 15], ['nsf', -1200]], 'reconciled': False}Passed
control 2{'adjusted_bank': 12000, 'adjusted_book': 8710, 'entries': [['bank_fee', -90], ['bank_fee', -1200]], 'reconciled': False}{'adjusted_bank': 12000, 'adjusted_book': 8710, 'entries': [['bank_fee', -90], ['bank_fee', -1200]], 'reconciled': False}Passed
control 3{'adjusted_bank': 8650, 'adjusted_book': 11000, 'entries': [['interest', 1200], ['interest', 400], ['interest', 400]], 'reconciled': False}{'adjusted_bank': 8650, 'adjusted_book': 11000, 'entries': [['interest', 1200], ['interest', 400], ['interest', 400]], 'reconciled': False}Passed
control 4{'adjusted_bank': 12500, 'adjusted_book': 10350, 'entries': [['bank_fee', -250], ['bank_fee', -1200]], 'reconciled': False}{'adjusted_bank': 12500, 'adjusted_book': 10350, 'entries': [['bank_fee', -250], ['bank_fee', -1200]], 'reconciled': False}Passed
control 5{'adjusted_bank': 9895, 'adjusted_book': 27385, 'entries': [['interest', 1200], ['interest', 1200], ['collection', 12000], ['collection', 3985]], 'reconciled': False}{'adjusted_bank': 9895, 'adjusted_book': 27385, 'entries': [['interest', 1200], ['interest', 1200], ['collection', 12000], ['collection', 3985]], 'reconciled': False}Passed
control 6{'adjusted_bank': 12485, 'adjusted_book': 14145, 'entries': [['interest', 250], ['bank_fee', -90], ['collection', 3985]], 'reconciled': False}{'adjusted_bank': 12485, 'adjusted_book': 14145, 'entries': [['interest', 250], ['bank_fee', -90], ['collection', 3985]], 'reconciled': False}Passed

SHA-256 / 2139574d7a49dca110c4715b4097d58b5dd234c83bb11893564f2419ba509a99

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    bank = x['bank']
    book = x['book']
    entries = []
    for item in x['items']:
        kind = item[0]
        if kind == 'deposit_in_transit':
            bank += item[1]
        elif kind == 'outstanding_check':
            bank -= item[1]
        elif kind == 'bank_error':
            bank += item[1]
        else:
            if kind == 'bank_fee' or kind == 'nsf':
                adj = -item[1]
            elif kind == 'interest':
                adj = item[1]
            elif kind == 'collection':
                adj = item[1] - item[2]
            elif kind == 'check_error':
                adj = -abs(item[1] - item[2])
            else:
                continue
            book += adj
            entries.append([kind, adj])
    return {'adjusted_bank': bank, 'adjusted_book': book, 'reconciled': bank == book, 'entries': entries}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: check recording error sign', {'bank': 8000, 'book': 9000, 'items': [['interest', 15], ['bank_fee', 400], ['check_error', 2100, 450]]}, {'adjusted_bank': 8000, 'adjusted_book': 10265, 'reconciled': False, 'entries': [['interest', 15], ['bank_fee', -400], ['check_error', 1650]]}], ['control 1', {'bank': 10000, 'book': 10000, 'items': [['bank_fee', 90], ['interest', 15], ['bank_error', 1200], ['nsf', 1200], ['memo', 250], ['memo', 1200]]}, {'adjusted_bank': 11200, 'adjusted_book': 8725, 'reconciled': False, 'entries': [['bank_fee', -90], ['interest', 15], ['nsf', -1200]]}], ['control 2', {'bank': 10000, 'book': 10000, 'items': [['deposit_in_transit', 1200], ['deposit_in_transit', 400], ['bank_fee', 90], ['bank_fee', 1200], ['deposit_in_transit', 400]]}, {'adjusted_bank': 12000, 'adjusted_book': 8710, 'reconciled': False, 'entries': [['bank_fee', -90], ['bank_fee', -1200]]}], ['control 3', {'bank': 8000, 'book': 9000, 'items': [['interest', 1200], ['bank_error', 400], ['interest', 400], ['bank_error', 250], ['interest', 400]]}, {'adjusted_bank': 8650, 'adjusted_book': 11000, 'reconciled': False, 'entries': [['interest', 1200], ['interest', 400], ['interest', 400]]}], ['control 4', {'bank': 12500, 'book': 11800, 'items': [['deposit_in_transit', 1200], ['bank_fee', 250], ['bank_error', -1200], ['bank_fee', 1200]]}, {'adjusted_bank': 12500, 'adjusted_book': 10350, 'reconciled': False, 'entries': [['bank_fee', -250], ['bank_fee', -1200]]}], ['control 5', {'bank': 10000, 'book': 9000, 'items': [['outstanding_check', 15], ['interest', 1200], ['interest', 1200], ['collection', 12000, 0], ['collection', 4000, 15], ['outstanding_check', 90]]}, {'adjusted_bank': 9895, 'adjusted_book': 27385, 'reconciled': False, 'entries': [['interest', 1200], ['interest', 1200], ['collection', 12000], ['collection', 3985]]}], ['control 6', {'bank': 12500, 'book': 10000, 'items': [['interest', 250], ['bank_fee', 90], ['memo', 15], ['bank_error', -15], ['collection', 4000, 15]]}, {'adjusted_bank': 12485, 'adjusted_book': 14145, 'reconciled': False, 'entries': [['interest', 250], ['bank_fee', -90], ['collection', 3985]]}]], [['regression: check recording error sign', {'bank': 10000, 'book': 11800, 'items': [['check_error', 2100, 540], ['nsf', 15], ['interest', 400], ['outstanding_check', 400], ['bank_error', -400], ['deposit_in_transit', 15]]}, {'adjusted_bank': 9215, 'adjusted_book': 13745, 'reconciled': False, 'entries': [['check_error', 1560], ['nsf', -15], ['interest', 400]]}], ['control 1', {'bank': 8000, 'book': 9000, 'items': [['deposit_in_transit', 400], ['outstanding_check', 400], ['memo', 15], ['outstanding_check', 250], ['memo', 1200], ['deposit_in_transit', 250]]}, {'adjusted_bank': 8000, 'adjusted_book': 9000, 'reconciled': False, 'entries': []}], ['control 2', {'bank': 12500, 'book': 9000, 'items': [['nsf', 400], ['bank_error', -90], ['bank_fee', 90]]}, {'adjusted_bank': 12410, 'adjusted_book': 8510, 'reconciled': False, 'entries': [['nsf', -400], ['bank_fee', -90]]}], ['control 3', {'bank': 8000, 'book': 11800, 'items': [['memo', 400], ['bank_fee', 1200], ['interest', 90], ['memo', 400], ['interest', 15], ['bank_error', -400], ['memo', 250]]}, {'adjusted_bank': 7600, 'adjusted_book': 10705, 'reconciled': False, 'entries': [['bank_fee', -1200], ['interest', 90], ['interest', 15]]}], ['control 4', {'bank': 8000, 'book': 11800, 'items': [['bank_fee', 1200], ['interest', 250], ['bank_error', -1200]]}, {'adjusted_bank': 6800, 'adjusted_book': 10850, 'reconciled': False, 'entries': [['bank_fee', -1200], ['interest', 250]]}], ['control 5', {'bank': 8000, 'book': 9000, 'items': [['collection', 4000, 25], ['nsf', 400], ['bank_fee', 15], ['deposit_in_transit', 400]]}, {'adjusted_bank': 8400, 'adjusted_book': 12560, 'reconciled': False, 'entries': [['collection', 3975], ['nsf', -400], ['bank_fee', -15]]}], ['control 6', {'bank': 12500, 'book': 9000, 'items': [['bank_error', 90], ['deposit_in_transit', 400], ['bank_error', -400], ['outstanding_check', 400]]}, {'adjusted_bank': 12190, 'adjusted_book': 9000, 'reconciled': False, 'entries': []}]], [['regression: check recording error sign', {'bank': 10000, 'book': 11800, 'items': [['deposit_in_transit', 1200], ['check_error', 450, 459], ['check_error', 540, 450], ['bank_error', 15]]}, {'adjusted_bank': 11215, 'adjusted_book': 11881, 'reconciled': False, 'entries': [['check_error', -9], ['check_error', 90]]}], ['control 1', {'bank': 10000, 'book': 11800, 'items': [['collection', 4000, 15], ['outstanding_check', 1200], ['bank_error', 400], ['bank_fee', 1200], ['bank_error', 400]]}, {'adjusted_bank': 9600, 'adjusted_book': 14585, 'reconciled': False, 'entries': [['collection', 3985], ['bank_fee', -1200]]}], ['control 2', {'bank': 10000, 'book': 9000, 'items': [['deposit_in_transit', 1200], ['interest', 250], ['nsf', 250], ['outstanding_check', 400], ['deposit_in_transit', 15], ['collection', 12000, 0]]}, {'adjusted_bank': 10815, 'adjusted_book': 21000, 'reconciled': False, 'entries': [['interest', 250], ['nsf', -250], ['collection', 12000]]}], ['control 3', {'bank': 10000, 'book': 9000, 'items': [['collection', 150, 15], ['nsf', 15], ['deposit_in_transit', 90], ['memo', 1200], ['collection', 900, 25], ['interest', 90], ['deposit_in_transit', 400]]}, {'adjusted_bank': 10490, 'adjusted_book': 10085, 'reconciled': False, 'entries': [['collection', 135], ['nsf', -15], ['collection', 875], ['interest', 90]]}], ['control 4', {'bank': 10000, 'book': 10000, 'items': [['interest', 90], ['memo', 250], ['memo', 15], ['check_error', 540, 540], ['bank_fee', 400]]}, {'adjusted_bank': 10000, 'adjusted_book': 9690, 'reconciled': False, 'entries': [['interest', 90], ['check_error', 0], ['bank_fee', -400]]}], ['control 5', {'bank': 12500, 'book': 11800, 'items': [['bank_error', -90], ['deposit_in_transit', 400], ['collection', 12000, 15], ['deposit_in_transit', 90], ['bank_error', 250], ['check_error', 540, 540]]}, {'adjusted_bank': 13150, 'adjusted_book': 23785, 'reconciled': False, 'entries': [['collection', 11985], ['check_error', 0]]}], ['control 6', {'bank': 12500, 'book': 10000, 'items': [['deposit_in_transit', 250], ['interest', 15], ['bank_error', 90], ['interest', 90], ['collection', 150, 0], ['outstanding_check', 400]]}, {'adjusted_bank': 12440, 'adjusted_book': 10255, 'reconciled': False, 'entries': [['interest', 15], ['interest', 90], ['collection', 150]]}]], [['regression: check recording error sign', {'bank': 12500, 'book': 11800, 'items': [['collection', 4000, 0], ['bank_error', 400], ['check_error', 450, 459]]}, {'adjusted_bank': 12900, 'adjusted_book': 15791, 'reconciled': False, 'entries': [['collection', 4000], ['check_error', -9]]}], ['regression: check recording error sign, partial-repair probe', {'bank': 12500, 'book': 9000, 'items': [['collection', 2500, 15], ['check_error', 2100, 2109], ['bank_fee', 15], ['bank_error', -15], ['bank_fee', 1200], ['check_error', 2100, 540]]}, {'adjusted_bank': 12485, 'adjusted_book': 11821, 'reconciled': False, 'entries': [['collection', 2485], ['check_error', -9], ['bank_fee', -15], ['bank_fee', -1200], ['check_error', 1560]]}], ['control 1', {'bank': 12500, 'book': 9000, 'items': [['deposit_in_transit', 250], ['bank_error', -90], ['bank_error', 90]]}, {'adjusted_bank': 12750, 'adjusted_book': 9000, 'reconciled': False, 'entries': []}], ['control 2', {'bank': 12500, 'book': 10000, 'items': [['deposit_in_transit', 15], ['bank_error', -15], ['nsf', 90], ['collection', 2500, 25], ['outstanding_check', 90], ['collection', 900, 0]]}, {'adjusted_bank': 12410, 'adjusted_book': 13285, 'reconciled': False, 'entries': [['nsf', -90], ['collection', 2475], ['collection', 900]]}], ['control 3', {'bank': 8000, 'book': 10000, 'items': [['deposit_in_transit', 90], ['bank_error', 15], ['collection', 4000, 0], ['interest', 250]]}, {'adjusted_bank': 8105, 'adjusted_book': 14250, 'reconciled': False, 'entries': [['collection', 4000], ['interest', 250]]}], ['control 4', {'bank': 12500, 'book': 9000, 'items': [['bank_error', -1200], ['memo', 15], ['bank_fee', 15], ['outstanding_check', 400], ['outstanding_check', 400]]}, {'adjusted_bank': 10500, 'adjusted_book': 8985, 'reconciled': False, 'entries': [['bank_fee', -15]]}], ['control 5', {'bank': 8000, 'book': 9000, 'items': [['deposit_in_transit', 250], ['bank_error', -90], ['deposit_in_transit', 400], ['collection', 12000, 0]]}, {'adjusted_bank': 8560, 'adjusted_book': 21000, 'reconciled': False, 'entries': [['collection', 12000]]}]], [['regression: check recording error sign', {'bank': 12500, 'book': 10000, 'items': [['outstanding_check', 250], ['collection', 4000, 25], ['check_error', 2100, 450], ['outstanding_check', 250], ['bank_fee', 90], ['interest', 1200], ['outstanding_check', 15]]}, {'adjusted_bank': 11985, 'adjusted_book': 16735, 'reconciled': False, 'entries': [['collection', 3975], ['check_error', 1650], ['bank_fee', -90], ['interest', 1200]]}], ['control 1', {'bank': 12500, 'book': 11800, 'items': [['nsf', 400], ['bank_fee', 250], ['bank_error', 250]]}, {'adjusted_bank': 12750, 'adjusted_book': 11150, 'reconciled': False, 'entries': [['nsf', -400], ['bank_fee', -250]]}], ['control 2', {'bank': 10000, 'book': 10000, 'items': [['outstanding_check', 90], ['memo', 250], ['bank_fee', 15], ['interest', 1200], ['memo', 250], ['deposit_in_transit', 15]]}, {'adjusted_bank': 9925, 'adjusted_book': 11185, 'reconciled': False, 'entries': [['bank_fee', -15], ['interest', 1200]]}], ['control 3', {'bank': 8000, 'book': 10000, 'items': [['nsf', 1200], ['collection', 4000, 15], ['interest', 400]]}, {'adjusted_bank': 8000, 'adjusted_book': 13185, 'reconciled': False, 'entries': [['nsf', -1200], ['collection', 3985], ['interest', 400]]}], ['control 4', {'bank': 10000, 'book': 11800, 'items': [['bank_error', -250], ['deposit_in_transit', 250], ['bank_fee', 250]]}, {'adjusted_bank': 10000, 'adjusted_book': 11550, 'reconciled': False, 'entries': [['bank_fee', -250]]}], ['control 5', {'bank': 12500, 'book': 10000, 'items': [['bank_error', -15], ['collection', 150, 25], ['nsf', 400], ['nsf', 15], ['collection', 2500, 0], ['interest', 1200]]}, {'adjusted_bank': 12485, 'adjusted_book': 13410, 'reconciled': False, 'entries': [['collection', 125], ['nsf', -400], ['nsf', -15], ['collection', 2500], ['interest', 1200]]}], ['control 6', {'bank': 8000, 'book': 10000, 'items': [['collection', 12000, 0], ['interest', 400], ['outstanding_check', 90], ['nsf', 90], ['bank_error', -1200], ['nsf', 400]]}, {'adjusted_bank': 6710, 'adjusted_book': 21910, 'reconciled': False, 'entries': [['collection', 12000], ['interest', 400], ['nsf', -90], ['nsf', -400]]}]]]
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)
Boundary fixtureActualExpectedOutcome
regression: check recording error sign{'adjusted_bank': 8000, 'adjusted_book': 6965, 'entries': [['interest', 15], ['bank_fee', -400], ['check_error', -1650]], 'reconciled': False}{'adjusted_bank': 8000, 'adjusted_book': 10265, 'entries': [['interest', 15], ['bank_fee', -400], ['check_error', 1650]], 'reconciled': False}Failed
control 1{'adjusted_bank': 11200, 'adjusted_book': 8725, 'entries': [['bank_fee', -90], ['interest', 15], ['nsf', -1200]], 'reconciled': False}{'adjusted_bank': 11200, 'adjusted_book': 8725, 'entries': [['bank_fee', -90], ['interest', 15], ['nsf', -1200]], 'reconciled': False}Passed
control 2{'adjusted_bank': 12000, 'adjusted_book': 8710, 'entries': [['bank_fee', -90], ['bank_fee', -1200]], 'reconciled': False}{'adjusted_bank': 12000, 'adjusted_book': 8710, 'entries': [['bank_fee', -90], ['bank_fee', -1200]], 'reconciled': False}Passed
control 3{'adjusted_bank': 8650, 'adjusted_book': 11000, 'entries': [['interest', 1200], ['interest', 400], ['interest', 400]], 'reconciled': False}{'adjusted_bank': 8650, 'adjusted_book': 11000, 'entries': [['interest', 1200], ['interest', 400], ['interest', 400]], 'reconciled': False}Passed
control 4{'adjusted_bank': 12500, 'adjusted_book': 10350, 'entries': [['bank_fee', -250], ['bank_fee', -1200]], 'reconciled': False}{'adjusted_bank': 12500, 'adjusted_book': 10350, 'entries': [['bank_fee', -250], ['bank_fee', -1200]], 'reconciled': False}Passed
control 5{'adjusted_bank': 9895, 'adjusted_book': 27385, 'entries': [['interest', 1200], ['interest', 1200], ['collection', 12000], ['collection', 3985]], 'reconciled': False}{'adjusted_bank': 9895, 'adjusted_book': 27385, 'entries': [['interest', 1200], ['interest', 1200], ['collection', 12000], ['collection', 3985]], 'reconciled': False}Passed
control 6{'adjusted_bank': 12485, 'adjusted_book': 14145, 'entries': [['interest', 250], ['bank_fee', -90], ['collection', 3985]], 'reconciled': False}{'adjusted_bank': 12485, 'adjusted_book': 14145, 'entries': [['interest', 250], ['bank_fee', -90], ['collection', 3985]], 'reconciled': False}Passed

SHA-256 / 843429c62bfd84205e455c84cec909bc75201324c83e58f460de724ab1b1e594

HELD IN THE MEMBER ARCHIVE

The verified repair and its recorded checks are member-only.

This mechanism has 7 recorded checks per implementation. The open-access tier publishes the failure and the unsuccessful fix; the repaired source that passes every check, and the observations that prove it, are available to members.

Every case sharing this mechanism uses the same contract and the same repair, so this one record is held back for all of them.

Member access is invitation-based. Sign in with your invited account to inspect the repair.

Sign in to the archive ↗

Verification & scope

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.

Observations recorded using Python 3.12.14 at 2026-09-29T14:46:22.101243+00:00.

Case digest / 7cd654e861333b69ec0a12694cf8ef381ad9bb0970b21b8f34b4ab0ebf67a795