{"abstract":"After picking cases the remaining eaches are overstated and extra eaches are requested.","category":"Warehouse slotting and bin packing","checks":8,"contract":"qty eaches; pack [eaches per inner, per case, per pallet] with 0 meaning the level does not exist; allowed unit codes for the pick location. Greedy from largest allowed defined unit: PAL, CS, IP, EA. Return [[unit, count]] for nonzero counts in that order, then [\"UNPICKABLE\", eaches] if a remainder cannot be expressed.","contract_signature":"qty, pack, allowed","evaluation_group":"w2-warehouse-slotting-uom-breakdown","failed_approach":"Subtracting one pack size ignores counts greater than one.","family":"w2-warehouse-slotting-uom-breakdown-remainder-decrement","id":"FA-95271","implementations":{"attempt":{"sha256":"08493ced64dd9befcc7500de82ccc3d6a1a29ca737d149cf383e48381fc61b88","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(qty, pack, allowed):\n    levels = [('PAL', pack[2]), ('CS', pack[1]), ('IP', pack[0]), ('EA', 1)]\n    rem = qty\n    out = []\n    for unit, size in levels:\n        if unit not in allowed or size <= 0:\n            continue\n        n = rem // size\n        if n:\n            out.append([unit, n])\n            rem -= size\n    if rem:\n        out.append(['UNPICKABLE', rem])\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['full breakdown', [251, [6, 24, 240], ['PAL', 'CS', 'IP', 'EA']], [['PAL', 1], ['IP', 1], ['EA', 5]]], ['case and each', [50, [6, 24, 0], ['CS', 'EA']], [['CS', 2], ['EA', 2]]], ['no each picking', [50, [6, 24, 0], ['CS', 'IP']], [['CS', 2], ['UNPICKABLE', 2]]], ['zero qty', [0, [6, 24, 240], ['EA']], []], ['pallet not allowed', [500, [6, 24, 240], ['CS', 'EA']], [['CS', 20], ['EA', 20]]], ['undefined inner', [13, [0, 12, 0], ['IP', 'EA']], [['EA', 13]]], ['inner only', [13, [4, 12, 0], ['IP']], [['IP', 3], ['UNPICKABLE', 1]]], ['generated mix 8', [1000, [0, 48, 0], ['CS', 'IP']], [['CS', 20], ['UNPICKABLE', 40]]]], [['generated mix 8', [1000, [0, 48, 0], ['CS', 'IP']], [['CS', 20], ['UNPICKABLE', 40]]], ['generated mix 1', [3, [4, 12, 120], ['CS', 'IP', 'EA']], [['EA', 3]]], ['undefined inner', [13, [0, 12, 0], ['IP', 'EA']], [['EA', 13]]], ['inner only', [13, [4, 12, 0], ['IP']], [['IP', 3], ['UNPICKABLE', 1]]], ['full breakdown', [251, [6, 24, 240], ['PAL', 'CS', 'IP', 'EA']], [['PAL', 1], ['IP', 1], ['EA', 5]]], ['no each picking', [50, [6, 24, 0], ['CS', 'IP']], [['CS', 2], ['UNPICKABLE', 2]]], ['generated mix 11', [250, [0, 48, 0], ['PAL', 'CS']], [['CS', 5], ['UNPICKABLE', 10]]], ['generated mix 19', [500, [0, 48, 480], ['PAL', 'CS', 'EA']], [['PAL', 1], ['EA', 20]]]], [['generated mix 15', [250, [4, 24, 480], ['PAL', 'IP', 'EA']], [['IP', 62], ['EA', 2]]], ['generated mix 8', [1000, [0, 48, 0], ['CS', 'IP']], [['CS', 20], ['UNPICKABLE', 40]]], ['pallet not allowed', [500, [6, 24, 240], ['CS', 'EA']], [['CS', 20], ['EA', 20]]], ['case and each', [50, [6, 24, 0], ['CS', 'EA']], [['CS', 2], ['EA', 2]]], ['undefined inner', [13, [0, 12, 0], ['IP', 'EA']], [['EA', 13]]], ['inner only', [13, [4, 12, 0], ['IP']], [['IP', 3], ['UNPICKABLE', 1]]], ['generated mix 22', [0, [6, 24, 480], ['CS', 'EA']], []], ['generated mix 30', [13, [4, 12, 240], ['PAL', 'IP', 'EA']], [['IP', 3], ['EA', 1]]]], [['generated mix 25', [50, [6, 24, 0], ['PAL', 'CS', 'IP', 'EA']], [['CS', 2], ['EA', 2]]], ['generated mix 15', [250, [4, 24, 480], ['PAL', 'IP', 'EA']], [['IP', 62], ['EA', 2]]], ['no each picking', [50, [6, 24, 0], ['CS', 'IP']], [['CS', 2], ['UNPICKABLE', 2]]], ['zero qty', [0, [6, 24, 240], ['EA']], []], ['pallet not allowed', [500, [6, 24, 240], ['CS', 'EA']], [['CS', 20], ['EA', 20]]], ['case and each', [50, [6, 24, 0], ['CS', 'EA']], [['CS', 2], ['EA', 2]]], ['generated mix 33', [1000, [4, 12, 0], ['CS', 'IP', 'EA']], [['CS', 83], ['IP', 1]]], ['generated mix 41', [24, [4, 48, 480], ['CS', 'IP']], [['IP', 6]]]], [['generated mix 35', [250, [0, 24, 0], ['PAL', 'CS', 'IP', 'EA']], [['CS', 10], ['EA', 10]]], ['generated mix 21', [250, [6, 12, 120], ['PAL', 'IP', 'EA']], [['PAL', 2], ['IP', 1], ['EA', 4]]], ['inner only', [13, [4, 12, 0], ['IP']], [['IP', 3], ['UNPICKABLE', 1]]], ['full breakdown', [251, [6, 24, 240], ['PAL', 'CS', 'IP', 'EA']], [['PAL', 1], ['IP', 1], ['EA', 5]]], ['no each picking', [50, [6, 24, 0], ['CS', 'IP']], [['CS', 2], ['UNPICKABLE', 2]]], ['zero qty', [0, [6, 24, 240], ['EA']], []], ['generated mix 44', [1000, [0, 12, 240], ['CS', 'IP']], [['CS', 83], ['UNPICKABLE', 4]]], ['generated mix 52', [50, [4, 48, 0], ['EA']], [['EA', 50]]]]]\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":"01b14ca75a040c5d485d13a637c94f63642896b72cf730a1b8710e2f9046bb5c","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(qty, pack, allowed):\n    levels = [('PAL', pack[2]), ('CS', pack[1]), ('IP', pack[0]), ('EA', 1)]\n    rem = qty\n    out = []\n    for unit, size in levels:\n        if unit not in allowed or size <= 0:\n            continue\n        n = rem // size\n        if n:\n            out.append([unit, n])\n            rem -= n\n    if rem:\n        out.append(['UNPICKABLE', rem])\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['full breakdown', [251, [6, 24, 240], ['PAL', 'CS', 'IP', 'EA']], [['PAL', 1], ['IP', 1], ['EA', 5]]], ['case and each', [50, [6, 24, 0], ['CS', 'EA']], [['CS', 2], ['EA', 2]]], ['no each picking', [50, [6, 24, 0], ['CS', 'IP']], [['CS', 2], ['UNPICKABLE', 2]]], ['zero qty', [0, [6, 24, 240], ['EA']], []], ['pallet not allowed', [500, [6, 24, 240], ['CS', 'EA']], [['CS', 20], ['EA', 20]]], ['undefined inner', [13, [0, 12, 0], ['IP', 'EA']], [['EA', 13]]], ['inner only', [13, [4, 12, 0], ['IP']], [['IP', 3], ['UNPICKABLE', 1]]], ['generated mix 8', [1000, [0, 48, 0], ['CS', 'IP']], [['CS', 20], ['UNPICKABLE', 40]]]], [['generated mix 8', [1000, [0, 48, 0], ['CS', 'IP']], [['CS', 20], ['UNPICKABLE', 40]]], ['generated mix 1', [3, [4, 12, 120], ['CS', 'IP', 'EA']], [['EA', 3]]], ['undefined inner', [13, [0, 12, 0], ['IP', 'EA']], [['EA', 13]]], ['inner only', [13, [4, 12, 0], ['IP']], [['IP', 3], ['UNPICKABLE', 1]]], ['full breakdown', [251, [6, 24, 240], ['PAL', 'CS', 'IP', 'EA']], [['PAL', 1], ['IP', 1], ['EA', 5]]], ['no each picking', [50, [6, 24, 0], ['CS', 'IP']], [['CS', 2], ['UNPICKABLE', 2]]], ['generated mix 11', [250, [0, 48, 0], ['PAL', 'CS']], [['CS', 5], ['UNPICKABLE', 10]]], ['generated mix 19', [500, [0, 48, 480], ['PAL', 'CS', 'EA']], [['PAL', 1], ['EA', 20]]]], [['generated mix 15', [250, [4, 24, 480], ['PAL', 'IP', 'EA']], [['IP', 62], ['EA', 2]]], ['generated mix 8', [1000, [0, 48, 0], ['CS', 'IP']], [['CS', 20], ['UNPICKABLE', 40]]], ['pallet not allowed', [500, [6, 24, 240], ['CS', 'EA']], [['CS', 20], ['EA', 20]]], ['case and each', [50, [6, 24, 0], ['CS', 'EA']], [['CS', 2], ['EA', 2]]], ['undefined inner', [13, [0, 12, 0], ['IP', 'EA']], [['EA', 13]]], ['inner only', [13, [4, 12, 0], ['IP']], [['IP', 3], ['UNPICKABLE', 1]]], ['generated mix 22', [0, [6, 24, 480], ['CS', 'EA']], []], ['generated mix 30', [13, [4, 12, 240], ['PAL', 'IP', 'EA']], [['IP', 3], ['EA', 1]]]], [['generated mix 25', [50, [6, 24, 0], ['PAL', 'CS', 'IP', 'EA']], [['CS', 2], ['EA', 2]]], ['generated mix 15', [250, [4, 24, 480], ['PAL', 'IP', 'EA']], [['IP', 62], ['EA', 2]]], ['no each picking', [50, [6, 24, 0], ['CS', 'IP']], [['CS', 2], ['UNPICKABLE', 2]]], ['zero qty', [0, [6, 24, 240], ['EA']], []], ['pallet not allowed', [500, [6, 24, 240], ['CS', 'EA']], [['CS', 20], ['EA', 20]]], ['case and each', [50, [6, 24, 0], ['CS', 'EA']], [['CS', 2], ['EA', 2]]], ['generated mix 33', [1000, [4, 12, 0], ['CS', 'IP', 'EA']], [['CS', 83], ['IP', 1]]], ['generated mix 41', [24, [4, 48, 480], ['CS', 'IP']], [['IP', 6]]]], [['generated mix 35', [250, [0, 24, 0], ['PAL', 'CS', 'IP', 'EA']], [['CS', 10], ['EA', 10]]], ['generated mix 21', [250, [6, 12, 120], ['PAL', 'IP', 'EA']], [['PAL', 2], ['IP', 1], ['EA', 4]]], ['inner only', [13, [4, 12, 0], ['IP']], [['IP', 3], ['UNPICKABLE', 1]]], ['full breakdown', [251, [6, 24, 240], ['PAL', 'CS', 'IP', 'EA']], [['PAL', 1], ['IP', 1], ['EA', 5]]], ['no each picking', [50, [6, 24, 0], ['CS', 'IP']], [['CS', 2], ['UNPICKABLE', 2]]], ['zero qty', [0, [6, 24, 240], ['EA']], []], ['generated mix 44', [1000, [0, 12, 240], ['CS', 'IP']], [['CS', 83], ['UNPICKABLE', 4]]], ['generated mix 52', [50, [4, 48, 0], ['EA']], [['EA', 50]]]]]\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":"Greedy stipulated conversion with integer pack sizes. 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-warehouse-slotting-uom-breakdown-remainder-decrement","generated_at":"2026-09-29T14:52:12.187622+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Pick tasks are expressed in the largest unit a location can present.","root_cause":"The remainder is decremented by the number of units instead of units times pack size.","sha256":"4b8f9fd4808b055aa71f3683728100bf769d2e7c944f4f33faf56bc7d989f1d5","title":"UOM breakdown: remainder reduced by unit count · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":39.62,"exit_code":1,"observations":[{"actual":[["PAL",1],["IP",1],["EA",5],["UNPICKABLE",4]],"check":"full breakdown","expected":[["PAL",1],["IP",1],["EA",5]],"passed":false},{"actual":[["CS",2],["EA",26],["UNPICKABLE",25]],"check":"case and each","expected":[["CS",2],["EA",2]],"passed":false},{"actual":[["CS",2],["IP",4],["UNPICKABLE",20]],"check":"no each picking","expected":[["CS",2],["UNPICKABLE",2]],"passed":false},{"actual":[],"check":"zero qty","expected":[],"passed":true},{"actual":[["CS",20],["EA",476],["UNPICKABLE",475]],"check":"pallet not allowed","expected":[["CS",20],["EA",20]],"passed":false},{"actual":[["EA",13],["UNPICKABLE",12]],"check":"undefined inner","expected":[["EA",13]],"passed":false},{"actual":[["IP",3],["UNPICKABLE",9]],"check":"inner only","expected":[["IP",3],["UNPICKABLE",1]],"passed":false},{"actual":[["CS",20],["UNPICKABLE",952]],"check":"generated mix 8","expected":[["CS",20],["UNPICKABLE",40]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"full breakdown\", \"actual\": [[\"PAL\", 1], [\"IP\", 1], [\"EA\", 5], [\"UNPICKABLE\", 4]], \"expected\": [[\"PAL\", 1], [\"IP\", 1], [\"EA\", 5]], \"passed\": false}, {\"check\": \"case and each\", \"actual\": [[\"CS\", 2], [\"EA\", 26], [\"UNPICKABLE\", 25]], \"expected\": [[\"CS\", 2], [\"EA\", 2]], \"passed\": false}, {\"check\": \"no each picking\", \"actual\": [[\"CS\", 2], [\"IP\", 4], [\"UNPICKABLE\", 20]], \"expected\": [[\"CS\", 2], [\"UNPICKABLE\", 2]], \"passed\": false}, {\"check\": \"zero qty\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"pallet not allowed\", \"actual\": [[\"CS\", 20], [\"EA\", 476], [\"UNPICKABLE\", 475]], \"expected\": [[\"CS\", 20], [\"EA\", 20]], \"passed\": false}, {\"check\": \"undefined inner\", \"actual\": [[\"EA\", 13], [\"UNPICKABLE\", 12]], \"expected\": [[\"EA\", 13]], \"passed\": false}, {\"check\": \"inner only\", \"actual\": [[\"IP\", 3], [\"UNPICKABLE\", 9]], \"expected\": [[\"IP\", 3], [\"UNPICKABLE\", 1]], \"passed\": false}, {\"check\": \"generated mix 8\", \"actual\": [[\"CS\", 20], [\"UNPICKABLE\", 952]], \"expected\": [[\"CS\", 20], [\"UNPICKABLE\", 40]], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.094,"exit_code":1,"observations":[{"actual":[["PAL",1],["CS",10],["IP",40],["EA",200]],"check":"full breakdown","expected":[["PAL",1],["IP",1],["EA",5]],"passed":false},{"actual":[["CS",2],["EA",48]],"check":"case and each","expected":[["CS",2],["EA",2]],"passed":false},{"actual":[["CS",2],["IP",8],["UNPICKABLE",40]],"check":"no each picking","expected":[["CS",2],["UNPICKABLE",2]],"passed":false},{"actual":[],"check":"zero qty","expected":[],"passed":true},{"actual":[["CS",20],["EA",480]],"check":"pallet not allowed","expected":[["CS",20],["EA",20]],"passed":false},{"actual":[["EA",13]],"check":"undefined inner","expected":[["EA",13]],"passed":true},{"actual":[["IP",3],["UNPICKABLE",10]],"check":"inner only","expected":[["IP",3],["UNPICKABLE",1]],"passed":false},{"actual":[["CS",20],["UNPICKABLE",980]],"check":"generated mix 8","expected":[["CS",20],["UNPICKABLE",40]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"full breakdown\", \"actual\": [[\"PAL\", 1], [\"CS\", 10], [\"IP\", 40], [\"EA\", 200]], \"expected\": [[\"PAL\", 1], [\"IP\", 1], [\"EA\", 5]], \"passed\": false}, {\"check\": \"case and each\", \"actual\": [[\"CS\", 2], [\"EA\", 48]], \"expected\": [[\"CS\", 2], [\"EA\", 2]], \"passed\": false}, {\"check\": \"no each picking\", \"actual\": [[\"CS\", 2], [\"IP\", 8], [\"UNPICKABLE\", 40]], \"expected\": [[\"CS\", 2], [\"UNPICKABLE\", 2]], \"passed\": false}, {\"check\": \"zero qty\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"pallet not allowed\", \"actual\": [[\"CS\", 20], [\"EA\", 480]], \"expected\": [[\"CS\", 20], [\"EA\", 20]], \"passed\": false}, {\"check\": \"undefined inner\", \"actual\": [[\"EA\", 13]], \"expected\": [[\"EA\", 13]], \"passed\": true}, {\"check\": \"inner only\", \"actual\": [[\"IP\", 3], [\"UNPICKABLE\", 10]], \"expected\": [[\"IP\", 3], [\"UNPICKABLE\", 1]], \"passed\": false}, {\"check\": \"generated mix 8\", \"actual\": [[\"CS\", 20], [\"UNPICKABLE\", 980]], \"expected\": [[\"CS\", 20], [\"UNPICKABLE\", 40]], \"passed\": false}], \"passed\": false}\n"}},"member_only":{"stages":["fixed"],"fields":["implementations.fixed","verification.fixed","harness","repair"],"note":"The verified repair, its recorded checks, the repair description, and the scoring harness are available to members."}}