{"abstract":"Receipts rebuild positive stock while the negative balance stays outstanding forever.","category":"Inventory cost layering","checks":7,"contract":"Events: receipts [\"recv\",qty,cost] and issues [\"issue\",qty]. Issues draw FIFO layers; any shortfall is issued provisionally at the last receipt cost (default_cost before any receipt) and queued as a backorder. A receipt first settles backorders oldest first, returning the true-up qty*(receipt cost - provisional cost); only the remainder becomes a layer. Return {results, layers, backorder}.","evaluation_group":"w2-inventory-cost-layering-negative-inventory-trueup","failed_approach":"Settling the backorder but still layering the full receipt double counts the settled units.","family":"w2-inventory-cost-layering-negative-inventory-trueup-backorder-settlement-priority","id":"FA-60171","implementations":{"attempt":{"sha256":"5a5c82ae9fc82eb787a5d54db0685e3bca7c75c093918b14b9219516ca23a467","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    layers = []\n    neg = []\n    last = x['default_cost']\n    out = []\n    for ev in x['events']:\n        if ev[0] == 'recv':\n            q, c = ev[1], ev[2]\n            adj = 0\n            while q > 0 and neg:\n                k = 0\n                t = min(q, neg[k][0])\n                adj += t * (c - neg[k][1])\n                neg[k][0] -= t\n                q -= t\n                if neg[k][0] == 0:\n                    neg.pop(k)\n            if ev[1] > 0:\n                layers.append([ev[1], c])\n            last = c\n            out.append(adj)\n        else:\n            q = ev[1]\n            cost = 0\n            while q > 0 and layers:\n                t = min(q, layers[0][0])\n                cost += t * layers[0][1]\n                layers[0][0] -= t\n                q -= t\n                if layers[0][0] == 0:\n                    layers.pop(0)\n            if q > 0:\n                neg.append([q, last])\n                cost += q * last\n            out.append(cost)\n    return {'results': out, 'layers': layers, 'backorder': neg}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['backorder settled', {'default_cost': 50, 'events': [['recv', 2, 40], ['issue', 5], ['recv', 6, 46]]}, {'results': [0, 200, 18], 'layers': [[3, 46]], 'backorder': []}], ['never received', {'default_cost': 31, 'events': [['issue', 2], ['recv', 3, 35]]}, {'results': [62, 8], 'layers': [[1, 35]], 'backorder': []}], ['partial settle', {'default_cost': 10, 'events': [['recv', 1, 12], ['issue', 4], ['recv', 2, 15], ['issue', 1], ['recv', 5, 11]]}, {'results': [0, 48, 6, 15, -5], 'layers': [[3, 11]], 'backorder': []}], ['two backorders', {'default_cost': 10, 'events': [['recv', 1, 20], ['issue', 2], ['recv', 1, 30], ['issue', 3], ['recv', 4, 26]]}, {'results': [0, 40, 10, 90, -12], 'layers': [[1, 26]], 'backorder': []}], ['no negative', {'default_cost': 10, 'events': [['recv', 5, 8], ['issue', 3], ['recv', 1, 9]]}, {'results': [0, 24, 0], 'layers': [[2, 8], [1, 9]], 'backorder': []}], ['cheaper receipt', {'default_cost': 99, 'events': [['recv', 1, 60], ['issue', 2], ['recv', 3, 50]]}, {'results': [0, 120, -10], 'layers': [[2, 50]], 'backorder': []}], ['left negative', {'default_cost': 7, 'events': [['issue', 1], ['issue', 1]]}, {'results': [7, 7], 'layers': [], 'backorder': [[1, 7], [1, 7]]}]], [['backorder settled', {'default_cost': 50, 'events': [['recv', 2, 40], ['issue', 5], ['recv', 6, 47]]}, {'results': [0, 200, 21], 'layers': [[3, 47]], 'backorder': []}], ['never received', {'default_cost': 32, 'events': [['issue', 2], ['recv', 3, 35]]}, {'results': [64, 6], 'layers': [[1, 35]], 'backorder': []}], ['partial settle', {'default_cost': 10, 'events': [['recv', 1, 12], ['issue', 4], ['recv', 2, 15], ['issue', 1], ['recv', 5, 11]]}, {'results': [0, 48, 6, 15, -5], 'layers': [[3, 11]], 'backorder': []}], ['two backorders', {'default_cost': 10, 'events': [['recv', 1, 20], ['issue', 2], ['recv', 1, 30], ['issue', 3], ['recv', 4, 27]]}, {'results': [0, 40, 10, 90, -9], 'layers': [[1, 27]], 'backorder': []}], ['no negative', {'default_cost': 10, 'events': [['recv', 5, 8], ['issue', 3], ['recv', 1, 9]]}, {'results': [0, 24, 0], 'layers': [[2, 8], [1, 9]], 'backorder': []}], ['cheaper receipt', {'default_cost': 99, 'events': [['recv', 1, 60], ['issue', 3], ['recv', 4, 50]]}, {'results': [0, 180, -20], 'layers': [[2, 50]], 'backorder': []}], ['left negative', {'default_cost': 7, 'events': [['issue', 2], ['issue', 1]]}, {'results': [14, 7], 'layers': [], 'backorder': [[2, 7], [1, 7]]}]], [['backorder settled', {'default_cost': 50, 'events': [['recv', 2, 40], ['issue', 5], ['recv', 6, 48]]}, {'results': [0, 200, 24], 'layers': [[3, 48]], 'backorder': []}], ['never received', {'default_cost': 33, 'events': [['issue', 2], ['recv', 3, 35]]}, {'results': [66, 4], 'layers': [[1, 35]], 'backorder': []}], ['partial settle', {'default_cost': 10, 'events': [['recv', 1, 12], ['issue', 4], ['recv', 2, 15], ['issue', 1], ['recv', 5, 11]]}, {'results': [0, 48, 6, 15, -5], 'layers': [[3, 11]], 'backorder': []}], ['two backorders', {'default_cost': 10, 'events': [['recv', 1, 20], ['issue', 2], ['recv', 1, 30], ['issue', 3], ['recv', 4, 28]]}, {'results': [0, 40, 10, 90, -6], 'layers': [[1, 28]], 'backorder': []}], ['no negative', {'default_cost': 10, 'events': [['recv', 5, 8], ['issue', 3], ['recv', 1, 9]]}, {'results': [0, 24, 0], 'layers': [[2, 8], [1, 9]], 'backorder': []}], ['cheaper receipt', {'default_cost': 99, 'events': [['recv', 1, 60], ['issue', 4], ['recv', 5, 50]]}, {'results': [0, 240, -30], 'layers': [[2, 50]], 'backorder': []}], ['left negative', {'default_cost': 7, 'events': [['issue', 3], ['issue', 1]]}, {'results': [21, 7], 'layers': [], 'backorder': [[3, 7], [1, 7]]}]], [['backorder settled', {'default_cost': 50, 'events': [['recv', 2, 40], ['issue', 5], ['recv', 6, 49]]}, {'results': [0, 200, 27], 'layers': [[3, 49]], 'backorder': []}], ['never received', {'default_cost': 34, 'events': [['issue', 2], ['recv', 3, 35]]}, {'results': [68, 2], 'layers': [[1, 35]], 'backorder': []}], ['partial settle', {'default_cost': 10, 'events': [['recv', 1, 12], ['issue', 4], ['recv', 2, 15], ['issue', 1], ['recv', 5, 11]]}, {'results': [0, 48, 6, 15, -5], 'layers': [[3, 11]], 'backorder': []}], ['two backorders', {'default_cost': 10, 'events': [['recv', 1, 20], ['issue', 2], ['recv', 1, 30], ['issue', 3], ['recv', 4, 29]]}, {'results': [0, 40, 10, 90, -3], 'layers': [[1, 29]], 'backorder': []}], ['no negative', {'default_cost': 10, 'events': [['recv', 5, 8], ['issue', 3], ['recv', 1, 9]]}, {'results': [0, 24, 0], 'layers': [[2, 8], [1, 9]], 'backorder': []}], ['cheaper receipt', {'default_cost': 99, 'events': [['recv', 1, 60], ['issue', 5], ['recv', 6, 50]]}, {'results': [0, 300, -40], 'layers': [[2, 50]], 'backorder': []}], ['left negative', {'default_cost': 7, 'events': [['issue', 4], ['issue', 1]]}, {'results': [28, 7], 'layers': [], 'backorder': [[4, 7], [1, 7]]}]], [['backorder settled', {'default_cost': 50, 'events': [['recv', 2, 40], ['issue', 5], ['recv', 6, 50]]}, {'results': [0, 200, 30], 'layers': [[3, 50]], 'backorder': []}], ['never received', {'default_cost': 35, 'events': [['issue', 2], ['recv', 3, 35]]}, {'results': [70, 0], 'layers': [[1, 35]], 'backorder': []}], ['partial settle', {'default_cost': 10, 'events': [['recv', 1, 12], ['issue', 4], ['recv', 2, 15], ['issue', 1], ['recv', 5, 11]]}, {'results': [0, 48, 6, 15, -5], 'layers': [[3, 11]], 'backorder': []}], ['two backorders', {'default_cost': 10, 'events': [['recv', 1, 20], ['issue', 2], ['recv', 1, 30], ['issue', 3], ['recv', 4, 30]]}, {'results': [0, 40, 10, 90, 0], 'layers': [[1, 30]], 'backorder': []}], ['no negative', {'default_cost': 10, 'events': [['recv', 5, 8], ['issue', 3], ['recv', 1, 9]]}, {'results': [0, 24, 0], 'layers': [[2, 8], [1, 9]], 'backorder': []}], ['cheaper receipt', {'default_cost': 99, 'events': [['recv', 1, 60], ['issue', 6], ['recv', 7, 50]]}, {'results': [0, 360, -50], 'layers': [[2, 50]], 'backorder': []}], ['left negative', {'default_cost': 7, 'events': [['issue', 5], ['issue', 1]]}, {'results': [35, 7], 'layers': [], 'backorder': [[5, 7], [1, 7]]}]]]\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":"649a9aaef35486966e925f5916b34879f7c04e2644a8073a847eed2becd4d08e","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    layers = []\n    neg = []\n    last = x['default_cost']\n    out = []\n    for ev in x['events']:\n        if ev[0] == 'recv':\n            q, c = ev[1], ev[2]\n            adj = 0\n            while q > 0 and neg and False:\n                k = 0\n                t = min(q, neg[k][0])\n                adj += t * (c - neg[k][1])\n                neg[k][0] -= t\n                q -= t\n                if neg[k][0] == 0:\n                    neg.pop(k)\n            if q > 0:\n                layers.append([q, c])\n            last = c\n            out.append(adj)\n        else:\n            q = ev[1]\n            cost = 0\n            while q > 0 and layers:\n                t = min(q, layers[0][0])\n                cost += t * layers[0][1]\n                layers[0][0] -= t\n                q -= t\n                if layers[0][0] == 0:\n                    layers.pop(0)\n            if q > 0:\n                neg.append([q, last])\n                cost += q * last\n            out.append(cost)\n    return {'results': out, 'layers': layers, 'backorder': neg}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['backorder settled', {'default_cost': 50, 'events': [['recv', 2, 40], ['issue', 5], ['recv', 6, 46]]}, {'results': [0, 200, 18], 'layers': [[3, 46]], 'backorder': []}], ['never received', {'default_cost': 31, 'events': [['issue', 2], ['recv', 3, 35]]}, {'results': [62, 8], 'layers': [[1, 35]], 'backorder': []}], ['partial settle', {'default_cost': 10, 'events': [['recv', 1, 12], ['issue', 4], ['recv', 2, 15], ['issue', 1], ['recv', 5, 11]]}, {'results': [0, 48, 6, 15, -5], 'layers': [[3, 11]], 'backorder': []}], ['two backorders', {'default_cost': 10, 'events': [['recv', 1, 20], ['issue', 2], ['recv', 1, 30], ['issue', 3], ['recv', 4, 26]]}, {'results': [0, 40, 10, 90, -12], 'layers': [[1, 26]], 'backorder': []}], ['no negative', {'default_cost': 10, 'events': [['recv', 5, 8], ['issue', 3], ['recv', 1, 9]]}, {'results': [0, 24, 0], 'layers': [[2, 8], [1, 9]], 'backorder': []}], ['cheaper receipt', {'default_cost': 99, 'events': [['recv', 1, 60], ['issue', 2], ['recv', 3, 50]]}, {'results': [0, 120, -10], 'layers': [[2, 50]], 'backorder': []}], ['left negative', {'default_cost': 7, 'events': [['issue', 1], ['issue', 1]]}, {'results': [7, 7], 'layers': [], 'backorder': [[1, 7], [1, 7]]}]], [['backorder settled', {'default_cost': 50, 'events': [['recv', 2, 40], ['issue', 5], ['recv', 6, 47]]}, {'results': [0, 200, 21], 'layers': [[3, 47]], 'backorder': []}], ['never received', {'default_cost': 32, 'events': [['issue', 2], ['recv', 3, 35]]}, {'results': [64, 6], 'layers': [[1, 35]], 'backorder': []}], ['partial settle', {'default_cost': 10, 'events': [['recv', 1, 12], ['issue', 4], ['recv', 2, 15], ['issue', 1], ['recv', 5, 11]]}, {'results': [0, 48, 6, 15, -5], 'layers': [[3, 11]], 'backorder': []}], ['two backorders', {'default_cost': 10, 'events': [['recv', 1, 20], ['issue', 2], ['recv', 1, 30], ['issue', 3], ['recv', 4, 27]]}, {'results': [0, 40, 10, 90, -9], 'layers': [[1, 27]], 'backorder': []}], ['no negative', {'default_cost': 10, 'events': [['recv', 5, 8], ['issue', 3], ['recv', 1, 9]]}, {'results': [0, 24, 0], 'layers': [[2, 8], [1, 9]], 'backorder': []}], ['cheaper receipt', {'default_cost': 99, 'events': [['recv', 1, 60], ['issue', 3], ['recv', 4, 50]]}, {'results': [0, 180, -20], 'layers': [[2, 50]], 'backorder': []}], ['left negative', {'default_cost': 7, 'events': [['issue', 2], ['issue', 1]]}, {'results': [14, 7], 'layers': [], 'backorder': [[2, 7], [1, 7]]}]], [['backorder settled', {'default_cost': 50, 'events': [['recv', 2, 40], ['issue', 5], ['recv', 6, 48]]}, {'results': [0, 200, 24], 'layers': [[3, 48]], 'backorder': []}], ['never received', {'default_cost': 33, 'events': [['issue', 2], ['recv', 3, 35]]}, {'results': [66, 4], 'layers': [[1, 35]], 'backorder': []}], ['partial settle', {'default_cost': 10, 'events': [['recv', 1, 12], ['issue', 4], ['recv', 2, 15], ['issue', 1], ['recv', 5, 11]]}, {'results': [0, 48, 6, 15, -5], 'layers': [[3, 11]], 'backorder': []}], ['two backorders', {'default_cost': 10, 'events': [['recv', 1, 20], ['issue', 2], ['recv', 1, 30], ['issue', 3], ['recv', 4, 28]]}, {'results': [0, 40, 10, 90, -6], 'layers': [[1, 28]], 'backorder': []}], ['no negative', {'default_cost': 10, 'events': [['recv', 5, 8], ['issue', 3], ['recv', 1, 9]]}, {'results': [0, 24, 0], 'layers': [[2, 8], [1, 9]], 'backorder': []}], ['cheaper receipt', {'default_cost': 99, 'events': [['recv', 1, 60], ['issue', 4], ['recv', 5, 50]]}, {'results': [0, 240, -30], 'layers': [[2, 50]], 'backorder': []}], ['left negative', {'default_cost': 7, 'events': [['issue', 3], ['issue', 1]]}, {'results': [21, 7], 'layers': [], 'backorder': [[3, 7], [1, 7]]}]], [['backorder settled', {'default_cost': 50, 'events': [['recv', 2, 40], ['issue', 5], ['recv', 6, 49]]}, {'results': [0, 200, 27], 'layers': [[3, 49]], 'backorder': []}], ['never received', {'default_cost': 34, 'events': [['issue', 2], ['recv', 3, 35]]}, {'results': [68, 2], 'layers': [[1, 35]], 'backorder': []}], ['partial settle', {'default_cost': 10, 'events': [['recv', 1, 12], ['issue', 4], ['recv', 2, 15], ['issue', 1], ['recv', 5, 11]]}, {'results': [0, 48, 6, 15, -5], 'layers': [[3, 11]], 'backorder': []}], ['two backorders', {'default_cost': 10, 'events': [['recv', 1, 20], ['issue', 2], ['recv', 1, 30], ['issue', 3], ['recv', 4, 29]]}, {'results': [0, 40, 10, 90, -3], 'layers': [[1, 29]], 'backorder': []}], ['no negative', {'default_cost': 10, 'events': [['recv', 5, 8], ['issue', 3], ['recv', 1, 9]]}, {'results': [0, 24, 0], 'layers': [[2, 8], [1, 9]], 'backorder': []}], ['cheaper receipt', {'default_cost': 99, 'events': [['recv', 1, 60], ['issue', 5], ['recv', 6, 50]]}, {'results': [0, 300, -40], 'layers': [[2, 50]], 'backorder': []}], ['left negative', {'default_cost': 7, 'events': [['issue', 4], ['issue', 1]]}, {'results': [28, 7], 'layers': [], 'backorder': [[4, 7], [1, 7]]}]], [['backorder settled', {'default_cost': 50, 'events': [['recv', 2, 40], ['issue', 5], ['recv', 6, 50]]}, {'results': [0, 200, 30], 'layers': [[3, 50]], 'backorder': []}], ['never received', {'default_cost': 35, 'events': [['issue', 2], ['recv', 3, 35]]}, {'results': [70, 0], 'layers': [[1, 35]], 'backorder': []}], ['partial settle', {'default_cost': 10, 'events': [['recv', 1, 12], ['issue', 4], ['recv', 2, 15], ['issue', 1], ['recv', 5, 11]]}, {'results': [0, 48, 6, 15, -5], 'layers': [[3, 11]], 'backorder': []}], ['two backorders', {'default_cost': 10, 'events': [['recv', 1, 20], ['issue', 2], ['recv', 1, 30], ['issue', 3], ['recv', 4, 30]]}, {'results': [0, 40, 10, 90, 0], 'layers': [[1, 30]], 'backorder': []}], ['no negative', {'default_cost': 10, 'events': [['recv', 5, 8], ['issue', 3], ['recv', 1, 9]]}, {'results': [0, 24, 0], 'layers': [[2, 8], [1, 9]], 'backorder': []}], ['cheaper receipt', {'default_cost': 99, 'events': [['recv', 1, 60], ['issue', 6], ['recv', 7, 50]]}, {'results': [0, 360, -50], 'layers': [[2, 50]], 'backorder': []}], ['left negative', {'default_cost': 7, 'events': [['issue', 5], ['issue', 1]]}, {'results': [35, 7], 'layers': [], 'backorder': [[5, 7], [1, 7]]}]]]\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":"d0f56bfacd28d4624fed66fb3c042c4bebcac64dca6a2b5ae9446d26d6163893","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    layers = []\n    neg = []\n    last = x['default_cost']\n    out = []\n    for ev in x['events']:\n        if ev[0] == 'recv':\n            q, c = ev[1], ev[2]\n            adj = 0\n            while q > 0 and neg:\n                k = 0\n                t = min(q, neg[k][0])\n                adj += t * (c - neg[k][1])\n                neg[k][0] -= t\n                q -= t\n                if neg[k][0] == 0:\n                    neg.pop(k)\n            if q > 0:\n                layers.append([q, c])\n            last = c\n            out.append(adj)\n        else:\n            q = ev[1]\n            cost = 0\n            while q > 0 and layers:\n                t = min(q, layers[0][0])\n                cost += t * layers[0][1]\n                layers[0][0] -= t\n                q -= t\n                if layers[0][0] == 0:\n                    layers.pop(0)\n            if q > 0:\n                neg.append([q, last])\n                cost += q * last\n            out.append(cost)\n    return {'results': out, 'layers': layers, 'backorder': neg}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['backorder settled', {'default_cost': 50, 'events': [['recv', 2, 40], ['issue', 5], ['recv', 6, 46]]}, {'results': [0, 200, 18], 'layers': [[3, 46]], 'backorder': []}], ['never received', {'default_cost': 31, 'events': [['issue', 2], ['recv', 3, 35]]}, {'results': [62, 8], 'layers': [[1, 35]], 'backorder': []}], ['partial settle', {'default_cost': 10, 'events': [['recv', 1, 12], ['issue', 4], ['recv', 2, 15], ['issue', 1], ['recv', 5, 11]]}, {'results': [0, 48, 6, 15, -5], 'layers': [[3, 11]], 'backorder': []}], ['two backorders', {'default_cost': 10, 'events': [['recv', 1, 20], ['issue', 2], ['recv', 1, 30], ['issue', 3], ['recv', 4, 26]]}, {'results': [0, 40, 10, 90, -12], 'layers': [[1, 26]], 'backorder': []}], ['no negative', {'default_cost': 10, 'events': [['recv', 5, 8], ['issue', 3], ['recv', 1, 9]]}, {'results': [0, 24, 0], 'layers': [[2, 8], [1, 9]], 'backorder': []}], ['cheaper receipt', {'default_cost': 99, 'events': [['recv', 1, 60], ['issue', 2], ['recv', 3, 50]]}, {'results': [0, 120, -10], 'layers': [[2, 50]], 'backorder': []}], ['left negative', {'default_cost': 7, 'events': [['issue', 1], ['issue', 1]]}, {'results': [7, 7], 'layers': [], 'backorder': [[1, 7], [1, 7]]}]], [['backorder settled', {'default_cost': 50, 'events': [['recv', 2, 40], ['issue', 5], ['recv', 6, 47]]}, {'results': [0, 200, 21], 'layers': [[3, 47]], 'backorder': []}], ['never received', {'default_cost': 32, 'events': [['issue', 2], ['recv', 3, 35]]}, {'results': [64, 6], 'layers': [[1, 35]], 'backorder': []}], ['partial settle', {'default_cost': 10, 'events': [['recv', 1, 12], ['issue', 4], ['recv', 2, 15], ['issue', 1], ['recv', 5, 11]]}, {'results': [0, 48, 6, 15, -5], 'layers': [[3, 11]], 'backorder': []}], ['two backorders', {'default_cost': 10, 'events': [['recv', 1, 20], ['issue', 2], ['recv', 1, 30], ['issue', 3], ['recv', 4, 27]]}, {'results': [0, 40, 10, 90, -9], 'layers': [[1, 27]], 'backorder': []}], ['no negative', {'default_cost': 10, 'events': [['recv', 5, 8], ['issue', 3], ['recv', 1, 9]]}, {'results': [0, 24, 0], 'layers': [[2, 8], [1, 9]], 'backorder': []}], ['cheaper receipt', {'default_cost': 99, 'events': [['recv', 1, 60], ['issue', 3], ['recv', 4, 50]]}, {'results': [0, 180, -20], 'layers': [[2, 50]], 'backorder': []}], ['left negative', {'default_cost': 7, 'events': [['issue', 2], ['issue', 1]]}, {'results': [14, 7], 'layers': [], 'backorder': [[2, 7], [1, 7]]}]], [['backorder settled', {'default_cost': 50, 'events': [['recv', 2, 40], ['issue', 5], ['recv', 6, 48]]}, {'results': [0, 200, 24], 'layers': [[3, 48]], 'backorder': []}], ['never received', {'default_cost': 33, 'events': [['issue', 2], ['recv', 3, 35]]}, {'results': [66, 4], 'layers': [[1, 35]], 'backorder': []}], ['partial settle', {'default_cost': 10, 'events': [['recv', 1, 12], ['issue', 4], ['recv', 2, 15], ['issue', 1], ['recv', 5, 11]]}, {'results': [0, 48, 6, 15, -5], 'layers': [[3, 11]], 'backorder': []}], ['two backorders', {'default_cost': 10, 'events': [['recv', 1, 20], ['issue', 2], ['recv', 1, 30], ['issue', 3], ['recv', 4, 28]]}, {'results': [0, 40, 10, 90, -6], 'layers': [[1, 28]], 'backorder': []}], ['no negative', {'default_cost': 10, 'events': [['recv', 5, 8], ['issue', 3], ['recv', 1, 9]]}, {'results': [0, 24, 0], 'layers': [[2, 8], [1, 9]], 'backorder': []}], ['cheaper receipt', {'default_cost': 99, 'events': [['recv', 1, 60], ['issue', 4], ['recv', 5, 50]]}, {'results': [0, 240, -30], 'layers': [[2, 50]], 'backorder': []}], ['left negative', {'default_cost': 7, 'events': [['issue', 3], ['issue', 1]]}, {'results': [21, 7], 'layers': [], 'backorder': [[3, 7], [1, 7]]}]], [['backorder settled', {'default_cost': 50, 'events': [['recv', 2, 40], ['issue', 5], ['recv', 6, 49]]}, {'results': [0, 200, 27], 'layers': [[3, 49]], 'backorder': []}], ['never received', {'default_cost': 34, 'events': [['issue', 2], ['recv', 3, 35]]}, {'results': [68, 2], 'layers': [[1, 35]], 'backorder': []}], ['partial settle', {'default_cost': 10, 'events': [['recv', 1, 12], ['issue', 4], ['recv', 2, 15], ['issue', 1], ['recv', 5, 11]]}, {'results': [0, 48, 6, 15, -5], 'layers': [[3, 11]], 'backorder': []}], ['two backorders', {'default_cost': 10, 'events': [['recv', 1, 20], ['issue', 2], ['recv', 1, 30], ['issue', 3], ['recv', 4, 29]]}, {'results': [0, 40, 10, 90, -3], 'layers': [[1, 29]], 'backorder': []}], ['no negative', {'default_cost': 10, 'events': [['recv', 5, 8], ['issue', 3], ['recv', 1, 9]]}, {'results': [0, 24, 0], 'layers': [[2, 8], [1, 9]], 'backorder': []}], ['cheaper receipt', {'default_cost': 99, 'events': [['recv', 1, 60], ['issue', 5], ['recv', 6, 50]]}, {'results': [0, 300, -40], 'layers': [[2, 50]], 'backorder': []}], ['left negative', {'default_cost': 7, 'events': [['issue', 4], ['issue', 1]]}, {'results': [28, 7], 'layers': [], 'backorder': [[4, 7], [1, 7]]}]], [['backorder settled', {'default_cost': 50, 'events': [['recv', 2, 40], ['issue', 5], ['recv', 6, 50]]}, {'results': [0, 200, 30], 'layers': [[3, 50]], 'backorder': []}], ['never received', {'default_cost': 35, 'events': [['issue', 2], ['recv', 3, 35]]}, {'results': [70, 0], 'layers': [[1, 35]], 'backorder': []}], ['partial settle', {'default_cost': 10, 'events': [['recv', 1, 12], ['issue', 4], ['recv', 2, 15], ['issue', 1], ['recv', 5, 11]]}, {'results': [0, 48, 6, 15, -5], 'layers': [[3, 11]], 'backorder': []}], ['two backorders', {'default_cost': 10, 'events': [['recv', 1, 20], ['issue', 2], ['recv', 1, 30], ['issue', 3], ['recv', 4, 30]]}, {'results': [0, 40, 10, 90, 0], 'layers': [[1, 30]], 'backorder': []}], ['no negative', {'default_cost': 10, 'events': [['recv', 5, 8], ['issue', 3], ['recv', 1, 9]]}, {'results': [0, 24, 0], 'layers': [[2, 8], [1, 9]], 'backorder': []}], ['cheaper receipt', {'default_cost': 99, 'events': [['recv', 1, 60], ['issue', 6], ['recv', 7, 50]]}, {'results': [0, 360, -50], 'layers': [[2, 50]], 'backorder': []}], ['left negative', {'default_cost': 7, 'events': [['issue', 5], ['issue', 1]]}, {'results': [35, 7], 'layers': [], 'backorder': [[5, 7], [1, 7]]}]]]\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-negative-inventory-trueup-backorder-settlement-priority","generated_at":"2026-09-29T14:46:43.119512+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":"Settle backorders before creating a layer from the remainder.","root_cause":"Receipts go straight to a new layer without settling queued backorders.","sha256":"0ed6e46482065d601fa4023ec4e051b75c4673dd2d54de8e4b380058be42c928","title":"Negative inventory provisional costing: backorder settlement priority · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":41.623,"exit_code":1,"observations":[{"actual":{"backorder":[],"layers":[[6,46]],"results":[0,200,18]},"check":"backorder settled","expected":{"backorder":[],"layers":[[3,46]],"results":[0,200,18]},"passed":false},{"actual":{"backorder":[],"layers":[[3,35]],"results":[62,8]},"check":"never received","expected":{"backorder":[],"layers":[[1,35]],"results":[62,8]},"passed":false},{"actual":{"backorder":[],"layers":[[1,15],[5,11]],"results":[0,48,6,15,-1]},"check":"partial settle","expected":{"backorder":[],"layers":[[3,11]],"results":[0,48,6,15,-5]},"passed":false},{"actual":{"backorder":[],"layers":[[4,26]],"results":[0,40,10,90,-8]},"check":"two backorders","expected":{"backorder":[],"layers":[[1,26]],"results":[0,40,10,90,-12]},"passed":false},{"actual":{"backorder":[],"layers":[[2,8],[1,9]],"results":[0,24,0]},"check":"no negative","expected":{"backorder":[],"layers":[[2,8],[1,9]],"results":[0,24,0]},"passed":true},{"actual":{"backorder":[],"layers":[[3,50]],"results":[0,120,-10]},"check":"cheaper receipt","expected":{"backorder":[],"layers":[[2,50]],"results":[0,120,-10]},"passed":false},{"actual":{"backorder":[[1,7],[1,7]],"layers":[],"results":[7,7]},"check":"left negative","expected":{"backorder":[[1,7],[1,7]],"layers":[],"results":[7,7]},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"backorder settled\", \"actual\": {\"results\": [0, 200, 18], \"layers\": [[6, 46]], \"backorder\": []}, \"expected\": {\"results\": [0, 200, 18], \"layers\": [[3, 46]], \"backorder\": []}, \"passed\": false}, {\"check\": \"never received\", \"actual\": {\"results\": [62, 8], \"layers\": [[3, 35]], \"backorder\": []}, \"expected\": {\"results\": [62, 8], \"layers\": [[1, 35]], \"backorder\": []}, \"passed\": false}, {\"check\": \"partial settle\", \"actual\": {\"results\": [0, 48, 6, 15, -1], \"layers\": [[1, 15], [5, 11]], \"backorder\": []}, \"expected\": {\"results\": [0, 48, 6, 15, -5], \"layers\": [[3, 11]], \"backorder\": []}, \"passed\": false}, {\"check\": \"two backorders\", \"actual\": {\"results\": [0, 40, 10, 90, -8], \"layers\": [[4, 26]], \"backorder\": []}, \"expected\": {\"results\": [0, 40, 10, 90, -12], \"layers\": [[1, 26]], \"backorder\": []}, \"passed\": false}, {\"check\": \"no negative\", \"actual\": {\"results\": [0, 24, 0], \"layers\": [[2, 8], [1, 9]], \"backorder\": []}, \"expected\": {\"results\": [0, 24, 0], \"layers\": [[2, 8], [1, 9]], \"backorder\": []}, \"passed\": true}, {\"check\": \"cheaper receipt\", \"actual\": {\"results\": [0, 120, -10], \"layers\": [[3, 50]], \"backorder\": []}, \"expected\": {\"results\": [0, 120, -10], \"layers\": [[2, 50]], \"backorder\": []}, \"passed\": false}, {\"check\": \"left negative\", \"actual\": {\"results\": [7, 7], \"layers\": [], \"backorder\": [[1, 7], [1, 7]]}, \"expected\": {\"results\": [7, 7], \"layers\": [], \"backorder\": [[1, 7], [1, 7]]}, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":45.557,"exit_code":1,"observations":[{"actual":{"backorder":[[3,40]],"layers":[[6,46]],"results":[0,200,0]},"check":"backorder settled","expected":{"backorder":[],"layers":[[3,46]],"results":[0,200,18]},"passed":false},{"actual":{"backorder":[[2,31]],"layers":[[3,35]],"results":[62,0]},"check":"never received","expected":{"backorder":[],"layers":[[1,35]],"results":[62,8]},"passed":false},{"actual":{"backorder":[[3,12]],"layers":[[1,15],[5,11]],"results":[0,48,0,15,0]},"check":"partial settle","expected":{"backorder":[],"layers":[[3,11]],"results":[0,48,6,15,-5]},"passed":false},{"actual":{"backorder":[[1,20],[2,30]],"layers":[[4,26]],"results":[0,40,0,90,0]},"check":"two backorders","expected":{"backorder":[],"layers":[[1,26]],"results":[0,40,10,90,-12]},"passed":false},{"actual":{"backorder":[],"layers":[[2,8],[1,9]],"results":[0,24,0]},"check":"no negative","expected":{"backorder":[],"layers":[[2,8],[1,9]],"results":[0,24,0]},"passed":true},{"actual":{"backorder":[[1,60]],"layers":[[3,50]],"results":[0,120,0]},"check":"cheaper receipt","expected":{"backorder":[],"layers":[[2,50]],"results":[0,120,-10]},"passed":false},{"actual":{"backorder":[[1,7],[1,7]],"layers":[],"results":[7,7]},"check":"left negative","expected":{"backorder":[[1,7],[1,7]],"layers":[],"results":[7,7]},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"backorder settled\", \"actual\": {\"results\": [0, 200, 0], \"layers\": [[6, 46]], \"backorder\": [[3, 40]]}, \"expected\": {\"results\": [0, 200, 18], \"layers\": [[3, 46]], \"backorder\": []}, \"passed\": false}, {\"check\": \"never received\", \"actual\": {\"results\": [62, 0], \"layers\": [[3, 35]], \"backorder\": [[2, 31]]}, \"expected\": {\"results\": [62, 8], \"layers\": [[1, 35]], \"backorder\": []}, \"passed\": false}, {\"check\": \"partial settle\", \"actual\": {\"results\": [0, 48, 0, 15, 0], \"layers\": [[1, 15], [5, 11]], \"backorder\": [[3, 12]]}, \"expected\": {\"results\": [0, 48, 6, 15, -5], \"layers\": [[3, 11]], \"backorder\": []}, \"passed\": false}, {\"check\": \"two backorders\", \"actual\": {\"results\": [0, 40, 0, 90, 0], \"layers\": [[4, 26]], \"backorder\": [[1, 20], [2, 30]]}, \"expected\": {\"results\": [0, 40, 10, 90, -12], \"layers\": [[1, 26]], \"backorder\": []}, \"passed\": false}, {\"check\": \"no negative\", \"actual\": {\"results\": [0, 24, 0], \"layers\": [[2, 8], [1, 9]], \"backorder\": []}, \"expected\": {\"results\": [0, 24, 0], \"layers\": [[2, 8], [1, 9]], \"backorder\": []}, \"passed\": true}, {\"check\": \"cheaper receipt\", \"actual\": {\"results\": [0, 120, 0], \"layers\": [[3, 50]], \"backorder\": [[1, 60]]}, \"expected\": {\"results\": [0, 120, -10], \"layers\": [[2, 50]], \"backorder\": []}, \"passed\": false}, {\"check\": \"left negative\", \"actual\": {\"results\": [7, 7], \"layers\": [], \"backorder\": [[1, 7], [1, 7]]}, \"expected\": {\"results\": [7, 7], \"layers\": [], \"backorder\": [[1, 7], [1, 7]]}, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":41.41,"exit_code":0,"observations":[{"actual":{"backorder":[],"layers":[[3,46]],"results":[0,200,18]},"check":"backorder settled","expected":{"backorder":[],"layers":[[3,46]],"results":[0,200,18]},"passed":true},{"actual":{"backorder":[],"layers":[[1,35]],"results":[62,8]},"check":"never received","expected":{"backorder":[],"layers":[[1,35]],"results":[62,8]},"passed":true},{"actual":{"backorder":[],"layers":[[3,11]],"results":[0,48,6,15,-5]},"check":"partial settle","expected":{"backorder":[],"layers":[[3,11]],"results":[0,48,6,15,-5]},"passed":true},{"actual":{"backorder":[],"layers":[[1,26]],"results":[0,40,10,90,-12]},"check":"two backorders","expected":{"backorder":[],"layers":[[1,26]],"results":[0,40,10,90,-12]},"passed":true},{"actual":{"backorder":[],"layers":[[2,8],[1,9]],"results":[0,24,0]},"check":"no negative","expected":{"backorder":[],"layers":[[2,8],[1,9]],"results":[0,24,0]},"passed":true},{"actual":{"backorder":[],"layers":[[2,50]],"results":[0,120,-10]},"check":"cheaper receipt","expected":{"backorder":[],"layers":[[2,50]],"results":[0,120,-10]},"passed":true},{"actual":{"backorder":[[1,7],[1,7]],"layers":[],"results":[7,7]},"check":"left negative","expected":{"backorder":[[1,7],[1,7]],"layers":[],"results":[7,7]},"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"backorder settled\", \"actual\": {\"results\": [0, 200, 18], \"layers\": [[3, 46]], \"backorder\": []}, \"expected\": {\"results\": [0, 200, 18], \"layers\": [[3, 46]], \"backorder\": []}, \"passed\": true}, {\"check\": \"never received\", \"actual\": {\"results\": [62, 8], \"layers\": [[1, 35]], \"backorder\": []}, \"expected\": {\"results\": [62, 8], \"layers\": [[1, 35]], \"backorder\": []}, \"passed\": true}, {\"check\": \"partial settle\", \"actual\": {\"results\": [0, 48, 6, 15, -5], \"layers\": [[3, 11]], \"backorder\": []}, \"expected\": {\"results\": [0, 48, 6, 15, -5], \"layers\": [[3, 11]], \"backorder\": []}, \"passed\": true}, {\"check\": \"two backorders\", \"actual\": {\"results\": [0, 40, 10, 90, -12], \"layers\": [[1, 26]], \"backorder\": []}, \"expected\": {\"results\": [0, 40, 10, 90, -12], \"layers\": [[1, 26]], \"backorder\": []}, \"passed\": true}, {\"check\": \"no negative\", \"actual\": {\"results\": [0, 24, 0], \"layers\": [[2, 8], [1, 9]], \"backorder\": []}, \"expected\": {\"results\": [0, 24, 0], \"layers\": [[2, 8], [1, 9]], \"backorder\": []}, \"passed\": true}, {\"check\": \"cheaper receipt\", \"actual\": {\"results\": [0, 120, -10], \"layers\": [[2, 50]], \"backorder\": []}, \"expected\": {\"results\": [0, 120, -10], \"layers\": [[2, 50]], \"backorder\": []}, \"passed\": true}, {\"check\": \"left negative\", \"actual\": {\"results\": [7, 7], \"layers\": [], \"backorder\": [[1, 7], [1, 7]]}, \"expected\": {\"results\": [7, 7], \"layers\": [], \"backorder\": [[1, 7], [1, 7]]}, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}