{"abstract":"Heavy cartons are pushed to the floor level or left unslotted although level 2 is a permitted lift height.","category":"Warehouse slotting and bin packing","checks":8,"contract":"skus [[sku, weekly_picks, kg]], slots [[slot, level 1-5, ergonomic_score]]. Process SKUs by picks desc then sku. Each takes the best free eligible slot by score desc, level asc, slot id. Items over 20 kg may not be above level 2. Slots scoring 8+ are reserved for SKUs with at least 50 picks. No eligible slot -> None. Return [[sku, slot]] sorted by sku.","evaluation_group":"w2-warehouse-slotting-golden-zone","failed_approach":"Raising the cap to level 3 lets heavy cartons into slots above the safe lift height.","family":"w2-warehouse-slotting-golden-zone-heavy-level-cap","id":"FA-94871","implementations":{"attempt":{"sha256":"6a78ee8bcb11f0c690ca8686455b19b1584b401f05b76066e7bec51cdcc66847","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(skus, slots):\n    order = sorted(skus, key=lambda r: (-r[1], r[0]))\n    used = set()\n    out = {}\n    for sku, picks, kg in order:\n        best = None\n        for s in sorted(slots, key=lambda s: (-s[2], s[1], s[0])):\n            sid, lvl, score = s\n            if sid in used:\n                continue\n            if kg > 20 and lvl > 3:\n                continue\n            if score >= 8 and picks < 50:\n                continue\n            best = sid\n            break\n        if best is not None:\n            used.add(best)\n        out[sku] = best\n    return [[k, out[k]] for k in sorted(out)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['heavy on level 2 ok', [[['h', 60, 25]], [['a', 3, 9], ['b', 2, 7]]], [['h', 'b']]], ['generated mix 2', [[['K0', 80, 21], ['K1', 0, 21], ['K2', 80, 20], ['K3', 49, 21]], [['L0', 2, 3], ['L1', 3, 8], ['L2', 5, 9]]], [['K0', 'L0'], ['K1', None], ['K2', 'L2'], ['K3', None]]], ['reservation at 50 picks', [[['f', 50, 5], ['s', 49, 5]], [['g', 2, 8], ['n', 1, 6]]], [['f', 'g'], ['s', 'n']]], ['no eligible slot', [[['w', 5, 40]], [['a', 4, 5]]], [['w', None]]], ['tie in feed order', [[['b', 90, 1], ['a', 90, 1]], [['s1', 2, 9], ['s2', 3, 5]]], [['a', 's1'], ['b', 's2']]], ['score tie prefers low level', [[['q', 10, 1]], [['z', 1, 6], ['a', 3, 6]]], [['q', 'z']]], ['generated mix 7', [[['K0', 51, 15], ['K1', 80, 30], ['K2', 10, 21]], [['L0', 1, 8], ['L1', 2, 3]]], [['K0', 'L1'], ['K1', 'L0'], ['K2', None]]], ['generated mix 15', [[['K0', 120, 21], ['K1', 0, 30], ['K2', 0, 21], ['K3', 80, 15], ['K4', 50, 2], ['K5', 80, 30]], [['L0', 5, 8], ['L1', 1, 3], ['L2', 3, 8], ['L3', 3, 6], ['L4', 2, 6], ['L5', 3, 10]]], [['K0', 'L4'], ['K1', None], ['K2', None], ['K3', 'L5'], ['K4', 'L2'], ['K5', 'L1']]]], [['generated mix 14', [[['K0', 0, 21], ['K1', 0, 2], ['K2', 49, 2], ['K3', 51, 21], ['K4', 49, 21]], [['L0', 2, 3], ['L1', 1, 8], ['L2', 3, 5], ['L3', 5, 10], ['L4', 5, 6]]], [['K0', None], ['K1', 'L2'], ['K2', 'L4'], ['K3', 'L1'], ['K4', 'L0']]], ['generated mix 26', [[['K0', 120, 15], ['K1', 0, 2], ['K2', 80, 21]], [['L0', 3, 9], ['L1', 5, 6], ['L2', 1, 3], ['L3', 4, 10]]], [['K0', 'L3'], ['K1', 'L1'], ['K2', 'L2']]], ['no eligible slot', [[['w', 5, 40]], [['a', 4, 5]]], [['w', None]]], ['tie in feed order', [[['b', 90, 1], ['a', 90, 1]], [['s1', 2, 9], ['s2', 3, 5]]], [['a', 's1'], ['b', 's2']]], ['heavy on level 2 ok', [[['h', 60, 25]], [['a', 3, 9], ['b', 2, 7]]], [['h', 'b']]], ['score tie prefers low level', [[['q', 10, 1]], [['z', 1, 6], ['a', 3, 6]]], [['q', 'z']]], ['generated mix 9', [[['K0', 50, 20], ['K1', 50, 30], ['K2', 0, 21], ['K3', 10, 20], ['K4', 10, 20], ['K5', 51, 2]], [['L0', 3, 9], ['L1', 4, 6], ['L2', 2, 3]]], [['K0', 'L1'], ['K1', 'L2'], ['K2', None], ['K3', None], ['K4', None], ['K5', 'L0']]], ['generated mix 18', [[['K0', 80, 20], ['K1', 120, 20], ['K2', 120, 30], ['K3', 120, 20], ['K4', 80, 21], ['K5', 10, 20]], [['L0', 1, 10], ['L1', 4, 8], ['L2', 1, 5], ['L3', 1, 3], ['L4', 2, 5], ['L5', 1, 3]]], [['K0', 'L4'], ['K1', 'L0'], ['K2', 'L2'], ['K3', 'L1'], ['K4', 'L3'], ['K5', 'L5']]]], [['generated mix 34', [[['K0', 80, 30], ['K1', 51, 30], ['K2', 0, 2], ['K3', 120, 2], ['K4', 0, 15], ['K5', 80, 21]], [['L0', 3, 9], ['L1', 1, 5], ['L2', 3, 6], ['L3', 2, 5], ['L4', 1, 3], ['L5', 4, 9], ['L6', 4, 10]]], [['K0', 'L1'], ['K1', 'L4'], ['K2', 'L2'], ['K3', 'L6'], ['K4', None], ['K5', 'L3']]], ['generated mix 45', [[['K0', 49, 30], ['K1', 80, 30], ['K2', 51, 15], ['K3', 50, 30], ['K4', 80, 20]], [['L0', 3, 10], ['L1', 5, 8], ['L2', 4, 6], ['L3', 4, 10], ['L4', 4, 9], ['L5', 3, 8]]], [['K0', None], ['K1', None], ['K2', 'L3'], ['K3', None], ['K4', 'L0']]], ['exactly 20 kg is not heavy', [[['e', 5, 20]], [['t', 4, 7], ['u', 1, 3]]], [['e', 't']]], ['reservation at 50 picks', [[['f', 50, 5], ['s', 49, 5]], [['g', 2, 8], ['n', 1, 6]]], [['f', 'g'], ['s', 'n']]], ['no eligible slot', [[['w', 5, 40]], [['a', 4, 5]]], [['w', None]]], ['tie in feed order', [[['b', 90, 1], ['a', 90, 1]], [['s1', 2, 9], ['s2', 3, 5]]], [['a', 's1'], ['b', 's2']]], ['generated mix 20', [[['K0', 50, 15]], [['L0', 4, 3], ['L1', 3, 10], ['L2', 4, 8], ['L3', 5, 9]]], [['K0', 'L1']]], ['generated mix 28', [[['K0', 51, 20]], [['L0', 4, 5], ['L1', 4, 3], ['L2', 2, 8], ['L3', 2, 3], ['L4', 5, 6], ['L5', 5, 10]]], [['K0', 'L5']]]], [['generated mix 58', [[['K0', 10, 30], ['K1', 50, 15], ['K2', 80, 30], ['K3', 120, 15]], [['L0', 4, 8], ['L1', 2, 8], ['L2', 4, 8], ['L3', 2, 3]]], [['K0', None], ['K1', 'L0'], ['K2', 'L3'], ['K3', 'L1']]], ['generated mix 79', [[['K0', 51, 30], ['K1', 51, 2], ['K2', 80, 21], ['K3', 0, 21]], [['L0', 1, 8], ['L1', 3, 9], ['L2', 5, 10], ['L3', 1, 10]]], [['K0', 'L0'], ['K1', 'L2'], ['K2', 'L3'], ['K3', None]]], ['score tie prefers low level', [[['q', 10, 1]], [['z', 1, 6], ['a', 3, 6]]], [['q', 'z']]], ['two skus compete', [[['a', 90, 1], ['b', 90, 1]], [['s1', 2, 9], ['s2', 3, 5]]], [['a', 's1'], ['b', 's2']]], ['exactly 20 kg is not heavy', [[['e', 5, 20]], [['t', 4, 7], ['u', 1, 3]]], [['e', 't']]], ['reservation at 50 picks', [[['f', 50, 5], ['s', 49, 5]], [['g', 2, 8], ['n', 1, 6]]], [['f', 'g'], ['s', 'n']]], ['generated mix 31', [[['K0', 0, 21], ['K1', 10, 21], ['K2', 80, 2], ['K3', 0, 21], ['K4', 80, 2]], [['L0', 2, 5], ['L1', 4, 6], ['L2', 4, 3], ['L3', 2, 3], ['L4', 3, 8]]], [['K0', 'L3'], ['K1', 'L0'], ['K2', 'L4'], ['K3', None], ['K4', 'L1']]], ['generated mix 39', [[['K0', 0, 2], ['K1', 80, 15]], [['L0', 5, 8], ['L1', 1, 5], ['L2', 5, 8], ['L3', 1, 9], ['L4', 5, 9]]], [['K0', 'L1'], ['K1', 'L3']]]], [['heavy on level 2 ok', [[['h', 60, 25]], [['a', 3, 9], ['b', 2, 7]]], [['h', 'b']]], ['generated mix 15', [[['K0', 120, 21], ['K1', 0, 30], ['K2', 0, 21], ['K3', 80, 15], ['K4', 50, 2], ['K5', 80, 30]], [['L0', 5, 8], ['L1', 1, 3], ['L2', 3, 8], ['L3', 3, 6], ['L4', 2, 6], ['L5', 3, 10]]], [['K0', 'L4'], ['K1', None], ['K2', None], ['K3', 'L5'], ['K4', 'L2'], ['K5', 'L1']]], ['reservation at 50 picks', [[['f', 50, 5], ['s', 49, 5]], [['g', 2, 8], ['n', 1, 6]]], [['f', 'g'], ['s', 'n']]], ['no eligible slot', [[['w', 5, 40]], [['a', 4, 5]]], [['w', None]]], ['tie in feed order', [[['b', 90, 1], ['a', 90, 1]], [['s1', 2, 9], ['s2', 3, 5]]], [['a', 's1'], ['b', 's2']]], ['generated mix 43', [[['K0', 120, 21], ['K1', 49, 21], ['K2', 80, 21], ['K3', 49, 21], ['K4', 80, 30]], [['L0', 2, 5], ['L1', 4, 9], ['L2', 5, 3], ['L3', 2, 5], ['L4', 2, 3], ['L5', 1, 9], ['L6', 1, 8]]], [['K0', 'L5'], ['K1', 'L3'], ['K2', 'L6'], ['K3', 'L4'], ['K4', 'L0']]], ['generated mix 51', [[['K0', 0, 21], ['K1', 80, 2], ['K2', 10, 20], ['K3', 80, 20]], [['L0', 5, 9], ['L1', 5, 9], ['L2', 1, 8], ['L3', 2, 3], ['L4', 1, 9], ['L5', 4, 8], ['L6', 4, 9]]], [['K0', None], ['K1', 'L4'], ['K2', 'L3'], ['K3', 'L6']]], ['generated mix 59', [[['K0', 0, 21], ['K1', 51, 20], ['K2', 120, 15]], [['L0', 2, 8], ['L1', 5, 10], ['L2', 4, 5], ['L3', 3, 9], ['L4', 3, 5], ['L5', 3, 8]]], [['K0', None], ['K1', 'L3'], ['K2', 'L1']]]]]\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":"4fe4dcfae5c9cc129b5d2bc2af1afed90a49356a403cd3e7574eec88cf871cdc","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(skus, slots):\n    order = sorted(skus, key=lambda r: (-r[1], r[0]))\n    used = set()\n    out = {}\n    for sku, picks, kg in order:\n        best = None\n        for s in sorted(slots, key=lambda s: (-s[2], s[1], s[0])):\n            sid, lvl, score = s\n            if sid in used:\n                continue\n            if kg > 20 and lvl >= 2:\n                continue\n            if score >= 8 and picks < 50:\n                continue\n            best = sid\n            break\n        if best is not None:\n            used.add(best)\n        out[sku] = best\n    return [[k, out[k]] for k in sorted(out)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['heavy on level 2 ok', [[['h', 60, 25]], [['a', 3, 9], ['b', 2, 7]]], [['h', 'b']]], ['generated mix 2', [[['K0', 80, 21], ['K1', 0, 21], ['K2', 80, 20], ['K3', 49, 21]], [['L0', 2, 3], ['L1', 3, 8], ['L2', 5, 9]]], [['K0', 'L0'], ['K1', None], ['K2', 'L2'], ['K3', None]]], ['reservation at 50 picks', [[['f', 50, 5], ['s', 49, 5]], [['g', 2, 8], ['n', 1, 6]]], [['f', 'g'], ['s', 'n']]], ['no eligible slot', [[['w', 5, 40]], [['a', 4, 5]]], [['w', None]]], ['tie in feed order', [[['b', 90, 1], ['a', 90, 1]], [['s1', 2, 9], ['s2', 3, 5]]], [['a', 's1'], ['b', 's2']]], ['score tie prefers low level', [[['q', 10, 1]], [['z', 1, 6], ['a', 3, 6]]], [['q', 'z']]], ['generated mix 7', [[['K0', 51, 15], ['K1', 80, 30], ['K2', 10, 21]], [['L0', 1, 8], ['L1', 2, 3]]], [['K0', 'L1'], ['K1', 'L0'], ['K2', None]]], ['generated mix 15', [[['K0', 120, 21], ['K1', 0, 30], ['K2', 0, 21], ['K3', 80, 15], ['K4', 50, 2], ['K5', 80, 30]], [['L0', 5, 8], ['L1', 1, 3], ['L2', 3, 8], ['L3', 3, 6], ['L4', 2, 6], ['L5', 3, 10]]], [['K0', 'L4'], ['K1', None], ['K2', None], ['K3', 'L5'], ['K4', 'L2'], ['K5', 'L1']]]], [['generated mix 14', [[['K0', 0, 21], ['K1', 0, 2], ['K2', 49, 2], ['K3', 51, 21], ['K4', 49, 21]], [['L0', 2, 3], ['L1', 1, 8], ['L2', 3, 5], ['L3', 5, 10], ['L4', 5, 6]]], [['K0', None], ['K1', 'L2'], ['K2', 'L4'], ['K3', 'L1'], ['K4', 'L0']]], ['generated mix 26', [[['K0', 120, 15], ['K1', 0, 2], ['K2', 80, 21]], [['L0', 3, 9], ['L1', 5, 6], ['L2', 1, 3], ['L3', 4, 10]]], [['K0', 'L3'], ['K1', 'L1'], ['K2', 'L2']]], ['no eligible slot', [[['w', 5, 40]], [['a', 4, 5]]], [['w', None]]], ['tie in feed order', [[['b', 90, 1], ['a', 90, 1]], [['s1', 2, 9], ['s2', 3, 5]]], [['a', 's1'], ['b', 's2']]], ['heavy on level 2 ok', [[['h', 60, 25]], [['a', 3, 9], ['b', 2, 7]]], [['h', 'b']]], ['score tie prefers low level', [[['q', 10, 1]], [['z', 1, 6], ['a', 3, 6]]], [['q', 'z']]], ['generated mix 9', [[['K0', 50, 20], ['K1', 50, 30], ['K2', 0, 21], ['K3', 10, 20], ['K4', 10, 20], ['K5', 51, 2]], [['L0', 3, 9], ['L1', 4, 6], ['L2', 2, 3]]], [['K0', 'L1'], ['K1', 'L2'], ['K2', None], ['K3', None], ['K4', None], ['K5', 'L0']]], ['generated mix 18', [[['K0', 80, 20], ['K1', 120, 20], ['K2', 120, 30], ['K3', 120, 20], ['K4', 80, 21], ['K5', 10, 20]], [['L0', 1, 10], ['L1', 4, 8], ['L2', 1, 5], ['L3', 1, 3], ['L4', 2, 5], ['L5', 1, 3]]], [['K0', 'L4'], ['K1', 'L0'], ['K2', 'L2'], ['K3', 'L1'], ['K4', 'L3'], ['K5', 'L5']]]], [['generated mix 34', [[['K0', 80, 30], ['K1', 51, 30], ['K2', 0, 2], ['K3', 120, 2], ['K4', 0, 15], ['K5', 80, 21]], [['L0', 3, 9], ['L1', 1, 5], ['L2', 3, 6], ['L3', 2, 5], ['L4', 1, 3], ['L5', 4, 9], ['L6', 4, 10]]], [['K0', 'L1'], ['K1', 'L4'], ['K2', 'L2'], ['K3', 'L6'], ['K4', None], ['K5', 'L3']]], ['generated mix 45', [[['K0', 49, 30], ['K1', 80, 30], ['K2', 51, 15], ['K3', 50, 30], ['K4', 80, 20]], [['L0', 3, 10], ['L1', 5, 8], ['L2', 4, 6], ['L3', 4, 10], ['L4', 4, 9], ['L5', 3, 8]]], [['K0', None], ['K1', None], ['K2', 'L3'], ['K3', None], ['K4', 'L0']]], ['exactly 20 kg is not heavy', [[['e', 5, 20]], [['t', 4, 7], ['u', 1, 3]]], [['e', 't']]], ['reservation at 50 picks', [[['f', 50, 5], ['s', 49, 5]], [['g', 2, 8], ['n', 1, 6]]], [['f', 'g'], ['s', 'n']]], ['no eligible slot', [[['w', 5, 40]], [['a', 4, 5]]], [['w', None]]], ['tie in feed order', [[['b', 90, 1], ['a', 90, 1]], [['s1', 2, 9], ['s2', 3, 5]]], [['a', 's1'], ['b', 's2']]], ['generated mix 20', [[['K0', 50, 15]], [['L0', 4, 3], ['L1', 3, 10], ['L2', 4, 8], ['L3', 5, 9]]], [['K0', 'L1']]], ['generated mix 28', [[['K0', 51, 20]], [['L0', 4, 5], ['L1', 4, 3], ['L2', 2, 8], ['L3', 2, 3], ['L4', 5, 6], ['L5', 5, 10]]], [['K0', 'L5']]]], [['generated mix 58', [[['K0', 10, 30], ['K1', 50, 15], ['K2', 80, 30], ['K3', 120, 15]], [['L0', 4, 8], ['L1', 2, 8], ['L2', 4, 8], ['L3', 2, 3]]], [['K0', None], ['K1', 'L0'], ['K2', 'L3'], ['K3', 'L1']]], ['generated mix 79', [[['K0', 51, 30], ['K1', 51, 2], ['K2', 80, 21], ['K3', 0, 21]], [['L0', 1, 8], ['L1', 3, 9], ['L2', 5, 10], ['L3', 1, 10]]], [['K0', 'L0'], ['K1', 'L2'], ['K2', 'L3'], ['K3', None]]], ['score tie prefers low level', [[['q', 10, 1]], [['z', 1, 6], ['a', 3, 6]]], [['q', 'z']]], ['two skus compete', [[['a', 90, 1], ['b', 90, 1]], [['s1', 2, 9], ['s2', 3, 5]]], [['a', 's1'], ['b', 's2']]], ['exactly 20 kg is not heavy', [[['e', 5, 20]], [['t', 4, 7], ['u', 1, 3]]], [['e', 't']]], ['reservation at 50 picks', [[['f', 50, 5], ['s', 49, 5]], [['g', 2, 8], ['n', 1, 6]]], [['f', 'g'], ['s', 'n']]], ['generated mix 31', [[['K0', 0, 21], ['K1', 10, 21], ['K2', 80, 2], ['K3', 0, 21], ['K4', 80, 2]], [['L0', 2, 5], ['L1', 4, 6], ['L2', 4, 3], ['L3', 2, 3], ['L4', 3, 8]]], [['K0', 'L3'], ['K1', 'L0'], ['K2', 'L4'], ['K3', None], ['K4', 'L1']]], ['generated mix 39', [[['K0', 0, 2], ['K1', 80, 15]], [['L0', 5, 8], ['L1', 1, 5], ['L2', 5, 8], ['L3', 1, 9], ['L4', 5, 9]]], [['K0', 'L1'], ['K1', 'L3']]]], [['heavy on level 2 ok', [[['h', 60, 25]], [['a', 3, 9], ['b', 2, 7]]], [['h', 'b']]], ['generated mix 15', [[['K0', 120, 21], ['K1', 0, 30], ['K2', 0, 21], ['K3', 80, 15], ['K4', 50, 2], ['K5', 80, 30]], [['L0', 5, 8], ['L1', 1, 3], ['L2', 3, 8], ['L3', 3, 6], ['L4', 2, 6], ['L5', 3, 10]]], [['K0', 'L4'], ['K1', None], ['K2', None], ['K3', 'L5'], ['K4', 'L2'], ['K5', 'L1']]], ['reservation at 50 picks', [[['f', 50, 5], ['s', 49, 5]], [['g', 2, 8], ['n', 1, 6]]], [['f', 'g'], ['s', 'n']]], ['no eligible slot', [[['w', 5, 40]], [['a', 4, 5]]], [['w', None]]], ['tie in feed order', [[['b', 90, 1], ['a', 90, 1]], [['s1', 2, 9], ['s2', 3, 5]]], [['a', 's1'], ['b', 's2']]], ['generated mix 43', [[['K0', 120, 21], ['K1', 49, 21], ['K2', 80, 21], ['K3', 49, 21], ['K4', 80, 30]], [['L0', 2, 5], ['L1', 4, 9], ['L2', 5, 3], ['L3', 2, 5], ['L4', 2, 3], ['L5', 1, 9], ['L6', 1, 8]]], [['K0', 'L5'], ['K1', 'L3'], ['K2', 'L6'], ['K3', 'L4'], ['K4', 'L0']]], ['generated mix 51', [[['K0', 0, 21], ['K1', 80, 2], ['K2', 10, 20], ['K3', 80, 20]], [['L0', 5, 9], ['L1', 5, 9], ['L2', 1, 8], ['L3', 2, 3], ['L4', 1, 9], ['L5', 4, 8], ['L6', 4, 9]]], [['K0', None], ['K1', 'L4'], ['K2', 'L3'], ['K3', 'L6']]], ['generated mix 59', [[['K0', 0, 21], ['K1', 51, 20], ['K2', 120, 15]], [['L0', 2, 8], ['L1', 5, 10], ['L2', 4, 5], ['L3', 3, 9], ['L4', 3, 5], ['L5', 3, 8]]], [['K0', None], ['K1', 'L3'], ['K2', 'L1']]]]]\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":"3576af9a66a0eded995dfd40f92ed264b515b9f7479bf17d7686e111d3730ee5","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(skus, slots):\n    order = sorted(skus, key=lambda r: (-r[1], r[0]))\n    used = set()\n    out = {}\n    for sku, picks, kg in order:\n        best = None\n        for s in sorted(slots, key=lambda s: (-s[2], s[1], s[0])):\n            sid, lvl, score = s\n            if sid in used:\n                continue\n            if kg > 20 and lvl > 2:\n                continue\n            if score >= 8 and picks < 50:\n                continue\n            best = sid\n            break\n        if best is not None:\n            used.add(best)\n        out[sku] = best\n    return [[k, out[k]] for k in sorted(out)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['heavy on level 2 ok', [[['h', 60, 25]], [['a', 3, 9], ['b', 2, 7]]], [['h', 'b']]], ['generated mix 2', [[['K0', 80, 21], ['K1', 0, 21], ['K2', 80, 20], ['K3', 49, 21]], [['L0', 2, 3], ['L1', 3, 8], ['L2', 5, 9]]], [['K0', 'L0'], ['K1', None], ['K2', 'L2'], ['K3', None]]], ['reservation at 50 picks', [[['f', 50, 5], ['s', 49, 5]], [['g', 2, 8], ['n', 1, 6]]], [['f', 'g'], ['s', 'n']]], ['no eligible slot', [[['w', 5, 40]], [['a', 4, 5]]], [['w', None]]], ['tie in feed order', [[['b', 90, 1], ['a', 90, 1]], [['s1', 2, 9], ['s2', 3, 5]]], [['a', 's1'], ['b', 's2']]], ['score tie prefers low level', [[['q', 10, 1]], [['z', 1, 6], ['a', 3, 6]]], [['q', 'z']]], ['generated mix 7', [[['K0', 51, 15], ['K1', 80, 30], ['K2', 10, 21]], [['L0', 1, 8], ['L1', 2, 3]]], [['K0', 'L1'], ['K1', 'L0'], ['K2', None]]], ['generated mix 15', [[['K0', 120, 21], ['K1', 0, 30], ['K2', 0, 21], ['K3', 80, 15], ['K4', 50, 2], ['K5', 80, 30]], [['L0', 5, 8], ['L1', 1, 3], ['L2', 3, 8], ['L3', 3, 6], ['L4', 2, 6], ['L5', 3, 10]]], [['K0', 'L4'], ['K1', None], ['K2', None], ['K3', 'L5'], ['K4', 'L2'], ['K5', 'L1']]]], [['generated mix 14', [[['K0', 0, 21], ['K1', 0, 2], ['K2', 49, 2], ['K3', 51, 21], ['K4', 49, 21]], [['L0', 2, 3], ['L1', 1, 8], ['L2', 3, 5], ['L3', 5, 10], ['L4', 5, 6]]], [['K0', None], ['K1', 'L2'], ['K2', 'L4'], ['K3', 'L1'], ['K4', 'L0']]], ['generated mix 26', [[['K0', 120, 15], ['K1', 0, 2], ['K2', 80, 21]], [['L0', 3, 9], ['L1', 5, 6], ['L2', 1, 3], ['L3', 4, 10]]], [['K0', 'L3'], ['K1', 'L1'], ['K2', 'L2']]], ['no eligible slot', [[['w', 5, 40]], [['a', 4, 5]]], [['w', None]]], ['tie in feed order', [[['b', 90, 1], ['a', 90, 1]], [['s1', 2, 9], ['s2', 3, 5]]], [['a', 's1'], ['b', 's2']]], ['heavy on level 2 ok', [[['h', 60, 25]], [['a', 3, 9], ['b', 2, 7]]], [['h', 'b']]], ['score tie prefers low level', [[['q', 10, 1]], [['z', 1, 6], ['a', 3, 6]]], [['q', 'z']]], ['generated mix 9', [[['K0', 50, 20], ['K1', 50, 30], ['K2', 0, 21], ['K3', 10, 20], ['K4', 10, 20], ['K5', 51, 2]], [['L0', 3, 9], ['L1', 4, 6], ['L2', 2, 3]]], [['K0', 'L1'], ['K1', 'L2'], ['K2', None], ['K3', None], ['K4', None], ['K5', 'L0']]], ['generated mix 18', [[['K0', 80, 20], ['K1', 120, 20], ['K2', 120, 30], ['K3', 120, 20], ['K4', 80, 21], ['K5', 10, 20]], [['L0', 1, 10], ['L1', 4, 8], ['L2', 1, 5], ['L3', 1, 3], ['L4', 2, 5], ['L5', 1, 3]]], [['K0', 'L4'], ['K1', 'L0'], ['K2', 'L2'], ['K3', 'L1'], ['K4', 'L3'], ['K5', 'L5']]]], [['generated mix 34', [[['K0', 80, 30], ['K1', 51, 30], ['K2', 0, 2], ['K3', 120, 2], ['K4', 0, 15], ['K5', 80, 21]], [['L0', 3, 9], ['L1', 1, 5], ['L2', 3, 6], ['L3', 2, 5], ['L4', 1, 3], ['L5', 4, 9], ['L6', 4, 10]]], [['K0', 'L1'], ['K1', 'L4'], ['K2', 'L2'], ['K3', 'L6'], ['K4', None], ['K5', 'L3']]], ['generated mix 45', [[['K0', 49, 30], ['K1', 80, 30], ['K2', 51, 15], ['K3', 50, 30], ['K4', 80, 20]], [['L0', 3, 10], ['L1', 5, 8], ['L2', 4, 6], ['L3', 4, 10], ['L4', 4, 9], ['L5', 3, 8]]], [['K0', None], ['K1', None], ['K2', 'L3'], ['K3', None], ['K4', 'L0']]], ['exactly 20 kg is not heavy', [[['e', 5, 20]], [['t', 4, 7], ['u', 1, 3]]], [['e', 't']]], ['reservation at 50 picks', [[['f', 50, 5], ['s', 49, 5]], [['g', 2, 8], ['n', 1, 6]]], [['f', 'g'], ['s', 'n']]], ['no eligible slot', [[['w', 5, 40]], [['a', 4, 5]]], [['w', None]]], ['tie in feed order', [[['b', 90, 1], ['a', 90, 1]], [['s1', 2, 9], ['s2', 3, 5]]], [['a', 's1'], ['b', 's2']]], ['generated mix 20', [[['K0', 50, 15]], [['L0', 4, 3], ['L1', 3, 10], ['L2', 4, 8], ['L3', 5, 9]]], [['K0', 'L1']]], ['generated mix 28', [[['K0', 51, 20]], [['L0', 4, 5], ['L1', 4, 3], ['L2', 2, 8], ['L3', 2, 3], ['L4', 5, 6], ['L5', 5, 10]]], [['K0', 'L5']]]], [['generated mix 58', [[['K0', 10, 30], ['K1', 50, 15], ['K2', 80, 30], ['K3', 120, 15]], [['L0', 4, 8], ['L1', 2, 8], ['L2', 4, 8], ['L3', 2, 3]]], [['K0', None], ['K1', 'L0'], ['K2', 'L3'], ['K3', 'L1']]], ['generated mix 79', [[['K0', 51, 30], ['K1', 51, 2], ['K2', 80, 21], ['K3', 0, 21]], [['L0', 1, 8], ['L1', 3, 9], ['L2', 5, 10], ['L3', 1, 10]]], [['K0', 'L0'], ['K1', 'L2'], ['K2', 'L3'], ['K3', None]]], ['score tie prefers low level', [[['q', 10, 1]], [['z', 1, 6], ['a', 3, 6]]], [['q', 'z']]], ['two skus compete', [[['a', 90, 1], ['b', 90, 1]], [['s1', 2, 9], ['s2', 3, 5]]], [['a', 's1'], ['b', 's2']]], ['exactly 20 kg is not heavy', [[['e', 5, 20]], [['t', 4, 7], ['u', 1, 3]]], [['e', 't']]], ['reservation at 50 picks', [[['f', 50, 5], ['s', 49, 5]], [['g', 2, 8], ['n', 1, 6]]], [['f', 'g'], ['s', 'n']]], ['generated mix 31', [[['K0', 0, 21], ['K1', 10, 21], ['K2', 80, 2], ['K3', 0, 21], ['K4', 80, 2]], [['L0', 2, 5], ['L1', 4, 6], ['L2', 4, 3], ['L3', 2, 3], ['L4', 3, 8]]], [['K0', 'L3'], ['K1', 'L0'], ['K2', 'L4'], ['K3', None], ['K4', 'L1']]], ['generated mix 39', [[['K0', 0, 2], ['K1', 80, 15]], [['L0', 5, 8], ['L1', 1, 5], ['L2', 5, 8], ['L3', 1, 9], ['L4', 5, 9]]], [['K0', 'L1'], ['K1', 'L3']]]], [['heavy on level 2 ok', [[['h', 60, 25]], [['a', 3, 9], ['b', 2, 7]]], [['h', 'b']]], ['generated mix 15', [[['K0', 120, 21], ['K1', 0, 30], ['K2', 0, 21], ['K3', 80, 15], ['K4', 50, 2], ['K5', 80, 30]], [['L0', 5, 8], ['L1', 1, 3], ['L2', 3, 8], ['L3', 3, 6], ['L4', 2, 6], ['L5', 3, 10]]], [['K0', 'L4'], ['K1', None], ['K2', None], ['K3', 'L5'], ['K4', 'L2'], ['K5', 'L1']]], ['reservation at 50 picks', [[['f', 50, 5], ['s', 49, 5]], [['g', 2, 8], ['n', 1, 6]]], [['f', 'g'], ['s', 'n']]], ['no eligible slot', [[['w', 5, 40]], [['a', 4, 5]]], [['w', None]]], ['tie in feed order', [[['b', 90, 1], ['a', 90, 1]], [['s1', 2, 9], ['s2', 3, 5]]], [['a', 's1'], ['b', 's2']]], ['generated mix 43', [[['K0', 120, 21], ['K1', 49, 21], ['K2', 80, 21], ['K3', 49, 21], ['K4', 80, 30]], [['L0', 2, 5], ['L1', 4, 9], ['L2', 5, 3], ['L3', 2, 5], ['L4', 2, 3], ['L5', 1, 9], ['L6', 1, 8]]], [['K0', 'L5'], ['K1', 'L3'], ['K2', 'L6'], ['K3', 'L4'], ['K4', 'L0']]], ['generated mix 51', [[['K0', 0, 21], ['K1', 80, 2], ['K2', 10, 20], ['K3', 80, 20]], [['L0', 5, 9], ['L1', 5, 9], ['L2', 1, 8], ['L3', 2, 3], ['L4', 1, 9], ['L5', 4, 8], ['L6', 4, 9]]], [['K0', None], ['K1', 'L4'], ['K2', 'L3'], ['K3', 'L6']]], ['generated mix 59', [[['K0', 0, 21], ['K1', 51, 20], ['K2', 120, 15]], [['L0', 2, 8], ['L1', 5, 10], ['L2', 4, 5], ['L3', 3, 9], ['L4', 3, 5], ['L5', 3, 8]]], [['K0', None], ['K1', 'L3'], ['K2', 'L1']]]]]\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 slotting policy; real slotting optimizers weigh many more factors. 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-golden-zone-heavy-level-cap","generated_at":"2026-09-29T14:52:08.469836+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Forward pick slotting places the fastest movers in ergonomic golden-zone locations.","repair":"Reject heavy items only for slots whose level is greater than 2.","root_cause":"The heavy-item level cap rejects level 2 itself instead of only levels above 2.","sha256":"89edef75f3274b00fb4bc1644df08e7ba52024001a54751da9e417259d4957e4","title":"Golden zone: heavy cap excludes level 2 · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":43.555,"exit_code":1,"observations":[{"actual":[["h","a"]],"check":"heavy on level 2 ok","expected":[["h","b"]],"passed":false},{"actual":[["K0","L1"],["K1",null],["K2","L2"],["K3","L0"]],"check":"generated mix 2","expected":[["K0","L0"],["K1",null],["K2","L2"],["K3",null]],"passed":false},{"actual":[["f","g"],["s","n"]],"check":"reservation at 50 picks","expected":[["f","g"],["s","n"]],"passed":true},{"actual":[["w",null]],"check":"no eligible slot","expected":[["w",null]],"passed":true},{"actual":[["a","s1"],["b","s2"]],"check":"tie in feed order","expected":[["a","s1"],["b","s2"]],"passed":true},{"actual":[["q","z"]],"check":"score tie prefers low level","expected":[["q","z"]],"passed":true},{"actual":[["K0","L1"],["K1","L0"],["K2",null]],"check":"generated mix 7","expected":[["K0","L1"],["K1","L0"],["K2",null]],"passed":true},{"actual":[["K0","L5"],["K1","L3"],["K2","L1"],["K3","L2"],["K4","L0"],["K5","L4"]],"check":"generated mix 15","expected":[["K0","L4"],["K1",null],["K2",null],["K3","L5"],["K4","L2"],["K5","L1"]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"heavy on level 2 ok\", \"actual\": [[\"h\", \"a\"]], \"expected\": [[\"h\", \"b\"]], \"passed\": false}, {\"check\": \"generated mix 2\", \"actual\": [[\"K0\", \"L1\"], [\"K1\", null], [\"K2\", \"L2\"], [\"K3\", \"L0\"]], \"expected\": [[\"K0\", \"L0\"], [\"K1\", null], [\"K2\", \"L2\"], [\"K3\", null]], \"passed\": false}, {\"check\": \"reservation at 50 picks\", \"actual\": [[\"f\", \"g\"], [\"s\", \"n\"]], \"expected\": [[\"f\", \"g\"], [\"s\", \"n\"]], \"passed\": true}, {\"check\": \"no eligible slot\", \"actual\": [[\"w\", null]], \"expected\": [[\"w\", null]], \"passed\": true}, {\"check\": \"tie in feed order\", \"actual\": [[\"a\", \"s1\"], [\"b\", \"s2\"]], \"expected\": [[\"a\", \"s1\"], [\"b\", \"s2\"]], \"passed\": true}, {\"check\": \"score tie prefers low level\", \"actual\": [[\"q\", \"z\"]], \"expected\": [[\"q\", \"z\"]], \"passed\": true}, {\"check\": \"generated mix 7\", \"actual\": [[\"K0\", \"L1\"], [\"K1\", \"L0\"], [\"K2\", null]], \"expected\": [[\"K0\", \"L1\"], [\"K1\", \"L0\"], [\"K2\", null]], \"passed\": true}, {\"check\": \"generated mix 15\", \"actual\": [[\"K0\", \"L5\"], [\"K1\", \"L3\"], [\"K2\", \"L1\"], [\"K3\", \"L2\"], [\"K4\", \"L0\"], [\"K5\", \"L4\"]], \"expected\": [[\"K0\", \"L4\"], [\"K1\", null], [\"K2\", null], [\"K3\", \"L5\"], [\"K4\", \"L2\"], [\"K5\", \"L1\"]], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.632,"exit_code":1,"observations":[{"actual":[["h",null]],"check":"heavy on level 2 ok","expected":[["h","b"]],"passed":false},{"actual":[["K0",null],["K1",null],["K2","L2"],["K3",null]],"check":"generated mix 2","expected":[["K0","L0"],["K1",null],["K2","L2"],["K3",null]],"passed":false},{"actual":[["f","g"],["s","n"]],"check":"reservation at 50 picks","expected":[["f","g"],["s","n"]],"passed":true},{"actual":[["w",null]],"check":"no eligible slot","expected":[["w",null]],"passed":true},{"actual":[["a","s1"],["b","s2"]],"check":"tie in feed order","expected":[["a","s1"],["b","s2"]],"passed":true},{"actual":[["q","z"]],"check":"score tie prefers low level","expected":[["q","z"]],"passed":true},{"actual":[["K0","L1"],["K1","L0"],["K2",null]],"check":"generated mix 7","expected":[["K0","L1"],["K1","L0"],["K2",null]],"passed":true},{"actual":[["K0","L1"],["K1",null],["K2",null],["K3","L5"],["K4","L2"],["K5",null]],"check":"generated mix 15","expected":[["K0","L4"],["K1",null],["K2",null],["K3","L5"],["K4","L2"],["K5","L1"]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"heavy on level 2 ok\", \"actual\": [[\"h\", null]], \"expected\": [[\"h\", \"b\"]], \"passed\": false}, {\"check\": \"generated mix 2\", \"actual\": [[\"K0\", null], [\"K1\", null], [\"K2\", \"L2\"], [\"K3\", null]], \"expected\": [[\"K0\", \"L0\"], [\"K1\", null], [\"K2\", \"L2\"], [\"K3\", null]], \"passed\": false}, {\"check\": \"reservation at 50 picks\", \"actual\": [[\"f\", \"g\"], [\"s\", \"n\"]], \"expected\": [[\"f\", \"g\"], [\"s\", \"n\"]], \"passed\": true}, {\"check\": \"no eligible slot\", \"actual\": [[\"w\", null]], \"expected\": [[\"w\", null]], \"passed\": true}, {\"check\": \"tie in feed order\", \"actual\": [[\"a\", \"s1\"], [\"b\", \"s2\"]], \"expected\": [[\"a\", \"s1\"], [\"b\", \"s2\"]], \"passed\": true}, {\"check\": \"score tie prefers low level\", \"actual\": [[\"q\", \"z\"]], \"expected\": [[\"q\", \"z\"]], \"passed\": true}, {\"check\": \"generated mix 7\", \"actual\": [[\"K0\", \"L1\"], [\"K1\", \"L0\"], [\"K2\", null]], \"expected\": [[\"K0\", \"L1\"], [\"K1\", \"L0\"], [\"K2\", null]], \"passed\": true}, {\"check\": \"generated mix 15\", \"actual\": [[\"K0\", \"L1\"], [\"K1\", null], [\"K2\", null], [\"K3\", \"L5\"], [\"K4\", \"L2\"], [\"K5\", null]], \"expected\": [[\"K0\", \"L4\"], [\"K1\", null], [\"K2\", null], [\"K3\", \"L5\"], [\"K4\", \"L2\"], [\"K5\", \"L1\"]], \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":44.021,"exit_code":0,"observations":[{"actual":[["h","b"]],"check":"heavy on level 2 ok","expected":[["h","b"]],"passed":true},{"actual":[["K0","L0"],["K1",null],["K2","L2"],["K3",null]],"check":"generated mix 2","expected":[["K0","L0"],["K1",null],["K2","L2"],["K3",null]],"passed":true},{"actual":[["f","g"],["s","n"]],"check":"reservation at 50 picks","expected":[["f","g"],["s","n"]],"passed":true},{"actual":[["w",null]],"check":"no eligible slot","expected":[["w",null]],"passed":true},{"actual":[["a","s1"],["b","s2"]],"check":"tie in feed order","expected":[["a","s1"],["b","s2"]],"passed":true},{"actual":[["q","z"]],"check":"score tie prefers low level","expected":[["q","z"]],"passed":true},{"actual":[["K0","L1"],["K1","L0"],["K2",null]],"check":"generated mix 7","expected":[["K0","L1"],["K1","L0"],["K2",null]],"passed":true},{"actual":[["K0","L4"],["K1",null],["K2",null],["K3","L5"],["K4","L2"],["K5","L1"]],"check":"generated mix 15","expected":[["K0","L4"],["K1",null],["K2",null],["K3","L5"],["K4","L2"],["K5","L1"]],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"heavy on level 2 ok\", \"actual\": [[\"h\", \"b\"]], \"expected\": [[\"h\", \"b\"]], \"passed\": true}, {\"check\": \"generated mix 2\", \"actual\": [[\"K0\", \"L0\"], [\"K1\", null], [\"K2\", \"L2\"], [\"K3\", null]], \"expected\": [[\"K0\", \"L0\"], [\"K1\", null], [\"K2\", \"L2\"], [\"K3\", null]], \"passed\": true}, {\"check\": \"reservation at 50 picks\", \"actual\": [[\"f\", \"g\"], [\"s\", \"n\"]], \"expected\": [[\"f\", \"g\"], [\"s\", \"n\"]], \"passed\": true}, {\"check\": \"no eligible slot\", \"actual\": [[\"w\", null]], \"expected\": [[\"w\", null]], \"passed\": true}, {\"check\": \"tie in feed order\", \"actual\": [[\"a\", \"s1\"], [\"b\", \"s2\"]], \"expected\": [[\"a\", \"s1\"], [\"b\", \"s2\"]], \"passed\": true}, {\"check\": \"score tie prefers low level\", \"actual\": [[\"q\", \"z\"]], \"expected\": [[\"q\", \"z\"]], \"passed\": true}, {\"check\": \"generated mix 7\", \"actual\": [[\"K0\", \"L1\"], [\"K1\", \"L0\"], [\"K2\", null]], \"expected\": [[\"K0\", \"L1\"], [\"K1\", \"L0\"], [\"K2\", null]], \"passed\": true}, {\"check\": \"generated mix 15\", \"actual\": [[\"K0\", \"L4\"], [\"K1\", null], [\"K2\", null], [\"K3\", \"L5\"], [\"K4\", \"L2\"], [\"K5\", \"L1\"]], \"expected\": [[\"K0\", \"L4\"], [\"K1\", null], [\"K2\", null], [\"K3\", \"L5\"], [\"K4\", \"L2\"], [\"K5\", \"L1\"]], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}