{"abstract":"Selling costs are understated for high-margin goods, so NRV and write-downs are wrong.","category":"Inventory cost layering","checks":8,"contract":"Input {items:[{sku,qty,cost,price,complete,sell_bp,group}], prior:{sku:carrying unit}}. NRV = price - complete - round-half-up(price*sell_bp/10000), floored at 0. Carrying unit = min(original cost, NRV). Adjustment = qty*(carrying - prior carrying), prior defaulting to original cost (reversals are thereby capped at cost). Group check: write-down per group = max(0, sum qty*cost - sum qty*NRV). Return {items:[[sku,carry,adj]], group_writedown}.","evaluation_group":"w2-inventory-cost-layering-lcnrv-writedown","failed_approach":"Applying the rate to price net of completion cost still understates selling cost.","family":"w2-inventory-cost-layering-lcnrv-writedown-selling-cost-base","id":"FA-59966","implementations":{"attempt":{"sha256":"40273371822648cfa5b1a618e19c8fd130c11a13298ebb228972000853ca611c","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    res = []\n    groups = {}\n    for it in x['items']:\n        sell = ((it['price'] - it['complete']) * it['sell_bp'] + 5000) // 10000\n        nrv = it['price'] - it['complete'] - sell\n        if nrv < 0:\n            nrv = 0\n        carry = min(it['cost'], nrv)\n        prior = x['prior'].get(it['sku'], it['cost'])\n        res.append([it['sku'], carry, it['qty'] * (carry - prior)])\n        g = groups.setdefault(it['group'], [0, 0])\n        g[0] += it['qty'] * it['cost']\n        g[1] += it['qty'] * nrv\n    gw = {k: max(0, v[0] - v[1]) for k, v in sorted(groups.items())}\n    return {'items': res, 'group_writedown': gw}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['write down', {'items': [{'sku': 'A', 'qty': 5, 'cost': 1000, 'price': 1100, 'complete': 100, 'sell_bp': 1001, 'group': 'g1'}], 'prior': {}}, {'items': [['A', 890, -550]], 'group_writedown': {'g1': 550}}], ['no write down', {'items': [{'sku': 'B', 'qty': 2, 'cost': 500, 'price': 900, 'complete': 50, 'sell_bp': 500, 'group': 'g1'}], 'prior': {}}, {'items': [['B', 500, 0]], 'group_writedown': {'g1': 0}}], ['negative nrv', {'items': [{'sku': 'C', 'qty': 3, 'cost': 400, 'price': 300, 'complete': 251, 'sell_bp': 2000, 'group': 'g2'}], 'prior': {}}, {'items': [['C', 0, -1200]], 'group_writedown': {'g2': 1200}}], ['reversal capped', {'items': [{'sku': 'D', 'qty': 4, 'cost': 800, 'price': 1500, 'complete': 0, 'sell_bp': 0, 'group': 'g2'}], 'prior': {'D': 601}}, {'items': [['D', 800, 796]], 'group_writedown': {'g2': 0}}], ['partial reversal', {'items': [{'sku': 'E', 'qty': 1, 'cost': 800, 'price': 850, 'complete': 0, 'sell_bp': 1000, 'group': 'g1'}], 'prior': {'E': 700}}, {'items': [['E', 765, 65]], 'group_writedown': {'g1': 35}}], ['group offset', {'items': [{'sku': 'F', 'qty': 1, 'cost': 1000, 'price': 700, 'complete': 0, 'sell_bp': 0, 'group': 'g3'}, {'sku': 'G', 'qty': 1, 'cost': 200, 'price': 601, 'complete': 0, 'sell_bp': 0, 'group': 'g3'}], 'prior': {}}, {'items': [['F', 700, -300], ['G', 200, 0]], 'group_writedown': {'g3': 0}}], ['group loss', {'items': [{'sku': 'H', 'qty': 2, 'cost': 1000, 'price': 700, 'complete': 0, 'sell_bp': 0, 'group': 'g4'}, {'sku': 'J', 'qty': 1, 'cost': 200, 'price': 250, 'complete': 0, 'sell_bp': 0, 'group': 'g4'}], 'prior': {'H': 900}}, {'items': [['H', 700, -400], ['J', 200, 0]], 'group_writedown': {'g4': 550}}], ['costly completion', {'items': [{'sku': 'K', 'qty': 1, 'cost': 300, 'price': 1000, 'complete': 900, 'sell_bp': 500, 'group': 'g5'}], 'prior': {}}, {'items': [['K', 50, -250]], 'group_writedown': {'g5': 250}}]], [['write down', {'items': [{'sku': 'A', 'qty': 5, 'cost': 1000, 'price': 1100, 'complete': 100, 'sell_bp': 1002, 'group': 'g1'}], 'prior': {}}, {'items': [['A', 890, -550]], 'group_writedown': {'g1': 550}}], ['no write down', {'items': [{'sku': 'B', 'qty': 2, 'cost': 500, 'price': 900, 'complete': 50, 'sell_bp': 500, 'group': 'g1'}], 'prior': {}}, {'items': [['B', 500, 0]], 'group_writedown': {'g1': 0}}], ['negative nrv', {'items': [{'sku': 'C', 'qty': 3, 'cost': 400, 'price': 300, 'complete': 252, 'sell_bp': 2000, 'group': 'g2'}], 'prior': {}}, {'items': [['C', 0, -1200]], 'group_writedown': {'g2': 1200}}], ['reversal capped', {'items': [{'sku': 'D', 'qty': 4, 'cost': 800, 'price': 1500, 'complete': 0, 'sell_bp': 0, 'group': 'g2'}], 'prior': {'D': 602}}, {'items': [['D', 800, 792]], 'group_writedown': {'g2': 0}}], ['partial reversal', {'items': [{'sku': 'E', 'qty': 1, 'cost': 800, 'price': 850, 'complete': 0, 'sell_bp': 1000, 'group': 'g1'}], 'prior': {'E': 700}}, {'items': [['E', 765, 65]], 'group_writedown': {'g1': 35}}], ['group offset', {'items': [{'sku': 'F', 'qty': 1, 'cost': 1000, 'price': 700, 'complete': 0, 'sell_bp': 0, 'group': 'g3'}, {'sku': 'G', 'qty': 1, 'cost': 200, 'price': 602, 'complete': 0, 'sell_bp': 0, 'group': 'g3'}], 'prior': {}}, {'items': [['F', 700, -300], ['G', 200, 0]], 'group_writedown': {'g3': 0}}], ['group loss', {'items': [{'sku': 'H', 'qty': 2, 'cost': 1000, 'price': 700, 'complete': 0, 'sell_bp': 0, 'group': 'g4'}, {'sku': 'J', 'qty': 1, 'cost': 200, 'price': 250, 'complete': 0, 'sell_bp': 0, 'group': 'g4'}], 'prior': {'H': 900}}, {'items': [['H', 700, -400], ['J', 200, 0]], 'group_writedown': {'g4': 550}}], ['costly completion', {'items': [{'sku': 'K', 'qty': 1, 'cost': 300, 'price': 1000, 'complete': 900, 'sell_bp': 500, 'group': 'g5'}], 'prior': {}}, {'items': [['K', 50, -250]], 'group_writedown': {'g5': 250}}]], [['write down', {'items': [{'sku': 'A', 'qty': 5, 'cost': 1000, 'price': 1100, 'complete': 100, 'sell_bp': 1003, 'group': 'g1'}], 'prior': {}}, {'items': [['A', 890, -550]], 'group_writedown': {'g1': 550}}], ['no write down', {'items': [{'sku': 'B', 'qty': 2, 'cost': 500, 'price': 900, 'complete': 50, 'sell_bp': 500, 'group': 'g1'}], 'prior': {}}, {'items': [['B', 500, 0]], 'group_writedown': {'g1': 0}}], ['negative nrv', {'items': [{'sku': 'C', 'qty': 3, 'cost': 400, 'price': 300, 'complete': 253, 'sell_bp': 2000, 'group': 'g2'}], 'prior': {}}, {'items': [['C', 0, -1200]], 'group_writedown': {'g2': 1200}}], ['reversal capped', {'items': [{'sku': 'D', 'qty': 4, 'cost': 800, 'price': 1500, 'complete': 0, 'sell_bp': 0, 'group': 'g2'}], 'prior': {'D': 603}}, {'items': [['D', 800, 788]], 'group_writedown': {'g2': 0}}], ['partial reversal', {'items': [{'sku': 'E', 'qty': 1, 'cost': 800, 'price': 850, 'complete': 0, 'sell_bp': 1000, 'group': 'g1'}], 'prior': {'E': 700}}, {'items': [['E', 765, 65]], 'group_writedown': {'g1': 35}}], ['group offset', {'items': [{'sku': 'F', 'qty': 1, 'cost': 1000, 'price': 700, 'complete': 0, 'sell_bp': 0, 'group': 'g3'}, {'sku': 'G', 'qty': 1, 'cost': 200, 'price': 603, 'complete': 0, 'sell_bp': 0, 'group': 'g3'}], 'prior': {}}, {'items': [['F', 700, -300], ['G', 200, 0]], 'group_writedown': {'g3': 0}}], ['group loss', {'items': [{'sku': 'H', 'qty': 2, 'cost': 1000, 'price': 700, 'complete': 0, 'sell_bp': 0, 'group': 'g4'}, {'sku': 'J', 'qty': 1, 'cost': 200, 'price': 250, 'complete': 0, 'sell_bp': 0, 'group': 'g4'}], 'prior': {'H': 900}}, {'items': [['H', 700, -400], ['J', 200, 0]], 'group_writedown': {'g4': 550}}], ['costly completion', {'items': [{'sku': 'K', 'qty': 1, 'cost': 300, 'price': 1000, 'complete': 900, 'sell_bp': 500, 'group': 'g5'}], 'prior': {}}, {'items': [['K', 50, -250]], 'group_writedown': {'g5': 250}}]], [['write down', {'items': [{'sku': 'A', 'qty': 5, 'cost': 1000, 'price': 1100, 'complete': 100, 'sell_bp': 1004, 'group': 'g1'}], 'prior': {}}, {'items': [['A', 890, -550]], 'group_writedown': {'g1': 550}}], ['no write down', {'items': [{'sku': 'B', 'qty': 2, 'cost': 500, 'price': 900, 'complete': 50, 'sell_bp': 500, 'group': 'g1'}], 'prior': {}}, {'items': [['B', 500, 0]], 'group_writedown': {'g1': 0}}], ['negative nrv', {'items': [{'sku': 'C', 'qty': 3, 'cost': 400, 'price': 300, 'complete': 254, 'sell_bp': 2000, 'group': 'g2'}], 'prior': {}}, {'items': [['C', 0, -1200]], 'group_writedown': {'g2': 1200}}], ['reversal capped', {'items': [{'sku': 'D', 'qty': 4, 'cost': 800, 'price': 1500, 'complete': 0, 'sell_bp': 0, 'group': 'g2'}], 'prior': {'D': 604}}, {'items': [['D', 800, 784]], 'group_writedown': {'g2': 0}}], ['partial reversal', {'items': [{'sku': 'E', 'qty': 1, 'cost': 800, 'price': 850, 'complete': 0, 'sell_bp': 1000, 'group': 'g1'}], 'prior': {'E': 700}}, {'items': [['E', 765, 65]], 'group_writedown': {'g1': 35}}], ['group offset', {'items': [{'sku': 'F', 'qty': 1, 'cost': 1000, 'price': 700, 'complete': 0, 'sell_bp': 0, 'group': 'g3'}, {'sku': 'G', 'qty': 1, 'cost': 200, 'price': 604, 'complete': 0, 'sell_bp': 0, 'group': 'g3'}], 'prior': {}}, {'items': [['F', 700, -300], ['G', 200, 0]], 'group_writedown': {'g3': 0}}], ['group loss', {'items': [{'sku': 'H', 'qty': 2, 'cost': 1000, 'price': 700, 'complete': 0, 'sell_bp': 0, 'group': 'g4'}, {'sku': 'J', 'qty': 1, 'cost': 200, 'price': 250, 'complete': 0, 'sell_bp': 0, 'group': 'g4'}], 'prior': {'H': 900}}, {'items': [['H', 700, -400], ['J', 200, 0]], 'group_writedown': {'g4': 550}}], ['costly completion', {'items': [{'sku': 'K', 'qty': 1, 'cost': 300, 'price': 1000, 'complete': 900, 'sell_bp': 500, 'group': 'g5'}], 'prior': {}}, {'items': [['K', 50, -250]], 'group_writedown': {'g5': 250}}]], [['write down', {'items': [{'sku': 'A', 'qty': 5, 'cost': 1000, 'price': 1100, 'complete': 100, 'sell_bp': 1005, 'group': 'g1'}], 'prior': {}}, {'items': [['A', 889, -555]], 'group_writedown': {'g1': 555}}], ['no write down', {'items': [{'sku': 'B', 'qty': 2, 'cost': 500, 'price': 900, 'complete': 50, 'sell_bp': 500, 'group': 'g1'}], 'prior': {}}, {'items': [['B', 500, 0]], 'group_writedown': {'g1': 0}}], ['negative nrv', {'items': [{'sku': 'C', 'qty': 3, 'cost': 400, 'price': 300, 'complete': 255, 'sell_bp': 2000, 'group': 'g2'}], 'prior': {}}, {'items': [['C', 0, -1200]], 'group_writedown': {'g2': 1200}}], ['reversal capped', {'items': [{'sku': 'D', 'qty': 4, 'cost': 800, 'price': 1500, 'complete': 0, 'sell_bp': 0, 'group': 'g2'}], 'prior': {'D': 605}}, {'items': [['D', 800, 780]], 'group_writedown': {'g2': 0}}], ['partial reversal', {'items': [{'sku': 'E', 'qty': 1, 'cost': 800, 'price': 850, 'complete': 0, 'sell_bp': 1000, 'group': 'g1'}], 'prior': {'E': 700}}, {'items': [['E', 765, 65]], 'group_writedown': {'g1': 35}}], ['group offset', {'items': [{'sku': 'F', 'qty': 1, 'cost': 1000, 'price': 700, 'complete': 0, 'sell_bp': 0, 'group': 'g3'}, {'sku': 'G', 'qty': 1, 'cost': 200, 'price': 605, 'complete': 0, 'sell_bp': 0, 'group': 'g3'}], 'prior': {}}, {'items': [['F', 700, -300], ['G', 200, 0]], 'group_writedown': {'g3': 0}}], ['group loss', {'items': [{'sku': 'H', 'qty': 2, 'cost': 1000, 'price': 700, 'complete': 0, 'sell_bp': 0, 'group': 'g4'}, {'sku': 'J', 'qty': 1, 'cost': 200, 'price': 250, 'complete': 0, 'sell_bp': 0, 'group': 'g4'}], 'prior': {'H': 900}}, {'items': [['H', 700, -400], ['J', 200, 0]], 'group_writedown': {'g4': 550}}], ['costly completion', {'items': [{'sku': 'K', 'qty': 1, 'cost': 300, 'price': 1000, 'complete': 900, 'sell_bp': 500, 'group': 'g5'}], 'prior': {}}, {'items': [['K', 50, -250]], 'group_writedown': {'g5': 250}}]]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(args), 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":"08624153e87a7241a2fc3cadb6f99a92574c488ae53bc408845f8280d3805085","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    res = []\n    groups = {}\n    for it in x['items']:\n        sell = (it['cost'] * it['sell_bp'] + 5000) // 10000\n        nrv = it['price'] - it['complete'] - sell\n        if nrv < 0:\n            nrv = 0\n        carry = min(it['cost'], nrv)\n        prior = x['prior'].get(it['sku'], it['cost'])\n        res.append([it['sku'], carry, it['qty'] * (carry - prior)])\n        g = groups.setdefault(it['group'], [0, 0])\n        g[0] += it['qty'] * it['cost']\n        g[1] += it['qty'] * nrv\n    gw = {k: max(0, v[0] - v[1]) for k, v in sorted(groups.items())}\n    return {'items': res, 'group_writedown': gw}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['write down', {'items': [{'sku': 'A', 'qty': 5, 'cost': 1000, 'price': 1100, 'complete': 100, 'sell_bp': 1001, 'group': 'g1'}], 'prior': {}}, {'items': [['A', 890, -550]], 'group_writedown': {'g1': 550}}], ['no write down', {'items': [{'sku': 'B', 'qty': 2, 'cost': 500, 'price': 900, 'complete': 50, 'sell_bp': 500, 'group': 'g1'}], 'prior': {}}, {'items': [['B', 500, 0]], 'group_writedown': {'g1': 0}}], ['negative nrv', {'items': [{'sku': 'C', 'qty': 3, 'cost': 400, 'price': 300, 'complete': 251, 'sell_bp': 2000, 'group': 'g2'}], 'prior': {}}, {'items': [['C', 0, -1200]], 'group_writedown': {'g2': 1200}}], ['reversal capped', {'items': [{'sku': 'D', 'qty': 4, 'cost': 800, 'price': 1500, 'complete': 0, 'sell_bp': 0, 'group': 'g2'}], 'prior': {'D': 601}}, {'items': [['D', 800, 796]], 'group_writedown': {'g2': 0}}], ['partial reversal', {'items': [{'sku': 'E', 'qty': 1, 'cost': 800, 'price': 850, 'complete': 0, 'sell_bp': 1000, 'group': 'g1'}], 'prior': {'E': 700}}, {'items': [['E', 765, 65]], 'group_writedown': {'g1': 35}}], ['group offset', {'items': [{'sku': 'F', 'qty': 1, 'cost': 1000, 'price': 700, 'complete': 0, 'sell_bp': 0, 'group': 'g3'}, {'sku': 'G', 'qty': 1, 'cost': 200, 'price': 601, 'complete': 0, 'sell_bp': 0, 'group': 'g3'}], 'prior': {}}, {'items': [['F', 700, -300], ['G', 200, 0]], 'group_writedown': {'g3': 0}}], ['group loss', {'items': [{'sku': 'H', 'qty': 2, 'cost': 1000, 'price': 700, 'complete': 0, 'sell_bp': 0, 'group': 'g4'}, {'sku': 'J', 'qty': 1, 'cost': 200, 'price': 250, 'complete': 0, 'sell_bp': 0, 'group': 'g4'}], 'prior': {'H': 900}}, {'items': [['H', 700, -400], ['J', 200, 0]], 'group_writedown': {'g4': 550}}], ['costly completion', {'items': [{'sku': 'K', 'qty': 1, 'cost': 300, 'price': 1000, 'complete': 900, 'sell_bp': 500, 'group': 'g5'}], 'prior': {}}, {'items': [['K', 50, -250]], 'group_writedown': {'g5': 250}}]], [['write down', {'items': [{'sku': 'A', 'qty': 5, 'cost': 1000, 'price': 1100, 'complete': 100, 'sell_bp': 1002, 'group': 'g1'}], 'prior': {}}, {'items': [['A', 890, -550]], 'group_writedown': {'g1': 550}}], ['no write down', {'items': [{'sku': 'B', 'qty': 2, 'cost': 500, 'price': 900, 'complete': 50, 'sell_bp': 500, 'group': 'g1'}], 'prior': {}}, {'items': [['B', 500, 0]], 'group_writedown': {'g1': 0}}], ['negative nrv', {'items': [{'sku': 'C', 'qty': 3, 'cost': 400, 'price': 300, 'complete': 252, 'sell_bp': 2000, 'group': 'g2'}], 'prior': {}}, {'items': [['C', 0, -1200]], 'group_writedown': {'g2': 1200}}], ['reversal capped', {'items': [{'sku': 'D', 'qty': 4, 'cost': 800, 'price': 1500, 'complete': 0, 'sell_bp': 0, 'group': 'g2'}], 'prior': {'D': 602}}, {'items': [['D', 800, 792]], 'group_writedown': {'g2': 0}}], ['partial reversal', {'items': [{'sku': 'E', 'qty': 1, 'cost': 800, 'price': 850, 'complete': 0, 'sell_bp': 1000, 'group': 'g1'}], 'prior': {'E': 700}}, {'items': [['E', 765, 65]], 'group_writedown': {'g1': 35}}], ['group offset', {'items': [{'sku': 'F', 'qty': 1, 'cost': 1000, 'price': 700, 'complete': 0, 'sell_bp': 0, 'group': 'g3'}, {'sku': 'G', 'qty': 1, 'cost': 200, 'price': 602, 'complete': 0, 'sell_bp': 0, 'group': 'g3'}], 'prior': {}}, {'items': [['F', 700, -300], ['G', 200, 0]], 'group_writedown': {'g3': 0}}], ['group loss', {'items': [{'sku': 'H', 'qty': 2, 'cost': 1000, 'price': 700, 'complete': 0, 'sell_bp': 0, 'group': 'g4'}, {'sku': 'J', 'qty': 1, 'cost': 200, 'price': 250, 'complete': 0, 'sell_bp': 0, 'group': 'g4'}], 'prior': {'H': 900}}, {'items': [['H', 700, -400], ['J', 200, 0]], 'group_writedown': {'g4': 550}}], ['costly completion', {'items': [{'sku': 'K', 'qty': 1, 'cost': 300, 'price': 1000, 'complete': 900, 'sell_bp': 500, 'group': 'g5'}], 'prior': {}}, {'items': [['K', 50, -250]], 'group_writedown': {'g5': 250}}]], [['write down', {'items': [{'sku': 'A', 'qty': 5, 'cost': 1000, 'price': 1100, 'complete': 100, 'sell_bp': 1003, 'group': 'g1'}], 'prior': {}}, {'items': [['A', 890, -550]], 'group_writedown': {'g1': 550}}], ['no write down', {'items': [{'sku': 'B', 'qty': 2, 'cost': 500, 'price': 900, 'complete': 50, 'sell_bp': 500, 'group': 'g1'}], 'prior': {}}, {'items': [['B', 500, 0]], 'group_writedown': {'g1': 0}}], ['negative nrv', {'items': [{'sku': 'C', 'qty': 3, 'cost': 400, 'price': 300, 'complete': 253, 'sell_bp': 2000, 'group': 'g2'}], 'prior': {}}, {'items': [['C', 0, -1200]], 'group_writedown': {'g2': 1200}}], ['reversal capped', {'items': [{'sku': 'D', 'qty': 4, 'cost': 800, 'price': 1500, 'complete': 0, 'sell_bp': 0, 'group': 'g2'}], 'prior': {'D': 603}}, {'items': [['D', 800, 788]], 'group_writedown': {'g2': 0}}], ['partial reversal', {'items': [{'sku': 'E', 'qty': 1, 'cost': 800, 'price': 850, 'complete': 0, 'sell_bp': 1000, 'group': 'g1'}], 'prior': {'E': 700}}, {'items': [['E', 765, 65]], 'group_writedown': {'g1': 35}}], ['group offset', {'items': [{'sku': 'F', 'qty': 1, 'cost': 1000, 'price': 700, 'complete': 0, 'sell_bp': 0, 'group': 'g3'}, {'sku': 'G', 'qty': 1, 'cost': 200, 'price': 603, 'complete': 0, 'sell_bp': 0, 'group': 'g3'}], 'prior': {}}, {'items': [['F', 700, -300], ['G', 200, 0]], 'group_writedown': {'g3': 0}}], ['group loss', {'items': [{'sku': 'H', 'qty': 2, 'cost': 1000, 'price': 700, 'complete': 0, 'sell_bp': 0, 'group': 'g4'}, {'sku': 'J', 'qty': 1, 'cost': 200, 'price': 250, 'complete': 0, 'sell_bp': 0, 'group': 'g4'}], 'prior': {'H': 900}}, {'items': [['H', 700, -400], ['J', 200, 0]], 'group_writedown': {'g4': 550}}], ['costly completion', {'items': [{'sku': 'K', 'qty': 1, 'cost': 300, 'price': 1000, 'complete': 900, 'sell_bp': 500, 'group': 'g5'}], 'prior': {}}, {'items': [['K', 50, -250]], 'group_writedown': {'g5': 250}}]], [['write down', {'items': [{'sku': 'A', 'qty': 5, 'cost': 1000, 'price': 1100, 'complete': 100, 'sell_bp': 1004, 'group': 'g1'}], 'prior': {}}, {'items': [['A', 890, -550]], 'group_writedown': {'g1': 550}}], ['no write down', {'items': [{'sku': 'B', 'qty': 2, 'cost': 500, 'price': 900, 'complete': 50, 'sell_bp': 500, 'group': 'g1'}], 'prior': {}}, {'items': [['B', 500, 0]], 'group_writedown': {'g1': 0}}], ['negative nrv', {'items': [{'sku': 'C', 'qty': 3, 'cost': 400, 'price': 300, 'complete': 254, 'sell_bp': 2000, 'group': 'g2'}], 'prior': {}}, {'items': [['C', 0, -1200]], 'group_writedown': {'g2': 1200}}], ['reversal capped', {'items': [{'sku': 'D', 'qty': 4, 'cost': 800, 'price': 1500, 'complete': 0, 'sell_bp': 0, 'group': 'g2'}], 'prior': {'D': 604}}, {'items': [['D', 800, 784]], 'group_writedown': {'g2': 0}}], ['partial reversal', {'items': [{'sku': 'E', 'qty': 1, 'cost': 800, 'price': 850, 'complete': 0, 'sell_bp': 1000, 'group': 'g1'}], 'prior': {'E': 700}}, {'items': [['E', 765, 65]], 'group_writedown': {'g1': 35}}], ['group offset', {'items': [{'sku': 'F', 'qty': 1, 'cost': 1000, 'price': 700, 'complete': 0, 'sell_bp': 0, 'group': 'g3'}, {'sku': 'G', 'qty': 1, 'cost': 200, 'price': 604, 'complete': 0, 'sell_bp': 0, 'group': 'g3'}], 'prior': {}}, {'items': [['F', 700, -300], ['G', 200, 0]], 'group_writedown': {'g3': 0}}], ['group loss', {'items': [{'sku': 'H', 'qty': 2, 'cost': 1000, 'price': 700, 'complete': 0, 'sell_bp': 0, 'group': 'g4'}, {'sku': 'J', 'qty': 1, 'cost': 200, 'price': 250, 'complete': 0, 'sell_bp': 0, 'group': 'g4'}], 'prior': {'H': 900}}, {'items': [['H', 700, -400], ['J', 200, 0]], 'group_writedown': {'g4': 550}}], ['costly completion', {'items': [{'sku': 'K', 'qty': 1, 'cost': 300, 'price': 1000, 'complete': 900, 'sell_bp': 500, 'group': 'g5'}], 'prior': {}}, {'items': [['K', 50, -250]], 'group_writedown': {'g5': 250}}]], [['write down', {'items': [{'sku': 'A', 'qty': 5, 'cost': 1000, 'price': 1100, 'complete': 100, 'sell_bp': 1005, 'group': 'g1'}], 'prior': {}}, {'items': [['A', 889, -555]], 'group_writedown': {'g1': 555}}], ['no write down', {'items': [{'sku': 'B', 'qty': 2, 'cost': 500, 'price': 900, 'complete': 50, 'sell_bp': 500, 'group': 'g1'}], 'prior': {}}, {'items': [['B', 500, 0]], 'group_writedown': {'g1': 0}}], ['negative nrv', {'items': [{'sku': 'C', 'qty': 3, 'cost': 400, 'price': 300, 'complete': 255, 'sell_bp': 2000, 'group': 'g2'}], 'prior': {}}, {'items': [['C', 0, -1200]], 'group_writedown': {'g2': 1200}}], ['reversal capped', {'items': [{'sku': 'D', 'qty': 4, 'cost': 800, 'price': 1500, 'complete': 0, 'sell_bp': 0, 'group': 'g2'}], 'prior': {'D': 605}}, {'items': [['D', 800, 780]], 'group_writedown': {'g2': 0}}], ['partial reversal', {'items': [{'sku': 'E', 'qty': 1, 'cost': 800, 'price': 850, 'complete': 0, 'sell_bp': 1000, 'group': 'g1'}], 'prior': {'E': 700}}, {'items': [['E', 765, 65]], 'group_writedown': {'g1': 35}}], ['group offset', {'items': [{'sku': 'F', 'qty': 1, 'cost': 1000, 'price': 700, 'complete': 0, 'sell_bp': 0, 'group': 'g3'}, {'sku': 'G', 'qty': 1, 'cost': 200, 'price': 605, 'complete': 0, 'sell_bp': 0, 'group': 'g3'}], 'prior': {}}, {'items': [['F', 700, -300], ['G', 200, 0]], 'group_writedown': {'g3': 0}}], ['group loss', {'items': [{'sku': 'H', 'qty': 2, 'cost': 1000, 'price': 700, 'complete': 0, 'sell_bp': 0, 'group': 'g4'}, {'sku': 'J', 'qty': 1, 'cost': 200, 'price': 250, 'complete': 0, 'sell_bp': 0, 'group': 'g4'}], 'prior': {'H': 900}}, {'items': [['H', 700, -400], ['J', 200, 0]], 'group_writedown': {'g4': 550}}], ['costly completion', {'items': [{'sku': 'K', 'qty': 1, 'cost': 300, 'price': 1000, 'complete': 900, 'sell_bp': 500, 'group': 'g5'}], 'prior': {}}, {'items': [['K', 50, -250]], 'group_writedown': {'g5': 250}}]]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(args), 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":"cab7615eb088898bedc5511cbbba4cef678413df4b02fa2c7e837fdbbd4b6245","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    res = []\n    groups = {}\n    for it in x['items']:\n        sell = (it['price'] * it['sell_bp'] + 5000) // 10000\n        nrv = it['price'] - it['complete'] - sell\n        if nrv < 0:\n            nrv = 0\n        carry = min(it['cost'], nrv)\n        prior = x['prior'].get(it['sku'], it['cost'])\n        res.append([it['sku'], carry, it['qty'] * (carry - prior)])\n        g = groups.setdefault(it['group'], [0, 0])\n        g[0] += it['qty'] * it['cost']\n        g[1] += it['qty'] * nrv\n    gw = {k: max(0, v[0] - v[1]) for k, v in sorted(groups.items())}\n    return {'items': res, 'group_writedown': gw}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['write down', {'items': [{'sku': 'A', 'qty': 5, 'cost': 1000, 'price': 1100, 'complete': 100, 'sell_bp': 1001, 'group': 'g1'}], 'prior': {}}, {'items': [['A', 890, -550]], 'group_writedown': {'g1': 550}}], ['no write down', {'items': [{'sku': 'B', 'qty': 2, 'cost': 500, 'price': 900, 'complete': 50, 'sell_bp': 500, 'group': 'g1'}], 'prior': {}}, {'items': [['B', 500, 0]], 'group_writedown': {'g1': 0}}], ['negative nrv', {'items': [{'sku': 'C', 'qty': 3, 'cost': 400, 'price': 300, 'complete': 251, 'sell_bp': 2000, 'group': 'g2'}], 'prior': {}}, {'items': [['C', 0, -1200]], 'group_writedown': {'g2': 1200}}], ['reversal capped', {'items': [{'sku': 'D', 'qty': 4, 'cost': 800, 'price': 1500, 'complete': 0, 'sell_bp': 0, 'group': 'g2'}], 'prior': {'D': 601}}, {'items': [['D', 800, 796]], 'group_writedown': {'g2': 0}}], ['partial reversal', {'items': [{'sku': 'E', 'qty': 1, 'cost': 800, 'price': 850, 'complete': 0, 'sell_bp': 1000, 'group': 'g1'}], 'prior': {'E': 700}}, {'items': [['E', 765, 65]], 'group_writedown': {'g1': 35}}], ['group offset', {'items': [{'sku': 'F', 'qty': 1, 'cost': 1000, 'price': 700, 'complete': 0, 'sell_bp': 0, 'group': 'g3'}, {'sku': 'G', 'qty': 1, 'cost': 200, 'price': 601, 'complete': 0, 'sell_bp': 0, 'group': 'g3'}], 'prior': {}}, {'items': [['F', 700, -300], ['G', 200, 0]], 'group_writedown': {'g3': 0}}], ['group loss', {'items': [{'sku': 'H', 'qty': 2, 'cost': 1000, 'price': 700, 'complete': 0, 'sell_bp': 0, 'group': 'g4'}, {'sku': 'J', 'qty': 1, 'cost': 200, 'price': 250, 'complete': 0, 'sell_bp': 0, 'group': 'g4'}], 'prior': {'H': 900}}, {'items': [['H', 700, -400], ['J', 200, 0]], 'group_writedown': {'g4': 550}}], ['costly completion', {'items': [{'sku': 'K', 'qty': 1, 'cost': 300, 'price': 1000, 'complete': 900, 'sell_bp': 500, 'group': 'g5'}], 'prior': {}}, {'items': [['K', 50, -250]], 'group_writedown': {'g5': 250}}]], [['write down', {'items': [{'sku': 'A', 'qty': 5, 'cost': 1000, 'price': 1100, 'complete': 100, 'sell_bp': 1002, 'group': 'g1'}], 'prior': {}}, {'items': [['A', 890, -550]], 'group_writedown': {'g1': 550}}], ['no write down', {'items': [{'sku': 'B', 'qty': 2, 'cost': 500, 'price': 900, 'complete': 50, 'sell_bp': 500, 'group': 'g1'}], 'prior': {}}, {'items': [['B', 500, 0]], 'group_writedown': {'g1': 0}}], ['negative nrv', {'items': [{'sku': 'C', 'qty': 3, 'cost': 400, 'price': 300, 'complete': 252, 'sell_bp': 2000, 'group': 'g2'}], 'prior': {}}, {'items': [['C', 0, -1200]], 'group_writedown': {'g2': 1200}}], ['reversal capped', {'items': [{'sku': 'D', 'qty': 4, 'cost': 800, 'price': 1500, 'complete': 0, 'sell_bp': 0, 'group': 'g2'}], 'prior': {'D': 602}}, {'items': [['D', 800, 792]], 'group_writedown': {'g2': 0}}], ['partial reversal', {'items': [{'sku': 'E', 'qty': 1, 'cost': 800, 'price': 850, 'complete': 0, 'sell_bp': 1000, 'group': 'g1'}], 'prior': {'E': 700}}, {'items': [['E', 765, 65]], 'group_writedown': {'g1': 35}}], ['group offset', {'items': [{'sku': 'F', 'qty': 1, 'cost': 1000, 'price': 700, 'complete': 0, 'sell_bp': 0, 'group': 'g3'}, {'sku': 'G', 'qty': 1, 'cost': 200, 'price': 602, 'complete': 0, 'sell_bp': 0, 'group': 'g3'}], 'prior': {}}, {'items': [['F', 700, -300], ['G', 200, 0]], 'group_writedown': {'g3': 0}}], ['group loss', {'items': [{'sku': 'H', 'qty': 2, 'cost': 1000, 'price': 700, 'complete': 0, 'sell_bp': 0, 'group': 'g4'}, {'sku': 'J', 'qty': 1, 'cost': 200, 'price': 250, 'complete': 0, 'sell_bp': 0, 'group': 'g4'}], 'prior': {'H': 900}}, {'items': [['H', 700, -400], ['J', 200, 0]], 'group_writedown': {'g4': 550}}], ['costly completion', {'items': [{'sku': 'K', 'qty': 1, 'cost': 300, 'price': 1000, 'complete': 900, 'sell_bp': 500, 'group': 'g5'}], 'prior': {}}, {'items': [['K', 50, -250]], 'group_writedown': {'g5': 250}}]], [['write down', {'items': [{'sku': 'A', 'qty': 5, 'cost': 1000, 'price': 1100, 'complete': 100, 'sell_bp': 1003, 'group': 'g1'}], 'prior': {}}, {'items': [['A', 890, -550]], 'group_writedown': {'g1': 550}}], ['no write down', {'items': [{'sku': 'B', 'qty': 2, 'cost': 500, 'price': 900, 'complete': 50, 'sell_bp': 500, 'group': 'g1'}], 'prior': {}}, {'items': [['B', 500, 0]], 'group_writedown': {'g1': 0}}], ['negative nrv', {'items': [{'sku': 'C', 'qty': 3, 'cost': 400, 'price': 300, 'complete': 253, 'sell_bp': 2000, 'group': 'g2'}], 'prior': {}}, {'items': [['C', 0, -1200]], 'group_writedown': {'g2': 1200}}], ['reversal capped', {'items': [{'sku': 'D', 'qty': 4, 'cost': 800, 'price': 1500, 'complete': 0, 'sell_bp': 0, 'group': 'g2'}], 'prior': {'D': 603}}, {'items': [['D', 800, 788]], 'group_writedown': {'g2': 0}}], ['partial reversal', {'items': [{'sku': 'E', 'qty': 1, 'cost': 800, 'price': 850, 'complete': 0, 'sell_bp': 1000, 'group': 'g1'}], 'prior': {'E': 700}}, {'items': [['E', 765, 65]], 'group_writedown': {'g1': 35}}], ['group offset', {'items': [{'sku': 'F', 'qty': 1, 'cost': 1000, 'price': 700, 'complete': 0, 'sell_bp': 0, 'group': 'g3'}, {'sku': 'G', 'qty': 1, 'cost': 200, 'price': 603, 'complete': 0, 'sell_bp': 0, 'group': 'g3'}], 'prior': {}}, {'items': [['F', 700, -300], ['G', 200, 0]], 'group_writedown': {'g3': 0}}], ['group loss', {'items': [{'sku': 'H', 'qty': 2, 'cost': 1000, 'price': 700, 'complete': 0, 'sell_bp': 0, 'group': 'g4'}, {'sku': 'J', 'qty': 1, 'cost': 200, 'price': 250, 'complete': 0, 'sell_bp': 0, 'group': 'g4'}], 'prior': {'H': 900}}, {'items': [['H', 700, -400], ['J', 200, 0]], 'group_writedown': {'g4': 550}}], ['costly completion', {'items': [{'sku': 'K', 'qty': 1, 'cost': 300, 'price': 1000, 'complete': 900, 'sell_bp': 500, 'group': 'g5'}], 'prior': {}}, {'items': [['K', 50, -250]], 'group_writedown': {'g5': 250}}]], [['write down', {'items': [{'sku': 'A', 'qty': 5, 'cost': 1000, 'price': 1100, 'complete': 100, 'sell_bp': 1004, 'group': 'g1'}], 'prior': {}}, {'items': [['A', 890, -550]], 'group_writedown': {'g1': 550}}], ['no write down', {'items': [{'sku': 'B', 'qty': 2, 'cost': 500, 'price': 900, 'complete': 50, 'sell_bp': 500, 'group': 'g1'}], 'prior': {}}, {'items': [['B', 500, 0]], 'group_writedown': {'g1': 0}}], ['negative nrv', {'items': [{'sku': 'C', 'qty': 3, 'cost': 400, 'price': 300, 'complete': 254, 'sell_bp': 2000, 'group': 'g2'}], 'prior': {}}, {'items': [['C', 0, -1200]], 'group_writedown': {'g2': 1200}}], ['reversal capped', {'items': [{'sku': 'D', 'qty': 4, 'cost': 800, 'price': 1500, 'complete': 0, 'sell_bp': 0, 'group': 'g2'}], 'prior': {'D': 604}}, {'items': [['D', 800, 784]], 'group_writedown': {'g2': 0}}], ['partial reversal', {'items': [{'sku': 'E', 'qty': 1, 'cost': 800, 'price': 850, 'complete': 0, 'sell_bp': 1000, 'group': 'g1'}], 'prior': {'E': 700}}, {'items': [['E', 765, 65]], 'group_writedown': {'g1': 35}}], ['group offset', {'items': [{'sku': 'F', 'qty': 1, 'cost': 1000, 'price': 700, 'complete': 0, 'sell_bp': 0, 'group': 'g3'}, {'sku': 'G', 'qty': 1, 'cost': 200, 'price': 604, 'complete': 0, 'sell_bp': 0, 'group': 'g3'}], 'prior': {}}, {'items': [['F', 700, -300], ['G', 200, 0]], 'group_writedown': {'g3': 0}}], ['group loss', {'items': [{'sku': 'H', 'qty': 2, 'cost': 1000, 'price': 700, 'complete': 0, 'sell_bp': 0, 'group': 'g4'}, {'sku': 'J', 'qty': 1, 'cost': 200, 'price': 250, 'complete': 0, 'sell_bp': 0, 'group': 'g4'}], 'prior': {'H': 900}}, {'items': [['H', 700, -400], ['J', 200, 0]], 'group_writedown': {'g4': 550}}], ['costly completion', {'items': [{'sku': 'K', 'qty': 1, 'cost': 300, 'price': 1000, 'complete': 900, 'sell_bp': 500, 'group': 'g5'}], 'prior': {}}, {'items': [['K', 50, -250]], 'group_writedown': {'g5': 250}}]], [['write down', {'items': [{'sku': 'A', 'qty': 5, 'cost': 1000, 'price': 1100, 'complete': 100, 'sell_bp': 1005, 'group': 'g1'}], 'prior': {}}, {'items': [['A', 889, -555]], 'group_writedown': {'g1': 555}}], ['no write down', {'items': [{'sku': 'B', 'qty': 2, 'cost': 500, 'price': 900, 'complete': 50, 'sell_bp': 500, 'group': 'g1'}], 'prior': {}}, {'items': [['B', 500, 0]], 'group_writedown': {'g1': 0}}], ['negative nrv', {'items': [{'sku': 'C', 'qty': 3, 'cost': 400, 'price': 300, 'complete': 255, 'sell_bp': 2000, 'group': 'g2'}], 'prior': {}}, {'items': [['C', 0, -1200]], 'group_writedown': {'g2': 1200}}], ['reversal capped', {'items': [{'sku': 'D', 'qty': 4, 'cost': 800, 'price': 1500, 'complete': 0, 'sell_bp': 0, 'group': 'g2'}], 'prior': {'D': 605}}, {'items': [['D', 800, 780]], 'group_writedown': {'g2': 0}}], ['partial reversal', {'items': [{'sku': 'E', 'qty': 1, 'cost': 800, 'price': 850, 'complete': 0, 'sell_bp': 1000, 'group': 'g1'}], 'prior': {'E': 700}}, {'items': [['E', 765, 65]], 'group_writedown': {'g1': 35}}], ['group offset', {'items': [{'sku': 'F', 'qty': 1, 'cost': 1000, 'price': 700, 'complete': 0, 'sell_bp': 0, 'group': 'g3'}, {'sku': 'G', 'qty': 1, 'cost': 200, 'price': 605, 'complete': 0, 'sell_bp': 0, 'group': 'g3'}], 'prior': {}}, {'items': [['F', 700, -300], ['G', 200, 0]], 'group_writedown': {'g3': 0}}], ['group loss', {'items': [{'sku': 'H', 'qty': 2, 'cost': 1000, 'price': 700, 'complete': 0, 'sell_bp': 0, 'group': 'g4'}, {'sku': 'J', 'qty': 1, 'cost': 200, 'price': 250, 'complete': 0, 'sell_bp': 0, 'group': 'g4'}], 'prior': {'H': 900}}, {'items': [['H', 700, -400], ['J', 200, 0]], 'group_writedown': {'g4': 550}}], ['costly completion', {'items': [{'sku': 'K', 'qty': 1, 'cost': 300, 'price': 1000, 'complete': 900, 'sell_bp': 500, 'group': 'g5'}], 'prior': {}}, {'items': [['K', 50, -250]], 'group_writedown': {'g5': 250}}]]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(args), 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":"Stipulated bounded teaching model with explicit toy rules; not an accounting-standard implementation. 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-inventory-cost-layering-lcnrv-writedown-selling-cost-base","generated_at":"2026-09-29T14:46:41.235101+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Inventory valuation and cost-of-goods decisions depend on this rule.","repair":"Apply the selling-cost rate to the expected selling price.","root_cause":"Selling cost percentage is applied to unit cost instead of expected selling price.","sha256":"8607f2c00364c32e33f19a827639c1787b6a35d460ff5b13ed996acd837375de","title":"Lower of cost and net realizable value: selling cost base · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":38.876,"exit_code":1,"observations":[{"actual":{"group_writedown":{"g1":500},"items":[["A",900,-500]]},"check":"write down","expected":{"group_writedown":{"g1":550},"items":[["A",890,-550]]},"passed":false},{"actual":{"group_writedown":{"g1":0},"items":[["B",500,0]]},"check":"no write down","expected":{"group_writedown":{"g1":0},"items":[["B",500,0]]},"passed":true},{"actual":{"group_writedown":{"g2":1083},"items":[["C",39,-1083]]},"check":"negative nrv","expected":{"group_writedown":{"g2":1200},"items":[["C",0,-1200]]},"passed":false},{"actual":{"group_writedown":{"g2":0},"items":[["D",800,796]]},"check":"reversal capped","expected":{"group_writedown":{"g2":0},"items":[["D",800,796]]},"passed":true},{"actual":{"group_writedown":{"g1":35},"items":[["E",765,65]]},"check":"partial reversal","expected":{"group_writedown":{"g1":35},"items":[["E",765,65]]},"passed":true},{"actual":{"group_writedown":{"g3":0},"items":[["F",700,-300],["G",200,0]]},"check":"group offset","expected":{"group_writedown":{"g3":0},"items":[["F",700,-300],["G",200,0]]},"passed":true},{"actual":{"group_writedown":{"g4":550},"items":[["H",700,-400],["J",200,0]]},"check":"group loss","expected":{"group_writedown":{"g4":550},"items":[["H",700,-400],["J",200,0]]},"passed":true},{"actual":{"group_writedown":{"g5":205},"items":[["K",95,-205]]},"check":"costly completion","expected":{"group_writedown":{"g5":250},"items":[["K",50,-250]]},"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"write down\", \"actual\": {\"items\": [[\"A\", 900, -500]], \"group_writedown\": {\"g1\": 500}}, \"expected\": {\"items\": [[\"A\", 890, -550]], \"group_writedown\": {\"g1\": 550}}, \"passed\": false}, {\"check\": \"no write down\", \"actual\": {\"items\": [[\"B\", 500, 0]], \"group_writedown\": {\"g1\": 0}}, \"expected\": {\"items\": [[\"B\", 500, 0]], \"group_writedown\": {\"g1\": 0}}, \"passed\": true}, {\"check\": \"negative nrv\", \"actual\": {\"items\": [[\"C\", 39, -1083]], \"group_writedown\": {\"g2\": 1083}}, \"expected\": {\"items\": [[\"C\", 0, -1200]], \"group_writedown\": {\"g2\": 1200}}, \"passed\": false}, {\"check\": \"reversal capped\", \"actual\": {\"items\": [[\"D\", 800, 796]], \"group_writedown\": {\"g2\": 0}}, \"expected\": {\"items\": [[\"D\", 800, 796]], \"group_writedown\": {\"g2\": 0}}, \"passed\": true}, {\"check\": \"partial reversal\", \"actual\": {\"items\": [[\"E\", 765, 65]], \"group_writedown\": {\"g1\": 35}}, \"expected\": {\"items\": [[\"E\", 765, 65]], \"group_writedown\": {\"g1\": 35}}, \"passed\": true}, {\"check\": \"group offset\", \"actual\": {\"items\": [[\"F\", 700, -300], [\"G\", 200, 0]], \"group_writedown\": {\"g3\": 0}}, \"expected\": {\"items\": [[\"F\", 700, -300], [\"G\", 200, 0]], \"group_writedown\": {\"g3\": 0}}, \"passed\": true}, {\"check\": \"group loss\", \"actual\": {\"items\": [[\"H\", 700, -400], [\"J\", 200, 0]], \"group_writedown\": {\"g4\": 550}}, \"expected\": {\"items\": [[\"H\", 700, -400], [\"J\", 200, 0]], \"group_writedown\": {\"g4\": 550}}, \"passed\": true}, {\"check\": \"costly completion\", \"actual\": {\"items\": [[\"K\", 95, -205]], \"group_writedown\": {\"g5\": 205}}, \"expected\": {\"items\": [[\"K\", 50, -250]], \"group_writedown\": {\"g5\": 250}}, \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.955,"exit_code":1,"observations":[{"actual":{"group_writedown":{"g1":500},"items":[["A",900,-500]]},"check":"write down","expected":{"group_writedown":{"g1":550},"items":[["A",890,-550]]},"passed":false},{"actual":{"group_writedown":{"g1":0},"items":[["B",500,0]]},"check":"no write down","expected":{"group_writedown":{"g1":0},"items":[["B",500,0]]},"passed":true},{"actual":{"group_writedown":{"g2":1200},"items":[["C",0,-1200]]},"check":"negative nrv","expected":{"group_writedown":{"g2":1200},"items":[["C",0,-1200]]},"passed":true},{"actual":{"group_writedown":{"g2":0},"items":[["D",800,796]]},"check":"reversal capped","expected":{"group_writedown":{"g2":0},"items":[["D",800,796]]},"passed":true},{"actual":{"group_writedown":{"g1":30},"items":[["E",770,70]]},"check":"partial reversal","expected":{"group_writedown":{"g1":35},"items":[["E",765,65]]},"passed":false},{"actual":{"group_writedown":{"g3":0},"items":[["F",700,-300],["G",200,0]]},"check":"group offset","expected":{"group_writedown":{"g3":0},"items":[["F",700,-300],["G",200,0]]},"passed":true},{"actual":{"group_writedown":{"g4":550},"items":[["H",700,-400],["J",200,0]]},"check":"group loss","expected":{"group_writedown":{"g4":550},"items":[["H",700,-400],["J",200,0]]},"passed":true},{"actual":{"group_writedown":{"g5":215},"items":[["K",85,-215]]},"check":"costly completion","expected":{"group_writedown":{"g5":250},"items":[["K",50,-250]]},"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"write down\", \"actual\": {\"items\": [[\"A\", 900, -500]], \"group_writedown\": {\"g1\": 500}}, \"expected\": {\"items\": [[\"A\", 890, -550]], \"group_writedown\": {\"g1\": 550}}, \"passed\": false}, {\"check\": \"no write down\", \"actual\": {\"items\": [[\"B\", 500, 0]], \"group_writedown\": {\"g1\": 0}}, \"expected\": {\"items\": [[\"B\", 500, 0]], \"group_writedown\": {\"g1\": 0}}, \"passed\": true}, {\"check\": \"negative nrv\", \"actual\": {\"items\": [[\"C\", 0, -1200]], \"group_writedown\": {\"g2\": 1200}}, \"expected\": {\"items\": [[\"C\", 0, -1200]], \"group_writedown\": {\"g2\": 1200}}, \"passed\": true}, {\"check\": \"reversal capped\", \"actual\": {\"items\": [[\"D\", 800, 796]], \"group_writedown\": {\"g2\": 0}}, \"expected\": {\"items\": [[\"D\", 800, 796]], \"group_writedown\": {\"g2\": 0}}, \"passed\": true}, {\"check\": \"partial reversal\", \"actual\": {\"items\": [[\"E\", 770, 70]], \"group_writedown\": {\"g1\": 30}}, \"expected\": {\"items\": [[\"E\", 765, 65]], \"group_writedown\": {\"g1\": 35}}, \"passed\": false}, {\"check\": \"group offset\", \"actual\": {\"items\": [[\"F\", 700, -300], [\"G\", 200, 0]], \"group_writedown\": {\"g3\": 0}}, \"expected\": {\"items\": [[\"F\", 700, -300], [\"G\", 200, 0]], \"group_writedown\": {\"g3\": 0}}, \"passed\": true}, {\"check\": \"group loss\", \"actual\": {\"items\": [[\"H\", 700, -400], [\"J\", 200, 0]], \"group_writedown\": {\"g4\": 550}}, \"expected\": {\"items\": [[\"H\", 700, -400], [\"J\", 200, 0]], \"group_writedown\": {\"g4\": 550}}, \"passed\": true}, {\"check\": \"costly completion\", \"actual\": {\"items\": [[\"K\", 85, -215]], \"group_writedown\": {\"g5\": 215}}, \"expected\": {\"items\": [[\"K\", 50, -250]], \"group_writedown\": {\"g5\": 250}}, \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":38.747,"exit_code":0,"observations":[{"actual":{"group_writedown":{"g1":550},"items":[["A",890,-550]]},"check":"write down","expected":{"group_writedown":{"g1":550},"items":[["A",890,-550]]},"passed":true},{"actual":{"group_writedown":{"g1":0},"items":[["B",500,0]]},"check":"no write down","expected":{"group_writedown":{"g1":0},"items":[["B",500,0]]},"passed":true},{"actual":{"group_writedown":{"g2":1200},"items":[["C",0,-1200]]},"check":"negative nrv","expected":{"group_writedown":{"g2":1200},"items":[["C",0,-1200]]},"passed":true},{"actual":{"group_writedown":{"g2":0},"items":[["D",800,796]]},"check":"reversal capped","expected":{"group_writedown":{"g2":0},"items":[["D",800,796]]},"passed":true},{"actual":{"group_writedown":{"g1":35},"items":[["E",765,65]]},"check":"partial reversal","expected":{"group_writedown":{"g1":35},"items":[["E",765,65]]},"passed":true},{"actual":{"group_writedown":{"g3":0},"items":[["F",700,-300],["G",200,0]]},"check":"group offset","expected":{"group_writedown":{"g3":0},"items":[["F",700,-300],["G",200,0]]},"passed":true},{"actual":{"group_writedown":{"g4":550},"items":[["H",700,-400],["J",200,0]]},"check":"group loss","expected":{"group_writedown":{"g4":550},"items":[["H",700,-400],["J",200,0]]},"passed":true},{"actual":{"group_writedown":{"g5":250},"items":[["K",50,-250]]},"check":"costly completion","expected":{"group_writedown":{"g5":250},"items":[["K",50,-250]]},"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"write down\", \"actual\": {\"items\": [[\"A\", 890, -550]], \"group_writedown\": {\"g1\": 550}}, \"expected\": {\"items\": [[\"A\", 890, -550]], \"group_writedown\": {\"g1\": 550}}, \"passed\": true}, {\"check\": \"no write down\", \"actual\": {\"items\": [[\"B\", 500, 0]], \"group_writedown\": {\"g1\": 0}}, \"expected\": {\"items\": [[\"B\", 500, 0]], \"group_writedown\": {\"g1\": 0}}, \"passed\": true}, {\"check\": \"negative nrv\", \"actual\": {\"items\": [[\"C\", 0, -1200]], \"group_writedown\": {\"g2\": 1200}}, \"expected\": {\"items\": [[\"C\", 0, -1200]], \"group_writedown\": {\"g2\": 1200}}, \"passed\": true}, {\"check\": \"reversal capped\", \"actual\": {\"items\": [[\"D\", 800, 796]], \"group_writedown\": {\"g2\": 0}}, \"expected\": {\"items\": [[\"D\", 800, 796]], \"group_writedown\": {\"g2\": 0}}, \"passed\": true}, {\"check\": \"partial reversal\", \"actual\": {\"items\": [[\"E\", 765, 65]], \"group_writedown\": {\"g1\": 35}}, \"expected\": {\"items\": [[\"E\", 765, 65]], \"group_writedown\": {\"g1\": 35}}, \"passed\": true}, {\"check\": \"group offset\", \"actual\": {\"items\": [[\"F\", 700, -300], [\"G\", 200, 0]], \"group_writedown\": {\"g3\": 0}}, \"expected\": {\"items\": [[\"F\", 700, -300], [\"G\", 200, 0]], \"group_writedown\": {\"g3\": 0}}, \"passed\": true}, {\"check\": \"group loss\", \"actual\": {\"items\": [[\"H\", 700, -400], [\"J\", 200, 0]], \"group_writedown\": {\"g4\": 550}}, \"expected\": {\"items\": [[\"H\", 700, -400], [\"J\", 200, 0]], \"group_writedown\": {\"g4\": 550}}, \"passed\": true}, {\"check\": \"costly completion\", \"actual\": {\"items\": [[\"K\", 50, -250]], \"group_writedown\": {\"g5\": 250}}, \"expected\": {\"items\": [[\"K\", 50, -250]], \"group_writedown\": {\"g5\": 250}}, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}