{"abstract":"Pick tasks contain rows for zero pallets or zero cases.","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":"Suppressing zero rows except for eaches still emits an empty EA row.","family":"w2-warehouse-slotting-uom-breakdown-zero-count-rows","id":"FA-95276","implementations":{"attempt":{"sha256":"08fc3097129df4dfdc1fca850ac73d20fed1164bf92d30916d8d72fa70b18c02","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 or unit == 'EA':\n            out.append([unit, n])\n            rem -= n * 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]]], ['generated mix 4', [500, [4, 12, 120], ['PAL', 'CS', 'IP', 'EA']], [['PAL', 4], ['CS', 1], ['IP', 2]]], ['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]]], ['no each picking', [50, [6, 24, 0], ['CS', 'IP']], [['CS', 2], ['UNPICKABLE', 2]]], ['generated mix 7', [3, [4, 48, 480], ['PAL', 'CS', 'IP']], [['UNPICKABLE', 3]]], ['generated mix 15', [250, [4, 24, 480], ['PAL', 'IP', 'EA']], [['IP', 62], ['EA', 2]]]], [['generated mix 6', [25, [4, 24, 480], ['PAL', 'CS', 'IP', 'EA']], [['CS', 1], ['EA', 1]]], ['generated mix 42', [120, [0, 12, 120], ['PAL', 'IP', 'EA']], [['PAL', 1]]], ['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 10', [13, [6, 12, 0], ['PAL', 'CS', 'IP', 'EA']], [['CS', 1], ['EA', 1]]], ['generated mix 18', [50, [0, 24, 240], ['CS']], [['CS', 2], ['UNPICKABLE', 2]]]], [['generated mix 16', [3, [6, 48, 0], ['PAL', 'CS', 'IP', 'EA']], [['EA', 3]]], ['generated mix 69', [24, [4, 48, 960], ['PAL', 'CS', 'IP', 'EA']], [['IP', 6]]], ['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 21', [250, [6, 12, 120], ['PAL', 'IP', 'EA']], [['PAL', 2], ['IP', 1], ['EA', 4]]], ['generated mix 29', [500, [4, 12, 0], ['CS', 'IP', 'EA']], [['CS', 41], ['IP', 2]]]], [['generated mix 26', [13, [0, 48, 0], ['PAL', 'CS', 'EA']], [['EA', 13]]], ['generated mix 22', [0, [6, 24, 480], ['CS', 'EA']], []], ['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 36', [25, [4, 48, 0], ['PAL', 'CS', 'IP', 'EA']], [['IP', 6], ['EA', 1]]], ['generated mix 43', [120, [6, 24, 240], ['PAL', 'CS', 'EA']], [['CS', 5]]], ['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":"c109edfd945cdf6f3f09603d4fd6e0d6f292e7d9cefaaca74ee5546849386d4b","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 True:\n            out.append([unit, n])\n            rem -= n * 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]]], ['generated mix 4', [500, [4, 12, 120], ['PAL', 'CS', 'IP', 'EA']], [['PAL', 4], ['CS', 1], ['IP', 2]]], ['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]]], ['no each picking', [50, [6, 24, 0], ['CS', 'IP']], [['CS', 2], ['UNPICKABLE', 2]]], ['generated mix 7', [3, [4, 48, 480], ['PAL', 'CS', 'IP']], [['UNPICKABLE', 3]]], ['generated mix 15', [250, [4, 24, 480], ['PAL', 'IP', 'EA']], [['IP', 62], ['EA', 2]]]], [['generated mix 6', [25, [4, 24, 480], ['PAL', 'CS', 'IP', 'EA']], [['CS', 1], ['EA', 1]]], ['generated mix 42', [120, [0, 12, 120], ['PAL', 'IP', 'EA']], [['PAL', 1]]], ['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 10', [13, [6, 12, 0], ['PAL', 'CS', 'IP', 'EA']], [['CS', 1], ['EA', 1]]], ['generated mix 18', [50, [0, 24, 240], ['CS']], [['CS', 2], ['UNPICKABLE', 2]]]], [['generated mix 16', [3, [6, 48, 0], ['PAL', 'CS', 'IP', 'EA']], [['EA', 3]]], ['generated mix 69', [24, [4, 48, 960], ['PAL', 'CS', 'IP', 'EA']], [['IP', 6]]], ['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 21', [250, [6, 12, 120], ['PAL', 'IP', 'EA']], [['PAL', 2], ['IP', 1], ['EA', 4]]], ['generated mix 29', [500, [4, 12, 0], ['CS', 'IP', 'EA']], [['CS', 41], ['IP', 2]]]], [['generated mix 26', [13, [0, 48, 0], ['PAL', 'CS', 'EA']], [['EA', 13]]], ['generated mix 22', [0, [6, 24, 480], ['CS', 'EA']], []], ['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 36', [25, [4, 48, 0], ['PAL', 'CS', 'IP', 'EA']], [['IP', 6], ['EA', 1]]], ['generated mix 43', [120, [6, 24, 240], ['PAL', 'CS', 'EA']], [['CS', 5]]], ['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-zero-count-rows","generated_at":"2026-09-29T14:52:12.196684+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":"Every allowed unit gets a row even when its count is zero.","sha256":"1bc987225f8926913e582a75cd040965d9d2ea393cd3388d1b9c2a5452b576ef","title":"UOM breakdown: zero-count unit rows · 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.913,"exit_code":1,"observations":[{"actual":[["PAL",1],["IP",1],["EA",5]],"check":"full breakdown","expected":[["PAL",1],["IP",1],["EA",5]],"passed":true},{"actual":[["PAL",4],["CS",1],["IP",2],["EA",0]],"check":"generated mix 4","expected":[["PAL",4],["CS",1],["IP",2]],"passed":false},{"actual":[["CS",2],["EA",2]],"check":"case and each","expected":[["CS",2],["EA",2]],"passed":true},{"actual":[["EA",13]],"check":"undefined inner","expected":[["EA",13]],"passed":true},{"actual":[["IP",3],["UNPICKABLE",1]],"check":"inner only","expected":[["IP",3],["UNPICKABLE",1]],"passed":true},{"actual":[["CS",2],["UNPICKABLE",2]],"check":"no each picking","expected":[["CS",2],["UNPICKABLE",2]],"passed":true},{"actual":[["UNPICKABLE",3]],"check":"generated mix 7","expected":[["UNPICKABLE",3]],"passed":true},{"actual":[["IP",62],["EA",2]],"check":"generated mix 15","expected":[["IP",62],["EA",2]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"full breakdown\", \"actual\": [[\"PAL\", 1], [\"IP\", 1], [\"EA\", 5]], \"expected\": [[\"PAL\", 1], [\"IP\", 1], [\"EA\", 5]], \"passed\": true}, {\"check\": \"generated mix 4\", \"actual\": [[\"PAL\", 4], [\"CS\", 1], [\"IP\", 2], [\"EA\", 0]], \"expected\": [[\"PAL\", 4], [\"CS\", 1], [\"IP\", 2]], \"passed\": false}, {\"check\": \"case and each\", \"actual\": [[\"CS\", 2], [\"EA\", 2]], \"expected\": [[\"CS\", 2], [\"EA\", 2]], \"passed\": true}, {\"check\": \"undefined inner\", \"actual\": [[\"EA\", 13]], \"expected\": [[\"EA\", 13]], \"passed\": true}, {\"check\": \"inner only\", \"actual\": [[\"IP\", 3], [\"UNPICKABLE\", 1]], \"expected\": [[\"IP\", 3], [\"UNPICKABLE\", 1]], \"passed\": true}, {\"check\": \"no each picking\", \"actual\": [[\"CS\", 2], [\"UNPICKABLE\", 2]], \"expected\": [[\"CS\", 2], [\"UNPICKABLE\", 2]], \"passed\": true}, {\"check\": \"generated mix 7\", \"actual\": [[\"UNPICKABLE\", 3]], \"expected\": [[\"UNPICKABLE\", 3]], \"passed\": true}, {\"check\": \"generated mix 15\", \"actual\": [[\"IP\", 62], [\"EA\", 2]], \"expected\": [[\"IP\", 62], [\"EA\", 2]], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.453,"exit_code":1,"observations":[{"actual":[["PAL",1],["CS",0],["IP",1],["EA",5]],"check":"full breakdown","expected":[["PAL",1],["IP",1],["EA",5]],"passed":false},{"actual":[["PAL",4],["CS",1],["IP",2],["EA",0]],"check":"generated mix 4","expected":[["PAL",4],["CS",1],["IP",2]],"passed":false},{"actual":[["CS",2],["EA",2]],"check":"case and each","expected":[["CS",2],["EA",2]],"passed":true},{"actual":[["EA",13]],"check":"undefined inner","expected":[["EA",13]],"passed":true},{"actual":[["IP",3],["UNPICKABLE",1]],"check":"inner only","expected":[["IP",3],["UNPICKABLE",1]],"passed":true},{"actual":[["CS",2],["IP",0],["UNPICKABLE",2]],"check":"no each picking","expected":[["CS",2],["UNPICKABLE",2]],"passed":false},{"actual":[["PAL",0],["CS",0],["IP",0],["UNPICKABLE",3]],"check":"generated mix 7","expected":[["UNPICKABLE",3]],"passed":false},{"actual":[["PAL",0],["IP",62],["EA",2]],"check":"generated mix 15","expected":[["IP",62],["EA",2]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"full breakdown\", \"actual\": [[\"PAL\", 1], [\"CS\", 0], [\"IP\", 1], [\"EA\", 5]], \"expected\": [[\"PAL\", 1], [\"IP\", 1], [\"EA\", 5]], \"passed\": false}, {\"check\": \"generated mix 4\", \"actual\": [[\"PAL\", 4], [\"CS\", 1], [\"IP\", 2], [\"EA\", 0]], \"expected\": [[\"PAL\", 4], [\"CS\", 1], [\"IP\", 2]], \"passed\": false}, {\"check\": \"case and each\", \"actual\": [[\"CS\", 2], [\"EA\", 2]], \"expected\": [[\"CS\", 2], [\"EA\", 2]], \"passed\": true}, {\"check\": \"undefined inner\", \"actual\": [[\"EA\", 13]], \"expected\": [[\"EA\", 13]], \"passed\": true}, {\"check\": \"inner only\", \"actual\": [[\"IP\", 3], [\"UNPICKABLE\", 1]], \"expected\": [[\"IP\", 3], [\"UNPICKABLE\", 1]], \"passed\": true}, {\"check\": \"no each picking\", \"actual\": [[\"CS\", 2], [\"IP\", 0], [\"UNPICKABLE\", 2]], \"expected\": [[\"CS\", 2], [\"UNPICKABLE\", 2]], \"passed\": false}, {\"check\": \"generated mix 7\", \"actual\": [[\"PAL\", 0], [\"CS\", 0], [\"IP\", 0], [\"UNPICKABLE\", 3]], \"expected\": [[\"UNPICKABLE\", 3]], \"passed\": false}, {\"check\": \"generated mix 15\", \"actual\": [[\"PAL\", 0], [\"IP\", 62], [\"EA\", 2]], \"expected\": [[\"IP\", 62], [\"EA\", 2]], \"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."}}