{"abstract":"Balances that name their own entity as counterparty are eliminated against themselves.","category":"Double-entry ledger accounting","checks":7,"contract":"x = [[entity, account, counterparty or None, amount]]. Rows with no counterparty, the entity itself as counterparty, or an account outside the pairs (ic_receivable/ic_payable, ic_sales/ic_purchases) are consolidated as-is. For each (entity, counterparty, pair) the left balance of entity toward counterparty is matched against the right balance of counterparty toward entity; min(left, right) is eliminated from both, residuals are consolidated and a mismatch [entity, counterparty, left account, left - right] is reported when they differ. Return {'consolidated': nonzero account totals, 'mismatches': in sorted key order}.","evaluation_group":"w2-double-entry-ledger-accounting-intercompany-elimination","failed_approach":"Dropping the unpaired-account test loses intercompany loans from the consolidation.","family":"w2-double-entry-ledger-accounting-intercompany-elimination-self-counterparty","id":"FA-58241","implementations":{"attempt":{"sha256":"6a298dfde348820ef7f6de43e05e31f588764cc376fd97311defb26d47a5e761","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    PAIRS = (('ic_receivable', 'ic_payable'), ('ic_sales', 'ic_purchases'))\n    PAIRED = {a for p in PAIRS for a in p}\n    cons = {}\n    ic = {}\n    for ent, acct, cp, amt in x:\n        if cp is None or cp == ent:\n            cons[acct] = cons.get(acct, 0) + amt\n        else:\n            ic[(ent, acct, cp)] = ic.get((ent, acct, cp), 0) + amt\n    keys = set()\n    for (ent, acct, cp) in ic:\n        for left, right in PAIRS:\n            if acct == left:\n                keys.add((ent, cp, left, right))\n            elif acct == right:\n                keys.add((cp, ent, left, right))\n    mism = []\n    for ent, cp, left, right in sorted(keys):\n        a = ic.get((ent, left, cp), 0)\n        b = ic.get((cp, right, ent), 0)\n        m = min(a, b)\n        if a != b:\n            mism.append([ent, cp, left, a - b])\n        if a - m:\n            cons[left] = cons.get(left, 0) + a - m\n        if b - m:\n            cons[right] = cons.get(right, 0) + b - m\n    return {'consolidated': {k: v for k, v in sorted(cons.items()) if v}, 'mismatches': mism}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression: self counterparty', [['P', 'ic_loan', 'S1', 400], ['S1', 'ic_loan', 'S1', 400], ['S1', 'ic_loan', 'S2', 100], ['P', 'ic_sales', 'P', 400], ['P', 'ic_purchases', 'S1', 400], ['S2', 'ic_sales', 'S1', 250]], {'consolidated': {'ic_loan': 900, 'ic_purchases': 400, 'ic_sales': 650}, 'mismatches': [['S1', 'P', 'ic_sales', -400], ['S2', 'S1', 'ic_sales', 250]]}], ['control 1', [['S1', 'ic_purchases', 'S2', 1000], ['S1', 'ic_loan', 'P', 250], ['S2', 'sales', None, -100]], {'consolidated': {'ic_loan': 250, 'ic_purchases': 1000, 'sales': -100}, 'mismatches': [['S2', 'S1', 'ic_sales', -1000]]}], ['control 2', [['S2', 'ic_receivable', 'P', 1000], ['P', 'ic_payable', 'S1', 400], ['S2', 'ic_purchases', 'S1', 100]], {'consolidated': {'ic_payable': 400, 'ic_purchases': 100, 'ic_receivable': 1000}, 'mismatches': [['S1', 'P', 'ic_receivable', -400], ['S1', 'S2', 'ic_sales', -100], ['S2', 'P', 'ic_receivable', 1000]]}], ['control 3', [['S2', 'cash', None, 400], ['S2', 'ic_receivable', 'S1', 250], ['S1', 'ic_loan', 'P', 400]], {'consolidated': {'cash': 400, 'ic_loan': 400, 'ic_receivable': 250}, 'mismatches': [['S2', 'S1', 'ic_receivable', 250]]}], ['control 4', [['S1', 'ic_payable', 'S2', 1000], ['S1', 'ic_receivable', 'S2', 250], ['S2', 'ic_payable', 'S1', 1000], ['S2', 'ic_payable', 'P', 1000]], {'consolidated': {'ic_payable': 2750}, 'mismatches': [['P', 'S2', 'ic_receivable', -1000], ['S1', 'S2', 'ic_receivable', -750], ['S2', 'S1', 'ic_receivable', -1000]]}], ['control 5', [['P', 'ic_purchases', 'S1', 100], ['S2', 'ic_loan', 'S2', 1000], ['P', 'ic_loan', 'S2', 400], ['S1', 'cash', None, 100], ['S2', 'ic_purchases', 'S1', 1000], ['P', 'ic_purchases', 'S2', 100]], {'consolidated': {'cash': 100, 'ic_loan': 1400, 'ic_purchases': 1200}, 'mismatches': [['S1', 'P', 'ic_sales', -100], ['S1', 'S2', 'ic_sales', -1000], ['S2', 'P', 'ic_sales', -100]]}], ['control 6', [['P', 'ic_payable', 'S1', 250], ['S1', 'ic_sales', 'P', 250], ['S2', 'ic_payable', 'P', 250], ['P', 'ic_payable', 'S2', 400], ['S2', 'cash', None, -400], ['S2', 'ic_purchases', 'P', 100]], {'consolidated': {'cash': -400, 'ic_payable': 900, 'ic_purchases': 100, 'ic_sales': 250}, 'mismatches': [['P', 'S2', 'ic_receivable', -250], ['P', 'S2', 'ic_sales', -100], ['S1', 'P', 'ic_receivable', -250], ['S1', 'P', 'ic_sales', 250], ['S2', 'P', 'ic_receivable', -400]]}]], [['regression: self counterparty', [['S1', 'ic_loan', 'S2', 400], ['P', 'ic_receivable', 'P', 400], ['S2', 'sales', None, -250], ['S2', 'ic_sales', 'P', 100], ['P', 'ic_receivable', 'S1', 1000]], {'consolidated': {'ic_loan': 400, 'ic_receivable': 1400, 'ic_sales': 100, 'sales': -250}, 'mismatches': [['P', 'S1', 'ic_receivable', 1000], ['S2', 'P', 'ic_sales', 100]]}], ['control 1', [['S1', 'ic_sales', 'P', 400], ['S2', 'ic_sales', 'S1', 400], ['S2', 'ic_purchases', 'S1', 1000]], {'consolidated': {'ic_purchases': 1000, 'ic_sales': 800}, 'mismatches': [['S1', 'P', 'ic_sales', 400], ['S1', 'S2', 'ic_sales', -1000], ['S2', 'S1', 'ic_sales', 400]]}], ['control 2', [['S1', 'cash', None, 400], ['P', 'ic_receivable', 'S1', 100], ['S1', 'ic_sales', 'P', 100]], {'consolidated': {'cash': 400, 'ic_receivable': 100, 'ic_sales': 100}, 'mismatches': [['P', 'S1', 'ic_receivable', 100], ['S1', 'P', 'ic_sales', 100]]}], ['control 3', [['S1', 'ic_sales', 'S2', 250], ['P', 'ic_receivable', 'S1', 400], ['S1', 'ic_loan', 'S2', 400]], {'consolidated': {'ic_loan': 400, 'ic_receivable': 400, 'ic_sales': 250}, 'mismatches': [['P', 'S1', 'ic_receivable', 400], ['S1', 'S2', 'ic_sales', 250]]}], ['control 4', [['S1', 'ic_receivable', None, 100], ['P', 'ic_loan', 'P', 1000], ['S2', 'ic_receivable', 'S1', 100], ['S1', 'ic_payable', 'S2', 400], ['S1', 'ic_sales', 'P', 250]], {'consolidated': {'ic_loan': 1000, 'ic_payable': 300, 'ic_receivable': 100, 'ic_sales': 250}, 'mismatches': [['S1', 'P', 'ic_sales', 250], ['S2', 'S1', 'ic_receivable', -300]]}], ['control 5', [['S1', 'ic_receivable', 'P', 100], ['P', 'ic_payable', 'S2', 100], ['P', 'ic_receivable', 'S1', 1000], ['P', 'ic_sales', 'S1', 100], ['P', 'ic_sales', 'S1', 1000], ['S2', 'ic_payable', 'P', 400], ['P', 'ic_purchases', 'S2', 1000]], {'consolidated': {'ic_payable': 500, 'ic_purchases': 1000, 'ic_receivable': 1100, 'ic_sales': 1100}, 'mismatches': [['P', 'S1', 'ic_receivable', 1000], ['P', 'S1', 'ic_sales', 1100], ['P', 'S2', 'ic_receivable', -400], ['S1', 'P', 'ic_receivable', 100], ['S2', 'P', 'ic_receivable', -100], ['S2', 'P', 'ic_sales', -1000]]}], ['control 6', [['P', 'cash', None, 400], ['S2', 'sales', None, -250], ['S1', 'ic_payable', 'S2', 400], ['S1', 'ic_receivable', 'S2', 100], ['P', 'sales', None, 250], ['P', 'ic_receivable', 'S2', 1000]], {'consolidated': {'cash': 400, 'ic_payable': 400, 'ic_receivable': 1100}, 'mismatches': [['P', 'S2', 'ic_receivable', 1000], ['S1', 'S2', 'ic_receivable', 100], ['S2', 'S1', 'ic_receivable', -400]]}]], [['regression: self counterparty', [['P', 'ic_receivable', None, -1000], ['P', 'ic_payable', 'P', 100], ['S1', 'ic_sales', 'S1', 400], ['S1', 'ic_payable', 'S2', 250], ['P', 'ic_sales', 'P', 100], ['S2', 'ic_receivable', 'S1', 400]], {'consolidated': {'ic_payable': 100, 'ic_receivable': -850, 'ic_sales': 500}, 'mismatches': [['S2', 'S1', 'ic_receivable', 150]]}], ['regression: self counterparty, partial-repair probe', [['P', 'ic_loan', 'P', 1000], ['S2', 'ic_sales', 'S2', 1000], ['S2', 'ic_payable', 'P', 400], ['S1', 'ic_loan', 'P', 1000], ['S1', 'ic_receivable', 'P', 1000], ['P', 'cash', None, 400], ['S2', 'ic_purchases', 'S1', 400], ['S1', 'ic_loan', 'S1', 100]], {'consolidated': {'cash': 400, 'ic_loan': 2100, 'ic_payable': 400, 'ic_purchases': 400, 'ic_receivable': 1000, 'ic_sales': 1000}, 'mismatches': [['P', 'S2', 'ic_receivable', -400], ['S1', 'P', 'ic_receivable', 1000], ['S1', 'S2', 'ic_sales', -400]]}], ['control 1', [['S2', 'ic_payable', 'P', 250], ['S2', 'ic_loan', 'S2', 1000], ['P', 'ic_loan', 'P', 250], ['S1', 'ic_receivable', 'S2', 400], ['P', 'ic_receivable', 'S1', 250], ['S2', 'ic_sales', 'P', 1000]], {'consolidated': {'ic_loan': 1250, 'ic_payable': 250, 'ic_receivable': 650, 'ic_sales': 1000}, 'mismatches': [['P', 'S1', 'ic_receivable', 250], ['P', 'S2', 'ic_receivable', -250], ['S1', 'S2', 'ic_receivable', 400], ['S2', 'P', 'ic_sales', 1000]]}], ['control 2', [['S1', 'ic_payable', 'P', 1000], ['S1', 'ic_loan', 'S1', 1000], ['P', 'ic_sales', 'S1', 400]], {'consolidated': {'ic_loan': 1000, 'ic_payable': 1000, 'ic_sales': 400}, 'mismatches': [['P', 'S1', 'ic_receivable', -1000], ['P', 'S1', 'ic_sales', 400]]}], ['control 3', [['S2', 'ic_purchases', 'S1', 250], ['S2', 'ic_loan', 'S1', 100], ['P', 'ic_loan', 'S2', 250]], {'consolidated': {'ic_loan': 350, 'ic_purchases': 250}, 'mismatches': [['S1', 'S2', 'ic_sales', -250]]}], ['control 4', [['S1', 'ic_sales', 'S2', 400], ['P', 'ic_receivable', 'S2', 400], ['S1', 'ic_payable', 'P', 400], ['P', 'ic_loan', 'P', 400], ['S1', 'cash', None, 100], ['S1', 'ic_receivable', None, 100], ['S1', 'ic_purchases', 'P', 400]], {'consolidated': {'cash': 100, 'ic_loan': 400, 'ic_payable': 400, 'ic_purchases': 400, 'ic_receivable': 500, 'ic_sales': 400}, 'mismatches': [['P', 'S1', 'ic_receivable', -400], ['P', 'S1', 'ic_sales', -400], ['P', 'S2', 'ic_receivable', 400], ['S1', 'S2', 'ic_sales', 400]]}], ['control 5', [['P', 'ic_receivable', None, -250], ['S1', 'sales', None, -250], ['S2', 'ic_sales', 'S1', 400]], {'consolidated': {'ic_receivable': -250, 'ic_sales': 400, 'sales': -250}, 'mismatches': [['S2', 'S1', 'ic_sales', 400]]}]], [['regression: self counterparty', [['P', 'ic_payable', 'S2', 400], ['S2', 'ic_purchases', 'S2', 400], ['S1', 'sales', None, -250], ['S1', 'ic_loan', 'S2', 100], ['P', 'ic_payable', 'S2', 400], ['P', 'ic_purchases', 'P', 100]], {'consolidated': {'ic_loan': 100, 'ic_payable': 800, 'ic_purchases': 500, 'sales': -250}, 'mismatches': [['S2', 'P', 'ic_receivable', -800]]}], ['control 1', [['S1', 'cash', None, 400], ['P', 'sales', None, -400], ['S1', 'ic_receivable', None, 1000]], {'consolidated': {'cash': 400, 'ic_receivable': 1000, 'sales': -400}, 'mismatches': []}], ['control 2', [['S2', 'ic_loan', 'S2', 250], ['S2', 'ic_loan', 'S1', 250], ['P', 'ic_loan', 'P', 400], ['S2', 'ic_purchases', 'P', 400], ['P', 'ic_payable', 'S1', 100], ['P', 'sales', None, -100]], {'consolidated': {'ic_loan': 900, 'ic_payable': 100, 'ic_purchases': 400, 'sales': -100}, 'mismatches': [['P', 'S2', 'ic_sales', -400], ['S1', 'P', 'ic_receivable', -100]]}], ['control 3', [['S2', 'ic_loan', 'S2', 100], ['S2', 'ic_purchases', 'S1', 250], ['S2', 'ic_payable', 'P', 100], ['P', 'ic_sales', 'S2', 400], ['P', 'ic_receivable', None, 250], ['S1', 'cash', None, -400], ['P', 'ic_purchases', 'S1', 1000], ['P', 'ic_payable', 'S2', 400]], {'consolidated': {'cash': -400, 'ic_loan': 100, 'ic_payable': 500, 'ic_purchases': 1250, 'ic_receivable': 250, 'ic_sales': 400}, 'mismatches': [['P', 'S2', 'ic_receivable', -100], ['P', 'S2', 'ic_sales', 400], ['S1', 'P', 'ic_sales', -1000], ['S1', 'S2', 'ic_sales', -250], ['S2', 'P', 'ic_receivable', -400]]}], ['control 4', [['S1', 'ic_payable', 'P', 1000], ['S2', 'ic_sales', 'S1', 400], ['S2', 'ic_purchases', 'S1', 1000], ['S1', 'ic_loan', 'P', 250]], {'consolidated': {'ic_loan': 250, 'ic_payable': 1000, 'ic_purchases': 1000, 'ic_sales': 400}, 'mismatches': [['P', 'S1', 'ic_receivable', -1000], ['S1', 'S2', 'ic_sales', -1000], ['S2', 'S1', 'ic_sales', 400]]}], ['control 5', [['S2', 'ic_payable', 'S1', 400], ['S2', 'ic_receivable', None, 400], ['S2', 'ic_loan', 'P', 1000], ['S2', 'ic_loan', 'S1', 400]], {'consolidated': {'ic_loan': 1400, 'ic_payable': 400, 'ic_receivable': 400}, 'mismatches': [['S1', 'S2', 'ic_receivable', -400]]}], ['control 6', [['P', 'ic_sales', 'S2', 100], ['P', 'ic_loan', 'S2', 100], ['S1', 'ic_receivable', None, 400]], {'consolidated': {'ic_loan': 100, 'ic_receivable': 400, 'ic_sales': 100}, 'mismatches': [['P', 'S2', 'ic_sales', 100]]}]], [['regression: self counterparty', [['S1', 'ic_purchases', 'S2', 400], ['S2', 'ic_purchases', 'S2', 400], ['P', 'ic_payable', 'S1', 400], ['S1', 'ic_sales', 'S1', 1000]], {'consolidated': {'ic_payable': 400, 'ic_purchases': 800, 'ic_sales': 1000}, 'mismatches': [['S1', 'P', 'ic_receivable', -400], ['S2', 'S1', 'ic_sales', -400]]}], ['regression: self counterparty, partial-repair probe', [['S2', 'ic_sales', 'P', 400], ['S2', 'ic_sales', 'P', 250], ['S2', 'ic_payable', 'S1', 400], ['S1', 'ic_purchases', 'P', 1000], ['P', 'ic_loan', 'S1', 100], ['S2', 'ic_receivable', 'P', 400], ['S2', 'cash', None, -1000]], {'consolidated': {'cash': -1000, 'ic_loan': 100, 'ic_payable': 400, 'ic_purchases': 1000, 'ic_receivable': 400, 'ic_sales': 650}, 'mismatches': [['P', 'S1', 'ic_sales', -1000], ['S1', 'S2', 'ic_receivable', -400], ['S2', 'P', 'ic_receivable', 400], ['S2', 'P', 'ic_sales', 650]]}], ['control 1', [['P', 'ic_purchases', 'S1', 100], ['S1', 'ic_sales', 'P', 400], ['S2', 'ic_loan', 'S2', 1000], ['P', 'cash', None, 100]], {'consolidated': {'cash': 100, 'ic_loan': 1000, 'ic_sales': 300}, 'mismatches': [['S1', 'P', 'ic_sales', 300]]}], ['control 2', [['P', 'ic_purchases', 'S2', 250], ['S1', 'ic_sales', 'P', 1000], ['S2', 'ic_payable', 'S1', 250], ['S2', 'ic_loan', 'S1', 1000]], {'consolidated': {'ic_loan': 1000, 'ic_payable': 250, 'ic_purchases': 250, 'ic_sales': 1000}, 'mismatches': [['S1', 'P', 'ic_sales', 1000], ['S1', 'S2', 'ic_receivable', -250], ['S2', 'P', 'ic_sales', -250]]}], ['control 3', [['S2', 'cash', None, 250], ['S1', 'ic_loan', 'S2', 400], ['S1', 'ic_purchases', 'S2', 1000]], {'consolidated': {'cash': 250, 'ic_loan': 400, 'ic_purchases': 1000}, 'mismatches': [['S2', 'S1', 'ic_sales', -1000]]}], ['control 4', [['P', 'sales', None, 250], ['S2', 'ic_receivable', 'P', 100], ['S2', 'ic_payable', 'P', 250], ['S1', 'ic_loan', 'S2', 400], ['S1', 'ic_sales', 'S2', 250], ['S2', 'ic_receivable', None, 400], ['S2', 'ic_receivable', 'P', 400], ['P', 'cash', None, 400]], {'consolidated': {'cash': 400, 'ic_loan': 400, 'ic_payable': 250, 'ic_receivable': 900, 'ic_sales': 250, 'sales': 250}, 'mismatches': [['P', 'S2', 'ic_receivable', -250], ['S1', 'S2', 'ic_sales', 250], ['S2', 'P', 'ic_receivable', 500]]}], ['control 5', [['S2', 'ic_receivable', 'P', 400], ['P', 'ic_receivable', 'S2', 400], ['S2', 'ic_receivable', None, -1000]], {'consolidated': {'ic_receivable': -200}, 'mismatches': [['P', 'S2', 'ic_receivable', 400], ['S2', 'P', 'ic_receivable', 400]]}]]]\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":"61e84e6f22feccd67ebb9c1152f3bb36cea32bf58cfca5a8e29dc8131c036a1a","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    PAIRS = (('ic_receivable', 'ic_payable'), ('ic_sales', 'ic_purchases'))\n    PAIRED = {a for p in PAIRS for a in p}\n    cons = {}\n    ic = {}\n    for ent, acct, cp, amt in x:\n        if cp is None or acct not in PAIRED:\n            cons[acct] = cons.get(acct, 0) + amt\n        else:\n            ic[(ent, acct, cp)] = ic.get((ent, acct, cp), 0) + amt\n    keys = set()\n    for (ent, acct, cp) in ic:\n        for left, right in PAIRS:\n            if acct == left:\n                keys.add((ent, cp, left, right))\n            elif acct == right:\n                keys.add((cp, ent, left, right))\n    mism = []\n    for ent, cp, left, right in sorted(keys):\n        a = ic.get((ent, left, cp), 0)\n        b = ic.get((cp, right, ent), 0)\n        m = min(a, b)\n        if a != b:\n            mism.append([ent, cp, left, a - b])\n        if a - m:\n            cons[left] = cons.get(left, 0) + a - m\n        if b - m:\n            cons[right] = cons.get(right, 0) + b - m\n    return {'consolidated': {k: v for k, v in sorted(cons.items()) if v}, 'mismatches': mism}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression: self counterparty', [['P', 'ic_loan', 'S1', 400], ['S1', 'ic_loan', 'S1', 400], ['S1', 'ic_loan', 'S2', 100], ['P', 'ic_sales', 'P', 400], ['P', 'ic_purchases', 'S1', 400], ['S2', 'ic_sales', 'S1', 250]], {'consolidated': {'ic_loan': 900, 'ic_purchases': 400, 'ic_sales': 650}, 'mismatches': [['S1', 'P', 'ic_sales', -400], ['S2', 'S1', 'ic_sales', 250]]}], ['control 1', [['S1', 'ic_purchases', 'S2', 1000], ['S1', 'ic_loan', 'P', 250], ['S2', 'sales', None, -100]], {'consolidated': {'ic_loan': 250, 'ic_purchases': 1000, 'sales': -100}, 'mismatches': [['S2', 'S1', 'ic_sales', -1000]]}], ['control 2', [['S2', 'ic_receivable', 'P', 1000], ['P', 'ic_payable', 'S1', 400], ['S2', 'ic_purchases', 'S1', 100]], {'consolidated': {'ic_payable': 400, 'ic_purchases': 100, 'ic_receivable': 1000}, 'mismatches': [['S1', 'P', 'ic_receivable', -400], ['S1', 'S2', 'ic_sales', -100], ['S2', 'P', 'ic_receivable', 1000]]}], ['control 3', [['S2', 'cash', None, 400], ['S2', 'ic_receivable', 'S1', 250], ['S1', 'ic_loan', 'P', 400]], {'consolidated': {'cash': 400, 'ic_loan': 400, 'ic_receivable': 250}, 'mismatches': [['S2', 'S1', 'ic_receivable', 250]]}], ['control 4', [['S1', 'ic_payable', 'S2', 1000], ['S1', 'ic_receivable', 'S2', 250], ['S2', 'ic_payable', 'S1', 1000], ['S2', 'ic_payable', 'P', 1000]], {'consolidated': {'ic_payable': 2750}, 'mismatches': [['P', 'S2', 'ic_receivable', -1000], ['S1', 'S2', 'ic_receivable', -750], ['S2', 'S1', 'ic_receivable', -1000]]}], ['control 5', [['P', 'ic_purchases', 'S1', 100], ['S2', 'ic_loan', 'S2', 1000], ['P', 'ic_loan', 'S2', 400], ['S1', 'cash', None, 100], ['S2', 'ic_purchases', 'S1', 1000], ['P', 'ic_purchases', 'S2', 100]], {'consolidated': {'cash': 100, 'ic_loan': 1400, 'ic_purchases': 1200}, 'mismatches': [['S1', 'P', 'ic_sales', -100], ['S1', 'S2', 'ic_sales', -1000], ['S2', 'P', 'ic_sales', -100]]}], ['control 6', [['P', 'ic_payable', 'S1', 250], ['S1', 'ic_sales', 'P', 250], ['S2', 'ic_payable', 'P', 250], ['P', 'ic_payable', 'S2', 400], ['S2', 'cash', None, -400], ['S2', 'ic_purchases', 'P', 100]], {'consolidated': {'cash': -400, 'ic_payable': 900, 'ic_purchases': 100, 'ic_sales': 250}, 'mismatches': [['P', 'S2', 'ic_receivable', -250], ['P', 'S2', 'ic_sales', -100], ['S1', 'P', 'ic_receivable', -250], ['S1', 'P', 'ic_sales', 250], ['S2', 'P', 'ic_receivable', -400]]}]], [['regression: self counterparty', [['S1', 'ic_loan', 'S2', 400], ['P', 'ic_receivable', 'P', 400], ['S2', 'sales', None, -250], ['S2', 'ic_sales', 'P', 100], ['P', 'ic_receivable', 'S1', 1000]], {'consolidated': {'ic_loan': 400, 'ic_receivable': 1400, 'ic_sales': 100, 'sales': -250}, 'mismatches': [['P', 'S1', 'ic_receivable', 1000], ['S2', 'P', 'ic_sales', 100]]}], ['control 1', [['S1', 'ic_sales', 'P', 400], ['S2', 'ic_sales', 'S1', 400], ['S2', 'ic_purchases', 'S1', 1000]], {'consolidated': {'ic_purchases': 1000, 'ic_sales': 800}, 'mismatches': [['S1', 'P', 'ic_sales', 400], ['S1', 'S2', 'ic_sales', -1000], ['S2', 'S1', 'ic_sales', 400]]}], ['control 2', [['S1', 'cash', None, 400], ['P', 'ic_receivable', 'S1', 100], ['S1', 'ic_sales', 'P', 100]], {'consolidated': {'cash': 400, 'ic_receivable': 100, 'ic_sales': 100}, 'mismatches': [['P', 'S1', 'ic_receivable', 100], ['S1', 'P', 'ic_sales', 100]]}], ['control 3', [['S1', 'ic_sales', 'S2', 250], ['P', 'ic_receivable', 'S1', 400], ['S1', 'ic_loan', 'S2', 400]], {'consolidated': {'ic_loan': 400, 'ic_receivable': 400, 'ic_sales': 250}, 'mismatches': [['P', 'S1', 'ic_receivable', 400], ['S1', 'S2', 'ic_sales', 250]]}], ['control 4', [['S1', 'ic_receivable', None, 100], ['P', 'ic_loan', 'P', 1000], ['S2', 'ic_receivable', 'S1', 100], ['S1', 'ic_payable', 'S2', 400], ['S1', 'ic_sales', 'P', 250]], {'consolidated': {'ic_loan': 1000, 'ic_payable': 300, 'ic_receivable': 100, 'ic_sales': 250}, 'mismatches': [['S1', 'P', 'ic_sales', 250], ['S2', 'S1', 'ic_receivable', -300]]}], ['control 5', [['S1', 'ic_receivable', 'P', 100], ['P', 'ic_payable', 'S2', 100], ['P', 'ic_receivable', 'S1', 1000], ['P', 'ic_sales', 'S1', 100], ['P', 'ic_sales', 'S1', 1000], ['S2', 'ic_payable', 'P', 400], ['P', 'ic_purchases', 'S2', 1000]], {'consolidated': {'ic_payable': 500, 'ic_purchases': 1000, 'ic_receivable': 1100, 'ic_sales': 1100}, 'mismatches': [['P', 'S1', 'ic_receivable', 1000], ['P', 'S1', 'ic_sales', 1100], ['P', 'S2', 'ic_receivable', -400], ['S1', 'P', 'ic_receivable', 100], ['S2', 'P', 'ic_receivable', -100], ['S2', 'P', 'ic_sales', -1000]]}], ['control 6', [['P', 'cash', None, 400], ['S2', 'sales', None, -250], ['S1', 'ic_payable', 'S2', 400], ['S1', 'ic_receivable', 'S2', 100], ['P', 'sales', None, 250], ['P', 'ic_receivable', 'S2', 1000]], {'consolidated': {'cash': 400, 'ic_payable': 400, 'ic_receivable': 1100}, 'mismatches': [['P', 'S2', 'ic_receivable', 1000], ['S1', 'S2', 'ic_receivable', 100], ['S2', 'S1', 'ic_receivable', -400]]}]], [['regression: self counterparty', [['P', 'ic_receivable', None, -1000], ['P', 'ic_payable', 'P', 100], ['S1', 'ic_sales', 'S1', 400], ['S1', 'ic_payable', 'S2', 250], ['P', 'ic_sales', 'P', 100], ['S2', 'ic_receivable', 'S1', 400]], {'consolidated': {'ic_payable': 100, 'ic_receivable': -850, 'ic_sales': 500}, 'mismatches': [['S2', 'S1', 'ic_receivable', 150]]}], ['regression: self counterparty, partial-repair probe', [['P', 'ic_loan', 'P', 1000], ['S2', 'ic_sales', 'S2', 1000], ['S2', 'ic_payable', 'P', 400], ['S1', 'ic_loan', 'P', 1000], ['S1', 'ic_receivable', 'P', 1000], ['P', 'cash', None, 400], ['S2', 'ic_purchases', 'S1', 400], ['S1', 'ic_loan', 'S1', 100]], {'consolidated': {'cash': 400, 'ic_loan': 2100, 'ic_payable': 400, 'ic_purchases': 400, 'ic_receivable': 1000, 'ic_sales': 1000}, 'mismatches': [['P', 'S2', 'ic_receivable', -400], ['S1', 'P', 'ic_receivable', 1000], ['S1', 'S2', 'ic_sales', -400]]}], ['control 1', [['S2', 'ic_payable', 'P', 250], ['S2', 'ic_loan', 'S2', 1000], ['P', 'ic_loan', 'P', 250], ['S1', 'ic_receivable', 'S2', 400], ['P', 'ic_receivable', 'S1', 250], ['S2', 'ic_sales', 'P', 1000]], {'consolidated': {'ic_loan': 1250, 'ic_payable': 250, 'ic_receivable': 650, 'ic_sales': 1000}, 'mismatches': [['P', 'S1', 'ic_receivable', 250], ['P', 'S2', 'ic_receivable', -250], ['S1', 'S2', 'ic_receivable', 400], ['S2', 'P', 'ic_sales', 1000]]}], ['control 2', [['S1', 'ic_payable', 'P', 1000], ['S1', 'ic_loan', 'S1', 1000], ['P', 'ic_sales', 'S1', 400]], {'consolidated': {'ic_loan': 1000, 'ic_payable': 1000, 'ic_sales': 400}, 'mismatches': [['P', 'S1', 'ic_receivable', -1000], ['P', 'S1', 'ic_sales', 400]]}], ['control 3', [['S2', 'ic_purchases', 'S1', 250], ['S2', 'ic_loan', 'S1', 100], ['P', 'ic_loan', 'S2', 250]], {'consolidated': {'ic_loan': 350, 'ic_purchases': 250}, 'mismatches': [['S1', 'S2', 'ic_sales', -250]]}], ['control 4', [['S1', 'ic_sales', 'S2', 400], ['P', 'ic_receivable', 'S2', 400], ['S1', 'ic_payable', 'P', 400], ['P', 'ic_loan', 'P', 400], ['S1', 'cash', None, 100], ['S1', 'ic_receivable', None, 100], ['S1', 'ic_purchases', 'P', 400]], {'consolidated': {'cash': 100, 'ic_loan': 400, 'ic_payable': 400, 'ic_purchases': 400, 'ic_receivable': 500, 'ic_sales': 400}, 'mismatches': [['P', 'S1', 'ic_receivable', -400], ['P', 'S1', 'ic_sales', -400], ['P', 'S2', 'ic_receivable', 400], ['S1', 'S2', 'ic_sales', 400]]}], ['control 5', [['P', 'ic_receivable', None, -250], ['S1', 'sales', None, -250], ['S2', 'ic_sales', 'S1', 400]], {'consolidated': {'ic_receivable': -250, 'ic_sales': 400, 'sales': -250}, 'mismatches': [['S2', 'S1', 'ic_sales', 400]]}]], [['regression: self counterparty', [['P', 'ic_payable', 'S2', 400], ['S2', 'ic_purchases', 'S2', 400], ['S1', 'sales', None, -250], ['S1', 'ic_loan', 'S2', 100], ['P', 'ic_payable', 'S2', 400], ['P', 'ic_purchases', 'P', 100]], {'consolidated': {'ic_loan': 100, 'ic_payable': 800, 'ic_purchases': 500, 'sales': -250}, 'mismatches': [['S2', 'P', 'ic_receivable', -800]]}], ['control 1', [['S1', 'cash', None, 400], ['P', 'sales', None, -400], ['S1', 'ic_receivable', None, 1000]], {'consolidated': {'cash': 400, 'ic_receivable': 1000, 'sales': -400}, 'mismatches': []}], ['control 2', [['S2', 'ic_loan', 'S2', 250], ['S2', 'ic_loan', 'S1', 250], ['P', 'ic_loan', 'P', 400], ['S2', 'ic_purchases', 'P', 400], ['P', 'ic_payable', 'S1', 100], ['P', 'sales', None, -100]], {'consolidated': {'ic_loan': 900, 'ic_payable': 100, 'ic_purchases': 400, 'sales': -100}, 'mismatches': [['P', 'S2', 'ic_sales', -400], ['S1', 'P', 'ic_receivable', -100]]}], ['control 3', [['S2', 'ic_loan', 'S2', 100], ['S2', 'ic_purchases', 'S1', 250], ['S2', 'ic_payable', 'P', 100], ['P', 'ic_sales', 'S2', 400], ['P', 'ic_receivable', None, 250], ['S1', 'cash', None, -400], ['P', 'ic_purchases', 'S1', 1000], ['P', 'ic_payable', 'S2', 400]], {'consolidated': {'cash': -400, 'ic_loan': 100, 'ic_payable': 500, 'ic_purchases': 1250, 'ic_receivable': 250, 'ic_sales': 400}, 'mismatches': [['P', 'S2', 'ic_receivable', -100], ['P', 'S2', 'ic_sales', 400], ['S1', 'P', 'ic_sales', -1000], ['S1', 'S2', 'ic_sales', -250], ['S2', 'P', 'ic_receivable', -400]]}], ['control 4', [['S1', 'ic_payable', 'P', 1000], ['S2', 'ic_sales', 'S1', 400], ['S2', 'ic_purchases', 'S1', 1000], ['S1', 'ic_loan', 'P', 250]], {'consolidated': {'ic_loan': 250, 'ic_payable': 1000, 'ic_purchases': 1000, 'ic_sales': 400}, 'mismatches': [['P', 'S1', 'ic_receivable', -1000], ['S1', 'S2', 'ic_sales', -1000], ['S2', 'S1', 'ic_sales', 400]]}], ['control 5', [['S2', 'ic_payable', 'S1', 400], ['S2', 'ic_receivable', None, 400], ['S2', 'ic_loan', 'P', 1000], ['S2', 'ic_loan', 'S1', 400]], {'consolidated': {'ic_loan': 1400, 'ic_payable': 400, 'ic_receivable': 400}, 'mismatches': [['S1', 'S2', 'ic_receivable', -400]]}], ['control 6', [['P', 'ic_sales', 'S2', 100], ['P', 'ic_loan', 'S2', 100], ['S1', 'ic_receivable', None, 400]], {'consolidated': {'ic_loan': 100, 'ic_receivable': 400, 'ic_sales': 100}, 'mismatches': [['P', 'S2', 'ic_sales', 100]]}]], [['regression: self counterparty', [['S1', 'ic_purchases', 'S2', 400], ['S2', 'ic_purchases', 'S2', 400], ['P', 'ic_payable', 'S1', 400], ['S1', 'ic_sales', 'S1', 1000]], {'consolidated': {'ic_payable': 400, 'ic_purchases': 800, 'ic_sales': 1000}, 'mismatches': [['S1', 'P', 'ic_receivable', -400], ['S2', 'S1', 'ic_sales', -400]]}], ['regression: self counterparty, partial-repair probe', [['S2', 'ic_sales', 'P', 400], ['S2', 'ic_sales', 'P', 250], ['S2', 'ic_payable', 'S1', 400], ['S1', 'ic_purchases', 'P', 1000], ['P', 'ic_loan', 'S1', 100], ['S2', 'ic_receivable', 'P', 400], ['S2', 'cash', None, -1000]], {'consolidated': {'cash': -1000, 'ic_loan': 100, 'ic_payable': 400, 'ic_purchases': 1000, 'ic_receivable': 400, 'ic_sales': 650}, 'mismatches': [['P', 'S1', 'ic_sales', -1000], ['S1', 'S2', 'ic_receivable', -400], ['S2', 'P', 'ic_receivable', 400], ['S2', 'P', 'ic_sales', 650]]}], ['control 1', [['P', 'ic_purchases', 'S1', 100], ['S1', 'ic_sales', 'P', 400], ['S2', 'ic_loan', 'S2', 1000], ['P', 'cash', None, 100]], {'consolidated': {'cash': 100, 'ic_loan': 1000, 'ic_sales': 300}, 'mismatches': [['S1', 'P', 'ic_sales', 300]]}], ['control 2', [['P', 'ic_purchases', 'S2', 250], ['S1', 'ic_sales', 'P', 1000], ['S2', 'ic_payable', 'S1', 250], ['S2', 'ic_loan', 'S1', 1000]], {'consolidated': {'ic_loan': 1000, 'ic_payable': 250, 'ic_purchases': 250, 'ic_sales': 1000}, 'mismatches': [['S1', 'P', 'ic_sales', 1000], ['S1', 'S2', 'ic_receivable', -250], ['S2', 'P', 'ic_sales', -250]]}], ['control 3', [['S2', 'cash', None, 250], ['S1', 'ic_loan', 'S2', 400], ['S1', 'ic_purchases', 'S2', 1000]], {'consolidated': {'cash': 250, 'ic_loan': 400, 'ic_purchases': 1000}, 'mismatches': [['S2', 'S1', 'ic_sales', -1000]]}], ['control 4', [['P', 'sales', None, 250], ['S2', 'ic_receivable', 'P', 100], ['S2', 'ic_payable', 'P', 250], ['S1', 'ic_loan', 'S2', 400], ['S1', 'ic_sales', 'S2', 250], ['S2', 'ic_receivable', None, 400], ['S2', 'ic_receivable', 'P', 400], ['P', 'cash', None, 400]], {'consolidated': {'cash': 400, 'ic_loan': 400, 'ic_payable': 250, 'ic_receivable': 900, 'ic_sales': 250, 'sales': 250}, 'mismatches': [['P', 'S2', 'ic_receivable', -250], ['S1', 'S2', 'ic_sales', 250], ['S2', 'P', 'ic_receivable', 500]]}], ['control 5', [['S2', 'ic_receivable', 'P', 400], ['P', 'ic_receivable', 'S2', 400], ['S2', 'ic_receivable', None, -1000]], {'consolidated': {'ic_receivable': -200}, 'mismatches': [['P', 'S2', 'ic_receivable', 400], ['S2', 'P', 'ic_receivable', 400]]}]]]\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"},"fixed":{"sha256":"320d6669a5f7049cc37a8d79f178faad0191d4b4e3bb09c6d7170346a482fde2","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    PAIRS = (('ic_receivable', 'ic_payable'), ('ic_sales', 'ic_purchases'))\n    PAIRED = {a for p in PAIRS for a in p}\n    cons = {}\n    ic = {}\n    for ent, acct, cp, amt in x:\n        if cp is None or cp == ent or acct not in PAIRED:\n            cons[acct] = cons.get(acct, 0) + amt\n        else:\n            ic[(ent, acct, cp)] = ic.get((ent, acct, cp), 0) + amt\n    keys = set()\n    for (ent, acct, cp) in ic:\n        for left, right in PAIRS:\n            if acct == left:\n                keys.add((ent, cp, left, right))\n            elif acct == right:\n                keys.add((cp, ent, left, right))\n    mism = []\n    for ent, cp, left, right in sorted(keys):\n        a = ic.get((ent, left, cp), 0)\n        b = ic.get((cp, right, ent), 0)\n        m = min(a, b)\n        if a != b:\n            mism.append([ent, cp, left, a - b])\n        if a - m:\n            cons[left] = cons.get(left, 0) + a - m\n        if b - m:\n            cons[right] = cons.get(right, 0) + b - m\n    return {'consolidated': {k: v for k, v in sorted(cons.items()) if v}, 'mismatches': mism}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression: self counterparty', [['P', 'ic_loan', 'S1', 400], ['S1', 'ic_loan', 'S1', 400], ['S1', 'ic_loan', 'S2', 100], ['P', 'ic_sales', 'P', 400], ['P', 'ic_purchases', 'S1', 400], ['S2', 'ic_sales', 'S1', 250]], {'consolidated': {'ic_loan': 900, 'ic_purchases': 400, 'ic_sales': 650}, 'mismatches': [['S1', 'P', 'ic_sales', -400], ['S2', 'S1', 'ic_sales', 250]]}], ['control 1', [['S1', 'ic_purchases', 'S2', 1000], ['S1', 'ic_loan', 'P', 250], ['S2', 'sales', None, -100]], {'consolidated': {'ic_loan': 250, 'ic_purchases': 1000, 'sales': -100}, 'mismatches': [['S2', 'S1', 'ic_sales', -1000]]}], ['control 2', [['S2', 'ic_receivable', 'P', 1000], ['P', 'ic_payable', 'S1', 400], ['S2', 'ic_purchases', 'S1', 100]], {'consolidated': {'ic_payable': 400, 'ic_purchases': 100, 'ic_receivable': 1000}, 'mismatches': [['S1', 'P', 'ic_receivable', -400], ['S1', 'S2', 'ic_sales', -100], ['S2', 'P', 'ic_receivable', 1000]]}], ['control 3', [['S2', 'cash', None, 400], ['S2', 'ic_receivable', 'S1', 250], ['S1', 'ic_loan', 'P', 400]], {'consolidated': {'cash': 400, 'ic_loan': 400, 'ic_receivable': 250}, 'mismatches': [['S2', 'S1', 'ic_receivable', 250]]}], ['control 4', [['S1', 'ic_payable', 'S2', 1000], ['S1', 'ic_receivable', 'S2', 250], ['S2', 'ic_payable', 'S1', 1000], ['S2', 'ic_payable', 'P', 1000]], {'consolidated': {'ic_payable': 2750}, 'mismatches': [['P', 'S2', 'ic_receivable', -1000], ['S1', 'S2', 'ic_receivable', -750], ['S2', 'S1', 'ic_receivable', -1000]]}], ['control 5', [['P', 'ic_purchases', 'S1', 100], ['S2', 'ic_loan', 'S2', 1000], ['P', 'ic_loan', 'S2', 400], ['S1', 'cash', None, 100], ['S2', 'ic_purchases', 'S1', 1000], ['P', 'ic_purchases', 'S2', 100]], {'consolidated': {'cash': 100, 'ic_loan': 1400, 'ic_purchases': 1200}, 'mismatches': [['S1', 'P', 'ic_sales', -100], ['S1', 'S2', 'ic_sales', -1000], ['S2', 'P', 'ic_sales', -100]]}], ['control 6', [['P', 'ic_payable', 'S1', 250], ['S1', 'ic_sales', 'P', 250], ['S2', 'ic_payable', 'P', 250], ['P', 'ic_payable', 'S2', 400], ['S2', 'cash', None, -400], ['S2', 'ic_purchases', 'P', 100]], {'consolidated': {'cash': -400, 'ic_payable': 900, 'ic_purchases': 100, 'ic_sales': 250}, 'mismatches': [['P', 'S2', 'ic_receivable', -250], ['P', 'S2', 'ic_sales', -100], ['S1', 'P', 'ic_receivable', -250], ['S1', 'P', 'ic_sales', 250], ['S2', 'P', 'ic_receivable', -400]]}]], [['regression: self counterparty', [['S1', 'ic_loan', 'S2', 400], ['P', 'ic_receivable', 'P', 400], ['S2', 'sales', None, -250], ['S2', 'ic_sales', 'P', 100], ['P', 'ic_receivable', 'S1', 1000]], {'consolidated': {'ic_loan': 400, 'ic_receivable': 1400, 'ic_sales': 100, 'sales': -250}, 'mismatches': [['P', 'S1', 'ic_receivable', 1000], ['S2', 'P', 'ic_sales', 100]]}], ['control 1', [['S1', 'ic_sales', 'P', 400], ['S2', 'ic_sales', 'S1', 400], ['S2', 'ic_purchases', 'S1', 1000]], {'consolidated': {'ic_purchases': 1000, 'ic_sales': 800}, 'mismatches': [['S1', 'P', 'ic_sales', 400], ['S1', 'S2', 'ic_sales', -1000], ['S2', 'S1', 'ic_sales', 400]]}], ['control 2', [['S1', 'cash', None, 400], ['P', 'ic_receivable', 'S1', 100], ['S1', 'ic_sales', 'P', 100]], {'consolidated': {'cash': 400, 'ic_receivable': 100, 'ic_sales': 100}, 'mismatches': [['P', 'S1', 'ic_receivable', 100], ['S1', 'P', 'ic_sales', 100]]}], ['control 3', [['S1', 'ic_sales', 'S2', 250], ['P', 'ic_receivable', 'S1', 400], ['S1', 'ic_loan', 'S2', 400]], {'consolidated': {'ic_loan': 400, 'ic_receivable': 400, 'ic_sales': 250}, 'mismatches': [['P', 'S1', 'ic_receivable', 400], ['S1', 'S2', 'ic_sales', 250]]}], ['control 4', [['S1', 'ic_receivable', None, 100], ['P', 'ic_loan', 'P', 1000], ['S2', 'ic_receivable', 'S1', 100], ['S1', 'ic_payable', 'S2', 400], ['S1', 'ic_sales', 'P', 250]], {'consolidated': {'ic_loan': 1000, 'ic_payable': 300, 'ic_receivable': 100, 'ic_sales': 250}, 'mismatches': [['S1', 'P', 'ic_sales', 250], ['S2', 'S1', 'ic_receivable', -300]]}], ['control 5', [['S1', 'ic_receivable', 'P', 100], ['P', 'ic_payable', 'S2', 100], ['P', 'ic_receivable', 'S1', 1000], ['P', 'ic_sales', 'S1', 100], ['P', 'ic_sales', 'S1', 1000], ['S2', 'ic_payable', 'P', 400], ['P', 'ic_purchases', 'S2', 1000]], {'consolidated': {'ic_payable': 500, 'ic_purchases': 1000, 'ic_receivable': 1100, 'ic_sales': 1100}, 'mismatches': [['P', 'S1', 'ic_receivable', 1000], ['P', 'S1', 'ic_sales', 1100], ['P', 'S2', 'ic_receivable', -400], ['S1', 'P', 'ic_receivable', 100], ['S2', 'P', 'ic_receivable', -100], ['S2', 'P', 'ic_sales', -1000]]}], ['control 6', [['P', 'cash', None, 400], ['S2', 'sales', None, -250], ['S1', 'ic_payable', 'S2', 400], ['S1', 'ic_receivable', 'S2', 100], ['P', 'sales', None, 250], ['P', 'ic_receivable', 'S2', 1000]], {'consolidated': {'cash': 400, 'ic_payable': 400, 'ic_receivable': 1100}, 'mismatches': [['P', 'S2', 'ic_receivable', 1000], ['S1', 'S2', 'ic_receivable', 100], ['S2', 'S1', 'ic_receivable', -400]]}]], [['regression: self counterparty', [['P', 'ic_receivable', None, -1000], ['P', 'ic_payable', 'P', 100], ['S1', 'ic_sales', 'S1', 400], ['S1', 'ic_payable', 'S2', 250], ['P', 'ic_sales', 'P', 100], ['S2', 'ic_receivable', 'S1', 400]], {'consolidated': {'ic_payable': 100, 'ic_receivable': -850, 'ic_sales': 500}, 'mismatches': [['S2', 'S1', 'ic_receivable', 150]]}], ['regression: self counterparty, partial-repair probe', [['P', 'ic_loan', 'P', 1000], ['S2', 'ic_sales', 'S2', 1000], ['S2', 'ic_payable', 'P', 400], ['S1', 'ic_loan', 'P', 1000], ['S1', 'ic_receivable', 'P', 1000], ['P', 'cash', None, 400], ['S2', 'ic_purchases', 'S1', 400], ['S1', 'ic_loan', 'S1', 100]], {'consolidated': {'cash': 400, 'ic_loan': 2100, 'ic_payable': 400, 'ic_purchases': 400, 'ic_receivable': 1000, 'ic_sales': 1000}, 'mismatches': [['P', 'S2', 'ic_receivable', -400], ['S1', 'P', 'ic_receivable', 1000], ['S1', 'S2', 'ic_sales', -400]]}], ['control 1', [['S2', 'ic_payable', 'P', 250], ['S2', 'ic_loan', 'S2', 1000], ['P', 'ic_loan', 'P', 250], ['S1', 'ic_receivable', 'S2', 400], ['P', 'ic_receivable', 'S1', 250], ['S2', 'ic_sales', 'P', 1000]], {'consolidated': {'ic_loan': 1250, 'ic_payable': 250, 'ic_receivable': 650, 'ic_sales': 1000}, 'mismatches': [['P', 'S1', 'ic_receivable', 250], ['P', 'S2', 'ic_receivable', -250], ['S1', 'S2', 'ic_receivable', 400], ['S2', 'P', 'ic_sales', 1000]]}], ['control 2', [['S1', 'ic_payable', 'P', 1000], ['S1', 'ic_loan', 'S1', 1000], ['P', 'ic_sales', 'S1', 400]], {'consolidated': {'ic_loan': 1000, 'ic_payable': 1000, 'ic_sales': 400}, 'mismatches': [['P', 'S1', 'ic_receivable', -1000], ['P', 'S1', 'ic_sales', 400]]}], ['control 3', [['S2', 'ic_purchases', 'S1', 250], ['S2', 'ic_loan', 'S1', 100], ['P', 'ic_loan', 'S2', 250]], {'consolidated': {'ic_loan': 350, 'ic_purchases': 250}, 'mismatches': [['S1', 'S2', 'ic_sales', -250]]}], ['control 4', [['S1', 'ic_sales', 'S2', 400], ['P', 'ic_receivable', 'S2', 400], ['S1', 'ic_payable', 'P', 400], ['P', 'ic_loan', 'P', 400], ['S1', 'cash', None, 100], ['S1', 'ic_receivable', None, 100], ['S1', 'ic_purchases', 'P', 400]], {'consolidated': {'cash': 100, 'ic_loan': 400, 'ic_payable': 400, 'ic_purchases': 400, 'ic_receivable': 500, 'ic_sales': 400}, 'mismatches': [['P', 'S1', 'ic_receivable', -400], ['P', 'S1', 'ic_sales', -400], ['P', 'S2', 'ic_receivable', 400], ['S1', 'S2', 'ic_sales', 400]]}], ['control 5', [['P', 'ic_receivable', None, -250], ['S1', 'sales', None, -250], ['S2', 'ic_sales', 'S1', 400]], {'consolidated': {'ic_receivable': -250, 'ic_sales': 400, 'sales': -250}, 'mismatches': [['S2', 'S1', 'ic_sales', 400]]}]], [['regression: self counterparty', [['P', 'ic_payable', 'S2', 400], ['S2', 'ic_purchases', 'S2', 400], ['S1', 'sales', None, -250], ['S1', 'ic_loan', 'S2', 100], ['P', 'ic_payable', 'S2', 400], ['P', 'ic_purchases', 'P', 100]], {'consolidated': {'ic_loan': 100, 'ic_payable': 800, 'ic_purchases': 500, 'sales': -250}, 'mismatches': [['S2', 'P', 'ic_receivable', -800]]}], ['control 1', [['S1', 'cash', None, 400], ['P', 'sales', None, -400], ['S1', 'ic_receivable', None, 1000]], {'consolidated': {'cash': 400, 'ic_receivable': 1000, 'sales': -400}, 'mismatches': []}], ['control 2', [['S2', 'ic_loan', 'S2', 250], ['S2', 'ic_loan', 'S1', 250], ['P', 'ic_loan', 'P', 400], ['S2', 'ic_purchases', 'P', 400], ['P', 'ic_payable', 'S1', 100], ['P', 'sales', None, -100]], {'consolidated': {'ic_loan': 900, 'ic_payable': 100, 'ic_purchases': 400, 'sales': -100}, 'mismatches': [['P', 'S2', 'ic_sales', -400], ['S1', 'P', 'ic_receivable', -100]]}], ['control 3', [['S2', 'ic_loan', 'S2', 100], ['S2', 'ic_purchases', 'S1', 250], ['S2', 'ic_payable', 'P', 100], ['P', 'ic_sales', 'S2', 400], ['P', 'ic_receivable', None, 250], ['S1', 'cash', None, -400], ['P', 'ic_purchases', 'S1', 1000], ['P', 'ic_payable', 'S2', 400]], {'consolidated': {'cash': -400, 'ic_loan': 100, 'ic_payable': 500, 'ic_purchases': 1250, 'ic_receivable': 250, 'ic_sales': 400}, 'mismatches': [['P', 'S2', 'ic_receivable', -100], ['P', 'S2', 'ic_sales', 400], ['S1', 'P', 'ic_sales', -1000], ['S1', 'S2', 'ic_sales', -250], ['S2', 'P', 'ic_receivable', -400]]}], ['control 4', [['S1', 'ic_payable', 'P', 1000], ['S2', 'ic_sales', 'S1', 400], ['S2', 'ic_purchases', 'S1', 1000], ['S1', 'ic_loan', 'P', 250]], {'consolidated': {'ic_loan': 250, 'ic_payable': 1000, 'ic_purchases': 1000, 'ic_sales': 400}, 'mismatches': [['P', 'S1', 'ic_receivable', -1000], ['S1', 'S2', 'ic_sales', -1000], ['S2', 'S1', 'ic_sales', 400]]}], ['control 5', [['S2', 'ic_payable', 'S1', 400], ['S2', 'ic_receivable', None, 400], ['S2', 'ic_loan', 'P', 1000], ['S2', 'ic_loan', 'S1', 400]], {'consolidated': {'ic_loan': 1400, 'ic_payable': 400, 'ic_receivable': 400}, 'mismatches': [['S1', 'S2', 'ic_receivable', -400]]}], ['control 6', [['P', 'ic_sales', 'S2', 100], ['P', 'ic_loan', 'S2', 100], ['S1', 'ic_receivable', None, 400]], {'consolidated': {'ic_loan': 100, 'ic_receivable': 400, 'ic_sales': 100}, 'mismatches': [['P', 'S2', 'ic_sales', 100]]}]], [['regression: self counterparty', [['S1', 'ic_purchases', 'S2', 400], ['S2', 'ic_purchases', 'S2', 400], ['P', 'ic_payable', 'S1', 400], ['S1', 'ic_sales', 'S1', 1000]], {'consolidated': {'ic_payable': 400, 'ic_purchases': 800, 'ic_sales': 1000}, 'mismatches': [['S1', 'P', 'ic_receivable', -400], ['S2', 'S1', 'ic_sales', -400]]}], ['regression: self counterparty, partial-repair probe', [['S2', 'ic_sales', 'P', 400], ['S2', 'ic_sales', 'P', 250], ['S2', 'ic_payable', 'S1', 400], ['S1', 'ic_purchases', 'P', 1000], ['P', 'ic_loan', 'S1', 100], ['S2', 'ic_receivable', 'P', 400], ['S2', 'cash', None, -1000]], {'consolidated': {'cash': -1000, 'ic_loan': 100, 'ic_payable': 400, 'ic_purchases': 1000, 'ic_receivable': 400, 'ic_sales': 650}, 'mismatches': [['P', 'S1', 'ic_sales', -1000], ['S1', 'S2', 'ic_receivable', -400], ['S2', 'P', 'ic_receivable', 400], ['S2', 'P', 'ic_sales', 650]]}], ['control 1', [['P', 'ic_purchases', 'S1', 100], ['S1', 'ic_sales', 'P', 400], ['S2', 'ic_loan', 'S2', 1000], ['P', 'cash', None, 100]], {'consolidated': {'cash': 100, 'ic_loan': 1000, 'ic_sales': 300}, 'mismatches': [['S1', 'P', 'ic_sales', 300]]}], ['control 2', [['P', 'ic_purchases', 'S2', 250], ['S1', 'ic_sales', 'P', 1000], ['S2', 'ic_payable', 'S1', 250], ['S2', 'ic_loan', 'S1', 1000]], {'consolidated': {'ic_loan': 1000, 'ic_payable': 250, 'ic_purchases': 250, 'ic_sales': 1000}, 'mismatches': [['S1', 'P', 'ic_sales', 1000], ['S1', 'S2', 'ic_receivable', -250], ['S2', 'P', 'ic_sales', -250]]}], ['control 3', [['S2', 'cash', None, 250], ['S1', 'ic_loan', 'S2', 400], ['S1', 'ic_purchases', 'S2', 1000]], {'consolidated': {'cash': 250, 'ic_loan': 400, 'ic_purchases': 1000}, 'mismatches': [['S2', 'S1', 'ic_sales', -1000]]}], ['control 4', [['P', 'sales', None, 250], ['S2', 'ic_receivable', 'P', 100], ['S2', 'ic_payable', 'P', 250], ['S1', 'ic_loan', 'S2', 400], ['S1', 'ic_sales', 'S2', 250], ['S2', 'ic_receivable', None, 400], ['S2', 'ic_receivable', 'P', 400], ['P', 'cash', None, 400]], {'consolidated': {'cash': 400, 'ic_loan': 400, 'ic_payable': 250, 'ic_receivable': 900, 'ic_sales': 250, 'sales': 250}, 'mismatches': [['P', 'S2', 'ic_receivable', -250], ['S1', 'S2', 'ic_sales', 250], ['S2', 'P', 'ic_receivable', 500]]}], ['control 5', [['S2', 'ic_receivable', 'P', 400], ['P', 'ic_receivable', 'S2', 400], ['S2', 'ic_receivable', None, -1000]], {'consolidated': {'ic_receivable': -200}, 'mismatches': [['P', 'S2', 'ic_receivable', 400], ['S2', 'P', 'ic_receivable', 400]]}]]]\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-intercompany-elimination-self-counterparty","generated_at":"2026-09-29T14:46:24.769646+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.","repair":"Consolidate rows whose counterparty is the entity itself.","root_cause":"Self-referencing rows are treated as intercompany.","sha256":"ad62667bea8906875737660f0e0e2d10e9d29f9e591e25f912c3e7620968561d","title":"Intercompany elimination: self counterparty · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":41.695,"exit_code":1,"observations":[{"actual":{"consolidated":{"ic_loan":400,"ic_purchases":400,"ic_sales":650},"mismatches":[["S1","P","ic_sales",-400],["S2","S1","ic_sales",250]]},"check":"regression: self counterparty","expected":{"consolidated":{"ic_loan":900,"ic_purchases":400,"ic_sales":650},"mismatches":[["S1","P","ic_sales",-400],["S2","S1","ic_sales",250]]},"passed":false},{"actual":{"consolidated":{"ic_purchases":1000,"sales":-100},"mismatches":[["S2","S1","ic_sales",-1000]]},"check":"control 1","expected":{"consolidated":{"ic_loan":250,"ic_purchases":1000,"sales":-100},"mismatches":[["S2","S1","ic_sales",-1000]]},"passed":false},{"actual":{"consolidated":{"ic_payable":400,"ic_purchases":100,"ic_receivable":1000},"mismatches":[["S1","P","ic_receivable",-400],["S1","S2","ic_sales",-100],["S2","P","ic_receivable",1000]]},"check":"control 2","expected":{"consolidated":{"ic_payable":400,"ic_purchases":100,"ic_receivable":1000},"mismatches":[["S1","P","ic_receivable",-400],["S1","S2","ic_sales",-100],["S2","P","ic_receivable",1000]]},"passed":true},{"actual":{"consolidated":{"cash":400,"ic_receivable":250},"mismatches":[["S2","S1","ic_receivable",250]]},"check":"control 3","expected":{"consolidated":{"cash":400,"ic_loan":400,"ic_receivable":250},"mismatches":[["S2","S1","ic_receivable",250]]},"passed":false},{"actual":{"consolidated":{"ic_payable":2750},"mismatches":[["P","S2","ic_receivable",-1000],["S1","S2","ic_receivable",-750],["S2","S1","ic_receivable",-1000]]},"check":"control 4","expected":{"consolidated":{"ic_payable":2750},"mismatches":[["P","S2","ic_receivable",-1000],["S1","S2","ic_receivable",-750],["S2","S1","ic_receivable",-1000]]},"passed":true},{"actual":{"consolidated":{"cash":100,"ic_loan":1000,"ic_purchases":1200},"mismatches":[["S1","P","ic_sales",-100],["S1","S2","ic_sales",-1000],["S2","P","ic_sales",-100]]},"check":"control 5","expected":{"consolidated":{"cash":100,"ic_loan":1400,"ic_purchases":1200},"mismatches":[["S1","P","ic_sales",-100],["S1","S2","ic_sales",-1000],["S2","P","ic_sales",-100]]},"passed":false},{"actual":{"consolidated":{"cash":-400,"ic_payable":900,"ic_purchases":100,"ic_sales":250},"mismatches":[["P","S2","ic_receivable",-250],["P","S2","ic_sales",-100],["S1","P","ic_receivable",-250],["S1","P","ic_sales",250],["S2","P","ic_receivable",-400]]},"check":"control 6","expected":{"consolidated":{"cash":-400,"ic_payable":900,"ic_purchases":100,"ic_sales":250},"mismatches":[["P","S2","ic_receivable",-250],["P","S2","ic_sales",-100],["S1","P","ic_receivable",-250],["S1","P","ic_sales",250],["S2","P","ic_receivable",-400]]},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: self counterparty\", \"actual\": {\"consolidated\": {\"ic_loan\": 400, \"ic_purchases\": 400, \"ic_sales\": 650}, \"mismatches\": [[\"S1\", \"P\", \"ic_sales\", -400], [\"S2\", \"S1\", \"ic_sales\", 250]]}, \"expected\": {\"consolidated\": {\"ic_loan\": 900, \"ic_purchases\": 400, \"ic_sales\": 650}, \"mismatches\": [[\"S1\", \"P\", \"ic_sales\", -400], [\"S2\", \"S1\", \"ic_sales\", 250]]}, \"passed\": false}, {\"check\": \"control 1\", \"actual\": {\"consolidated\": {\"ic_purchases\": 1000, \"sales\": -100}, \"mismatches\": [[\"S2\", \"S1\", \"ic_sales\", -1000]]}, \"expected\": {\"consolidated\": {\"ic_loan\": 250, \"ic_purchases\": 1000, \"sales\": -100}, \"mismatches\": [[\"S2\", \"S1\", \"ic_sales\", -1000]]}, \"passed\": false}, {\"check\": \"control 2\", \"actual\": {\"consolidated\": {\"ic_payable\": 400, \"ic_purchases\": 100, \"ic_receivable\": 1000}, \"mismatches\": [[\"S1\", \"P\", \"ic_receivable\", -400], [\"S1\", \"S2\", \"ic_sales\", -100], [\"S2\", \"P\", \"ic_receivable\", 1000]]}, \"expected\": {\"consolidated\": {\"ic_payable\": 400, \"ic_purchases\": 100, \"ic_receivable\": 1000}, \"mismatches\": [[\"S1\", \"P\", \"ic_receivable\", -400], [\"S1\", \"S2\", \"ic_sales\", -100], [\"S2\", \"P\", \"ic_receivable\", 1000]]}, \"passed\": true}, {\"check\": \"control 3\", \"actual\": {\"consolidated\": {\"cash\": 400, \"ic_receivable\": 250}, \"mismatches\": [[\"S2\", \"S1\", \"ic_receivable\", 250]]}, \"expected\": {\"consolidated\": {\"cash\": 400, \"ic_loan\": 400, \"ic_receivable\": 250}, \"mismatches\": [[\"S2\", \"S1\", \"ic_receivable\", 250]]}, \"passed\": false}, {\"check\": \"control 4\", \"actual\": {\"consolidated\": {\"ic_payable\": 2750}, \"mismatches\": [[\"P\", \"S2\", \"ic_receivable\", -1000], [\"S1\", \"S2\", \"ic_receivable\", -750], [\"S2\", \"S1\", \"ic_receivable\", -1000]]}, \"expected\": {\"consolidated\": {\"ic_payable\": 2750}, \"mismatches\": [[\"P\", \"S2\", \"ic_receivable\", -1000], [\"S1\", \"S2\", \"ic_receivable\", -750], [\"S2\", \"S1\", \"ic_receivable\", -1000]]}, \"passed\": true}, {\"check\": \"control 5\", \"actual\": {\"consolidated\": {\"cash\": 100, \"ic_loan\": 1000, \"ic_purchases\": 1200}, \"mismatches\": [[\"S1\", \"P\", \"ic_sales\", -100], [\"S1\", \"S2\", \"ic_sales\", -1000], [\"S2\", \"P\", \"ic_sales\", -100]]}, \"expected\": {\"consolidated\": {\"cash\": 100, \"ic_loan\": 1400, \"ic_purchases\": 1200}, \"mismatches\": [[\"S1\", \"P\", \"ic_sales\", -100], [\"S1\", \"S2\", \"ic_sales\", -1000], [\"S2\", \"P\", \"ic_sales\", -100]]}, \"passed\": false}, {\"check\": \"control 6\", \"actual\": {\"consolidated\": {\"cash\": -400, \"ic_payable\": 900, \"ic_purchases\": 100, \"ic_sales\": 250}, \"mismatches\": [[\"P\", \"S2\", \"ic_receivable\", -250], [\"P\", \"S2\", \"ic_sales\", -100], [\"S1\", \"P\", \"ic_receivable\", -250], [\"S1\", \"P\", \"ic_sales\", 250], [\"S2\", \"P\", \"ic_receivable\", -400]]}, \"expected\": {\"consolidated\": {\"cash\": -400, \"ic_payable\": 900, \"ic_purchases\": 100, \"ic_sales\": 250}, \"mismatches\": [[\"P\", \"S2\", \"ic_receivable\", -250], [\"P\", \"S2\", \"ic_sales\", -100], [\"S1\", \"P\", \"ic_receivable\", -250], [\"S1\", \"P\", \"ic_sales\", 250], [\"S2\", \"P\", \"ic_receivable\", -400]]}, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":43.343,"exit_code":1,"observations":[{"actual":{"consolidated":{"ic_loan":900,"ic_purchases":400,"ic_sales":650},"mismatches":[["P","P","ic_sales",400],["S1","P","ic_sales",-400],["S2","S1","ic_sales",250]]},"check":"regression: self counterparty","expected":{"consolidated":{"ic_loan":900,"ic_purchases":400,"ic_sales":650},"mismatches":[["S1","P","ic_sales",-400],["S2","S1","ic_sales",250]]},"passed":false},{"actual":{"consolidated":{"ic_loan":250,"ic_purchases":1000,"sales":-100},"mismatches":[["S2","S1","ic_sales",-1000]]},"check":"control 1","expected":{"consolidated":{"ic_loan":250,"ic_purchases":1000,"sales":-100},"mismatches":[["S2","S1","ic_sales",-1000]]},"passed":true},{"actual":{"consolidated":{"ic_payable":400,"ic_purchases":100,"ic_receivable":1000},"mismatches":[["S1","P","ic_receivable",-400],["S1","S2","ic_sales",-100],["S2","P","ic_receivable",1000]]},"check":"control 2","expected":{"consolidated":{"ic_payable":400,"ic_purchases":100,"ic_receivable":1000},"mismatches":[["S1","P","ic_receivable",-400],["S1","S2","ic_sales",-100],["S2","P","ic_receivable",1000]]},"passed":true},{"actual":{"consolidated":{"cash":400,"ic_loan":400,"ic_receivable":250},"mismatches":[["S2","S1","ic_receivable",250]]},"check":"control 3","expected":{"consolidated":{"cash":400,"ic_loan":400,"ic_receivable":250},"mismatches":[["S2","S1","ic_receivable",250]]},"passed":true},{"actual":{"consolidated":{"ic_payable":2750},"mismatches":[["P","S2","ic_receivable",-1000],["S1","S2","ic_receivable",-750],["S2","S1","ic_receivable",-1000]]},"check":"control 4","expected":{"consolidated":{"ic_payable":2750},"mismatches":[["P","S2","ic_receivable",-1000],["S1","S2","ic_receivable",-750],["S2","S1","ic_receivable",-1000]]},"passed":true},{"actual":{"consolidated":{"cash":100,"ic_loan":1400,"ic_purchases":1200},"mismatches":[["S1","P","ic_sales",-100],["S1","S2","ic_sales",-1000],["S2","P","ic_sales",-100]]},"check":"control 5","expected":{"consolidated":{"cash":100,"ic_loan":1400,"ic_purchases":1200},"mismatches":[["S1","P","ic_sales",-100],["S1","S2","ic_sales",-1000],["S2","P","ic_sales",-100]]},"passed":true},{"actual":{"consolidated":{"cash":-400,"ic_payable":900,"ic_purchases":100,"ic_sales":250},"mismatches":[["P","S2","ic_receivable",-250],["P","S2","ic_sales",-100],["S1","P","ic_receivable",-250],["S1","P","ic_sales",250],["S2","P","ic_receivable",-400]]},"check":"control 6","expected":{"consolidated":{"cash":-400,"ic_payable":900,"ic_purchases":100,"ic_sales":250},"mismatches":[["P","S2","ic_receivable",-250],["P","S2","ic_sales",-100],["S1","P","ic_receivable",-250],["S1","P","ic_sales",250],["S2","P","ic_receivable",-400]]},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: self counterparty\", \"actual\": {\"consolidated\": {\"ic_loan\": 900, \"ic_purchases\": 400, \"ic_sales\": 650}, \"mismatches\": [[\"P\", \"P\", \"ic_sales\", 400], [\"S1\", \"P\", \"ic_sales\", -400], [\"S2\", \"S1\", \"ic_sales\", 250]]}, \"expected\": {\"consolidated\": {\"ic_loan\": 900, \"ic_purchases\": 400, \"ic_sales\": 650}, \"mismatches\": [[\"S1\", \"P\", \"ic_sales\", -400], [\"S2\", \"S1\", \"ic_sales\", 250]]}, \"passed\": false}, {\"check\": \"control 1\", \"actual\": {\"consolidated\": {\"ic_loan\": 250, \"ic_purchases\": 1000, \"sales\": -100}, \"mismatches\": [[\"S2\", \"S1\", \"ic_sales\", -1000]]}, \"expected\": {\"consolidated\": {\"ic_loan\": 250, \"ic_purchases\": 1000, \"sales\": -100}, \"mismatches\": [[\"S2\", \"S1\", \"ic_sales\", -1000]]}, \"passed\": true}, {\"check\": \"control 2\", \"actual\": {\"consolidated\": {\"ic_payable\": 400, \"ic_purchases\": 100, \"ic_receivable\": 1000}, \"mismatches\": [[\"S1\", \"P\", \"ic_receivable\", -400], [\"S1\", \"S2\", \"ic_sales\", -100], [\"S2\", \"P\", \"ic_receivable\", 1000]]}, \"expected\": {\"consolidated\": {\"ic_payable\": 400, \"ic_purchases\": 100, \"ic_receivable\": 1000}, \"mismatches\": [[\"S1\", \"P\", \"ic_receivable\", -400], [\"S1\", \"S2\", \"ic_sales\", -100], [\"S2\", \"P\", \"ic_receivable\", 1000]]}, \"passed\": true}, {\"check\": \"control 3\", \"actual\": {\"consolidated\": {\"cash\": 400, \"ic_loan\": 400, \"ic_receivable\": 250}, \"mismatches\": [[\"S2\", \"S1\", \"ic_receivable\", 250]]}, \"expected\": {\"consolidated\": {\"cash\": 400, \"ic_loan\": 400, \"ic_receivable\": 250}, \"mismatches\": [[\"S2\", \"S1\", \"ic_receivable\", 250]]}, \"passed\": true}, {\"check\": \"control 4\", \"actual\": {\"consolidated\": {\"ic_payable\": 2750}, \"mismatches\": [[\"P\", \"S2\", \"ic_receivable\", -1000], [\"S1\", \"S2\", \"ic_receivable\", -750], [\"S2\", \"S1\", \"ic_receivable\", -1000]]}, \"expected\": {\"consolidated\": {\"ic_payable\": 2750}, \"mismatches\": [[\"P\", \"S2\", \"ic_receivable\", -1000], [\"S1\", \"S2\", \"ic_receivable\", -750], [\"S2\", \"S1\", \"ic_receivable\", -1000]]}, \"passed\": true}, {\"check\": \"control 5\", \"actual\": {\"consolidated\": {\"cash\": 100, \"ic_loan\": 1400, \"ic_purchases\": 1200}, \"mismatches\": [[\"S1\", \"P\", \"ic_sales\", -100], [\"S1\", \"S2\", \"ic_sales\", -1000], [\"S2\", \"P\", \"ic_sales\", -100]]}, \"expected\": {\"consolidated\": {\"cash\": 100, \"ic_loan\": 1400, \"ic_purchases\": 1200}, \"mismatches\": [[\"S1\", \"P\", \"ic_sales\", -100], [\"S1\", \"S2\", \"ic_sales\", -1000], [\"S2\", \"P\", \"ic_sales\", -100]]}, \"passed\": true}, {\"check\": \"control 6\", \"actual\": {\"consolidated\": {\"cash\": -400, \"ic_payable\": 900, \"ic_purchases\": 100, \"ic_sales\": 250}, \"mismatches\": [[\"P\", \"S2\", \"ic_receivable\", -250], [\"P\", \"S2\", \"ic_sales\", -100], [\"S1\", \"P\", \"ic_receivable\", -250], [\"S1\", \"P\", \"ic_sales\", 250], [\"S2\", \"P\", \"ic_receivable\", -400]]}, \"expected\": {\"consolidated\": {\"cash\": -400, \"ic_payable\": 900, \"ic_purchases\": 100, \"ic_sales\": 250}, \"mismatches\": [[\"P\", \"S2\", \"ic_receivable\", -250], [\"P\", \"S2\", \"ic_sales\", -100], [\"S1\", \"P\", \"ic_receivable\", -250], [\"S1\", \"P\", \"ic_sales\", 250], [\"S2\", \"P\", \"ic_receivable\", -400]]}, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":43.209,"exit_code":0,"observations":[{"actual":{"consolidated":{"ic_loan":900,"ic_purchases":400,"ic_sales":650},"mismatches":[["S1","P","ic_sales",-400],["S2","S1","ic_sales",250]]},"check":"regression: self counterparty","expected":{"consolidated":{"ic_loan":900,"ic_purchases":400,"ic_sales":650},"mismatches":[["S1","P","ic_sales",-400],["S2","S1","ic_sales",250]]},"passed":true},{"actual":{"consolidated":{"ic_loan":250,"ic_purchases":1000,"sales":-100},"mismatches":[["S2","S1","ic_sales",-1000]]},"check":"control 1","expected":{"consolidated":{"ic_loan":250,"ic_purchases":1000,"sales":-100},"mismatches":[["S2","S1","ic_sales",-1000]]},"passed":true},{"actual":{"consolidated":{"ic_payable":400,"ic_purchases":100,"ic_receivable":1000},"mismatches":[["S1","P","ic_receivable",-400],["S1","S2","ic_sales",-100],["S2","P","ic_receivable",1000]]},"check":"control 2","expected":{"consolidated":{"ic_payable":400,"ic_purchases":100,"ic_receivable":1000},"mismatches":[["S1","P","ic_receivable",-400],["S1","S2","ic_sales",-100],["S2","P","ic_receivable",1000]]},"passed":true},{"actual":{"consolidated":{"cash":400,"ic_loan":400,"ic_receivable":250},"mismatches":[["S2","S1","ic_receivable",250]]},"check":"control 3","expected":{"consolidated":{"cash":400,"ic_loan":400,"ic_receivable":250},"mismatches":[["S2","S1","ic_receivable",250]]},"passed":true},{"actual":{"consolidated":{"ic_payable":2750},"mismatches":[["P","S2","ic_receivable",-1000],["S1","S2","ic_receivable",-750],["S2","S1","ic_receivable",-1000]]},"check":"control 4","expected":{"consolidated":{"ic_payable":2750},"mismatches":[["P","S2","ic_receivable",-1000],["S1","S2","ic_receivable",-750],["S2","S1","ic_receivable",-1000]]},"passed":true},{"actual":{"consolidated":{"cash":100,"ic_loan":1400,"ic_purchases":1200},"mismatches":[["S1","P","ic_sales",-100],["S1","S2","ic_sales",-1000],["S2","P","ic_sales",-100]]},"check":"control 5","expected":{"consolidated":{"cash":100,"ic_loan":1400,"ic_purchases":1200},"mismatches":[["S1","P","ic_sales",-100],["S1","S2","ic_sales",-1000],["S2","P","ic_sales",-100]]},"passed":true},{"actual":{"consolidated":{"cash":-400,"ic_payable":900,"ic_purchases":100,"ic_sales":250},"mismatches":[["P","S2","ic_receivable",-250],["P","S2","ic_sales",-100],["S1","P","ic_receivable",-250],["S1","P","ic_sales",250],["S2","P","ic_receivable",-400]]},"check":"control 6","expected":{"consolidated":{"cash":-400,"ic_payable":900,"ic_purchases":100,"ic_sales":250},"mismatches":[["P","S2","ic_receivable",-250],["P","S2","ic_sales",-100],["S1","P","ic_receivable",-250],["S1","P","ic_sales",250],["S2","P","ic_receivable",-400]]},"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: self counterparty\", \"actual\": {\"consolidated\": {\"ic_loan\": 900, \"ic_purchases\": 400, \"ic_sales\": 650}, \"mismatches\": [[\"S1\", \"P\", \"ic_sales\", -400], [\"S2\", \"S1\", \"ic_sales\", 250]]}, \"expected\": {\"consolidated\": {\"ic_loan\": 900, \"ic_purchases\": 400, \"ic_sales\": 650}, \"mismatches\": [[\"S1\", \"P\", \"ic_sales\", -400], [\"S2\", \"S1\", \"ic_sales\", 250]]}, \"passed\": true}, {\"check\": \"control 1\", \"actual\": {\"consolidated\": {\"ic_loan\": 250, \"ic_purchases\": 1000, \"sales\": -100}, \"mismatches\": [[\"S2\", \"S1\", \"ic_sales\", -1000]]}, \"expected\": {\"consolidated\": {\"ic_loan\": 250, \"ic_purchases\": 1000, \"sales\": -100}, \"mismatches\": [[\"S2\", \"S1\", \"ic_sales\", -1000]]}, \"passed\": true}, {\"check\": \"control 2\", \"actual\": {\"consolidated\": {\"ic_payable\": 400, \"ic_purchases\": 100, \"ic_receivable\": 1000}, \"mismatches\": [[\"S1\", \"P\", \"ic_receivable\", -400], [\"S1\", \"S2\", \"ic_sales\", -100], [\"S2\", \"P\", \"ic_receivable\", 1000]]}, \"expected\": {\"consolidated\": {\"ic_payable\": 400, \"ic_purchases\": 100, \"ic_receivable\": 1000}, \"mismatches\": [[\"S1\", \"P\", \"ic_receivable\", -400], [\"S1\", \"S2\", \"ic_sales\", -100], [\"S2\", \"P\", \"ic_receivable\", 1000]]}, \"passed\": true}, {\"check\": \"control 3\", \"actual\": {\"consolidated\": {\"cash\": 400, \"ic_loan\": 400, \"ic_receivable\": 250}, \"mismatches\": [[\"S2\", \"S1\", \"ic_receivable\", 250]]}, \"expected\": {\"consolidated\": {\"cash\": 400, \"ic_loan\": 400, \"ic_receivable\": 250}, \"mismatches\": [[\"S2\", \"S1\", \"ic_receivable\", 250]]}, \"passed\": true}, {\"check\": \"control 4\", \"actual\": {\"consolidated\": {\"ic_payable\": 2750}, \"mismatches\": [[\"P\", \"S2\", \"ic_receivable\", -1000], [\"S1\", \"S2\", \"ic_receivable\", -750], [\"S2\", \"S1\", \"ic_receivable\", -1000]]}, \"expected\": {\"consolidated\": {\"ic_payable\": 2750}, \"mismatches\": [[\"P\", \"S2\", \"ic_receivable\", -1000], [\"S1\", \"S2\", \"ic_receivable\", -750], [\"S2\", \"S1\", \"ic_receivable\", -1000]]}, \"passed\": true}, {\"check\": \"control 5\", \"actual\": {\"consolidated\": {\"cash\": 100, \"ic_loan\": 1400, \"ic_purchases\": 1200}, \"mismatches\": [[\"S1\", \"P\", \"ic_sales\", -100], [\"S1\", \"S2\", \"ic_sales\", -1000], [\"S2\", \"P\", \"ic_sales\", -100]]}, \"expected\": {\"consolidated\": {\"cash\": 100, \"ic_loan\": 1400, \"ic_purchases\": 1200}, \"mismatches\": [[\"S1\", \"P\", \"ic_sales\", -100], [\"S1\", \"S2\", \"ic_sales\", -1000], [\"S2\", \"P\", \"ic_sales\", -100]]}, \"passed\": true}, {\"check\": \"control 6\", \"actual\": {\"consolidated\": {\"cash\": -400, \"ic_payable\": 900, \"ic_purchases\": 100, \"ic_sales\": 250}, \"mismatches\": [[\"P\", \"S2\", \"ic_receivable\", -250], [\"P\", \"S2\", \"ic_sales\", -100], [\"S1\", \"P\", \"ic_receivable\", -250], [\"S1\", \"P\", \"ic_sales\", 250], [\"S2\", \"P\", \"ic_receivable\", -400]]}, \"expected\": {\"consolidated\": {\"cash\": -400, \"ic_payable\": 900, \"ic_purchases\": 100, \"ic_sales\": 250}, \"mismatches\": [[\"P\", \"S2\", \"ic_receivable\", -250], [\"P\", \"S2\", \"ic_sales\", -100], [\"S1\", \"P\", \"ic_receivable\", -250], [\"S1\", \"P\", \"ic_sales\", 250], [\"S2\", \"P\", \"ic_receivable\", -400]]}, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}