{"abstract":"Unrealized OCI movements show up in net income.","category":"Double-entry ledger accounting","checks":7,"contract":"x = {'accounts': {name: [type, normal-signed balance]}, 'retained': opening retained earnings, 'aoci': opening accumulated OCI}. Temporary types are revenue, contra_revenue, expense, gain, loss, dividend and oci. Income summary = revenue - contra_revenue + gain - expense - loss and is net income. Retained earnings close = opening + net income - dividends. OCI closes to AOCI, never to income or retained earnings. 'closed' lists temporary accounts with a nonzero balance (including abnormal negative ones), sorted. Return {'net_income', 'retained', 'aoci', 'closed'}.","evaluation_group":"w2-double-entry-ledger-accounting-period-closing","failed_approach":"Routing OCI directly into retained earnings keeps it out of net income but still misstates retained earnings.","family":"w2-double-entry-ledger-accounting-period-closing-oci-routing","id":"FA-57916","implementations":{"attempt":{"sha256":"3b5058481913c9fa761a920cd0cd7cdeb03911e8131987531a3ebdd4ebfa7731","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    acc = x['accounts']\n    def total(kind):\n        return sum(b for k, b in acc.values() if k == kind)\n    rev = total('revenue')\n    contra = total('contra_revenue')\n    exp = total('expense')\n    gain = total('gain')\n    loss = total('loss')\n    div = total('dividend')\n    oci = total('oci')\n    income_summary = rev - contra + gain - exp - loss\n    retained = x['retained'] + income_summary - div + oci\n    aoci = x['aoci'] + oci\n    temporary = ('revenue', 'contra_revenue', 'expense', 'gain', 'loss', 'dividend', 'oci')\n    closed = sorted(n for n, (k, b) in acc.items() if k in temporary and b != 0)\n    return {'net_income': income_summary, 'retained': retained, 'aoci': aoci, 'closed': closed}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression: oci routing', {'accounts': {'oci_0': ['oci', 150], 'oci_1': ['oci', 400], 'expe_2': ['expense', 7500], 'loss_3': ['loss', 3000]}, 'retained': 1000, 'aoci': -100}, {'net_income': -10500, 'retained': -9500, 'aoci': 450, 'closed': ['expe_2', 'loss_3', 'oci_0', 'oci_1']}], ['control 1', {'accounts': {'reve_0': ['revenue', 1200], 'cont_1': ['contra_revenue', 3000], 'loss_2': ['loss', 3000], 'liab_3': ['liability', 400], 'loss_4': ['loss', -200], 'expe_5': ['expense', 0], 'divi_6': ['dividend', 3000], 'reve_7': ['revenue', 400], 'loss_8': ['loss', -200]}, 'retained': 1000, 'aoci': 0}, {'net_income': -4000, 'retained': -6000, 'aoci': 0, 'closed': ['cont_1', 'divi_6', 'loss_2', 'loss_4', 'loss_8', 'reve_0', 'reve_7']}], ['control 2', {'accounts': {'asse_0': ['asset', 400], 'gain_1': ['gain', 150], 'reve_2': ['revenue', 7500], 'gain_3': ['gain', 7500], 'asse_4': ['asset', 3000], 'reve_5': ['revenue', 3000], 'expe_6': ['expense', 400], 'reve_7': ['revenue', 400], 'reve_8': ['revenue', 3000]}, 'retained': 25000, 'aoci': 300}, {'net_income': 21150, 'retained': 46150, 'aoci': 300, 'closed': ['expe_6', 'gain_1', 'gain_3', 'reve_2', 'reve_5', 'reve_7', 'reve_8']}], ['control 3', {'accounts': {'asse_0': ['asset', 150], 'reve_1': ['revenue', 7500], 'divi_2': ['dividend', 0], 'gain_3': ['gain', 0], 'reve_4': ['revenue', 3000], 'gain_5': ['gain', 3000], 'asse_6': ['asset', 400]}, 'retained': 25000, 'aoci': 0}, {'net_income': 13500, 'retained': 38500, 'aoci': 0, 'closed': ['gain_5', 'reve_1', 'reve_4']}], ['control 4', {'accounts': {'reve_0': ['revenue', -200], 'reve_1': ['revenue', 0], 'expe_2': ['expense', 1200], 'loss_3': ['loss', 150]}, 'retained': 1000, 'aoci': 0}, {'net_income': -1550, 'retained': -550, 'aoci': 0, 'closed': ['expe_2', 'loss_3', 'reve_0']}], ['control 5', {'accounts': {'liab_0': ['liability', 150], 'gain_1': ['gain', 150], 'reve_2': ['revenue', 150], 'asse_3': ['asset', 7500], 'gain_4': ['gain', 0], 'expe_5': ['expense', 150], 'liab_6': ['liability', 0]}, 'retained': -500, 'aoci': 0}, {'net_income': 150, 'retained': -350, 'aoci': 0, 'closed': ['expe_5', 'gain_1', 'reve_2']}], ['control 6', {'accounts': {'cont_0': ['contra_revenue', 150], 'divi_1': ['dividend', 150], 'divi_2': ['dividend', -200], 'asse_3': ['asset', 3000]}, 'retained': 1000, 'aoci': -100}, {'net_income': -150, 'retained': 900, 'aoci': -100, 'closed': ['cont_0', 'divi_1', 'divi_2']}]], [['regression: oci routing', {'accounts': {'asse_0': ['asset', 7500], 'expe_1': ['expense', 7500], 'gain_2': ['gain', 400], 'loss_3': ['loss', 0], 'liab_4': ['liability', 400], 'oci_5': ['oci', -200], 'cont_6': ['contra_revenue', 150], 'oci_7': ['oci', -200]}, 'retained': 25000, 'aoci': 300}, {'net_income': -7250, 'retained': 17750, 'aoci': -100, 'closed': ['cont_6', 'expe_1', 'gain_2', 'oci_5', 'oci_7']}], ['control 1', {'accounts': {'reve_0': ['revenue', 1200], 'expe_1': ['expense', 7500], 'asse_2': ['asset', -200], 'cont_3': ['contra_revenue', 7500], 'cont_4': ['contra_revenue', 7500], 'divi_5': ['dividend', 7500], 'divi_6': ['dividend', 3000], 'cont_7': ['contra_revenue', 7500]}, 'retained': 0, 'aoci': -100}, {'net_income': -28800, 'retained': -39300, 'aoci': -100, 'closed': ['cont_3', 'cont_4', 'cont_7', 'divi_5', 'divi_6', 'expe_1', 'reve_0']}], ['control 2', {'accounts': {'cont_0': ['contra_revenue', 400], 'expe_1': ['expense', 400], 'loss_2': ['loss', 0], 'loss_3': ['loss', 150], 'cont_4': ['contra_revenue', 400], 'cont_5': ['contra_revenue', 3000]}, 'retained': 0, 'aoci': 300}, {'net_income': -4350, 'retained': -4350, 'aoci': 300, 'closed': ['cont_0', 'cont_4', 'cont_5', 'expe_1', 'loss_3']}], ['control 3', {'accounts': {'reve_0': ['revenue', 0], 'loss_1': ['loss', 0], 'reve_2': ['revenue', 7500], 'gain_3': ['gain', 0], 'divi_4': ['dividend', 150], 'divi_5': ['dividend', 1200]}, 'retained': 25000, 'aoci': -100}, {'net_income': 7500, 'retained': 31150, 'aoci': -100, 'closed': ['divi_4', 'divi_5', 'reve_2']}], ['control 4', {'accounts': {'reve_0': ['revenue', -200], 'gain_1': ['gain', 400], 'liab_2': ['liability', 400], 'expe_3': ['expense', 150], 'expe_4': ['expense', 0], 'reve_5': ['revenue', 400]}, 'retained': 0, 'aoci': 0}, {'net_income': 450, 'retained': 450, 'aoci': 0, 'closed': ['expe_3', 'gain_1', 'reve_0', 'reve_5']}], ['control 5', {'accounts': {'gain_0': ['gain', -200], 'reve_1': ['revenue', 1200], 'loss_2': ['loss', 7500], 'asse_3': ['asset', 0], 'divi_4': ['dividend', 150], 'liab_5': ['liability', 0], 'liab_6': ['liability', 3000], 'reve_7': ['revenue', 150]}, 'retained': 0, 'aoci': 0}, {'net_income': -6350, 'retained': -6500, 'aoci': 0, 'closed': ['divi_4', 'gain_0', 'loss_2', 'reve_1', 'reve_7']}], ['control 6', {'accounts': {'loss_0': ['loss', 7500], 'cont_1': ['contra_revenue', 400], 'reve_2': ['revenue', 0], 'loss_3': ['loss', 7500], 'expe_4': ['expense', 1200], 'reve_5': ['revenue', 150]}, 'retained': 0, 'aoci': -100}, {'net_income': -16450, 'retained': -16450, 'aoci': -100, 'closed': ['cont_1', 'expe_4', 'loss_0', 'loss_3', 'reve_5']}]], [['regression: oci routing', {'accounts': {'liab_0': ['liability', 1200], 'cont_1': ['contra_revenue', 400], 'expe_2': ['expense', 1200], 'loss_3': ['loss', 400], 'liab_4': ['liability', 1200], 'expe_5': ['expense', 400], 'asse_6': ['asset', 3000], 'oci_7': ['oci', 3000]}, 'retained': 0, 'aoci': 0}, {'net_income': -2400, 'retained': -2400, 'aoci': 3000, 'closed': ['cont_1', 'expe_2', 'expe_5', 'loss_3', 'oci_7']}], ['control 1', {'accounts': {'cont_0': ['contra_revenue', -200], 'expe_1': ['expense', -200], 'liab_2': ['liability', 0], 'asse_3': ['asset', 3000], 'gain_4': ['gain', 1200], 'gain_5': ['gain', 150], 'liab_6': ['liability', 1200], 'gain_7': ['gain', 400], 'liab_8': ['liability', 0]}, 'retained': 25000, 'aoci': -100}, {'net_income': 2150, 'retained': 27150, 'aoci': -100, 'closed': ['cont_0', 'expe_1', 'gain_4', 'gain_5', 'gain_7']}], ['control 2', {'accounts': {'reve_0': ['revenue', 400], 'gain_1': ['gain', 0], 'liab_2': ['liability', 400], 'gain_3': ['gain', -200], 'asse_4': ['asset', 0], 'divi_5': ['dividend', 400]}, 'retained': 0, 'aoci': 300}, {'net_income': 200, 'retained': -200, 'aoci': 300, 'closed': ['divi_5', 'gain_3', 'reve_0']}], ['control 3', {'accounts': {'reve_0': ['revenue', 3000], 'liab_1': ['liability', -200], 'asse_2': ['asset', 7500], 'asse_3': ['asset', 0]}, 'retained': -500, 'aoci': -100}, {'net_income': 3000, 'retained': 2500, 'aoci': -100, 'closed': ['reve_0']}], ['control 4', {'accounts': {'liab_0': ['liability', 150], 'divi_1': ['dividend', 7500], 'reve_2': ['revenue', 400], 'liab_3': ['liability', 1200], 'expe_4': ['expense', -200], 'divi_5': ['dividend', 0], 'expe_6': ['expense', 0]}, 'retained': 0, 'aoci': 0}, {'net_income': 600, 'retained': -6900, 'aoci': 0, 'closed': ['divi_1', 'expe_4', 'reve_2']}], ['control 5', {'accounts': {'divi_0': ['dividend', 3000], 'reve_1': ['revenue', 150], 'loss_2': ['loss', 400], 'loss_3': ['loss', 0], 'asse_4': ['asset', -200], 'cont_5': ['contra_revenue', 1200], 'expe_6': ['expense', 400]}, 'retained': 0, 'aoci': 300}, {'net_income': -1850, 'retained': -4850, 'aoci': 300, 'closed': ['cont_5', 'divi_0', 'expe_6', 'loss_2', 'reve_1']}], ['control 6', {'accounts': {'expe_0': ['expense', -200], 'expe_1': ['expense', 7500], 'oci_2': ['oci', 0], 'divi_3': ['dividend', 400], 'reve_4': ['revenue', 400], 'asse_5': ['asset', 0]}, 'retained': 1000, 'aoci': 0}, {'net_income': -6900, 'retained': -6300, 'aoci': 0, 'closed': ['divi_3', 'expe_0', 'expe_1', 'reve_4']}]], [['regression: oci routing', {'accounts': {'oci_0': ['oci', 1200], 'liab_1': ['liability', 3000], 'expe_2': ['expense', 1200], 'loss_3': ['loss', 3000], 'liab_4': ['liability', 1200], 'loss_5': ['loss', 150], 'asse_6': ['asset', -200]}, 'retained': -500, 'aoci': 300}, {'net_income': -4350, 'retained': -4850, 'aoci': 1500, 'closed': ['expe_2', 'loss_3', 'loss_5', 'oci_0']}], ['control 1', {'accounts': {'divi_0': ['dividend', 150], 'divi_1': ['dividend', -200], 'asse_2': ['asset', 150], 'cont_3': ['contra_revenue', 400], 'gain_4': ['gain', 150]}, 'retained': 0, 'aoci': 300}, {'net_income': -250, 'retained': -200, 'aoci': 300, 'closed': ['cont_3', 'divi_0', 'divi_1', 'gain_4']}], ['control 2', {'accounts': {'gain_0': ['gain', 1200], 'asse_1': ['asset', 3000], 'cont_2': ['contra_revenue', 400], 'expe_3': ['expense', 3000], 'cont_4': ['contra_revenue', 7500], 'expe_5': ['expense', 0]}, 'retained': 0, 'aoci': 0}, {'net_income': -9700, 'retained': -9700, 'aoci': 0, 'closed': ['cont_2', 'cont_4', 'expe_3', 'gain_0']}], ['control 3', {'accounts': {'divi_0': ['dividend', -200], 'loss_1': ['loss', 1200], 'loss_2': ['loss', -200], 'cont_3': ['contra_revenue', 3000], 'cont_4': ['contra_revenue', 7500], 'expe_5': ['expense', 3000], 'divi_6': ['dividend', 1200]}, 'retained': 0, 'aoci': 0}, {'net_income': -14500, 'retained': -15500, 'aoci': 0, 'closed': ['cont_3', 'cont_4', 'divi_0', 'divi_6', 'expe_5', 'loss_1', 'loss_2']}], ['control 4', {'accounts': {'asse_0': ['asset', 7500], 'divi_1': ['dividend', 400], 'liab_2': ['liability', 400], 'reve_3': ['revenue', 3000], 'gain_4': ['gain', 400], 'expe_5': ['expense', 3000], 'loss_6': ['loss', 3000]}, 'retained': 1000, 'aoci': 300}, {'net_income': -2600, 'retained': -2000, 'aoci': 300, 'closed': ['divi_1', 'expe_5', 'gain_4', 'loss_6', 'reve_3']}], ['control 5', {'accounts': {'liab_0': ['liability', -200], 'reve_1': ['revenue', 3000], 'asse_2': ['asset', 3000], 'reve_3': ['revenue', 3000], 'liab_4': ['liability', 3000], 'reve_5': ['revenue', 0], 'liab_6': ['liability', 150]}, 'retained': -500, 'aoci': 0}, {'net_income': 6000, 'retained': 5500, 'aoci': 0, 'closed': ['reve_1', 'reve_3']}], ['control 6', {'accounts': {'liab_0': ['liability', 400], 'divi_1': ['dividend', 7500], 'reve_2': ['revenue', 3000], 'liab_3': ['liability', 150]}, 'retained': 0, 'aoci': 300}, {'net_income': 3000, 'retained': -4500, 'aoci': 300, 'closed': ['divi_1', 'reve_2']}]], [['regression: oci routing', {'accounts': {'oci_0': ['oci', 0], 'gain_1': ['gain', 0], 'oci_2': ['oci', 3000], 'expe_3': ['expense', 150], 'loss_4': ['loss', 150], 'divi_5': ['dividend', 150], 'cont_6': ['contra_revenue', 1200], 'expe_7': ['expense', 7500]}, 'retained': -500, 'aoci': 300}, {'net_income': -9000, 'retained': -9650, 'aoci': 3300, 'closed': ['cont_6', 'divi_5', 'expe_3', 'expe_7', 'loss_4', 'oci_2']}], ['control 1', {'accounts': {'asse_0': ['asset', 0], 'expe_1': ['expense', 1200], 'loss_2': ['loss', -200], 'divi_3': ['dividend', 1200], 'liab_4': ['liability', 0], 'asse_5': ['asset', 150], 'expe_6': ['expense', 400], 'asse_7': ['asset', 150]}, 'retained': 1000, 'aoci': -100}, {'net_income': -1400, 'retained': -1600, 'aoci': -100, 'closed': ['divi_3', 'expe_1', 'expe_6', 'loss_2']}], ['control 2', {'accounts': {'gain_0': ['gain', 3000], 'expe_1': ['expense', -200], 'asse_2': ['asset', 0], 'expe_3': ['expense', 150], 'asse_4': ['asset', 7500], 'gain_5': ['gain', 400], 'divi_6': ['dividend', 150], 'expe_7': ['expense', 3000], 'reve_8': ['revenue', 150]}, 'retained': -500, 'aoci': 0}, {'net_income': 600, 'retained': -50, 'aoci': 0, 'closed': ['divi_6', 'expe_1', 'expe_3', 'expe_7', 'gain_0', 'gain_5', 'reve_8']}], ['control 3', {'accounts': {'asse_0': ['asset', -200], 'expe_1': ['expense', 1200], 'liab_2': ['liability', 150], 'divi_3': ['dividend', 7500], 'asse_4': ['asset', -200], 'reve_5': ['revenue', 3000], 'divi_6': ['dividend', 400], 'reve_7': ['revenue', 1200]}, 'retained': -500, 'aoci': 0}, {'net_income': 3000, 'retained': -5400, 'aoci': 0, 'closed': ['divi_3', 'divi_6', 'expe_1', 'reve_5', 'reve_7']}], ['control 4', {'accounts': {'asse_0': ['asset', 400], 'expe_1': ['expense', 0], 'asse_2': ['asset', 150], 'loss_3': ['loss', 1200], 'asse_4': ['asset', 150], 'gain_5': ['gain', 7500], 'expe_6': ['expense', 150]}, 'retained': 0, 'aoci': -100}, {'net_income': 6150, 'retained': 6150, 'aoci': -100, 'closed': ['expe_6', 'gain_5', 'loss_3']}], ['control 5', {'accounts': {'loss_0': ['loss', 1200], 'loss_1': ['loss', -200], 'divi_2': ['dividend', 3000], 'loss_3': ['loss', 150], 'expe_4': ['expense', -200]}, 'retained': -500, 'aoci': 300}, {'net_income': -950, 'retained': -4450, 'aoci': 300, 'closed': ['divi_2', 'expe_4', 'loss_0', 'loss_1', 'loss_3']}], ['control 6', {'accounts': {'expe_0': ['expense', 150], 'divi_1': ['dividend', 3000], 'expe_2': ['expense', 7500], 'asse_3': ['asset', 1200], 'loss_4': ['loss', 7500], 'reve_5': ['revenue', 3000], 'oci_6': ['oci', 0], 'divi_7': ['dividend', -200]}, 'retained': -500, 'aoci': 0}, {'net_income': -12150, 'retained': -15450, 'aoci': 0, 'closed': ['divi_1', 'divi_7', 'expe_0', 'expe_2', 'loss_4', 'reve_5']}]]]\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":"6c57cb5d9a416b1a444750ee89cc6fc29dfd1fa5353ce49bd535517ade62dc7d","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    acc = x['accounts']\n    def total(kind):\n        return sum(b for k, b in acc.values() if k == kind)\n    rev = total('revenue')\n    contra = total('contra_revenue')\n    exp = total('expense')\n    gain = total('gain')\n    loss = total('loss')\n    div = total('dividend')\n    oci = total('oci')\n    income_summary = rev - contra + gain - exp - loss + oci\n    retained = x['retained'] + income_summary - div\n    aoci = x['aoci'] + oci\n    temporary = ('revenue', 'contra_revenue', 'expense', 'gain', 'loss', 'dividend', 'oci')\n    closed = sorted(n for n, (k, b) in acc.items() if k in temporary and b != 0)\n    return {'net_income': income_summary, 'retained': retained, 'aoci': aoci, 'closed': closed}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression: oci routing', {'accounts': {'oci_0': ['oci', 150], 'oci_1': ['oci', 400], 'expe_2': ['expense', 7500], 'loss_3': ['loss', 3000]}, 'retained': 1000, 'aoci': -100}, {'net_income': -10500, 'retained': -9500, 'aoci': 450, 'closed': ['expe_2', 'loss_3', 'oci_0', 'oci_1']}], ['control 1', {'accounts': {'reve_0': ['revenue', 1200], 'cont_1': ['contra_revenue', 3000], 'loss_2': ['loss', 3000], 'liab_3': ['liability', 400], 'loss_4': ['loss', -200], 'expe_5': ['expense', 0], 'divi_6': ['dividend', 3000], 'reve_7': ['revenue', 400], 'loss_8': ['loss', -200]}, 'retained': 1000, 'aoci': 0}, {'net_income': -4000, 'retained': -6000, 'aoci': 0, 'closed': ['cont_1', 'divi_6', 'loss_2', 'loss_4', 'loss_8', 'reve_0', 'reve_7']}], ['control 2', {'accounts': {'asse_0': ['asset', 400], 'gain_1': ['gain', 150], 'reve_2': ['revenue', 7500], 'gain_3': ['gain', 7500], 'asse_4': ['asset', 3000], 'reve_5': ['revenue', 3000], 'expe_6': ['expense', 400], 'reve_7': ['revenue', 400], 'reve_8': ['revenue', 3000]}, 'retained': 25000, 'aoci': 300}, {'net_income': 21150, 'retained': 46150, 'aoci': 300, 'closed': ['expe_6', 'gain_1', 'gain_3', 'reve_2', 'reve_5', 'reve_7', 'reve_8']}], ['control 3', {'accounts': {'asse_0': ['asset', 150], 'reve_1': ['revenue', 7500], 'divi_2': ['dividend', 0], 'gain_3': ['gain', 0], 'reve_4': ['revenue', 3000], 'gain_5': ['gain', 3000], 'asse_6': ['asset', 400]}, 'retained': 25000, 'aoci': 0}, {'net_income': 13500, 'retained': 38500, 'aoci': 0, 'closed': ['gain_5', 'reve_1', 'reve_4']}], ['control 4', {'accounts': {'reve_0': ['revenue', -200], 'reve_1': ['revenue', 0], 'expe_2': ['expense', 1200], 'loss_3': ['loss', 150]}, 'retained': 1000, 'aoci': 0}, {'net_income': -1550, 'retained': -550, 'aoci': 0, 'closed': ['expe_2', 'loss_3', 'reve_0']}], ['control 5', {'accounts': {'liab_0': ['liability', 150], 'gain_1': ['gain', 150], 'reve_2': ['revenue', 150], 'asse_3': ['asset', 7500], 'gain_4': ['gain', 0], 'expe_5': ['expense', 150], 'liab_6': ['liability', 0]}, 'retained': -500, 'aoci': 0}, {'net_income': 150, 'retained': -350, 'aoci': 0, 'closed': ['expe_5', 'gain_1', 'reve_2']}], ['control 6', {'accounts': {'cont_0': ['contra_revenue', 150], 'divi_1': ['dividend', 150], 'divi_2': ['dividend', -200], 'asse_3': ['asset', 3000]}, 'retained': 1000, 'aoci': -100}, {'net_income': -150, 'retained': 900, 'aoci': -100, 'closed': ['cont_0', 'divi_1', 'divi_2']}]], [['regression: oci routing', {'accounts': {'asse_0': ['asset', 7500], 'expe_1': ['expense', 7500], 'gain_2': ['gain', 400], 'loss_3': ['loss', 0], 'liab_4': ['liability', 400], 'oci_5': ['oci', -200], 'cont_6': ['contra_revenue', 150], 'oci_7': ['oci', -200]}, 'retained': 25000, 'aoci': 300}, {'net_income': -7250, 'retained': 17750, 'aoci': -100, 'closed': ['cont_6', 'expe_1', 'gain_2', 'oci_5', 'oci_7']}], ['control 1', {'accounts': {'reve_0': ['revenue', 1200], 'expe_1': ['expense', 7500], 'asse_2': ['asset', -200], 'cont_3': ['contra_revenue', 7500], 'cont_4': ['contra_revenue', 7500], 'divi_5': ['dividend', 7500], 'divi_6': ['dividend', 3000], 'cont_7': ['contra_revenue', 7500]}, 'retained': 0, 'aoci': -100}, {'net_income': -28800, 'retained': -39300, 'aoci': -100, 'closed': ['cont_3', 'cont_4', 'cont_7', 'divi_5', 'divi_6', 'expe_1', 'reve_0']}], ['control 2', {'accounts': {'cont_0': ['contra_revenue', 400], 'expe_1': ['expense', 400], 'loss_2': ['loss', 0], 'loss_3': ['loss', 150], 'cont_4': ['contra_revenue', 400], 'cont_5': ['contra_revenue', 3000]}, 'retained': 0, 'aoci': 300}, {'net_income': -4350, 'retained': -4350, 'aoci': 300, 'closed': ['cont_0', 'cont_4', 'cont_5', 'expe_1', 'loss_3']}], ['control 3', {'accounts': {'reve_0': ['revenue', 0], 'loss_1': ['loss', 0], 'reve_2': ['revenue', 7500], 'gain_3': ['gain', 0], 'divi_4': ['dividend', 150], 'divi_5': ['dividend', 1200]}, 'retained': 25000, 'aoci': -100}, {'net_income': 7500, 'retained': 31150, 'aoci': -100, 'closed': ['divi_4', 'divi_5', 'reve_2']}], ['control 4', {'accounts': {'reve_0': ['revenue', -200], 'gain_1': ['gain', 400], 'liab_2': ['liability', 400], 'expe_3': ['expense', 150], 'expe_4': ['expense', 0], 'reve_5': ['revenue', 400]}, 'retained': 0, 'aoci': 0}, {'net_income': 450, 'retained': 450, 'aoci': 0, 'closed': ['expe_3', 'gain_1', 'reve_0', 'reve_5']}], ['control 5', {'accounts': {'gain_0': ['gain', -200], 'reve_1': ['revenue', 1200], 'loss_2': ['loss', 7500], 'asse_3': ['asset', 0], 'divi_4': ['dividend', 150], 'liab_5': ['liability', 0], 'liab_6': ['liability', 3000], 'reve_7': ['revenue', 150]}, 'retained': 0, 'aoci': 0}, {'net_income': -6350, 'retained': -6500, 'aoci': 0, 'closed': ['divi_4', 'gain_0', 'loss_2', 'reve_1', 'reve_7']}], ['control 6', {'accounts': {'loss_0': ['loss', 7500], 'cont_1': ['contra_revenue', 400], 'reve_2': ['revenue', 0], 'loss_3': ['loss', 7500], 'expe_4': ['expense', 1200], 'reve_5': ['revenue', 150]}, 'retained': 0, 'aoci': -100}, {'net_income': -16450, 'retained': -16450, 'aoci': -100, 'closed': ['cont_1', 'expe_4', 'loss_0', 'loss_3', 'reve_5']}]], [['regression: oci routing', {'accounts': {'liab_0': ['liability', 1200], 'cont_1': ['contra_revenue', 400], 'expe_2': ['expense', 1200], 'loss_3': ['loss', 400], 'liab_4': ['liability', 1200], 'expe_5': ['expense', 400], 'asse_6': ['asset', 3000], 'oci_7': ['oci', 3000]}, 'retained': 0, 'aoci': 0}, {'net_income': -2400, 'retained': -2400, 'aoci': 3000, 'closed': ['cont_1', 'expe_2', 'expe_5', 'loss_3', 'oci_7']}], ['control 1', {'accounts': {'cont_0': ['contra_revenue', -200], 'expe_1': ['expense', -200], 'liab_2': ['liability', 0], 'asse_3': ['asset', 3000], 'gain_4': ['gain', 1200], 'gain_5': ['gain', 150], 'liab_6': ['liability', 1200], 'gain_7': ['gain', 400], 'liab_8': ['liability', 0]}, 'retained': 25000, 'aoci': -100}, {'net_income': 2150, 'retained': 27150, 'aoci': -100, 'closed': ['cont_0', 'expe_1', 'gain_4', 'gain_5', 'gain_7']}], ['control 2', {'accounts': {'reve_0': ['revenue', 400], 'gain_1': ['gain', 0], 'liab_2': ['liability', 400], 'gain_3': ['gain', -200], 'asse_4': ['asset', 0], 'divi_5': ['dividend', 400]}, 'retained': 0, 'aoci': 300}, {'net_income': 200, 'retained': -200, 'aoci': 300, 'closed': ['divi_5', 'gain_3', 'reve_0']}], ['control 3', {'accounts': {'reve_0': ['revenue', 3000], 'liab_1': ['liability', -200], 'asse_2': ['asset', 7500], 'asse_3': ['asset', 0]}, 'retained': -500, 'aoci': -100}, {'net_income': 3000, 'retained': 2500, 'aoci': -100, 'closed': ['reve_0']}], ['control 4', {'accounts': {'liab_0': ['liability', 150], 'divi_1': ['dividend', 7500], 'reve_2': ['revenue', 400], 'liab_3': ['liability', 1200], 'expe_4': ['expense', -200], 'divi_5': ['dividend', 0], 'expe_6': ['expense', 0]}, 'retained': 0, 'aoci': 0}, {'net_income': 600, 'retained': -6900, 'aoci': 0, 'closed': ['divi_1', 'expe_4', 'reve_2']}], ['control 5', {'accounts': {'divi_0': ['dividend', 3000], 'reve_1': ['revenue', 150], 'loss_2': ['loss', 400], 'loss_3': ['loss', 0], 'asse_4': ['asset', -200], 'cont_5': ['contra_revenue', 1200], 'expe_6': ['expense', 400]}, 'retained': 0, 'aoci': 300}, {'net_income': -1850, 'retained': -4850, 'aoci': 300, 'closed': ['cont_5', 'divi_0', 'expe_6', 'loss_2', 'reve_1']}], ['control 6', {'accounts': {'expe_0': ['expense', -200], 'expe_1': ['expense', 7500], 'oci_2': ['oci', 0], 'divi_3': ['dividend', 400], 'reve_4': ['revenue', 400], 'asse_5': ['asset', 0]}, 'retained': 1000, 'aoci': 0}, {'net_income': -6900, 'retained': -6300, 'aoci': 0, 'closed': ['divi_3', 'expe_0', 'expe_1', 'reve_4']}]], [['regression: oci routing', {'accounts': {'oci_0': ['oci', 1200], 'liab_1': ['liability', 3000], 'expe_2': ['expense', 1200], 'loss_3': ['loss', 3000], 'liab_4': ['liability', 1200], 'loss_5': ['loss', 150], 'asse_6': ['asset', -200]}, 'retained': -500, 'aoci': 300}, {'net_income': -4350, 'retained': -4850, 'aoci': 1500, 'closed': ['expe_2', 'loss_3', 'loss_5', 'oci_0']}], ['control 1', {'accounts': {'divi_0': ['dividend', 150], 'divi_1': ['dividend', -200], 'asse_2': ['asset', 150], 'cont_3': ['contra_revenue', 400], 'gain_4': ['gain', 150]}, 'retained': 0, 'aoci': 300}, {'net_income': -250, 'retained': -200, 'aoci': 300, 'closed': ['cont_3', 'divi_0', 'divi_1', 'gain_4']}], ['control 2', {'accounts': {'gain_0': ['gain', 1200], 'asse_1': ['asset', 3000], 'cont_2': ['contra_revenue', 400], 'expe_3': ['expense', 3000], 'cont_4': ['contra_revenue', 7500], 'expe_5': ['expense', 0]}, 'retained': 0, 'aoci': 0}, {'net_income': -9700, 'retained': -9700, 'aoci': 0, 'closed': ['cont_2', 'cont_4', 'expe_3', 'gain_0']}], ['control 3', {'accounts': {'divi_0': ['dividend', -200], 'loss_1': ['loss', 1200], 'loss_2': ['loss', -200], 'cont_3': ['contra_revenue', 3000], 'cont_4': ['contra_revenue', 7500], 'expe_5': ['expense', 3000], 'divi_6': ['dividend', 1200]}, 'retained': 0, 'aoci': 0}, {'net_income': -14500, 'retained': -15500, 'aoci': 0, 'closed': ['cont_3', 'cont_4', 'divi_0', 'divi_6', 'expe_5', 'loss_1', 'loss_2']}], ['control 4', {'accounts': {'asse_0': ['asset', 7500], 'divi_1': ['dividend', 400], 'liab_2': ['liability', 400], 'reve_3': ['revenue', 3000], 'gain_4': ['gain', 400], 'expe_5': ['expense', 3000], 'loss_6': ['loss', 3000]}, 'retained': 1000, 'aoci': 300}, {'net_income': -2600, 'retained': -2000, 'aoci': 300, 'closed': ['divi_1', 'expe_5', 'gain_4', 'loss_6', 'reve_3']}], ['control 5', {'accounts': {'liab_0': ['liability', -200], 'reve_1': ['revenue', 3000], 'asse_2': ['asset', 3000], 'reve_3': ['revenue', 3000], 'liab_4': ['liability', 3000], 'reve_5': ['revenue', 0], 'liab_6': ['liability', 150]}, 'retained': -500, 'aoci': 0}, {'net_income': 6000, 'retained': 5500, 'aoci': 0, 'closed': ['reve_1', 'reve_3']}], ['control 6', {'accounts': {'liab_0': ['liability', 400], 'divi_1': ['dividend', 7500], 'reve_2': ['revenue', 3000], 'liab_3': ['liability', 150]}, 'retained': 0, 'aoci': 300}, {'net_income': 3000, 'retained': -4500, 'aoci': 300, 'closed': ['divi_1', 'reve_2']}]], [['regression: oci routing', {'accounts': {'oci_0': ['oci', 0], 'gain_1': ['gain', 0], 'oci_2': ['oci', 3000], 'expe_3': ['expense', 150], 'loss_4': ['loss', 150], 'divi_5': ['dividend', 150], 'cont_6': ['contra_revenue', 1200], 'expe_7': ['expense', 7500]}, 'retained': -500, 'aoci': 300}, {'net_income': -9000, 'retained': -9650, 'aoci': 3300, 'closed': ['cont_6', 'divi_5', 'expe_3', 'expe_7', 'loss_4', 'oci_2']}], ['control 1', {'accounts': {'asse_0': ['asset', 0], 'expe_1': ['expense', 1200], 'loss_2': ['loss', -200], 'divi_3': ['dividend', 1200], 'liab_4': ['liability', 0], 'asse_5': ['asset', 150], 'expe_6': ['expense', 400], 'asse_7': ['asset', 150]}, 'retained': 1000, 'aoci': -100}, {'net_income': -1400, 'retained': -1600, 'aoci': -100, 'closed': ['divi_3', 'expe_1', 'expe_6', 'loss_2']}], ['control 2', {'accounts': {'gain_0': ['gain', 3000], 'expe_1': ['expense', -200], 'asse_2': ['asset', 0], 'expe_3': ['expense', 150], 'asse_4': ['asset', 7500], 'gain_5': ['gain', 400], 'divi_6': ['dividend', 150], 'expe_7': ['expense', 3000], 'reve_8': ['revenue', 150]}, 'retained': -500, 'aoci': 0}, {'net_income': 600, 'retained': -50, 'aoci': 0, 'closed': ['divi_6', 'expe_1', 'expe_3', 'expe_7', 'gain_0', 'gain_5', 'reve_8']}], ['control 3', {'accounts': {'asse_0': ['asset', -200], 'expe_1': ['expense', 1200], 'liab_2': ['liability', 150], 'divi_3': ['dividend', 7500], 'asse_4': ['asset', -200], 'reve_5': ['revenue', 3000], 'divi_6': ['dividend', 400], 'reve_7': ['revenue', 1200]}, 'retained': -500, 'aoci': 0}, {'net_income': 3000, 'retained': -5400, 'aoci': 0, 'closed': ['divi_3', 'divi_6', 'expe_1', 'reve_5', 'reve_7']}], ['control 4', {'accounts': {'asse_0': ['asset', 400], 'expe_1': ['expense', 0], 'asse_2': ['asset', 150], 'loss_3': ['loss', 1200], 'asse_4': ['asset', 150], 'gain_5': ['gain', 7500], 'expe_6': ['expense', 150]}, 'retained': 0, 'aoci': -100}, {'net_income': 6150, 'retained': 6150, 'aoci': -100, 'closed': ['expe_6', 'gain_5', 'loss_3']}], ['control 5', {'accounts': {'loss_0': ['loss', 1200], 'loss_1': ['loss', -200], 'divi_2': ['dividend', 3000], 'loss_3': ['loss', 150], 'expe_4': ['expense', -200]}, 'retained': -500, 'aoci': 300}, {'net_income': -950, 'retained': -4450, 'aoci': 300, 'closed': ['divi_2', 'expe_4', 'loss_0', 'loss_1', 'loss_3']}], ['control 6', {'accounts': {'expe_0': ['expense', 150], 'divi_1': ['dividend', 3000], 'expe_2': ['expense', 7500], 'asse_3': ['asset', 1200], 'loss_4': ['loss', 7500], 'reve_5': ['revenue', 3000], 'oci_6': ['oci', 0], 'divi_7': ['dividend', -200]}, 'retained': -500, 'aoci': 0}, {'net_income': -12150, 'retained': -15450, 'aoci': 0, 'closed': ['divi_1', 'divi_7', 'expe_0', 'expe_2', 'loss_4', 'reve_5']}]]]\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":"76546ee14ee1e821f64213d0e520f38f32c978ee2ef85e67b6af8042e54f64f8","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    acc = x['accounts']\n    def total(kind):\n        return sum(b for k, b in acc.values() if k == kind)\n    rev = total('revenue')\n    contra = total('contra_revenue')\n    exp = total('expense')\n    gain = total('gain')\n    loss = total('loss')\n    div = total('dividend')\n    oci = total('oci')\n    income_summary = rev - contra + gain - exp - loss\n    retained = x['retained'] + income_summary - div\n    aoci = x['aoci'] + oci\n    temporary = ('revenue', 'contra_revenue', 'expense', 'gain', 'loss', 'dividend', 'oci')\n    closed = sorted(n for n, (k, b) in acc.items() if k in temporary and b != 0)\n    return {'net_income': income_summary, 'retained': retained, 'aoci': aoci, 'closed': closed}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression: oci routing', {'accounts': {'oci_0': ['oci', 150], 'oci_1': ['oci', 400], 'expe_2': ['expense', 7500], 'loss_3': ['loss', 3000]}, 'retained': 1000, 'aoci': -100}, {'net_income': -10500, 'retained': -9500, 'aoci': 450, 'closed': ['expe_2', 'loss_3', 'oci_0', 'oci_1']}], ['control 1', {'accounts': {'reve_0': ['revenue', 1200], 'cont_1': ['contra_revenue', 3000], 'loss_2': ['loss', 3000], 'liab_3': ['liability', 400], 'loss_4': ['loss', -200], 'expe_5': ['expense', 0], 'divi_6': ['dividend', 3000], 'reve_7': ['revenue', 400], 'loss_8': ['loss', -200]}, 'retained': 1000, 'aoci': 0}, {'net_income': -4000, 'retained': -6000, 'aoci': 0, 'closed': ['cont_1', 'divi_6', 'loss_2', 'loss_4', 'loss_8', 'reve_0', 'reve_7']}], ['control 2', {'accounts': {'asse_0': ['asset', 400], 'gain_1': ['gain', 150], 'reve_2': ['revenue', 7500], 'gain_3': ['gain', 7500], 'asse_4': ['asset', 3000], 'reve_5': ['revenue', 3000], 'expe_6': ['expense', 400], 'reve_7': ['revenue', 400], 'reve_8': ['revenue', 3000]}, 'retained': 25000, 'aoci': 300}, {'net_income': 21150, 'retained': 46150, 'aoci': 300, 'closed': ['expe_6', 'gain_1', 'gain_3', 'reve_2', 'reve_5', 'reve_7', 'reve_8']}], ['control 3', {'accounts': {'asse_0': ['asset', 150], 'reve_1': ['revenue', 7500], 'divi_2': ['dividend', 0], 'gain_3': ['gain', 0], 'reve_4': ['revenue', 3000], 'gain_5': ['gain', 3000], 'asse_6': ['asset', 400]}, 'retained': 25000, 'aoci': 0}, {'net_income': 13500, 'retained': 38500, 'aoci': 0, 'closed': ['gain_5', 'reve_1', 'reve_4']}], ['control 4', {'accounts': {'reve_0': ['revenue', -200], 'reve_1': ['revenue', 0], 'expe_2': ['expense', 1200], 'loss_3': ['loss', 150]}, 'retained': 1000, 'aoci': 0}, {'net_income': -1550, 'retained': -550, 'aoci': 0, 'closed': ['expe_2', 'loss_3', 'reve_0']}], ['control 5', {'accounts': {'liab_0': ['liability', 150], 'gain_1': ['gain', 150], 'reve_2': ['revenue', 150], 'asse_3': ['asset', 7500], 'gain_4': ['gain', 0], 'expe_5': ['expense', 150], 'liab_6': ['liability', 0]}, 'retained': -500, 'aoci': 0}, {'net_income': 150, 'retained': -350, 'aoci': 0, 'closed': ['expe_5', 'gain_1', 'reve_2']}], ['control 6', {'accounts': {'cont_0': ['contra_revenue', 150], 'divi_1': ['dividend', 150], 'divi_2': ['dividend', -200], 'asse_3': ['asset', 3000]}, 'retained': 1000, 'aoci': -100}, {'net_income': -150, 'retained': 900, 'aoci': -100, 'closed': ['cont_0', 'divi_1', 'divi_2']}]], [['regression: oci routing', {'accounts': {'asse_0': ['asset', 7500], 'expe_1': ['expense', 7500], 'gain_2': ['gain', 400], 'loss_3': ['loss', 0], 'liab_4': ['liability', 400], 'oci_5': ['oci', -200], 'cont_6': ['contra_revenue', 150], 'oci_7': ['oci', -200]}, 'retained': 25000, 'aoci': 300}, {'net_income': -7250, 'retained': 17750, 'aoci': -100, 'closed': ['cont_6', 'expe_1', 'gain_2', 'oci_5', 'oci_7']}], ['control 1', {'accounts': {'reve_0': ['revenue', 1200], 'expe_1': ['expense', 7500], 'asse_2': ['asset', -200], 'cont_3': ['contra_revenue', 7500], 'cont_4': ['contra_revenue', 7500], 'divi_5': ['dividend', 7500], 'divi_6': ['dividend', 3000], 'cont_7': ['contra_revenue', 7500]}, 'retained': 0, 'aoci': -100}, {'net_income': -28800, 'retained': -39300, 'aoci': -100, 'closed': ['cont_3', 'cont_4', 'cont_7', 'divi_5', 'divi_6', 'expe_1', 'reve_0']}], ['control 2', {'accounts': {'cont_0': ['contra_revenue', 400], 'expe_1': ['expense', 400], 'loss_2': ['loss', 0], 'loss_3': ['loss', 150], 'cont_4': ['contra_revenue', 400], 'cont_5': ['contra_revenue', 3000]}, 'retained': 0, 'aoci': 300}, {'net_income': -4350, 'retained': -4350, 'aoci': 300, 'closed': ['cont_0', 'cont_4', 'cont_5', 'expe_1', 'loss_3']}], ['control 3', {'accounts': {'reve_0': ['revenue', 0], 'loss_1': ['loss', 0], 'reve_2': ['revenue', 7500], 'gain_3': ['gain', 0], 'divi_4': ['dividend', 150], 'divi_5': ['dividend', 1200]}, 'retained': 25000, 'aoci': -100}, {'net_income': 7500, 'retained': 31150, 'aoci': -100, 'closed': ['divi_4', 'divi_5', 'reve_2']}], ['control 4', {'accounts': {'reve_0': ['revenue', -200], 'gain_1': ['gain', 400], 'liab_2': ['liability', 400], 'expe_3': ['expense', 150], 'expe_4': ['expense', 0], 'reve_5': ['revenue', 400]}, 'retained': 0, 'aoci': 0}, {'net_income': 450, 'retained': 450, 'aoci': 0, 'closed': ['expe_3', 'gain_1', 'reve_0', 'reve_5']}], ['control 5', {'accounts': {'gain_0': ['gain', -200], 'reve_1': ['revenue', 1200], 'loss_2': ['loss', 7500], 'asse_3': ['asset', 0], 'divi_4': ['dividend', 150], 'liab_5': ['liability', 0], 'liab_6': ['liability', 3000], 'reve_7': ['revenue', 150]}, 'retained': 0, 'aoci': 0}, {'net_income': -6350, 'retained': -6500, 'aoci': 0, 'closed': ['divi_4', 'gain_0', 'loss_2', 'reve_1', 'reve_7']}], ['control 6', {'accounts': {'loss_0': ['loss', 7500], 'cont_1': ['contra_revenue', 400], 'reve_2': ['revenue', 0], 'loss_3': ['loss', 7500], 'expe_4': ['expense', 1200], 'reve_5': ['revenue', 150]}, 'retained': 0, 'aoci': -100}, {'net_income': -16450, 'retained': -16450, 'aoci': -100, 'closed': ['cont_1', 'expe_4', 'loss_0', 'loss_3', 'reve_5']}]], [['regression: oci routing', {'accounts': {'liab_0': ['liability', 1200], 'cont_1': ['contra_revenue', 400], 'expe_2': ['expense', 1200], 'loss_3': ['loss', 400], 'liab_4': ['liability', 1200], 'expe_5': ['expense', 400], 'asse_6': ['asset', 3000], 'oci_7': ['oci', 3000]}, 'retained': 0, 'aoci': 0}, {'net_income': -2400, 'retained': -2400, 'aoci': 3000, 'closed': ['cont_1', 'expe_2', 'expe_5', 'loss_3', 'oci_7']}], ['control 1', {'accounts': {'cont_0': ['contra_revenue', -200], 'expe_1': ['expense', -200], 'liab_2': ['liability', 0], 'asse_3': ['asset', 3000], 'gain_4': ['gain', 1200], 'gain_5': ['gain', 150], 'liab_6': ['liability', 1200], 'gain_7': ['gain', 400], 'liab_8': ['liability', 0]}, 'retained': 25000, 'aoci': -100}, {'net_income': 2150, 'retained': 27150, 'aoci': -100, 'closed': ['cont_0', 'expe_1', 'gain_4', 'gain_5', 'gain_7']}], ['control 2', {'accounts': {'reve_0': ['revenue', 400], 'gain_1': ['gain', 0], 'liab_2': ['liability', 400], 'gain_3': ['gain', -200], 'asse_4': ['asset', 0], 'divi_5': ['dividend', 400]}, 'retained': 0, 'aoci': 300}, {'net_income': 200, 'retained': -200, 'aoci': 300, 'closed': ['divi_5', 'gain_3', 'reve_0']}], ['control 3', {'accounts': {'reve_0': ['revenue', 3000], 'liab_1': ['liability', -200], 'asse_2': ['asset', 7500], 'asse_3': ['asset', 0]}, 'retained': -500, 'aoci': -100}, {'net_income': 3000, 'retained': 2500, 'aoci': -100, 'closed': ['reve_0']}], ['control 4', {'accounts': {'liab_0': ['liability', 150], 'divi_1': ['dividend', 7500], 'reve_2': ['revenue', 400], 'liab_3': ['liability', 1200], 'expe_4': ['expense', -200], 'divi_5': ['dividend', 0], 'expe_6': ['expense', 0]}, 'retained': 0, 'aoci': 0}, {'net_income': 600, 'retained': -6900, 'aoci': 0, 'closed': ['divi_1', 'expe_4', 'reve_2']}], ['control 5', {'accounts': {'divi_0': ['dividend', 3000], 'reve_1': ['revenue', 150], 'loss_2': ['loss', 400], 'loss_3': ['loss', 0], 'asse_4': ['asset', -200], 'cont_5': ['contra_revenue', 1200], 'expe_6': ['expense', 400]}, 'retained': 0, 'aoci': 300}, {'net_income': -1850, 'retained': -4850, 'aoci': 300, 'closed': ['cont_5', 'divi_0', 'expe_6', 'loss_2', 'reve_1']}], ['control 6', {'accounts': {'expe_0': ['expense', -200], 'expe_1': ['expense', 7500], 'oci_2': ['oci', 0], 'divi_3': ['dividend', 400], 'reve_4': ['revenue', 400], 'asse_5': ['asset', 0]}, 'retained': 1000, 'aoci': 0}, {'net_income': -6900, 'retained': -6300, 'aoci': 0, 'closed': ['divi_3', 'expe_0', 'expe_1', 'reve_4']}]], [['regression: oci routing', {'accounts': {'oci_0': ['oci', 1200], 'liab_1': ['liability', 3000], 'expe_2': ['expense', 1200], 'loss_3': ['loss', 3000], 'liab_4': ['liability', 1200], 'loss_5': ['loss', 150], 'asse_6': ['asset', -200]}, 'retained': -500, 'aoci': 300}, {'net_income': -4350, 'retained': -4850, 'aoci': 1500, 'closed': ['expe_2', 'loss_3', 'loss_5', 'oci_0']}], ['control 1', {'accounts': {'divi_0': ['dividend', 150], 'divi_1': ['dividend', -200], 'asse_2': ['asset', 150], 'cont_3': ['contra_revenue', 400], 'gain_4': ['gain', 150]}, 'retained': 0, 'aoci': 300}, {'net_income': -250, 'retained': -200, 'aoci': 300, 'closed': ['cont_3', 'divi_0', 'divi_1', 'gain_4']}], ['control 2', {'accounts': {'gain_0': ['gain', 1200], 'asse_1': ['asset', 3000], 'cont_2': ['contra_revenue', 400], 'expe_3': ['expense', 3000], 'cont_4': ['contra_revenue', 7500], 'expe_5': ['expense', 0]}, 'retained': 0, 'aoci': 0}, {'net_income': -9700, 'retained': -9700, 'aoci': 0, 'closed': ['cont_2', 'cont_4', 'expe_3', 'gain_0']}], ['control 3', {'accounts': {'divi_0': ['dividend', -200], 'loss_1': ['loss', 1200], 'loss_2': ['loss', -200], 'cont_3': ['contra_revenue', 3000], 'cont_4': ['contra_revenue', 7500], 'expe_5': ['expense', 3000], 'divi_6': ['dividend', 1200]}, 'retained': 0, 'aoci': 0}, {'net_income': -14500, 'retained': -15500, 'aoci': 0, 'closed': ['cont_3', 'cont_4', 'divi_0', 'divi_6', 'expe_5', 'loss_1', 'loss_2']}], ['control 4', {'accounts': {'asse_0': ['asset', 7500], 'divi_1': ['dividend', 400], 'liab_2': ['liability', 400], 'reve_3': ['revenue', 3000], 'gain_4': ['gain', 400], 'expe_5': ['expense', 3000], 'loss_6': ['loss', 3000]}, 'retained': 1000, 'aoci': 300}, {'net_income': -2600, 'retained': -2000, 'aoci': 300, 'closed': ['divi_1', 'expe_5', 'gain_4', 'loss_6', 'reve_3']}], ['control 5', {'accounts': {'liab_0': ['liability', -200], 'reve_1': ['revenue', 3000], 'asse_2': ['asset', 3000], 'reve_3': ['revenue', 3000], 'liab_4': ['liability', 3000], 'reve_5': ['revenue', 0], 'liab_6': ['liability', 150]}, 'retained': -500, 'aoci': 0}, {'net_income': 6000, 'retained': 5500, 'aoci': 0, 'closed': ['reve_1', 'reve_3']}], ['control 6', {'accounts': {'liab_0': ['liability', 400], 'divi_1': ['dividend', 7500], 'reve_2': ['revenue', 3000], 'liab_3': ['liability', 150]}, 'retained': 0, 'aoci': 300}, {'net_income': 3000, 'retained': -4500, 'aoci': 300, 'closed': ['divi_1', 'reve_2']}]], [['regression: oci routing', {'accounts': {'oci_0': ['oci', 0], 'gain_1': ['gain', 0], 'oci_2': ['oci', 3000], 'expe_3': ['expense', 150], 'loss_4': ['loss', 150], 'divi_5': ['dividend', 150], 'cont_6': ['contra_revenue', 1200], 'expe_7': ['expense', 7500]}, 'retained': -500, 'aoci': 300}, {'net_income': -9000, 'retained': -9650, 'aoci': 3300, 'closed': ['cont_6', 'divi_5', 'expe_3', 'expe_7', 'loss_4', 'oci_2']}], ['control 1', {'accounts': {'asse_0': ['asset', 0], 'expe_1': ['expense', 1200], 'loss_2': ['loss', -200], 'divi_3': ['dividend', 1200], 'liab_4': ['liability', 0], 'asse_5': ['asset', 150], 'expe_6': ['expense', 400], 'asse_7': ['asset', 150]}, 'retained': 1000, 'aoci': -100}, {'net_income': -1400, 'retained': -1600, 'aoci': -100, 'closed': ['divi_3', 'expe_1', 'expe_6', 'loss_2']}], ['control 2', {'accounts': {'gain_0': ['gain', 3000], 'expe_1': ['expense', -200], 'asse_2': ['asset', 0], 'expe_3': ['expense', 150], 'asse_4': ['asset', 7500], 'gain_5': ['gain', 400], 'divi_6': ['dividend', 150], 'expe_7': ['expense', 3000], 'reve_8': ['revenue', 150]}, 'retained': -500, 'aoci': 0}, {'net_income': 600, 'retained': -50, 'aoci': 0, 'closed': ['divi_6', 'expe_1', 'expe_3', 'expe_7', 'gain_0', 'gain_5', 'reve_8']}], ['control 3', {'accounts': {'asse_0': ['asset', -200], 'expe_1': ['expense', 1200], 'liab_2': ['liability', 150], 'divi_3': ['dividend', 7500], 'asse_4': ['asset', -200], 'reve_5': ['revenue', 3000], 'divi_6': ['dividend', 400], 'reve_7': ['revenue', 1200]}, 'retained': -500, 'aoci': 0}, {'net_income': 3000, 'retained': -5400, 'aoci': 0, 'closed': ['divi_3', 'divi_6', 'expe_1', 'reve_5', 'reve_7']}], ['control 4', {'accounts': {'asse_0': ['asset', 400], 'expe_1': ['expense', 0], 'asse_2': ['asset', 150], 'loss_3': ['loss', 1200], 'asse_4': ['asset', 150], 'gain_5': ['gain', 7500], 'expe_6': ['expense', 150]}, 'retained': 0, 'aoci': -100}, {'net_income': 6150, 'retained': 6150, 'aoci': -100, 'closed': ['expe_6', 'gain_5', 'loss_3']}], ['control 5', {'accounts': {'loss_0': ['loss', 1200], 'loss_1': ['loss', -200], 'divi_2': ['dividend', 3000], 'loss_3': ['loss', 150], 'expe_4': ['expense', -200]}, 'retained': -500, 'aoci': 300}, {'net_income': -950, 'retained': -4450, 'aoci': 300, 'closed': ['divi_2', 'expe_4', 'loss_0', 'loss_1', 'loss_3']}], ['control 6', {'accounts': {'expe_0': ['expense', 150], 'divi_1': ['dividend', 3000], 'expe_2': ['expense', 7500], 'asse_3': ['asset', 1200], 'loss_4': ['loss', 7500], 'reve_5': ['revenue', 3000], 'oci_6': ['oci', 0], 'divi_7': ['dividend', -200]}, 'retained': -500, 'aoci': 0}, {'net_income': -12150, 'retained': -15450, 'aoci': 0, 'closed': ['divi_1', 'divi_7', 'expe_0', 'expe_2', 'loss_4', 'reve_5']}]]]\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-period-closing-oci-routing","generated_at":"2026-09-29T14:46:21.760942+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":"Close OCI only to accumulated OCI.","root_cause":"OCI balances are closed through the income summary.","sha256":"71c7578d8af716d449decbcbfac07592f0960ddf4c286496aa277facdd1b8e66","title":"Period closing entries: oci routing · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":43.231,"exit_code":1,"observations":[{"actual":{"aoci":450,"closed":["expe_2","loss_3","oci_0","oci_1"],"net_income":-10500,"retained":-8950},"check":"regression: oci routing","expected":{"aoci":450,"closed":["expe_2","loss_3","oci_0","oci_1"],"net_income":-10500,"retained":-9500},"passed":false},{"actual":{"aoci":0,"closed":["cont_1","divi_6","loss_2","loss_4","loss_8","reve_0","reve_7"],"net_income":-4000,"retained":-6000},"check":"control 1","expected":{"aoci":0,"closed":["cont_1","divi_6","loss_2","loss_4","loss_8","reve_0","reve_7"],"net_income":-4000,"retained":-6000},"passed":true},{"actual":{"aoci":300,"closed":["expe_6","gain_1","gain_3","reve_2","reve_5","reve_7","reve_8"],"net_income":21150,"retained":46150},"check":"control 2","expected":{"aoci":300,"closed":["expe_6","gain_1","gain_3","reve_2","reve_5","reve_7","reve_8"],"net_income":21150,"retained":46150},"passed":true},{"actual":{"aoci":0,"closed":["gain_5","reve_1","reve_4"],"net_income":13500,"retained":38500},"check":"control 3","expected":{"aoci":0,"closed":["gain_5","reve_1","reve_4"],"net_income":13500,"retained":38500},"passed":true},{"actual":{"aoci":0,"closed":["expe_2","loss_3","reve_0"],"net_income":-1550,"retained":-550},"check":"control 4","expected":{"aoci":0,"closed":["expe_2","loss_3","reve_0"],"net_income":-1550,"retained":-550},"passed":true},{"actual":{"aoci":0,"closed":["expe_5","gain_1","reve_2"],"net_income":150,"retained":-350},"check":"control 5","expected":{"aoci":0,"closed":["expe_5","gain_1","reve_2"],"net_income":150,"retained":-350},"passed":true},{"actual":{"aoci":-100,"closed":["cont_0","divi_1","divi_2"],"net_income":-150,"retained":900},"check":"control 6","expected":{"aoci":-100,"closed":["cont_0","divi_1","divi_2"],"net_income":-150,"retained":900},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: oci routing\", \"actual\": {\"net_income\": -10500, \"retained\": -8950, \"aoci\": 450, \"closed\": [\"expe_2\", \"loss_3\", \"oci_0\", \"oci_1\"]}, \"expected\": {\"net_income\": -10500, \"retained\": -9500, \"aoci\": 450, \"closed\": [\"expe_2\", \"loss_3\", \"oci_0\", \"oci_1\"]}, \"passed\": false}, {\"check\": \"control 1\", \"actual\": {\"net_income\": -4000, \"retained\": -6000, \"aoci\": 0, \"closed\": [\"cont_1\", \"divi_6\", \"loss_2\", \"loss_4\", \"loss_8\", \"reve_0\", \"reve_7\"]}, \"expected\": {\"net_income\": -4000, \"retained\": -6000, \"aoci\": 0, \"closed\": [\"cont_1\", \"divi_6\", \"loss_2\", \"loss_4\", \"loss_8\", \"reve_0\", \"reve_7\"]}, \"passed\": true}, {\"check\": \"control 2\", \"actual\": {\"net_income\": 21150, \"retained\": 46150, \"aoci\": 300, \"closed\": [\"expe_6\", \"gain_1\", \"gain_3\", \"reve_2\", \"reve_5\", \"reve_7\", \"reve_8\"]}, \"expected\": {\"net_income\": 21150, \"retained\": 46150, \"aoci\": 300, \"closed\": [\"expe_6\", \"gain_1\", \"gain_3\", \"reve_2\", \"reve_5\", \"reve_7\", \"reve_8\"]}, \"passed\": true}, {\"check\": \"control 3\", \"actual\": {\"net_income\": 13500, \"retained\": 38500, \"aoci\": 0, \"closed\": [\"gain_5\", \"reve_1\", \"reve_4\"]}, \"expected\": {\"net_income\": 13500, \"retained\": 38500, \"aoci\": 0, \"closed\": [\"gain_5\", \"reve_1\", \"reve_4\"]}, \"passed\": true}, {\"check\": \"control 4\", \"actual\": {\"net_income\": -1550, \"retained\": -550, \"aoci\": 0, \"closed\": [\"expe_2\", \"loss_3\", \"reve_0\"]}, \"expected\": {\"net_income\": -1550, \"retained\": -550, \"aoci\": 0, \"closed\": [\"expe_2\", \"loss_3\", \"reve_0\"]}, \"passed\": true}, {\"check\": \"control 5\", \"actual\": {\"net_income\": 150, \"retained\": -350, \"aoci\": 0, \"closed\": [\"expe_5\", \"gain_1\", \"reve_2\"]}, \"expected\": {\"net_income\": 150, \"retained\": -350, \"aoci\": 0, \"closed\": [\"expe_5\", \"gain_1\", \"reve_2\"]}, \"passed\": true}, {\"check\": \"control 6\", \"actual\": {\"net_income\": -150, \"retained\": 900, \"aoci\": -100, \"closed\": [\"cont_0\", \"divi_1\", \"divi_2\"]}, \"expected\": {\"net_income\": -150, \"retained\": 900, \"aoci\": -100, \"closed\": [\"cont_0\", \"divi_1\", \"divi_2\"]}, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":45.998,"exit_code":1,"observations":[{"actual":{"aoci":450,"closed":["expe_2","loss_3","oci_0","oci_1"],"net_income":-9950,"retained":-8950},"check":"regression: oci routing","expected":{"aoci":450,"closed":["expe_2","loss_3","oci_0","oci_1"],"net_income":-10500,"retained":-9500},"passed":false},{"actual":{"aoci":0,"closed":["cont_1","divi_6","loss_2","loss_4","loss_8","reve_0","reve_7"],"net_income":-4000,"retained":-6000},"check":"control 1","expected":{"aoci":0,"closed":["cont_1","divi_6","loss_2","loss_4","loss_8","reve_0","reve_7"],"net_income":-4000,"retained":-6000},"passed":true},{"actual":{"aoci":300,"closed":["expe_6","gain_1","gain_3","reve_2","reve_5","reve_7","reve_8"],"net_income":21150,"retained":46150},"check":"control 2","expected":{"aoci":300,"closed":["expe_6","gain_1","gain_3","reve_2","reve_5","reve_7","reve_8"],"net_income":21150,"retained":46150},"passed":true},{"actual":{"aoci":0,"closed":["gain_5","reve_1","reve_4"],"net_income":13500,"retained":38500},"check":"control 3","expected":{"aoci":0,"closed":["gain_5","reve_1","reve_4"],"net_income":13500,"retained":38500},"passed":true},{"actual":{"aoci":0,"closed":["expe_2","loss_3","reve_0"],"net_income":-1550,"retained":-550},"check":"control 4","expected":{"aoci":0,"closed":["expe_2","loss_3","reve_0"],"net_income":-1550,"retained":-550},"passed":true},{"actual":{"aoci":0,"closed":["expe_5","gain_1","reve_2"],"net_income":150,"retained":-350},"check":"control 5","expected":{"aoci":0,"closed":["expe_5","gain_1","reve_2"],"net_income":150,"retained":-350},"passed":true},{"actual":{"aoci":-100,"closed":["cont_0","divi_1","divi_2"],"net_income":-150,"retained":900},"check":"control 6","expected":{"aoci":-100,"closed":["cont_0","divi_1","divi_2"],"net_income":-150,"retained":900},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: oci routing\", \"actual\": {\"net_income\": -9950, \"retained\": -8950, \"aoci\": 450, \"closed\": [\"expe_2\", \"loss_3\", \"oci_0\", \"oci_1\"]}, \"expected\": {\"net_income\": -10500, \"retained\": -9500, \"aoci\": 450, \"closed\": [\"expe_2\", \"loss_3\", \"oci_0\", \"oci_1\"]}, \"passed\": false}, {\"check\": \"control 1\", \"actual\": {\"net_income\": -4000, \"retained\": -6000, \"aoci\": 0, \"closed\": [\"cont_1\", \"divi_6\", \"loss_2\", \"loss_4\", \"loss_8\", \"reve_0\", \"reve_7\"]}, \"expected\": {\"net_income\": -4000, \"retained\": -6000, \"aoci\": 0, \"closed\": [\"cont_1\", \"divi_6\", \"loss_2\", \"loss_4\", \"loss_8\", \"reve_0\", \"reve_7\"]}, \"passed\": true}, {\"check\": \"control 2\", \"actual\": {\"net_income\": 21150, \"retained\": 46150, \"aoci\": 300, \"closed\": [\"expe_6\", \"gain_1\", \"gain_3\", \"reve_2\", \"reve_5\", \"reve_7\", \"reve_8\"]}, \"expected\": {\"net_income\": 21150, \"retained\": 46150, \"aoci\": 300, \"closed\": [\"expe_6\", \"gain_1\", \"gain_3\", \"reve_2\", \"reve_5\", \"reve_7\", \"reve_8\"]}, \"passed\": true}, {\"check\": \"control 3\", \"actual\": {\"net_income\": 13500, \"retained\": 38500, \"aoci\": 0, \"closed\": [\"gain_5\", \"reve_1\", \"reve_4\"]}, \"expected\": {\"net_income\": 13500, \"retained\": 38500, \"aoci\": 0, \"closed\": [\"gain_5\", \"reve_1\", \"reve_4\"]}, \"passed\": true}, {\"check\": \"control 4\", \"actual\": {\"net_income\": -1550, \"retained\": -550, \"aoci\": 0, \"closed\": [\"expe_2\", \"loss_3\", \"reve_0\"]}, \"expected\": {\"net_income\": -1550, \"retained\": -550, \"aoci\": 0, \"closed\": [\"expe_2\", \"loss_3\", \"reve_0\"]}, \"passed\": true}, {\"check\": \"control 5\", \"actual\": {\"net_income\": 150, \"retained\": -350, \"aoci\": 0, \"closed\": [\"expe_5\", \"gain_1\", \"reve_2\"]}, \"expected\": {\"net_income\": 150, \"retained\": -350, \"aoci\": 0, \"closed\": [\"expe_5\", \"gain_1\", \"reve_2\"]}, \"passed\": true}, {\"check\": \"control 6\", \"actual\": {\"net_income\": -150, \"retained\": 900, \"aoci\": -100, \"closed\": [\"cont_0\", \"divi_1\", \"divi_2\"]}, \"expected\": {\"net_income\": -150, \"retained\": 900, \"aoci\": -100, \"closed\": [\"cont_0\", \"divi_1\", \"divi_2\"]}, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":44.191,"exit_code":0,"observations":[{"actual":{"aoci":450,"closed":["expe_2","loss_3","oci_0","oci_1"],"net_income":-10500,"retained":-9500},"check":"regression: oci routing","expected":{"aoci":450,"closed":["expe_2","loss_3","oci_0","oci_1"],"net_income":-10500,"retained":-9500},"passed":true},{"actual":{"aoci":0,"closed":["cont_1","divi_6","loss_2","loss_4","loss_8","reve_0","reve_7"],"net_income":-4000,"retained":-6000},"check":"control 1","expected":{"aoci":0,"closed":["cont_1","divi_6","loss_2","loss_4","loss_8","reve_0","reve_7"],"net_income":-4000,"retained":-6000},"passed":true},{"actual":{"aoci":300,"closed":["expe_6","gain_1","gain_3","reve_2","reve_5","reve_7","reve_8"],"net_income":21150,"retained":46150},"check":"control 2","expected":{"aoci":300,"closed":["expe_6","gain_1","gain_3","reve_2","reve_5","reve_7","reve_8"],"net_income":21150,"retained":46150},"passed":true},{"actual":{"aoci":0,"closed":["gain_5","reve_1","reve_4"],"net_income":13500,"retained":38500},"check":"control 3","expected":{"aoci":0,"closed":["gain_5","reve_1","reve_4"],"net_income":13500,"retained":38500},"passed":true},{"actual":{"aoci":0,"closed":["expe_2","loss_3","reve_0"],"net_income":-1550,"retained":-550},"check":"control 4","expected":{"aoci":0,"closed":["expe_2","loss_3","reve_0"],"net_income":-1550,"retained":-550},"passed":true},{"actual":{"aoci":0,"closed":["expe_5","gain_1","reve_2"],"net_income":150,"retained":-350},"check":"control 5","expected":{"aoci":0,"closed":["expe_5","gain_1","reve_2"],"net_income":150,"retained":-350},"passed":true},{"actual":{"aoci":-100,"closed":["cont_0","divi_1","divi_2"],"net_income":-150,"retained":900},"check":"control 6","expected":{"aoci":-100,"closed":["cont_0","divi_1","divi_2"],"net_income":-150,"retained":900},"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: oci routing\", \"actual\": {\"net_income\": -10500, \"retained\": -9500, \"aoci\": 450, \"closed\": [\"expe_2\", \"loss_3\", \"oci_0\", \"oci_1\"]}, \"expected\": {\"net_income\": -10500, \"retained\": -9500, \"aoci\": 450, \"closed\": [\"expe_2\", \"loss_3\", \"oci_0\", \"oci_1\"]}, \"passed\": true}, {\"check\": \"control 1\", \"actual\": {\"net_income\": -4000, \"retained\": -6000, \"aoci\": 0, \"closed\": [\"cont_1\", \"divi_6\", \"loss_2\", \"loss_4\", \"loss_8\", \"reve_0\", \"reve_7\"]}, \"expected\": {\"net_income\": -4000, \"retained\": -6000, \"aoci\": 0, \"closed\": [\"cont_1\", \"divi_6\", \"loss_2\", \"loss_4\", \"loss_8\", \"reve_0\", \"reve_7\"]}, \"passed\": true}, {\"check\": \"control 2\", \"actual\": {\"net_income\": 21150, \"retained\": 46150, \"aoci\": 300, \"closed\": [\"expe_6\", \"gain_1\", \"gain_3\", \"reve_2\", \"reve_5\", \"reve_7\", \"reve_8\"]}, \"expected\": {\"net_income\": 21150, \"retained\": 46150, \"aoci\": 300, \"closed\": [\"expe_6\", \"gain_1\", \"gain_3\", \"reve_2\", \"reve_5\", \"reve_7\", \"reve_8\"]}, \"passed\": true}, {\"check\": \"control 3\", \"actual\": {\"net_income\": 13500, \"retained\": 38500, \"aoci\": 0, \"closed\": [\"gain_5\", \"reve_1\", \"reve_4\"]}, \"expected\": {\"net_income\": 13500, \"retained\": 38500, \"aoci\": 0, \"closed\": [\"gain_5\", \"reve_1\", \"reve_4\"]}, \"passed\": true}, {\"check\": \"control 4\", \"actual\": {\"net_income\": -1550, \"retained\": -550, \"aoci\": 0, \"closed\": [\"expe_2\", \"loss_3\", \"reve_0\"]}, \"expected\": {\"net_income\": -1550, \"retained\": -550, \"aoci\": 0, \"closed\": [\"expe_2\", \"loss_3\", \"reve_0\"]}, \"passed\": true}, {\"check\": \"control 5\", \"actual\": {\"net_income\": 150, \"retained\": -350, \"aoci\": 0, \"closed\": [\"expe_5\", \"gain_1\", \"reve_2\"]}, \"expected\": {\"net_income\": 150, \"retained\": -350, \"aoci\": 0, \"closed\": [\"expe_5\", \"gain_1\", \"reve_2\"]}, \"passed\": true}, {\"check\": \"control 6\", \"actual\": {\"net_income\": -150, \"retained\": 900, \"aoci\": -100, \"closed\": [\"cont_0\", \"divi_1\", \"divi_2\"]}, \"expected\": {\"net_income\": -150, \"retained\": 900, \"aoci\": -100, \"closed\": [\"cont_0\", \"divi_1\", \"divi_2\"]}, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}