{"abstract":"Voiding an entry doubles its effect on the balance.","category":"Double-entry ledger accounting","checks":7,"contract":"x = [['post', id, amount] | ['void', target_id, reversal_id] | other]. Posting an existing id is an error 'duplicate'. Voiding needs a known target ('unknown'), whose status is 'posted' ('not_voidable' for voided entries and reversals) and an unused reversal id ('duplicate'), checked in that order. A void marks the target 'voided' and creates a 'reversal' entry with the negated amount. Other commands give 'bad_command'. Return {'status', 'balance': sum of all amounts, 'errors': [[index, reason]]}.","evaluation_group":"w2-double-entry-ledger-accounting-void-reversal-linkage","failed_approach":"Negating the absolute value is wrong for originals with a negative amount.","family":"w2-double-entry-ledger-accounting-void-reversal-linkage-reversal-amount","id":"FA-58201","implementations":{"attempt":{"sha256":"68339e6d9800f717b9d57c766452d7f56cd9f6d410687d82484a553558124d37","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    status = {}\n    amounts = {}\n    errors = []\n    for i, cmd in enumerate(x):\n        if cmd[0] == 'post':\n            _, eid, amt = cmd\n            if eid in status:\n                errors.append([i, 'duplicate'])\n                continue\n            status[eid] = 'posted'\n            amounts[eid] = amt\n        elif cmd[0] == 'void':\n            _, target, new = cmd\n            if target not in status:\n                errors.append([i, 'unknown'])\n            elif status[target] != 'posted':\n                errors.append([i, 'not_voidable'])\n            elif new in status:\n                errors.append([i, 'duplicate'])\n            else:\n                status[target] = 'voided'\n                status[new] = 'reversal'\n                amounts[new] = -abs(amounts[target])\n        else:\n            errors.append([i, 'bad_command'])\n    return {'status': status, 'balance': sum(amounts.values()), 'errors': errors}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression: reversal amount', [['edit', 'A', 5], ['post', 'C', 999], ['void', 'C', 'R2'], ['void', 'R3', 'D']], {'status': {'C': 'voided', 'R2': 'reversal'}, 'balance': 0, 'errors': [[0, 'bad_command'], [3, 'unknown']]}], ['regression: reversal amount, partial-repair probe', [['post', 'R1', -40], ['post', 'R1', 100], ['post', 'D', 999], ['edit', 'A', 5], ['void', 'R1', 'D'], ['void', 'R1', 'R2'], ['post', 'D', 999], ['void', 'R1', 'R1']], {'status': {'R1': 'voided', 'D': 'posted', 'R2': 'reversal'}, 'balance': 999, 'errors': [[1, 'duplicate'], [3, 'bad_command'], [4, 'duplicate'], [6, 'duplicate'], [7, 'not_voidable']]}], ['control 1', [['post', 'C', 250], ['edit', 'A', 5], ['edit', 'A', 5], ['void', 'R1', 'D']], {'status': {'C': 'posted'}, 'balance': 250, 'errors': [[1, 'bad_command'], [2, 'bad_command'], [3, 'unknown']]}], ['control 2', [['void', 'R2', 'D'], ['post', 'D', 999], ['post', 'D', 999], ['post', 'R1', 100], ['void', 'A', 'D']], {'status': {'D': 'posted', 'R1': 'posted'}, 'balance': 1099, 'errors': [[0, 'unknown'], [2, 'duplicate'], [4, 'unknown']]}], ['control 3', [['post', 'A', 100], ['post', 'D', -40], ['void', 'R3', 'R2'], ['void', 'R1', 'R1'], ['post', 'D', -40], ['post', 'B', 250], ['void', 'D', 'D']], {'status': {'A': 'posted', 'D': 'posted', 'B': 'posted'}, 'balance': 310, 'errors': [[2, 'unknown'], [3, 'unknown'], [4, 'duplicate'], [6, 'duplicate']]}], ['control 4', [['void', 'C', 'R1'], ['void', 'R1', 'R2'], ['edit', 'A', 5], ['void', 'C', 'R1'], ['void', 'R3', 'R1'], ['post', 'D', 999]], {'status': {'D': 'posted'}, 'balance': 999, 'errors': [[0, 'unknown'], [1, 'unknown'], [2, 'bad_command'], [3, 'unknown'], [4, 'unknown']]}], ['control 5', [['post', 'R1', -40], ['post', 'D', -40], ['void', 'B', 'D']], {'status': {'R1': 'posted', 'D': 'posted'}, 'balance': -80, 'errors': [[2, 'unknown']]}]], [['regression: reversal amount', [['post', 'D', -40], ['post', 'C', 999], ['void', 'R3', 'R1'], ['post', 'C', 100], ['void', 'C', 'R2']], {'status': {'D': 'posted', 'C': 'voided', 'R2': 'reversal'}, 'balance': -40, 'errors': [[2, 'unknown'], [3, 'duplicate']]}], ['regression: reversal amount, partial-repair probe', [['post', 'B', -40], ['void', 'B', 'R1'], ['void', 'R3', 'R2']], {'status': {'B': 'voided', 'R1': 'reversal'}, 'balance': 0, 'errors': [[2, 'unknown']]}], ['control 1', [['post', 'B', 250], ['post', 'C', 250], ['edit', 'A', 5], ['post', 'B', 250], ['post', 'B', 100]], {'status': {'B': 'posted', 'C': 'posted'}, 'balance': 500, 'errors': [[2, 'bad_command'], [3, 'duplicate'], [4, 'duplicate']]}], ['control 2', [['post', 'B', 250], ['void', 'D', 'R3'], ['post', 'D', -40], ['post', 'A', -40], ['void', 'R3', 'R1'], ['void', 'R2', 'R3'], ['post', 'R1', -40], ['void', 'B', 'R1']], {'status': {'B': 'posted', 'D': 'posted', 'A': 'posted', 'R1': 'posted'}, 'balance': 130, 'errors': [[1, 'unknown'], [4, 'unknown'], [5, 'unknown'], [7, 'duplicate']]}], ['control 3', [['post', 'R1', -40], ['post', 'B', 250], ['post', 'C', 250], ['void', 'R2', 'R3']], {'status': {'R1': 'posted', 'B': 'posted', 'C': 'posted'}, 'balance': 460, 'errors': [[3, 'unknown']]}], ['control 4', [['post', 'A', 999], ['void', 'R1', 'R3'], ['void', 'R2', 'R2'], ['post', 'R1', 999]], {'status': {'A': 'posted', 'R1': 'posted'}, 'balance': 1998, 'errors': [[1, 'unknown'], [2, 'unknown']]}], ['control 5', [['void', 'C', 'D'], ['void', 'D', 'R1'], ['void', 'R3', 'D'], ['post', 'A', -40], ['post', 'D', 999], ['post', 'C', -40], ['void', 'R1', 'R3']], {'status': {'A': 'posted', 'D': 'posted', 'C': 'posted'}, 'balance': 919, 'errors': [[0, 'unknown'], [1, 'unknown'], [2, 'unknown'], [6, 'unknown']]}]], [['regression: reversal amount', [['void', 'R3', 'R1'], ['post', 'D', -40], ['void', 'R3', 'R1'], ['post', 'R1', 100], ['post', 'A', 250], ['void', 'R1', 'R3'], ['void', 'A', 'D'], ['void', 'R1', 'R1']], {'status': {'D': 'posted', 'R1': 'voided', 'A': 'posted', 'R3': 'reversal'}, 'balance': 210, 'errors': [[0, 'unknown'], [2, 'unknown'], [6, 'duplicate'], [7, 'not_voidable']]}], ['regression: reversal amount, partial-repair probe', [['void', 'B', 'D'], ['post', 'C', -40], ['void', 'C', 'R2'], ['void', 'R3', 'R2'], ['post', 'R1', 100], ['post', 'C', -40], ['void', 'R2', 'D']], {'status': {'C': 'voided', 'R2': 'reversal', 'R1': 'posted'}, 'balance': 100, 'errors': [[0, 'unknown'], [3, 'unknown'], [5, 'duplicate'], [6, 'not_voidable']]}], ['control 1', [['void', 'R1', 'R3'], ['void', 'A', 'R3'], ['void', 'R3', 'R1']], {'status': {}, 'balance': 0, 'errors': [[0, 'unknown'], [1, 'unknown'], [2, 'unknown']]}], ['control 2', [['void', 'C', 'R3'], ['void', 'R1', 'R3'], ['void', 'R2', 'R1'], ['void', 'R1', 'R1'], ['void', 'C', 'D'], ['void', 'A', 'R1'], ['post', 'D', 999]], {'status': {'D': 'posted'}, 'balance': 999, 'errors': [[0, 'unknown'], [1, 'unknown'], [2, 'unknown'], [3, 'unknown'], [4, 'unknown'], [5, 'unknown']]}], ['control 3', [['post', 'D', -40], ['void', 'R3', 'R1'], ['post', 'B', 100], ['post', 'R1', 250], ['void', 'C', 'D'], ['post', 'A', 999], ['void', 'R2', 'R2']], {'status': {'D': 'posted', 'B': 'posted', 'R1': 'posted', 'A': 'posted'}, 'balance': 1309, 'errors': [[1, 'unknown'], [4, 'unknown'], [6, 'unknown']]}], ['control 4', [['edit', 'A', 5], ['post', 'R1', -40], ['post', 'C', 100], ['post', 'C', 100], ['post', 'R1', 100], ['void', 'R2', 'D'], ['post', 'B', -40]], {'status': {'R1': 'posted', 'C': 'posted', 'B': 'posted'}, 'balance': 20, 'errors': [[0, 'bad_command'], [3, 'duplicate'], [4, 'duplicate'], [5, 'unknown']]}], ['control 5', [['post', 'B', 999], ['void', 'R3', 'R1'], ['void', 'D', 'R3'], ['post', 'C', 100], ['post', 'D', 999]], {'status': {'B': 'posted', 'C': 'posted', 'D': 'posted'}, 'balance': 2098, 'errors': [[1, 'unknown'], [2, 'unknown']]}]], [['regression: reversal amount', [['void', 'D', 'R1'], ['post', 'D', -40], ['post', 'A', 100], ['void', 'A', 'R1'], ['void', 'A', 'R3']], {'status': {'D': 'posted', 'A': 'voided', 'R1': 'reversal'}, 'balance': -40, 'errors': [[0, 'unknown'], [4, 'not_voidable']]}], ['regression: reversal amount, partial-repair probe', [['post', 'R1', -40], ['void', 'D', 'R1'], ['post', 'A', 250], ['void', 'R1', 'D']], {'status': {'R1': 'voided', 'A': 'posted', 'D': 'reversal'}, 'balance': 250, 'errors': [[1, 'unknown']]}], ['control 1', [['void', 'A', 'R1'], ['void', 'A', 'R1'], ['void', 'B', 'R3'], ['post', 'C', 100], ['post', 'B', -40], ['edit', 'A', 5], ['void', 'R2', 'D']], {'status': {'C': 'posted', 'B': 'posted'}, 'balance': 60, 'errors': [[0, 'unknown'], [1, 'unknown'], [2, 'unknown'], [5, 'bad_command'], [6, 'unknown']]}], ['control 2', [['void', 'D', 'R2'], ['void', 'R3', 'R3'], ['post', 'B', 250], ['void', 'D', 'D'], ['post', 'C', 999], ['post', 'B', -40]], {'status': {'B': 'posted', 'C': 'posted'}, 'balance': 1249, 'errors': [[0, 'unknown'], [1, 'unknown'], [3, 'unknown'], [5, 'duplicate']]}], ['control 3', [['edit', 'A', 5], ['edit', 'A', 5], ['post', 'D', 100], ['post', 'B', 999]], {'status': {'D': 'posted', 'B': 'posted'}, 'balance': 1099, 'errors': [[0, 'bad_command'], [1, 'bad_command']]}], ['control 4', [['post', 'C', 999], ['void', 'R2', 'R1'], ['post', 'D', 999], ['post', 'A', 999], ['void', 'D', 'D'], ['post', 'B', -40], ['post', 'B', 999]], {'status': {'C': 'posted', 'D': 'posted', 'A': 'posted', 'B': 'posted'}, 'balance': 2957, 'errors': [[1, 'unknown'], [4, 'duplicate'], [6, 'duplicate']]}], ['control 5', [['void', 'A', 'R2'], ['void', 'R1', 'R1'], ['post', 'A', 999]], {'status': {'A': 'posted'}, 'balance': 999, 'errors': [[0, 'unknown'], [1, 'unknown']]}]], [['regression: reversal amount', [['void', 'C', 'R1'], ['void', 'R1', 'R1'], ['void', 'R1', 'D'], ['post', 'C', 999], ['void', 'R2', 'D'], ['void', 'R2', 'D'], ['void', 'C', 'R2']], {'status': {'C': 'voided', 'R2': 'reversal'}, 'balance': 0, 'errors': [[0, 'unknown'], [1, 'unknown'], [2, 'unknown'], [4, 'unknown'], [5, 'unknown']]}], ['regression: reversal amount, partial-repair probe', [['edit', 'A', 5], ['post', 'R1', -40], ['post', 'B', -40], ['post', 'B', 100], ['void', 'D', 'R1'], ['void', 'B', 'D'], ['post', 'B', 100], ['void', 'D', 'R1']], {'status': {'R1': 'posted', 'B': 'voided', 'D': 'reversal'}, 'balance': -40, 'errors': [[0, 'bad_command'], [3, 'duplicate'], [4, 'unknown'], [6, 'duplicate'], [7, 'not_voidable']]}], ['control 1', [['void', 'R2', 'R1'], ['void', 'B', 'D'], ['post', 'C', 250]], {'status': {'C': 'posted'}, 'balance': 250, 'errors': [[0, 'unknown'], [1, 'unknown']]}], ['control 2', [['void', 'A', 'R1'], ['post', 'A', -40], ['post', 'A', -40], ['post', 'A', 999], ['void', 'R1', 'R2']], {'status': {'A': 'posted'}, 'balance': -40, 'errors': [[0, 'unknown'], [2, 'duplicate'], [3, 'duplicate'], [4, 'unknown']]}], ['control 3', [['post', 'B', 250], ['post', 'D', 100], ['post', 'A', 999], ['post', 'D', -40]], {'status': {'B': 'posted', 'D': 'posted', 'A': 'posted'}, 'balance': 1349, 'errors': [[3, 'duplicate']]}], ['control 4', [['void', 'C', 'R2'], ['void', 'B', 'R3'], ['void', 'R1', 'R2'], ['void', 'D', 'D'], ['void', 'R3', 'R2'], ['post', 'C', 250], ['post', 'A', 999], ['post', 'R1', 100]], {'status': {'C': 'posted', 'A': 'posted', 'R1': 'posted'}, 'balance': 1349, 'errors': [[0, 'unknown'], [1, 'unknown'], [2, 'unknown'], [3, 'unknown'], [4, 'unknown']]}], ['control 5', [['void', 'R1', 'R3'], ['post', 'C', 999], ['post', 'R1', -40], ['post', 'D', 999], ['post', 'A', 250], ['post', 'B', 250], ['void', 'R2', 'D']], {'status': {'C': 'posted', 'R1': 'posted', 'D': 'posted', 'A': 'posted', 'B': 'posted'}, 'balance': 2458, 'errors': [[0, 'unknown'], [6, 'unknown']]}]]]\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":"43a9b8a8476a4259f5fc33b5eca618c63bbe1a0dd9c4c2dd4e40d377ff1c7a4e","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    status = {}\n    amounts = {}\n    errors = []\n    for i, cmd in enumerate(x):\n        if cmd[0] == 'post':\n            _, eid, amt = cmd\n            if eid in status:\n                errors.append([i, 'duplicate'])\n                continue\n            status[eid] = 'posted'\n            amounts[eid] = amt\n        elif cmd[0] == 'void':\n            _, target, new = cmd\n            if target not in status:\n                errors.append([i, 'unknown'])\n            elif status[target] != 'posted':\n                errors.append([i, 'not_voidable'])\n            elif new in status:\n                errors.append([i, 'duplicate'])\n            else:\n                status[target] = 'voided'\n                status[new] = 'reversal'\n                amounts[new] = amounts[target]\n        else:\n            errors.append([i, 'bad_command'])\n    return {'status': status, 'balance': sum(amounts.values()), 'errors': errors}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression: reversal amount', [['edit', 'A', 5], ['post', 'C', 999], ['void', 'C', 'R2'], ['void', 'R3', 'D']], {'status': {'C': 'voided', 'R2': 'reversal'}, 'balance': 0, 'errors': [[0, 'bad_command'], [3, 'unknown']]}], ['regression: reversal amount, partial-repair probe', [['post', 'R1', -40], ['post', 'R1', 100], ['post', 'D', 999], ['edit', 'A', 5], ['void', 'R1', 'D'], ['void', 'R1', 'R2'], ['post', 'D', 999], ['void', 'R1', 'R1']], {'status': {'R1': 'voided', 'D': 'posted', 'R2': 'reversal'}, 'balance': 999, 'errors': [[1, 'duplicate'], [3, 'bad_command'], [4, 'duplicate'], [6, 'duplicate'], [7, 'not_voidable']]}], ['control 1', [['post', 'C', 250], ['edit', 'A', 5], ['edit', 'A', 5], ['void', 'R1', 'D']], {'status': {'C': 'posted'}, 'balance': 250, 'errors': [[1, 'bad_command'], [2, 'bad_command'], [3, 'unknown']]}], ['control 2', [['void', 'R2', 'D'], ['post', 'D', 999], ['post', 'D', 999], ['post', 'R1', 100], ['void', 'A', 'D']], {'status': {'D': 'posted', 'R1': 'posted'}, 'balance': 1099, 'errors': [[0, 'unknown'], [2, 'duplicate'], [4, 'unknown']]}], ['control 3', [['post', 'A', 100], ['post', 'D', -40], ['void', 'R3', 'R2'], ['void', 'R1', 'R1'], ['post', 'D', -40], ['post', 'B', 250], ['void', 'D', 'D']], {'status': {'A': 'posted', 'D': 'posted', 'B': 'posted'}, 'balance': 310, 'errors': [[2, 'unknown'], [3, 'unknown'], [4, 'duplicate'], [6, 'duplicate']]}], ['control 4', [['void', 'C', 'R1'], ['void', 'R1', 'R2'], ['edit', 'A', 5], ['void', 'C', 'R1'], ['void', 'R3', 'R1'], ['post', 'D', 999]], {'status': {'D': 'posted'}, 'balance': 999, 'errors': [[0, 'unknown'], [1, 'unknown'], [2, 'bad_command'], [3, 'unknown'], [4, 'unknown']]}], ['control 5', [['post', 'R1', -40], ['post', 'D', -40], ['void', 'B', 'D']], {'status': {'R1': 'posted', 'D': 'posted'}, 'balance': -80, 'errors': [[2, 'unknown']]}]], [['regression: reversal amount', [['post', 'D', -40], ['post', 'C', 999], ['void', 'R3', 'R1'], ['post', 'C', 100], ['void', 'C', 'R2']], {'status': {'D': 'posted', 'C': 'voided', 'R2': 'reversal'}, 'balance': -40, 'errors': [[2, 'unknown'], [3, 'duplicate']]}], ['regression: reversal amount, partial-repair probe', [['post', 'B', -40], ['void', 'B', 'R1'], ['void', 'R3', 'R2']], {'status': {'B': 'voided', 'R1': 'reversal'}, 'balance': 0, 'errors': [[2, 'unknown']]}], ['control 1', [['post', 'B', 250], ['post', 'C', 250], ['edit', 'A', 5], ['post', 'B', 250], ['post', 'B', 100]], {'status': {'B': 'posted', 'C': 'posted'}, 'balance': 500, 'errors': [[2, 'bad_command'], [3, 'duplicate'], [4, 'duplicate']]}], ['control 2', [['post', 'B', 250], ['void', 'D', 'R3'], ['post', 'D', -40], ['post', 'A', -40], ['void', 'R3', 'R1'], ['void', 'R2', 'R3'], ['post', 'R1', -40], ['void', 'B', 'R1']], {'status': {'B': 'posted', 'D': 'posted', 'A': 'posted', 'R1': 'posted'}, 'balance': 130, 'errors': [[1, 'unknown'], [4, 'unknown'], [5, 'unknown'], [7, 'duplicate']]}], ['control 3', [['post', 'R1', -40], ['post', 'B', 250], ['post', 'C', 250], ['void', 'R2', 'R3']], {'status': {'R1': 'posted', 'B': 'posted', 'C': 'posted'}, 'balance': 460, 'errors': [[3, 'unknown']]}], ['control 4', [['post', 'A', 999], ['void', 'R1', 'R3'], ['void', 'R2', 'R2'], ['post', 'R1', 999]], {'status': {'A': 'posted', 'R1': 'posted'}, 'balance': 1998, 'errors': [[1, 'unknown'], [2, 'unknown']]}], ['control 5', [['void', 'C', 'D'], ['void', 'D', 'R1'], ['void', 'R3', 'D'], ['post', 'A', -40], ['post', 'D', 999], ['post', 'C', -40], ['void', 'R1', 'R3']], {'status': {'A': 'posted', 'D': 'posted', 'C': 'posted'}, 'balance': 919, 'errors': [[0, 'unknown'], [1, 'unknown'], [2, 'unknown'], [6, 'unknown']]}]], [['regression: reversal amount', [['void', 'R3', 'R1'], ['post', 'D', -40], ['void', 'R3', 'R1'], ['post', 'R1', 100], ['post', 'A', 250], ['void', 'R1', 'R3'], ['void', 'A', 'D'], ['void', 'R1', 'R1']], {'status': {'D': 'posted', 'R1': 'voided', 'A': 'posted', 'R3': 'reversal'}, 'balance': 210, 'errors': [[0, 'unknown'], [2, 'unknown'], [6, 'duplicate'], [7, 'not_voidable']]}], ['regression: reversal amount, partial-repair probe', [['void', 'B', 'D'], ['post', 'C', -40], ['void', 'C', 'R2'], ['void', 'R3', 'R2'], ['post', 'R1', 100], ['post', 'C', -40], ['void', 'R2', 'D']], {'status': {'C': 'voided', 'R2': 'reversal', 'R1': 'posted'}, 'balance': 100, 'errors': [[0, 'unknown'], [3, 'unknown'], [5, 'duplicate'], [6, 'not_voidable']]}], ['control 1', [['void', 'R1', 'R3'], ['void', 'A', 'R3'], ['void', 'R3', 'R1']], {'status': {}, 'balance': 0, 'errors': [[0, 'unknown'], [1, 'unknown'], [2, 'unknown']]}], ['control 2', [['void', 'C', 'R3'], ['void', 'R1', 'R3'], ['void', 'R2', 'R1'], ['void', 'R1', 'R1'], ['void', 'C', 'D'], ['void', 'A', 'R1'], ['post', 'D', 999]], {'status': {'D': 'posted'}, 'balance': 999, 'errors': [[0, 'unknown'], [1, 'unknown'], [2, 'unknown'], [3, 'unknown'], [4, 'unknown'], [5, 'unknown']]}], ['control 3', [['post', 'D', -40], ['void', 'R3', 'R1'], ['post', 'B', 100], ['post', 'R1', 250], ['void', 'C', 'D'], ['post', 'A', 999], ['void', 'R2', 'R2']], {'status': {'D': 'posted', 'B': 'posted', 'R1': 'posted', 'A': 'posted'}, 'balance': 1309, 'errors': [[1, 'unknown'], [4, 'unknown'], [6, 'unknown']]}], ['control 4', [['edit', 'A', 5], ['post', 'R1', -40], ['post', 'C', 100], ['post', 'C', 100], ['post', 'R1', 100], ['void', 'R2', 'D'], ['post', 'B', -40]], {'status': {'R1': 'posted', 'C': 'posted', 'B': 'posted'}, 'balance': 20, 'errors': [[0, 'bad_command'], [3, 'duplicate'], [4, 'duplicate'], [5, 'unknown']]}], ['control 5', [['post', 'B', 999], ['void', 'R3', 'R1'], ['void', 'D', 'R3'], ['post', 'C', 100], ['post', 'D', 999]], {'status': {'B': 'posted', 'C': 'posted', 'D': 'posted'}, 'balance': 2098, 'errors': [[1, 'unknown'], [2, 'unknown']]}]], [['regression: reversal amount', [['void', 'D', 'R1'], ['post', 'D', -40], ['post', 'A', 100], ['void', 'A', 'R1'], ['void', 'A', 'R3']], {'status': {'D': 'posted', 'A': 'voided', 'R1': 'reversal'}, 'balance': -40, 'errors': [[0, 'unknown'], [4, 'not_voidable']]}], ['regression: reversal amount, partial-repair probe', [['post', 'R1', -40], ['void', 'D', 'R1'], ['post', 'A', 250], ['void', 'R1', 'D']], {'status': {'R1': 'voided', 'A': 'posted', 'D': 'reversal'}, 'balance': 250, 'errors': [[1, 'unknown']]}], ['control 1', [['void', 'A', 'R1'], ['void', 'A', 'R1'], ['void', 'B', 'R3'], ['post', 'C', 100], ['post', 'B', -40], ['edit', 'A', 5], ['void', 'R2', 'D']], {'status': {'C': 'posted', 'B': 'posted'}, 'balance': 60, 'errors': [[0, 'unknown'], [1, 'unknown'], [2, 'unknown'], [5, 'bad_command'], [6, 'unknown']]}], ['control 2', [['void', 'D', 'R2'], ['void', 'R3', 'R3'], ['post', 'B', 250], ['void', 'D', 'D'], ['post', 'C', 999], ['post', 'B', -40]], {'status': {'B': 'posted', 'C': 'posted'}, 'balance': 1249, 'errors': [[0, 'unknown'], [1, 'unknown'], [3, 'unknown'], [5, 'duplicate']]}], ['control 3', [['edit', 'A', 5], ['edit', 'A', 5], ['post', 'D', 100], ['post', 'B', 999]], {'status': {'D': 'posted', 'B': 'posted'}, 'balance': 1099, 'errors': [[0, 'bad_command'], [1, 'bad_command']]}], ['control 4', [['post', 'C', 999], ['void', 'R2', 'R1'], ['post', 'D', 999], ['post', 'A', 999], ['void', 'D', 'D'], ['post', 'B', -40], ['post', 'B', 999]], {'status': {'C': 'posted', 'D': 'posted', 'A': 'posted', 'B': 'posted'}, 'balance': 2957, 'errors': [[1, 'unknown'], [4, 'duplicate'], [6, 'duplicate']]}], ['control 5', [['void', 'A', 'R2'], ['void', 'R1', 'R1'], ['post', 'A', 999]], {'status': {'A': 'posted'}, 'balance': 999, 'errors': [[0, 'unknown'], [1, 'unknown']]}]], [['regression: reversal amount', [['void', 'C', 'R1'], ['void', 'R1', 'R1'], ['void', 'R1', 'D'], ['post', 'C', 999], ['void', 'R2', 'D'], ['void', 'R2', 'D'], ['void', 'C', 'R2']], {'status': {'C': 'voided', 'R2': 'reversal'}, 'balance': 0, 'errors': [[0, 'unknown'], [1, 'unknown'], [2, 'unknown'], [4, 'unknown'], [5, 'unknown']]}], ['regression: reversal amount, partial-repair probe', [['edit', 'A', 5], ['post', 'R1', -40], ['post', 'B', -40], ['post', 'B', 100], ['void', 'D', 'R1'], ['void', 'B', 'D'], ['post', 'B', 100], ['void', 'D', 'R1']], {'status': {'R1': 'posted', 'B': 'voided', 'D': 'reversal'}, 'balance': -40, 'errors': [[0, 'bad_command'], [3, 'duplicate'], [4, 'unknown'], [6, 'duplicate'], [7, 'not_voidable']]}], ['control 1', [['void', 'R2', 'R1'], ['void', 'B', 'D'], ['post', 'C', 250]], {'status': {'C': 'posted'}, 'balance': 250, 'errors': [[0, 'unknown'], [1, 'unknown']]}], ['control 2', [['void', 'A', 'R1'], ['post', 'A', -40], ['post', 'A', -40], ['post', 'A', 999], ['void', 'R1', 'R2']], {'status': {'A': 'posted'}, 'balance': -40, 'errors': [[0, 'unknown'], [2, 'duplicate'], [3, 'duplicate'], [4, 'unknown']]}], ['control 3', [['post', 'B', 250], ['post', 'D', 100], ['post', 'A', 999], ['post', 'D', -40]], {'status': {'B': 'posted', 'D': 'posted', 'A': 'posted'}, 'balance': 1349, 'errors': [[3, 'duplicate']]}], ['control 4', [['void', 'C', 'R2'], ['void', 'B', 'R3'], ['void', 'R1', 'R2'], ['void', 'D', 'D'], ['void', 'R3', 'R2'], ['post', 'C', 250], ['post', 'A', 999], ['post', 'R1', 100]], {'status': {'C': 'posted', 'A': 'posted', 'R1': 'posted'}, 'balance': 1349, 'errors': [[0, 'unknown'], [1, 'unknown'], [2, 'unknown'], [3, 'unknown'], [4, 'unknown']]}], ['control 5', [['void', 'R1', 'R3'], ['post', 'C', 999], ['post', 'R1', -40], ['post', 'D', 999], ['post', 'A', 250], ['post', 'B', 250], ['void', 'R2', 'D']], {'status': {'C': 'posted', 'R1': 'posted', 'D': 'posted', 'A': 'posted', 'B': 'posted'}, 'balance': 2458, 'errors': [[0, 'unknown'], [6, 'unknown']]}]]]\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":"2dafb68180f69a9c96f314327329924b5f7a87da7b8cfe0caceae8ed0c94ccb4","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    status = {}\n    amounts = {}\n    errors = []\n    for i, cmd in enumerate(x):\n        if cmd[0] == 'post':\n            _, eid, amt = cmd\n            if eid in status:\n                errors.append([i, 'duplicate'])\n                continue\n            status[eid] = 'posted'\n            amounts[eid] = amt\n        elif cmd[0] == 'void':\n            _, target, new = cmd\n            if target not in status:\n                errors.append([i, 'unknown'])\n            elif status[target] != 'posted':\n                errors.append([i, 'not_voidable'])\n            elif new in status:\n                errors.append([i, 'duplicate'])\n            else:\n                status[target] = 'voided'\n                status[new] = 'reversal'\n                amounts[new] = -amounts[target]\n        else:\n            errors.append([i, 'bad_command'])\n    return {'status': status, 'balance': sum(amounts.values()), 'errors': errors}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression: reversal amount', [['edit', 'A', 5], ['post', 'C', 999], ['void', 'C', 'R2'], ['void', 'R3', 'D']], {'status': {'C': 'voided', 'R2': 'reversal'}, 'balance': 0, 'errors': [[0, 'bad_command'], [3, 'unknown']]}], ['regression: reversal amount, partial-repair probe', [['post', 'R1', -40], ['post', 'R1', 100], ['post', 'D', 999], ['edit', 'A', 5], ['void', 'R1', 'D'], ['void', 'R1', 'R2'], ['post', 'D', 999], ['void', 'R1', 'R1']], {'status': {'R1': 'voided', 'D': 'posted', 'R2': 'reversal'}, 'balance': 999, 'errors': [[1, 'duplicate'], [3, 'bad_command'], [4, 'duplicate'], [6, 'duplicate'], [7, 'not_voidable']]}], ['control 1', [['post', 'C', 250], ['edit', 'A', 5], ['edit', 'A', 5], ['void', 'R1', 'D']], {'status': {'C': 'posted'}, 'balance': 250, 'errors': [[1, 'bad_command'], [2, 'bad_command'], [3, 'unknown']]}], ['control 2', [['void', 'R2', 'D'], ['post', 'D', 999], ['post', 'D', 999], ['post', 'R1', 100], ['void', 'A', 'D']], {'status': {'D': 'posted', 'R1': 'posted'}, 'balance': 1099, 'errors': [[0, 'unknown'], [2, 'duplicate'], [4, 'unknown']]}], ['control 3', [['post', 'A', 100], ['post', 'D', -40], ['void', 'R3', 'R2'], ['void', 'R1', 'R1'], ['post', 'D', -40], ['post', 'B', 250], ['void', 'D', 'D']], {'status': {'A': 'posted', 'D': 'posted', 'B': 'posted'}, 'balance': 310, 'errors': [[2, 'unknown'], [3, 'unknown'], [4, 'duplicate'], [6, 'duplicate']]}], ['control 4', [['void', 'C', 'R1'], ['void', 'R1', 'R2'], ['edit', 'A', 5], ['void', 'C', 'R1'], ['void', 'R3', 'R1'], ['post', 'D', 999]], {'status': {'D': 'posted'}, 'balance': 999, 'errors': [[0, 'unknown'], [1, 'unknown'], [2, 'bad_command'], [3, 'unknown'], [4, 'unknown']]}], ['control 5', [['post', 'R1', -40], ['post', 'D', -40], ['void', 'B', 'D']], {'status': {'R1': 'posted', 'D': 'posted'}, 'balance': -80, 'errors': [[2, 'unknown']]}]], [['regression: reversal amount', [['post', 'D', -40], ['post', 'C', 999], ['void', 'R3', 'R1'], ['post', 'C', 100], ['void', 'C', 'R2']], {'status': {'D': 'posted', 'C': 'voided', 'R2': 'reversal'}, 'balance': -40, 'errors': [[2, 'unknown'], [3, 'duplicate']]}], ['regression: reversal amount, partial-repair probe', [['post', 'B', -40], ['void', 'B', 'R1'], ['void', 'R3', 'R2']], {'status': {'B': 'voided', 'R1': 'reversal'}, 'balance': 0, 'errors': [[2, 'unknown']]}], ['control 1', [['post', 'B', 250], ['post', 'C', 250], ['edit', 'A', 5], ['post', 'B', 250], ['post', 'B', 100]], {'status': {'B': 'posted', 'C': 'posted'}, 'balance': 500, 'errors': [[2, 'bad_command'], [3, 'duplicate'], [4, 'duplicate']]}], ['control 2', [['post', 'B', 250], ['void', 'D', 'R3'], ['post', 'D', -40], ['post', 'A', -40], ['void', 'R3', 'R1'], ['void', 'R2', 'R3'], ['post', 'R1', -40], ['void', 'B', 'R1']], {'status': {'B': 'posted', 'D': 'posted', 'A': 'posted', 'R1': 'posted'}, 'balance': 130, 'errors': [[1, 'unknown'], [4, 'unknown'], [5, 'unknown'], [7, 'duplicate']]}], ['control 3', [['post', 'R1', -40], ['post', 'B', 250], ['post', 'C', 250], ['void', 'R2', 'R3']], {'status': {'R1': 'posted', 'B': 'posted', 'C': 'posted'}, 'balance': 460, 'errors': [[3, 'unknown']]}], ['control 4', [['post', 'A', 999], ['void', 'R1', 'R3'], ['void', 'R2', 'R2'], ['post', 'R1', 999]], {'status': {'A': 'posted', 'R1': 'posted'}, 'balance': 1998, 'errors': [[1, 'unknown'], [2, 'unknown']]}], ['control 5', [['void', 'C', 'D'], ['void', 'D', 'R1'], ['void', 'R3', 'D'], ['post', 'A', -40], ['post', 'D', 999], ['post', 'C', -40], ['void', 'R1', 'R3']], {'status': {'A': 'posted', 'D': 'posted', 'C': 'posted'}, 'balance': 919, 'errors': [[0, 'unknown'], [1, 'unknown'], [2, 'unknown'], [6, 'unknown']]}]], [['regression: reversal amount', [['void', 'R3', 'R1'], ['post', 'D', -40], ['void', 'R3', 'R1'], ['post', 'R1', 100], ['post', 'A', 250], ['void', 'R1', 'R3'], ['void', 'A', 'D'], ['void', 'R1', 'R1']], {'status': {'D': 'posted', 'R1': 'voided', 'A': 'posted', 'R3': 'reversal'}, 'balance': 210, 'errors': [[0, 'unknown'], [2, 'unknown'], [6, 'duplicate'], [7, 'not_voidable']]}], ['regression: reversal amount, partial-repair probe', [['void', 'B', 'D'], ['post', 'C', -40], ['void', 'C', 'R2'], ['void', 'R3', 'R2'], ['post', 'R1', 100], ['post', 'C', -40], ['void', 'R2', 'D']], {'status': {'C': 'voided', 'R2': 'reversal', 'R1': 'posted'}, 'balance': 100, 'errors': [[0, 'unknown'], [3, 'unknown'], [5, 'duplicate'], [6, 'not_voidable']]}], ['control 1', [['void', 'R1', 'R3'], ['void', 'A', 'R3'], ['void', 'R3', 'R1']], {'status': {}, 'balance': 0, 'errors': [[0, 'unknown'], [1, 'unknown'], [2, 'unknown']]}], ['control 2', [['void', 'C', 'R3'], ['void', 'R1', 'R3'], ['void', 'R2', 'R1'], ['void', 'R1', 'R1'], ['void', 'C', 'D'], ['void', 'A', 'R1'], ['post', 'D', 999]], {'status': {'D': 'posted'}, 'balance': 999, 'errors': [[0, 'unknown'], [1, 'unknown'], [2, 'unknown'], [3, 'unknown'], [4, 'unknown'], [5, 'unknown']]}], ['control 3', [['post', 'D', -40], ['void', 'R3', 'R1'], ['post', 'B', 100], ['post', 'R1', 250], ['void', 'C', 'D'], ['post', 'A', 999], ['void', 'R2', 'R2']], {'status': {'D': 'posted', 'B': 'posted', 'R1': 'posted', 'A': 'posted'}, 'balance': 1309, 'errors': [[1, 'unknown'], [4, 'unknown'], [6, 'unknown']]}], ['control 4', [['edit', 'A', 5], ['post', 'R1', -40], ['post', 'C', 100], ['post', 'C', 100], ['post', 'R1', 100], ['void', 'R2', 'D'], ['post', 'B', -40]], {'status': {'R1': 'posted', 'C': 'posted', 'B': 'posted'}, 'balance': 20, 'errors': [[0, 'bad_command'], [3, 'duplicate'], [4, 'duplicate'], [5, 'unknown']]}], ['control 5', [['post', 'B', 999], ['void', 'R3', 'R1'], ['void', 'D', 'R3'], ['post', 'C', 100], ['post', 'D', 999]], {'status': {'B': 'posted', 'C': 'posted', 'D': 'posted'}, 'balance': 2098, 'errors': [[1, 'unknown'], [2, 'unknown']]}]], [['regression: reversal amount', [['void', 'D', 'R1'], ['post', 'D', -40], ['post', 'A', 100], ['void', 'A', 'R1'], ['void', 'A', 'R3']], {'status': {'D': 'posted', 'A': 'voided', 'R1': 'reversal'}, 'balance': -40, 'errors': [[0, 'unknown'], [4, 'not_voidable']]}], ['regression: reversal amount, partial-repair probe', [['post', 'R1', -40], ['void', 'D', 'R1'], ['post', 'A', 250], ['void', 'R1', 'D']], {'status': {'R1': 'voided', 'A': 'posted', 'D': 'reversal'}, 'balance': 250, 'errors': [[1, 'unknown']]}], ['control 1', [['void', 'A', 'R1'], ['void', 'A', 'R1'], ['void', 'B', 'R3'], ['post', 'C', 100], ['post', 'B', -40], ['edit', 'A', 5], ['void', 'R2', 'D']], {'status': {'C': 'posted', 'B': 'posted'}, 'balance': 60, 'errors': [[0, 'unknown'], [1, 'unknown'], [2, 'unknown'], [5, 'bad_command'], [6, 'unknown']]}], ['control 2', [['void', 'D', 'R2'], ['void', 'R3', 'R3'], ['post', 'B', 250], ['void', 'D', 'D'], ['post', 'C', 999], ['post', 'B', -40]], {'status': {'B': 'posted', 'C': 'posted'}, 'balance': 1249, 'errors': [[0, 'unknown'], [1, 'unknown'], [3, 'unknown'], [5, 'duplicate']]}], ['control 3', [['edit', 'A', 5], ['edit', 'A', 5], ['post', 'D', 100], ['post', 'B', 999]], {'status': {'D': 'posted', 'B': 'posted'}, 'balance': 1099, 'errors': [[0, 'bad_command'], [1, 'bad_command']]}], ['control 4', [['post', 'C', 999], ['void', 'R2', 'R1'], ['post', 'D', 999], ['post', 'A', 999], ['void', 'D', 'D'], ['post', 'B', -40], ['post', 'B', 999]], {'status': {'C': 'posted', 'D': 'posted', 'A': 'posted', 'B': 'posted'}, 'balance': 2957, 'errors': [[1, 'unknown'], [4, 'duplicate'], [6, 'duplicate']]}], ['control 5', [['void', 'A', 'R2'], ['void', 'R1', 'R1'], ['post', 'A', 999]], {'status': {'A': 'posted'}, 'balance': 999, 'errors': [[0, 'unknown'], [1, 'unknown']]}]], [['regression: reversal amount', [['void', 'C', 'R1'], ['void', 'R1', 'R1'], ['void', 'R1', 'D'], ['post', 'C', 999], ['void', 'R2', 'D'], ['void', 'R2', 'D'], ['void', 'C', 'R2']], {'status': {'C': 'voided', 'R2': 'reversal'}, 'balance': 0, 'errors': [[0, 'unknown'], [1, 'unknown'], [2, 'unknown'], [4, 'unknown'], [5, 'unknown']]}], ['regression: reversal amount, partial-repair probe', [['edit', 'A', 5], ['post', 'R1', -40], ['post', 'B', -40], ['post', 'B', 100], ['void', 'D', 'R1'], ['void', 'B', 'D'], ['post', 'B', 100], ['void', 'D', 'R1']], {'status': {'R1': 'posted', 'B': 'voided', 'D': 'reversal'}, 'balance': -40, 'errors': [[0, 'bad_command'], [3, 'duplicate'], [4, 'unknown'], [6, 'duplicate'], [7, 'not_voidable']]}], ['control 1', [['void', 'R2', 'R1'], ['void', 'B', 'D'], ['post', 'C', 250]], {'status': {'C': 'posted'}, 'balance': 250, 'errors': [[0, 'unknown'], [1, 'unknown']]}], ['control 2', [['void', 'A', 'R1'], ['post', 'A', -40], ['post', 'A', -40], ['post', 'A', 999], ['void', 'R1', 'R2']], {'status': {'A': 'posted'}, 'balance': -40, 'errors': [[0, 'unknown'], [2, 'duplicate'], [3, 'duplicate'], [4, 'unknown']]}], ['control 3', [['post', 'B', 250], ['post', 'D', 100], ['post', 'A', 999], ['post', 'D', -40]], {'status': {'B': 'posted', 'D': 'posted', 'A': 'posted'}, 'balance': 1349, 'errors': [[3, 'duplicate']]}], ['control 4', [['void', 'C', 'R2'], ['void', 'B', 'R3'], ['void', 'R1', 'R2'], ['void', 'D', 'D'], ['void', 'R3', 'R2'], ['post', 'C', 250], ['post', 'A', 999], ['post', 'R1', 100]], {'status': {'C': 'posted', 'A': 'posted', 'R1': 'posted'}, 'balance': 1349, 'errors': [[0, 'unknown'], [1, 'unknown'], [2, 'unknown'], [3, 'unknown'], [4, 'unknown']]}], ['control 5', [['void', 'R1', 'R3'], ['post', 'C', 999], ['post', 'R1', -40], ['post', 'D', 999], ['post', 'A', 250], ['post', 'B', 250], ['void', 'R2', 'D']], {'status': {'C': 'posted', 'R1': 'posted', 'D': 'posted', 'A': 'posted', 'B': 'posted'}, 'balance': 2458, 'errors': [[0, 'unknown'], [6, 'unknown']]}]]]\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-void-reversal-linkage-reversal-amount","generated_at":"2026-09-29T14:46:24.474643+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":"Negate the original signed amount.","root_cause":"The reversal copies the original amount instead of negating it.","sha256":"9cd7aeac06d47bca0a8d1745c5c630c687e74538937909b397a4a7b88e5d554a","title":"Journal void and reversal linkage: reversal amount · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":41.223,"exit_code":1,"observations":[{"actual":{"balance":0,"errors":[[0,"bad_command"],[3,"unknown"]],"status":{"C":"voided","R2":"reversal"}},"check":"regression: reversal amount","expected":{"balance":0,"errors":[[0,"bad_command"],[3,"unknown"]],"status":{"C":"voided","R2":"reversal"}},"passed":true},{"actual":{"balance":919,"errors":[[1,"duplicate"],[3,"bad_command"],[4,"duplicate"],[6,"duplicate"],[7,"not_voidable"]],"status":{"D":"posted","R1":"voided","R2":"reversal"}},"check":"regression: reversal amount, partial-repair probe","expected":{"balance":999,"errors":[[1,"duplicate"],[3,"bad_command"],[4,"duplicate"],[6,"duplicate"],[7,"not_voidable"]],"status":{"D":"posted","R1":"voided","R2":"reversal"}},"passed":false},{"actual":{"balance":250,"errors":[[1,"bad_command"],[2,"bad_command"],[3,"unknown"]],"status":{"C":"posted"}},"check":"control 1","expected":{"balance":250,"errors":[[1,"bad_command"],[2,"bad_command"],[3,"unknown"]],"status":{"C":"posted"}},"passed":true},{"actual":{"balance":1099,"errors":[[0,"unknown"],[2,"duplicate"],[4,"unknown"]],"status":{"D":"posted","R1":"posted"}},"check":"control 2","expected":{"balance":1099,"errors":[[0,"unknown"],[2,"duplicate"],[4,"unknown"]],"status":{"D":"posted","R1":"posted"}},"passed":true},{"actual":{"balance":310,"errors":[[2,"unknown"],[3,"unknown"],[4,"duplicate"],[6,"duplicate"]],"status":{"A":"posted","B":"posted","D":"posted"}},"check":"control 3","expected":{"balance":310,"errors":[[2,"unknown"],[3,"unknown"],[4,"duplicate"],[6,"duplicate"]],"status":{"A":"posted","B":"posted","D":"posted"}},"passed":true},{"actual":{"balance":999,"errors":[[0,"unknown"],[1,"unknown"],[2,"bad_command"],[3,"unknown"],[4,"unknown"]],"status":{"D":"posted"}},"check":"control 4","expected":{"balance":999,"errors":[[0,"unknown"],[1,"unknown"],[2,"bad_command"],[3,"unknown"],[4,"unknown"]],"status":{"D":"posted"}},"passed":true},{"actual":{"balance":-80,"errors":[[2,"unknown"]],"status":{"D":"posted","R1":"posted"}},"check":"control 5","expected":{"balance":-80,"errors":[[2,"unknown"]],"status":{"D":"posted","R1":"posted"}},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: reversal amount\", \"actual\": {\"status\": {\"C\": \"voided\", \"R2\": \"reversal\"}, \"balance\": 0, \"errors\": [[0, \"bad_command\"], [3, \"unknown\"]]}, \"expected\": {\"status\": {\"C\": \"voided\", \"R2\": \"reversal\"}, \"balance\": 0, \"errors\": [[0, \"bad_command\"], [3, \"unknown\"]]}, \"passed\": true}, {\"check\": \"regression: reversal amount, partial-repair probe\", \"actual\": {\"status\": {\"R1\": \"voided\", \"D\": \"posted\", \"R2\": \"reversal\"}, \"balance\": 919, \"errors\": [[1, \"duplicate\"], [3, \"bad_command\"], [4, \"duplicate\"], [6, \"duplicate\"], [7, \"not_voidable\"]]}, \"expected\": {\"status\": {\"R1\": \"voided\", \"D\": \"posted\", \"R2\": \"reversal\"}, \"balance\": 999, \"errors\": [[1, \"duplicate\"], [3, \"bad_command\"], [4, \"duplicate\"], [6, \"duplicate\"], [7, \"not_voidable\"]]}, \"passed\": false}, {\"check\": \"control 1\", \"actual\": {\"status\": {\"C\": \"posted\"}, \"balance\": 250, \"errors\": [[1, \"bad_command\"], [2, \"bad_command\"], [3, \"unknown\"]]}, \"expected\": {\"status\": {\"C\": \"posted\"}, \"balance\": 250, \"errors\": [[1, \"bad_command\"], [2, \"bad_command\"], [3, \"unknown\"]]}, \"passed\": true}, {\"check\": \"control 2\", \"actual\": {\"status\": {\"D\": \"posted\", \"R1\": \"posted\"}, \"balance\": 1099, \"errors\": [[0, \"unknown\"], [2, \"duplicate\"], [4, \"unknown\"]]}, \"expected\": {\"status\": {\"D\": \"posted\", \"R1\": \"posted\"}, \"balance\": 1099, \"errors\": [[0, \"unknown\"], [2, \"duplicate\"], [4, \"unknown\"]]}, \"passed\": true}, {\"check\": \"control 3\", \"actual\": {\"status\": {\"A\": \"posted\", \"D\": \"posted\", \"B\": \"posted\"}, \"balance\": 310, \"errors\": [[2, \"unknown\"], [3, \"unknown\"], [4, \"duplicate\"], [6, \"duplicate\"]]}, \"expected\": {\"status\": {\"A\": \"posted\", \"D\": \"posted\", \"B\": \"posted\"}, \"balance\": 310, \"errors\": [[2, \"unknown\"], [3, \"unknown\"], [4, \"duplicate\"], [6, \"duplicate\"]]}, \"passed\": true}, {\"check\": \"control 4\", \"actual\": {\"status\": {\"D\": \"posted\"}, \"balance\": 999, \"errors\": [[0, \"unknown\"], [1, \"unknown\"], [2, \"bad_command\"], [3, \"unknown\"], [4, \"unknown\"]]}, \"expected\": {\"status\": {\"D\": \"posted\"}, \"balance\": 999, \"errors\": [[0, \"unknown\"], [1, \"unknown\"], [2, \"bad_command\"], [3, \"unknown\"], [4, \"unknown\"]]}, \"passed\": true}, {\"check\": \"control 5\", \"actual\": {\"status\": {\"R1\": \"posted\", \"D\": \"posted\"}, \"balance\": -80, \"errors\": [[2, \"unknown\"]]}, \"expected\": {\"status\": {\"R1\": \"posted\", \"D\": \"posted\"}, \"balance\": -80, \"errors\": [[2, \"unknown\"]]}, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.825,"exit_code":1,"observations":[{"actual":{"balance":1998,"errors":[[0,"bad_command"],[3,"unknown"]],"status":{"C":"voided","R2":"reversal"}},"check":"regression: reversal amount","expected":{"balance":0,"errors":[[0,"bad_command"],[3,"unknown"]],"status":{"C":"voided","R2":"reversal"}},"passed":false},{"actual":{"balance":919,"errors":[[1,"duplicate"],[3,"bad_command"],[4,"duplicate"],[6,"duplicate"],[7,"not_voidable"]],"status":{"D":"posted","R1":"voided","R2":"reversal"}},"check":"regression: reversal amount, partial-repair probe","expected":{"balance":999,"errors":[[1,"duplicate"],[3,"bad_command"],[4,"duplicate"],[6,"duplicate"],[7,"not_voidable"]],"status":{"D":"posted","R1":"voided","R2":"reversal"}},"passed":false},{"actual":{"balance":250,"errors":[[1,"bad_command"],[2,"bad_command"],[3,"unknown"]],"status":{"C":"posted"}},"check":"control 1","expected":{"balance":250,"errors":[[1,"bad_command"],[2,"bad_command"],[3,"unknown"]],"status":{"C":"posted"}},"passed":true},{"actual":{"balance":1099,"errors":[[0,"unknown"],[2,"duplicate"],[4,"unknown"]],"status":{"D":"posted","R1":"posted"}},"check":"control 2","expected":{"balance":1099,"errors":[[0,"unknown"],[2,"duplicate"],[4,"unknown"]],"status":{"D":"posted","R1":"posted"}},"passed":true},{"actual":{"balance":310,"errors":[[2,"unknown"],[3,"unknown"],[4,"duplicate"],[6,"duplicate"]],"status":{"A":"posted","B":"posted","D":"posted"}},"check":"control 3","expected":{"balance":310,"errors":[[2,"unknown"],[3,"unknown"],[4,"duplicate"],[6,"duplicate"]],"status":{"A":"posted","B":"posted","D":"posted"}},"passed":true},{"actual":{"balance":999,"errors":[[0,"unknown"],[1,"unknown"],[2,"bad_command"],[3,"unknown"],[4,"unknown"]],"status":{"D":"posted"}},"check":"control 4","expected":{"balance":999,"errors":[[0,"unknown"],[1,"unknown"],[2,"bad_command"],[3,"unknown"],[4,"unknown"]],"status":{"D":"posted"}},"passed":true},{"actual":{"balance":-80,"errors":[[2,"unknown"]],"status":{"D":"posted","R1":"posted"}},"check":"control 5","expected":{"balance":-80,"errors":[[2,"unknown"]],"status":{"D":"posted","R1":"posted"}},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: reversal amount\", \"actual\": {\"status\": {\"C\": \"voided\", \"R2\": \"reversal\"}, \"balance\": 1998, \"errors\": [[0, \"bad_command\"], [3, \"unknown\"]]}, \"expected\": {\"status\": {\"C\": \"voided\", \"R2\": \"reversal\"}, \"balance\": 0, \"errors\": [[0, \"bad_command\"], [3, \"unknown\"]]}, \"passed\": false}, {\"check\": \"regression: reversal amount, partial-repair probe\", \"actual\": {\"status\": {\"R1\": \"voided\", \"D\": \"posted\", \"R2\": \"reversal\"}, \"balance\": 919, \"errors\": [[1, \"duplicate\"], [3, \"bad_command\"], [4, \"duplicate\"], [6, \"duplicate\"], [7, \"not_voidable\"]]}, \"expected\": {\"status\": {\"R1\": \"voided\", \"D\": \"posted\", \"R2\": \"reversal\"}, \"balance\": 999, \"errors\": [[1, \"duplicate\"], [3, \"bad_command\"], [4, \"duplicate\"], [6, \"duplicate\"], [7, \"not_voidable\"]]}, \"passed\": false}, {\"check\": \"control 1\", \"actual\": {\"status\": {\"C\": \"posted\"}, \"balance\": 250, \"errors\": [[1, \"bad_command\"], [2, \"bad_command\"], [3, \"unknown\"]]}, \"expected\": {\"status\": {\"C\": \"posted\"}, \"balance\": 250, \"errors\": [[1, \"bad_command\"], [2, \"bad_command\"], [3, \"unknown\"]]}, \"passed\": true}, {\"check\": \"control 2\", \"actual\": {\"status\": {\"D\": \"posted\", \"R1\": \"posted\"}, \"balance\": 1099, \"errors\": [[0, \"unknown\"], [2, \"duplicate\"], [4, \"unknown\"]]}, \"expected\": {\"status\": {\"D\": \"posted\", \"R1\": \"posted\"}, \"balance\": 1099, \"errors\": [[0, \"unknown\"], [2, \"duplicate\"], [4, \"unknown\"]]}, \"passed\": true}, {\"check\": \"control 3\", \"actual\": {\"status\": {\"A\": \"posted\", \"D\": \"posted\", \"B\": \"posted\"}, \"balance\": 310, \"errors\": [[2, \"unknown\"], [3, \"unknown\"], [4, \"duplicate\"], [6, \"duplicate\"]]}, \"expected\": {\"status\": {\"A\": \"posted\", \"D\": \"posted\", \"B\": \"posted\"}, \"balance\": 310, \"errors\": [[2, \"unknown\"], [3, \"unknown\"], [4, \"duplicate\"], [6, \"duplicate\"]]}, \"passed\": true}, {\"check\": \"control 4\", \"actual\": {\"status\": {\"D\": \"posted\"}, \"balance\": 999, \"errors\": [[0, \"unknown\"], [1, \"unknown\"], [2, \"bad_command\"], [3, \"unknown\"], [4, \"unknown\"]]}, \"expected\": {\"status\": {\"D\": \"posted\"}, \"balance\": 999, \"errors\": [[0, \"unknown\"], [1, \"unknown\"], [2, \"bad_command\"], [3, \"unknown\"], [4, \"unknown\"]]}, \"passed\": true}, {\"check\": \"control 5\", \"actual\": {\"status\": {\"R1\": \"posted\", \"D\": \"posted\"}, \"balance\": -80, \"errors\": [[2, \"unknown\"]]}, \"expected\": {\"status\": {\"R1\": \"posted\", \"D\": \"posted\"}, \"balance\": -80, \"errors\": [[2, \"unknown\"]]}, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":43.89,"exit_code":0,"observations":[{"actual":{"balance":0,"errors":[[0,"bad_command"],[3,"unknown"]],"status":{"C":"voided","R2":"reversal"}},"check":"regression: reversal amount","expected":{"balance":0,"errors":[[0,"bad_command"],[3,"unknown"]],"status":{"C":"voided","R2":"reversal"}},"passed":true},{"actual":{"balance":999,"errors":[[1,"duplicate"],[3,"bad_command"],[4,"duplicate"],[6,"duplicate"],[7,"not_voidable"]],"status":{"D":"posted","R1":"voided","R2":"reversal"}},"check":"regression: reversal amount, partial-repair probe","expected":{"balance":999,"errors":[[1,"duplicate"],[3,"bad_command"],[4,"duplicate"],[6,"duplicate"],[7,"not_voidable"]],"status":{"D":"posted","R1":"voided","R2":"reversal"}},"passed":true},{"actual":{"balance":250,"errors":[[1,"bad_command"],[2,"bad_command"],[3,"unknown"]],"status":{"C":"posted"}},"check":"control 1","expected":{"balance":250,"errors":[[1,"bad_command"],[2,"bad_command"],[3,"unknown"]],"status":{"C":"posted"}},"passed":true},{"actual":{"balance":1099,"errors":[[0,"unknown"],[2,"duplicate"],[4,"unknown"]],"status":{"D":"posted","R1":"posted"}},"check":"control 2","expected":{"balance":1099,"errors":[[0,"unknown"],[2,"duplicate"],[4,"unknown"]],"status":{"D":"posted","R1":"posted"}},"passed":true},{"actual":{"balance":310,"errors":[[2,"unknown"],[3,"unknown"],[4,"duplicate"],[6,"duplicate"]],"status":{"A":"posted","B":"posted","D":"posted"}},"check":"control 3","expected":{"balance":310,"errors":[[2,"unknown"],[3,"unknown"],[4,"duplicate"],[6,"duplicate"]],"status":{"A":"posted","B":"posted","D":"posted"}},"passed":true},{"actual":{"balance":999,"errors":[[0,"unknown"],[1,"unknown"],[2,"bad_command"],[3,"unknown"],[4,"unknown"]],"status":{"D":"posted"}},"check":"control 4","expected":{"balance":999,"errors":[[0,"unknown"],[1,"unknown"],[2,"bad_command"],[3,"unknown"],[4,"unknown"]],"status":{"D":"posted"}},"passed":true},{"actual":{"balance":-80,"errors":[[2,"unknown"]],"status":{"D":"posted","R1":"posted"}},"check":"control 5","expected":{"balance":-80,"errors":[[2,"unknown"]],"status":{"D":"posted","R1":"posted"}},"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: reversal amount\", \"actual\": {\"status\": {\"C\": \"voided\", \"R2\": \"reversal\"}, \"balance\": 0, \"errors\": [[0, \"bad_command\"], [3, \"unknown\"]]}, \"expected\": {\"status\": {\"C\": \"voided\", \"R2\": \"reversal\"}, \"balance\": 0, \"errors\": [[0, \"bad_command\"], [3, \"unknown\"]]}, \"passed\": true}, {\"check\": \"regression: reversal amount, partial-repair probe\", \"actual\": {\"status\": {\"R1\": \"voided\", \"D\": \"posted\", \"R2\": \"reversal\"}, \"balance\": 999, \"errors\": [[1, \"duplicate\"], [3, \"bad_command\"], [4, \"duplicate\"], [6, \"duplicate\"], [7, \"not_voidable\"]]}, \"expected\": {\"status\": {\"R1\": \"voided\", \"D\": \"posted\", \"R2\": \"reversal\"}, \"balance\": 999, \"errors\": [[1, \"duplicate\"], [3, \"bad_command\"], [4, \"duplicate\"], [6, \"duplicate\"], [7, \"not_voidable\"]]}, \"passed\": true}, {\"check\": \"control 1\", \"actual\": {\"status\": {\"C\": \"posted\"}, \"balance\": 250, \"errors\": [[1, \"bad_command\"], [2, \"bad_command\"], [3, \"unknown\"]]}, \"expected\": {\"status\": {\"C\": \"posted\"}, \"balance\": 250, \"errors\": [[1, \"bad_command\"], [2, \"bad_command\"], [3, \"unknown\"]]}, \"passed\": true}, {\"check\": \"control 2\", \"actual\": {\"status\": {\"D\": \"posted\", \"R1\": \"posted\"}, \"balance\": 1099, \"errors\": [[0, \"unknown\"], [2, \"duplicate\"], [4, \"unknown\"]]}, \"expected\": {\"status\": {\"D\": \"posted\", \"R1\": \"posted\"}, \"balance\": 1099, \"errors\": [[0, \"unknown\"], [2, \"duplicate\"], [4, \"unknown\"]]}, \"passed\": true}, {\"check\": \"control 3\", \"actual\": {\"status\": {\"A\": \"posted\", \"D\": \"posted\", \"B\": \"posted\"}, \"balance\": 310, \"errors\": [[2, \"unknown\"], [3, \"unknown\"], [4, \"duplicate\"], [6, \"duplicate\"]]}, \"expected\": {\"status\": {\"A\": \"posted\", \"D\": \"posted\", \"B\": \"posted\"}, \"balance\": 310, \"errors\": [[2, \"unknown\"], [3, \"unknown\"], [4, \"duplicate\"], [6, \"duplicate\"]]}, \"passed\": true}, {\"check\": \"control 4\", \"actual\": {\"status\": {\"D\": \"posted\"}, \"balance\": 999, \"errors\": [[0, \"unknown\"], [1, \"unknown\"], [2, \"bad_command\"], [3, \"unknown\"], [4, \"unknown\"]]}, \"expected\": {\"status\": {\"D\": \"posted\"}, \"balance\": 999, \"errors\": [[0, \"unknown\"], [1, \"unknown\"], [2, \"bad_command\"], [3, \"unknown\"], [4, \"unknown\"]]}, \"passed\": true}, {\"check\": \"control 5\", \"actual\": {\"status\": {\"R1\": \"posted\", \"D\": \"posted\"}, \"balance\": -80, \"errors\": [[2, \"unknown\"]]}, \"expected\": {\"status\": {\"R1\": \"posted\", \"D\": \"posted\"}, \"balance\": -80, \"errors\": [[2, \"unknown\"]]}, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}