{"abstract":"Items are placed in the most recently opened tote even when an earlier tote had room.","category":"Warehouse slotting and bin packing","checks":8,"contract":"items [[id, volume, kg, fragile]]. Sort by volume desc, kg desc, id. Place each in the first open tote (creation order) where volume and weight stay within limits (inclusive) and no fragile item shares a tote with an item over 10 kg (either direction). Items exceeding a tote alone go to oversize. Return [list of tote id lists, sorted oversize ids].","evaluation_group":"w2-warehouse-slotting-tote-ffd","failed_approach":"Scanning emptiest totes first is worst-fit and still differs from first-fit placement.","family":"w2-warehouse-slotting-tote-ffd-first-fit-scan","id":"FA-94951","implementations":{"attempt":{"sha256":"e8eee746c6e7df8f1ec12d0448f41f9ddce8608f953c81f301907c2a71c0f76e","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(items, tote_vol, tote_wt):\n    order = sorted(items, key=lambda it: (-it[1], -it[2], it[0]))\n    totes = []\n    oversize = []\n    for iid, vol, wt, fragile in order:\n        if vol > tote_vol or wt > tote_wt:\n            oversize.append(iid)\n            continue\n        placed = False\n        for t in sorted(totes, key=lambda t: t['v']):\n            if t['v'] + vol > tote_vol or t['w'] + wt > tote_wt:\n                continue\n            if fragile and t['heavy']:\n                continue\n            if wt > 10 and t['fragile']:\n                continue\n            t['ids'].append(iid)\n            t['v'] += vol\n            t['w'] += wt\n            t['heavy'] = t['heavy'] or wt > 10\n            t['fragile'] = t['fragile'] or fragile\n            placed = True\n            break\n        if not placed:\n            totes.append({'ids': [iid], 'v': vol, 'w': wt, 'heavy': wt > 10, 'fragile': fragile})\n    return [[t['ids'] for t in totes], sorted(oversize)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['first fit not best fit', [[['a', 40, 1, False], ['b', 30, 1, False], ['c', 10, 1, False]], 50, 20], [[['a', 'c'], ['b']], []]], ['generated mix 7', [[['i0', 10, 3, False], ['i1', 50, 15, True], ['i2', 30, 8, False], ['i3', 50, 1, True], ['i4', 25, 1, False], ['i5', 20, 8, True]], 50, 20], [[['i1'], ['i3'], ['i2', 'i5'], ['i4', 'i0']], []]], ['exact fill', [[['a', 30, 5, False], ['b', 20, 5, False]], 50, 20], [[['a', 'b']], []]], ['heavy after fragile', [[['f', 30, 1, True], ['h', 10, 12, False]], 50, 20], [[['f'], ['h']], []]], ['weight limit splits', [[['a', 10, 15, False], ['b', 10, 6, False]], 50, 20], [[['a'], ['b']], []]], ['fragile vs heavy', [[['h', 30, 12, False], ['f', 10, 1, True]], 50, 20], [[['h'], ['f']], []]], ['oversize weight', [[['x', 10, 30, False], ['y', 10, 1, False]], 50, 20], [[['y']], ['x']]], ['generated mix 9', [[['i0', 60, 8, False], ['i1', 30, 10, False], ['i2', 50, 11, True], ['i3', 10, 15, True]], 50, 20], [[['i2'], ['i1'], ['i3']], ['i0']]]], [['generated mix 21', [[['i0', 20, 1, True], ['i1', 25, 1, False], ['i2', 30, 3, True], ['i3', 60, 1, False], ['i4', 50, 15, True]], 50, 25], [[['i4'], ['i2', 'i0'], ['i1']], ['i3']]], ['oversize weight', [[['x', 10, 30, False], ['y', 10, 1, False]], 50, 20], [[['y']], ['x']]], ['first fit not best fit', [[['a', 40, 1, False], ['b', 30, 1, False], ['c', 10, 1, False]], 50, 20], [[['a', 'c'], ['b']], []]], ['fragile vs heavy', [[['h', 30, 12, False], ['f', 10, 1, True]], 50, 20], [[['h'], ['f']], []]], ['generated mix 9', [[['i0', 60, 8, False], ['i1', 30, 10, False], ['i2', 50, 11, True], ['i3', 10, 15, True]], 50, 20], [[['i2'], ['i1'], ['i3']], ['i0']]], ['generated mix 17', [[['i0', 25, 1, True], ['i1', 60, 10, False], ['i2', 5, 1, True], ['i3', 10, 1, False], ['i4', 50, 8, False], ['i5', 40, 8, False]], 60, 25], [[['i1'], ['i4', 'i3'], ['i5', 'i2'], ['i0']], []]], ['generated mix 26', [[['i0', 40, 1, False], ['i1', 50, 10, False], ['i2', 30, 3, True], ['i3', 10, 15, False], ['i4', 40, 10, False], ['i5', 5, 8, False]], 60, 20], [[['i1', 'i5'], ['i4'], ['i0', 'i3'], ['i2']], []]], ['generated mix 34', [[['i0', 20, 11, True], ['i1', 25, 15, False], ['i2', 20, 8, True], ['i3', 20, 10, False], ['i4', 40, 11, False], ['i5', 5, 8, True], ['i6', 20, 1, False]], 60, 25], [[['i4', 'i3'], ['i1', 'i6'], ['i0'], ['i2', 'i5']], []]]], [['generated mix 38', [[['i0', 40, 10, False], ['i1', 60, 3, True], ['i2', 25, 10, True], ['i3', 10, 8, False], ['i4', 60, 11, True], ['i5', 40, 1, False]], 50, 20], [[['i0', 'i3'], ['i5'], ['i2']], ['i1', 'i4']]], ['generated mix 34', [[['i0', 20, 11, True], ['i1', 25, 15, False], ['i2', 20, 8, True], ['i3', 20, 10, False], ['i4', 40, 11, False], ['i5', 5, 8, True], ['i6', 20, 1, False]], 60, 25], [[['i4', 'i3'], ['i1', 'i6'], ['i0'], ['i2', 'i5']], []]], ['exact fill', [[['a', 30, 5, False], ['b', 20, 5, False]], 50, 20], [[['a', 'b']], []]], ['heavy after fragile', [[['f', 30, 1, True], ['h', 10, 12, False]], 50, 20], [[['f'], ['h']], []]], ['weight limit splits', [[['a', 10, 15, False], ['b', 10, 6, False]], 50, 20], [[['a'], ['b']], []]], ['generated mix 20', [[['i0', 25, 3, True], ['i1', 50, 11, False], ['i2', 10, 10, True]], 60, 20], [[['i1'], ['i0', 'i2']], []]], ['generated mix 28', [[['i0', 5, 11, False], ['i1', 10, 15, True], ['i2', 40, 15, True], ['i3', 25, 3, False], ['i4', 60, 15, False], ['i5', 40, 11, False], ['i6', 5, 11, True]], 50, 25], [[['i2'], ['i5', 'i0'], ['i3', 'i1'], ['i6']], ['i4']]], ['generated mix 37', [[['i0', 10, 15, False], ['i1', 20, 1, False], ['i2', 50, 3, False], ['i3', 5, 8, False]], 50, 25], [[['i2'], ['i1', 'i0', 'i3']], []]]], [['generated mix 54', [[['i0', 30, 10, False], ['i1', 20, 11, False], ['i2', 20, 1, False], ['i3', 60, 10, True], ['i4', 60, 10, True], ['i5', 10, 8, False]], 50, 20], [[['i0', 'i2'], ['i1', 'i5']], ['i3', 'i4']]], ['generated mix 49', [[['i0', 10, 10, False], ['i1', 20, 10, True], ['i2', 10, 15, False], ['i3', 20, 3, False], ['i4', 20, 15, False], ['i5', 5, 1, False], ['i6', 50, 15, False]], 50, 20], [[['i6'], ['i4', 'i3', 'i5'], ['i1', 'i0'], ['i2']], []]], ['oversize weight', [[['x', 10, 30, False], ['y', 10, 1, False]], 50, 20], [[['y']], ['x']]], ['first fit not best fit', [[['a', 40, 1, False], ['b', 30, 1, False], ['c', 10, 1, False]], 50, 20], [[['a', 'c'], ['b']], []]], ['fragile vs heavy', [[['h', 30, 12, False], ['f', 10, 1, True]], 50, 20], [[['h'], ['f']], []]], ['generated mix 31', [[['i0', 5, 11, False], ['i1', 30, 11, False], ['i2', 20, 1, False], ['i3', 25, 11, False], ['i4', 40, 3, False]], 50, 25], [[['i4', 'i0'], ['i1', 'i2'], ['i3']], []]], ['generated mix 39', [[['i0', 60, 15, True], ['i1', 25, 15, False], ['i2', 60, 10, True], ['i3', 10, 11, True], ['i4', 60, 8, False], ['i5', 20, 15, False], ['i6', 60, 1, False], ['i7', 40, 3, True]], 60, 25], [[['i0'], ['i2'], ['i4'], ['i6'], ['i7'], ['i1'], ['i5'], ['i3']], []]], ['generated mix 47', [[['i0', 50, 1, True], ['i1', 10, 3, False], ['i2', 20, 15, False], ['i3', 40, 11, False], ['i4', 20, 15, False], ['i5', 30, 3, False], ['i6', 60, 3, False], ['i7', 40, 1, False]], 60, 20], [[['i6'], ['i0', 'i1'], ['i3'], ['i7', 'i2'], ['i5', 'i4']], []]]], [['generated mix 76', [[['i0', 10, 3, False], ['i1', 20, 11, False], ['i2', 30, 11, False], ['i3', 10, 1, False], ['i4', 20, 1, False], ['i5', 50, 11, False], ['i6', 5, 3, True], ['i7', 20, 11, True]], 50, 20], [[['i5'], ['i2', 'i4'], ['i1', 'i0', 'i3'], ['i7'], ['i6']], []]], ['generated mix 67', [[['i0', 40, 11, False], ['i1', 5, 15, False], ['i2', 10, 3, False], ['i3', 20, 11, False], ['i4', 25, 10, False], ['i5', 50, 1, False], ['i6', 10, 8, False]], 60, 25], [[['i5', 'i6'], ['i0', 'i3'], ['i4', 'i2'], ['i1']], []]], ['exact fill', [[['a', 30, 5, False], ['b', 20, 5, False]], 50, 20], [[['a', 'b']], []]], ['heavy after fragile', [[['f', 30, 1, True], ['h', 10, 12, False]], 50, 20], [[['f'], ['h']], []]], ['weight limit splits', [[['a', 10, 15, False], ['b', 10, 6, False]], 50, 20], [[['a'], ['b']], []]], ['generated mix 42', [[['i0', 60, 3, False], ['i1', 20, 8, True], ['i2', 10, 8, False], ['i3', 40, 10, False]], 60, 20], [[['i0'], ['i3', 'i1'], ['i2']], []]], ['generated mix 50', [[['i0', 40, 1, False], ['i1', 50, 10, True], ['i2', 5, 10, True], ['i3', 20, 10, False], ['i4', 20, 11, True], ['i5', 20, 8, False], ['i6', 5, 3, True], ['i7', 30, 3, False]], 50, 20], [[['i1'], ['i0', 'i2', 'i6'], ['i7', 'i4'], ['i3', 'i5']], []]], ['generated mix 58', [[['i0', 30, 3, False], ['i1', 5, 11, True], ['i2', 50, 10, False]], 60, 20], [[['i2'], ['i0', 'i1']], []]]]]\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":"ef5da2ae696a350774caa7265ce2acd3dae508ab3df2564b050c703e749686b7","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(items, tote_vol, tote_wt):\n    order = sorted(items, key=lambda it: (-it[1], -it[2], it[0]))\n    totes = []\n    oversize = []\n    for iid, vol, wt, fragile in order:\n        if vol > tote_vol or wt > tote_wt:\n            oversize.append(iid)\n            continue\n        placed = False\n        for t in reversed(totes):\n            if t['v'] + vol > tote_vol or t['w'] + wt > tote_wt:\n                continue\n            if fragile and t['heavy']:\n                continue\n            if wt > 10 and t['fragile']:\n                continue\n            t['ids'].append(iid)\n            t['v'] += vol\n            t['w'] += wt\n            t['heavy'] = t['heavy'] or wt > 10\n            t['fragile'] = t['fragile'] or fragile\n            placed = True\n            break\n        if not placed:\n            totes.append({'ids': [iid], 'v': vol, 'w': wt, 'heavy': wt > 10, 'fragile': fragile})\n    return [[t['ids'] for t in totes], sorted(oversize)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['first fit not best fit', [[['a', 40, 1, False], ['b', 30, 1, False], ['c', 10, 1, False]], 50, 20], [[['a', 'c'], ['b']], []]], ['generated mix 7', [[['i0', 10, 3, False], ['i1', 50, 15, True], ['i2', 30, 8, False], ['i3', 50, 1, True], ['i4', 25, 1, False], ['i5', 20, 8, True]], 50, 20], [[['i1'], ['i3'], ['i2', 'i5'], ['i4', 'i0']], []]], ['exact fill', [[['a', 30, 5, False], ['b', 20, 5, False]], 50, 20], [[['a', 'b']], []]], ['heavy after fragile', [[['f', 30, 1, True], ['h', 10, 12, False]], 50, 20], [[['f'], ['h']], []]], ['weight limit splits', [[['a', 10, 15, False], ['b', 10, 6, False]], 50, 20], [[['a'], ['b']], []]], ['fragile vs heavy', [[['h', 30, 12, False], ['f', 10, 1, True]], 50, 20], [[['h'], ['f']], []]], ['oversize weight', [[['x', 10, 30, False], ['y', 10, 1, False]], 50, 20], [[['y']], ['x']]], ['generated mix 9', [[['i0', 60, 8, False], ['i1', 30, 10, False], ['i2', 50, 11, True], ['i3', 10, 15, True]], 50, 20], [[['i2'], ['i1'], ['i3']], ['i0']]]], [['generated mix 21', [[['i0', 20, 1, True], ['i1', 25, 1, False], ['i2', 30, 3, True], ['i3', 60, 1, False], ['i4', 50, 15, True]], 50, 25], [[['i4'], ['i2', 'i0'], ['i1']], ['i3']]], ['oversize weight', [[['x', 10, 30, False], ['y', 10, 1, False]], 50, 20], [[['y']], ['x']]], ['first fit not best fit', [[['a', 40, 1, False], ['b', 30, 1, False], ['c', 10, 1, False]], 50, 20], [[['a', 'c'], ['b']], []]], ['fragile vs heavy', [[['h', 30, 12, False], ['f', 10, 1, True]], 50, 20], [[['h'], ['f']], []]], ['generated mix 9', [[['i0', 60, 8, False], ['i1', 30, 10, False], ['i2', 50, 11, True], ['i3', 10, 15, True]], 50, 20], [[['i2'], ['i1'], ['i3']], ['i0']]], ['generated mix 17', [[['i0', 25, 1, True], ['i1', 60, 10, False], ['i2', 5, 1, True], ['i3', 10, 1, False], ['i4', 50, 8, False], ['i5', 40, 8, False]], 60, 25], [[['i1'], ['i4', 'i3'], ['i5', 'i2'], ['i0']], []]], ['generated mix 26', [[['i0', 40, 1, False], ['i1', 50, 10, False], ['i2', 30, 3, True], ['i3', 10, 15, False], ['i4', 40, 10, False], ['i5', 5, 8, False]], 60, 20], [[['i1', 'i5'], ['i4'], ['i0', 'i3'], ['i2']], []]], ['generated mix 34', [[['i0', 20, 11, True], ['i1', 25, 15, False], ['i2', 20, 8, True], ['i3', 20, 10, False], ['i4', 40, 11, False], ['i5', 5, 8, True], ['i6', 20, 1, False]], 60, 25], [[['i4', 'i3'], ['i1', 'i6'], ['i0'], ['i2', 'i5']], []]]], [['generated mix 38', [[['i0', 40, 10, False], ['i1', 60, 3, True], ['i2', 25, 10, True], ['i3', 10, 8, False], ['i4', 60, 11, True], ['i5', 40, 1, False]], 50, 20], [[['i0', 'i3'], ['i5'], ['i2']], ['i1', 'i4']]], ['generated mix 34', [[['i0', 20, 11, True], ['i1', 25, 15, False], ['i2', 20, 8, True], ['i3', 20, 10, False], ['i4', 40, 11, False], ['i5', 5, 8, True], ['i6', 20, 1, False]], 60, 25], [[['i4', 'i3'], ['i1', 'i6'], ['i0'], ['i2', 'i5']], []]], ['exact fill', [[['a', 30, 5, False], ['b', 20, 5, False]], 50, 20], [[['a', 'b']], []]], ['heavy after fragile', [[['f', 30, 1, True], ['h', 10, 12, False]], 50, 20], [[['f'], ['h']], []]], ['weight limit splits', [[['a', 10, 15, False], ['b', 10, 6, False]], 50, 20], [[['a'], ['b']], []]], ['generated mix 20', [[['i0', 25, 3, True], ['i1', 50, 11, False], ['i2', 10, 10, True]], 60, 20], [[['i1'], ['i0', 'i2']], []]], ['generated mix 28', [[['i0', 5, 11, False], ['i1', 10, 15, True], ['i2', 40, 15, True], ['i3', 25, 3, False], ['i4', 60, 15, False], ['i5', 40, 11, False], ['i6', 5, 11, True]], 50, 25], [[['i2'], ['i5', 'i0'], ['i3', 'i1'], ['i6']], ['i4']]], ['generated mix 37', [[['i0', 10, 15, False], ['i1', 20, 1, False], ['i2', 50, 3, False], ['i3', 5, 8, False]], 50, 25], [[['i2'], ['i1', 'i0', 'i3']], []]]], [['generated mix 54', [[['i0', 30, 10, False], ['i1', 20, 11, False], ['i2', 20, 1, False], ['i3', 60, 10, True], ['i4', 60, 10, True], ['i5', 10, 8, False]], 50, 20], [[['i0', 'i2'], ['i1', 'i5']], ['i3', 'i4']]], ['generated mix 49', [[['i0', 10, 10, False], ['i1', 20, 10, True], ['i2', 10, 15, False], ['i3', 20, 3, False], ['i4', 20, 15, False], ['i5', 5, 1, False], ['i6', 50, 15, False]], 50, 20], [[['i6'], ['i4', 'i3', 'i5'], ['i1', 'i0'], ['i2']], []]], ['oversize weight', [[['x', 10, 30, False], ['y', 10, 1, False]], 50, 20], [[['y']], ['x']]], ['first fit not best fit', [[['a', 40, 1, False], ['b', 30, 1, False], ['c', 10, 1, False]], 50, 20], [[['a', 'c'], ['b']], []]], ['fragile vs heavy', [[['h', 30, 12, False], ['f', 10, 1, True]], 50, 20], [[['h'], ['f']], []]], ['generated mix 31', [[['i0', 5, 11, False], ['i1', 30, 11, False], ['i2', 20, 1, False], ['i3', 25, 11, False], ['i4', 40, 3, False]], 50, 25], [[['i4', 'i0'], ['i1', 'i2'], ['i3']], []]], ['generated mix 39', [[['i0', 60, 15, True], ['i1', 25, 15, False], ['i2', 60, 10, True], ['i3', 10, 11, True], ['i4', 60, 8, False], ['i5', 20, 15, False], ['i6', 60, 1, False], ['i7', 40, 3, True]], 60, 25], [[['i0'], ['i2'], ['i4'], ['i6'], ['i7'], ['i1'], ['i5'], ['i3']], []]], ['generated mix 47', [[['i0', 50, 1, True], ['i1', 10, 3, False], ['i2', 20, 15, False], ['i3', 40, 11, False], ['i4', 20, 15, False], ['i5', 30, 3, False], ['i6', 60, 3, False], ['i7', 40, 1, False]], 60, 20], [[['i6'], ['i0', 'i1'], ['i3'], ['i7', 'i2'], ['i5', 'i4']], []]]], [['generated mix 76', [[['i0', 10, 3, False], ['i1', 20, 11, False], ['i2', 30, 11, False], ['i3', 10, 1, False], ['i4', 20, 1, False], ['i5', 50, 11, False], ['i6', 5, 3, True], ['i7', 20, 11, True]], 50, 20], [[['i5'], ['i2', 'i4'], ['i1', 'i0', 'i3'], ['i7'], ['i6']], []]], ['generated mix 67', [[['i0', 40, 11, False], ['i1', 5, 15, False], ['i2', 10, 3, False], ['i3', 20, 11, False], ['i4', 25, 10, False], ['i5', 50, 1, False], ['i6', 10, 8, False]], 60, 25], [[['i5', 'i6'], ['i0', 'i3'], ['i4', 'i2'], ['i1']], []]], ['exact fill', [[['a', 30, 5, False], ['b', 20, 5, False]], 50, 20], [[['a', 'b']], []]], ['heavy after fragile', [[['f', 30, 1, True], ['h', 10, 12, False]], 50, 20], [[['f'], ['h']], []]], ['weight limit splits', [[['a', 10, 15, False], ['b', 10, 6, False]], 50, 20], [[['a'], ['b']], []]], ['generated mix 42', [[['i0', 60, 3, False], ['i1', 20, 8, True], ['i2', 10, 8, False], ['i3', 40, 10, False]], 60, 20], [[['i0'], ['i3', 'i1'], ['i2']], []]], ['generated mix 50', [[['i0', 40, 1, False], ['i1', 50, 10, True], ['i2', 5, 10, True], ['i3', 20, 10, False], ['i4', 20, 11, True], ['i5', 20, 8, False], ['i6', 5, 3, True], ['i7', 30, 3, False]], 50, 20], [[['i1'], ['i0', 'i2', 'i6'], ['i7', 'i4'], ['i3', 'i5']], []]], ['generated mix 58', [[['i0', 30, 3, False], ['i1', 5, 11, True], ['i2', 50, 10, False]], 60, 20], [[['i2'], ['i0', 'i1']], []]]]]\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":"ba6649ed2a3a427721a4b73ea97a9dbeda522e80547c6b1f409b8649394f421e","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(items, tote_vol, tote_wt):\n    order = sorted(items, key=lambda it: (-it[1], -it[2], it[0]))\n    totes = []\n    oversize = []\n    for iid, vol, wt, fragile in order:\n        if vol > tote_vol or wt > tote_wt:\n            oversize.append(iid)\n            continue\n        placed = False\n        for t in totes:\n            if t['v'] + vol > tote_vol or t['w'] + wt > tote_wt:\n                continue\n            if fragile and t['heavy']:\n                continue\n            if wt > 10 and t['fragile']:\n                continue\n            t['ids'].append(iid)\n            t['v'] += vol\n            t['w'] += wt\n            t['heavy'] = t['heavy'] or wt > 10\n            t['fragile'] = t['fragile'] or fragile\n            placed = True\n            break\n        if not placed:\n            totes.append({'ids': [iid], 'v': vol, 'w': wt, 'heavy': wt > 10, 'fragile': fragile})\n    return [[t['ids'] for t in totes], sorted(oversize)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['first fit not best fit', [[['a', 40, 1, False], ['b', 30, 1, False], ['c', 10, 1, False]], 50, 20], [[['a', 'c'], ['b']], []]], ['generated mix 7', [[['i0', 10, 3, False], ['i1', 50, 15, True], ['i2', 30, 8, False], ['i3', 50, 1, True], ['i4', 25, 1, False], ['i5', 20, 8, True]], 50, 20], [[['i1'], ['i3'], ['i2', 'i5'], ['i4', 'i0']], []]], ['exact fill', [[['a', 30, 5, False], ['b', 20, 5, False]], 50, 20], [[['a', 'b']], []]], ['heavy after fragile', [[['f', 30, 1, True], ['h', 10, 12, False]], 50, 20], [[['f'], ['h']], []]], ['weight limit splits', [[['a', 10, 15, False], ['b', 10, 6, False]], 50, 20], [[['a'], ['b']], []]], ['fragile vs heavy', [[['h', 30, 12, False], ['f', 10, 1, True]], 50, 20], [[['h'], ['f']], []]], ['oversize weight', [[['x', 10, 30, False], ['y', 10, 1, False]], 50, 20], [[['y']], ['x']]], ['generated mix 9', [[['i0', 60, 8, False], ['i1', 30, 10, False], ['i2', 50, 11, True], ['i3', 10, 15, True]], 50, 20], [[['i2'], ['i1'], ['i3']], ['i0']]]], [['generated mix 21', [[['i0', 20, 1, True], ['i1', 25, 1, False], ['i2', 30, 3, True], ['i3', 60, 1, False], ['i4', 50, 15, True]], 50, 25], [[['i4'], ['i2', 'i0'], ['i1']], ['i3']]], ['oversize weight', [[['x', 10, 30, False], ['y', 10, 1, False]], 50, 20], [[['y']], ['x']]], ['first fit not best fit', [[['a', 40, 1, False], ['b', 30, 1, False], ['c', 10, 1, False]], 50, 20], [[['a', 'c'], ['b']], []]], ['fragile vs heavy', [[['h', 30, 12, False], ['f', 10, 1, True]], 50, 20], [[['h'], ['f']], []]], ['generated mix 9', [[['i0', 60, 8, False], ['i1', 30, 10, False], ['i2', 50, 11, True], ['i3', 10, 15, True]], 50, 20], [[['i2'], ['i1'], ['i3']], ['i0']]], ['generated mix 17', [[['i0', 25, 1, True], ['i1', 60, 10, False], ['i2', 5, 1, True], ['i3', 10, 1, False], ['i4', 50, 8, False], ['i5', 40, 8, False]], 60, 25], [[['i1'], ['i4', 'i3'], ['i5', 'i2'], ['i0']], []]], ['generated mix 26', [[['i0', 40, 1, False], ['i1', 50, 10, False], ['i2', 30, 3, True], ['i3', 10, 15, False], ['i4', 40, 10, False], ['i5', 5, 8, False]], 60, 20], [[['i1', 'i5'], ['i4'], ['i0', 'i3'], ['i2']], []]], ['generated mix 34', [[['i0', 20, 11, True], ['i1', 25, 15, False], ['i2', 20, 8, True], ['i3', 20, 10, False], ['i4', 40, 11, False], ['i5', 5, 8, True], ['i6', 20, 1, False]], 60, 25], [[['i4', 'i3'], ['i1', 'i6'], ['i0'], ['i2', 'i5']], []]]], [['generated mix 38', [[['i0', 40, 10, False], ['i1', 60, 3, True], ['i2', 25, 10, True], ['i3', 10, 8, False], ['i4', 60, 11, True], ['i5', 40, 1, False]], 50, 20], [[['i0', 'i3'], ['i5'], ['i2']], ['i1', 'i4']]], ['generated mix 34', [[['i0', 20, 11, True], ['i1', 25, 15, False], ['i2', 20, 8, True], ['i3', 20, 10, False], ['i4', 40, 11, False], ['i5', 5, 8, True], ['i6', 20, 1, False]], 60, 25], [[['i4', 'i3'], ['i1', 'i6'], ['i0'], ['i2', 'i5']], []]], ['exact fill', [[['a', 30, 5, False], ['b', 20, 5, False]], 50, 20], [[['a', 'b']], []]], ['heavy after fragile', [[['f', 30, 1, True], ['h', 10, 12, False]], 50, 20], [[['f'], ['h']], []]], ['weight limit splits', [[['a', 10, 15, False], ['b', 10, 6, False]], 50, 20], [[['a'], ['b']], []]], ['generated mix 20', [[['i0', 25, 3, True], ['i1', 50, 11, False], ['i2', 10, 10, True]], 60, 20], [[['i1'], ['i0', 'i2']], []]], ['generated mix 28', [[['i0', 5, 11, False], ['i1', 10, 15, True], ['i2', 40, 15, True], ['i3', 25, 3, False], ['i4', 60, 15, False], ['i5', 40, 11, False], ['i6', 5, 11, True]], 50, 25], [[['i2'], ['i5', 'i0'], ['i3', 'i1'], ['i6']], ['i4']]], ['generated mix 37', [[['i0', 10, 15, False], ['i1', 20, 1, False], ['i2', 50, 3, False], ['i3', 5, 8, False]], 50, 25], [[['i2'], ['i1', 'i0', 'i3']], []]]], [['generated mix 54', [[['i0', 30, 10, False], ['i1', 20, 11, False], ['i2', 20, 1, False], ['i3', 60, 10, True], ['i4', 60, 10, True], ['i5', 10, 8, False]], 50, 20], [[['i0', 'i2'], ['i1', 'i5']], ['i3', 'i4']]], ['generated mix 49', [[['i0', 10, 10, False], ['i1', 20, 10, True], ['i2', 10, 15, False], ['i3', 20, 3, False], ['i4', 20, 15, False], ['i5', 5, 1, False], ['i6', 50, 15, False]], 50, 20], [[['i6'], ['i4', 'i3', 'i5'], ['i1', 'i0'], ['i2']], []]], ['oversize weight', [[['x', 10, 30, False], ['y', 10, 1, False]], 50, 20], [[['y']], ['x']]], ['first fit not best fit', [[['a', 40, 1, False], ['b', 30, 1, False], ['c', 10, 1, False]], 50, 20], [[['a', 'c'], ['b']], []]], ['fragile vs heavy', [[['h', 30, 12, False], ['f', 10, 1, True]], 50, 20], [[['h'], ['f']], []]], ['generated mix 31', [[['i0', 5, 11, False], ['i1', 30, 11, False], ['i2', 20, 1, False], ['i3', 25, 11, False], ['i4', 40, 3, False]], 50, 25], [[['i4', 'i0'], ['i1', 'i2'], ['i3']], []]], ['generated mix 39', [[['i0', 60, 15, True], ['i1', 25, 15, False], ['i2', 60, 10, True], ['i3', 10, 11, True], ['i4', 60, 8, False], ['i5', 20, 15, False], ['i6', 60, 1, False], ['i7', 40, 3, True]], 60, 25], [[['i0'], ['i2'], ['i4'], ['i6'], ['i7'], ['i1'], ['i5'], ['i3']], []]], ['generated mix 47', [[['i0', 50, 1, True], ['i1', 10, 3, False], ['i2', 20, 15, False], ['i3', 40, 11, False], ['i4', 20, 15, False], ['i5', 30, 3, False], ['i6', 60, 3, False], ['i7', 40, 1, False]], 60, 20], [[['i6'], ['i0', 'i1'], ['i3'], ['i7', 'i2'], ['i5', 'i4']], []]]], [['generated mix 76', [[['i0', 10, 3, False], ['i1', 20, 11, False], ['i2', 30, 11, False], ['i3', 10, 1, False], ['i4', 20, 1, False], ['i5', 50, 11, False], ['i6', 5, 3, True], ['i7', 20, 11, True]], 50, 20], [[['i5'], ['i2', 'i4'], ['i1', 'i0', 'i3'], ['i7'], ['i6']], []]], ['generated mix 67', [[['i0', 40, 11, False], ['i1', 5, 15, False], ['i2', 10, 3, False], ['i3', 20, 11, False], ['i4', 25, 10, False], ['i5', 50, 1, False], ['i6', 10, 8, False]], 60, 25], [[['i5', 'i6'], ['i0', 'i3'], ['i4', 'i2'], ['i1']], []]], ['exact fill', [[['a', 30, 5, False], ['b', 20, 5, False]], 50, 20], [[['a', 'b']], []]], ['heavy after fragile', [[['f', 30, 1, True], ['h', 10, 12, False]], 50, 20], [[['f'], ['h']], []]], ['weight limit splits', [[['a', 10, 15, False], ['b', 10, 6, False]], 50, 20], [[['a'], ['b']], []]], ['generated mix 42', [[['i0', 60, 3, False], ['i1', 20, 8, True], ['i2', 10, 8, False], ['i3', 40, 10, False]], 60, 20], [[['i0'], ['i3', 'i1'], ['i2']], []]], ['generated mix 50', [[['i0', 40, 1, False], ['i1', 50, 10, True], ['i2', 5, 10, True], ['i3', 20, 10, False], ['i4', 20, 11, True], ['i5', 20, 8, False], ['i6', 5, 3, True], ['i7', 30, 3, False]], 50, 20], [[['i1'], ['i0', 'i2', 'i6'], ['i7', 'i4'], ['i3', 'i5']], []]], ['generated mix 58', [[['i0', 30, 3, False], ['i1', 5, 11, True], ['i2', 50, 10, False]], 60, 20], [[['i2'], ['i0', 'i1']], []]]]]\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 first-fit rule; 10 kg heavy threshold is a toy contract constant. 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-tote-ffd-first-fit-scan","generated_at":"2026-09-29T14:52:09.230228+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Packing picked units into conveyor totes is bounded by volume, weight, and damage rules.","repair":"Scan open totes in creation order and take the first feasible one.","root_cause":"The fit scan iterates open totes newest-first instead of in creation order.","sha256":"83d0018cf6242b191b044dcca89514e19d05fcd058c982514027f1f546c0642e","title":"Tote packing: newest tote tried first · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":40.419,"exit_code":1,"observations":[{"actual":[[["a"],["b","c"]],[]],"check":"first fit not best fit","expected":[[["a","c"],["b"]],[]],"passed":false},{"actual":[[["i1"],["i3"],["i2","i0"],["i4","i5"]],[]],"check":"generated mix 7","expected":[[["i1"],["i3"],["i2","i5"],["i4","i0"]],[]],"passed":false},{"actual":[[["a","b"]],[]],"check":"exact fill","expected":[[["a","b"]],[]],"passed":true},{"actual":[[["f"],["h"]],[]],"check":"heavy after fragile","expected":[[["f"],["h"]],[]],"passed":true},{"actual":[[["a"],["b"]],[]],"check":"weight limit splits","expected":[[["a"],["b"]],[]],"passed":true},{"actual":[[["h"],["f"]],[]],"check":"fragile vs heavy","expected":[[["h"],["f"]],[]],"passed":true},{"actual":[[["y"]],["x"]],"check":"oversize weight","expected":[[["y"]],["x"]],"passed":true},{"actual":[[["i2"],["i1"],["i3"]],["i0"]],"check":"generated mix 9","expected":[[["i2"],["i1"],["i3"]],["i0"]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"first fit not best fit\", \"actual\": [[[\"a\"], [\"b\", \"c\"]], []], \"expected\": [[[\"a\", \"c\"], [\"b\"]], []], \"passed\": false}, {\"check\": \"generated mix 7\", \"actual\": [[[\"i1\"], [\"i3\"], [\"i2\", \"i0\"], [\"i4\", \"i5\"]], []], \"expected\": [[[\"i1\"], [\"i3\"], [\"i2\", \"i5\"], [\"i4\", \"i0\"]], []], \"passed\": false}, {\"check\": \"exact fill\", \"actual\": [[[\"a\", \"b\"]], []], \"expected\": [[[\"a\", \"b\"]], []], \"passed\": true}, {\"check\": \"heavy after fragile\", \"actual\": [[[\"f\"], [\"h\"]], []], \"expected\": [[[\"f\"], [\"h\"]], []], \"passed\": true}, {\"check\": \"weight limit splits\", \"actual\": [[[\"a\"], [\"b\"]], []], \"expected\": [[[\"a\"], [\"b\"]], []], \"passed\": true}, {\"check\": \"fragile vs heavy\", \"actual\": [[[\"h\"], [\"f\"]], []], \"expected\": [[[\"h\"], [\"f\"]], []], \"passed\": true}, {\"check\": \"oversize weight\", \"actual\": [[[\"y\"]], [\"x\"]], \"expected\": [[[\"y\"]], [\"x\"]], \"passed\": true}, {\"check\": \"generated mix 9\", \"actual\": [[[\"i2\"], [\"i1\"], [\"i3\"]], [\"i0\"]], \"expected\": [[[\"i2\"], [\"i1\"], [\"i3\"]], [\"i0\"]], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.32,"exit_code":1,"observations":[{"actual":[[["a"],["b","c"]],[]],"check":"first fit not best fit","expected":[[["a","c"],["b"]],[]],"passed":false},{"actual":[[["i1"],["i3"],["i2","i0"],["i4","i5"]],[]],"check":"generated mix 7","expected":[[["i1"],["i3"],["i2","i5"],["i4","i0"]],[]],"passed":false},{"actual":[[["a","b"]],[]],"check":"exact fill","expected":[[["a","b"]],[]],"passed":true},{"actual":[[["f"],["h"]],[]],"check":"heavy after fragile","expected":[[["f"],["h"]],[]],"passed":true},{"actual":[[["a"],["b"]],[]],"check":"weight limit splits","expected":[[["a"],["b"]],[]],"passed":true},{"actual":[[["h"],["f"]],[]],"check":"fragile vs heavy","expected":[[["h"],["f"]],[]],"passed":true},{"actual":[[["y"]],["x"]],"check":"oversize weight","expected":[[["y"]],["x"]],"passed":true},{"actual":[[["i2"],["i1"],["i3"]],["i0"]],"check":"generated mix 9","expected":[[["i2"],["i1"],["i3"]],["i0"]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"first fit not best fit\", \"actual\": [[[\"a\"], [\"b\", \"c\"]], []], \"expected\": [[[\"a\", \"c\"], [\"b\"]], []], \"passed\": false}, {\"check\": \"generated mix 7\", \"actual\": [[[\"i1\"], [\"i3\"], [\"i2\", \"i0\"], [\"i4\", \"i5\"]], []], \"expected\": [[[\"i1\"], [\"i3\"], [\"i2\", \"i5\"], [\"i4\", \"i0\"]], []], \"passed\": false}, {\"check\": \"exact fill\", \"actual\": [[[\"a\", \"b\"]], []], \"expected\": [[[\"a\", \"b\"]], []], \"passed\": true}, {\"check\": \"heavy after fragile\", \"actual\": [[[\"f\"], [\"h\"]], []], \"expected\": [[[\"f\"], [\"h\"]], []], \"passed\": true}, {\"check\": \"weight limit splits\", \"actual\": [[[\"a\"], [\"b\"]], []], \"expected\": [[[\"a\"], [\"b\"]], []], \"passed\": true}, {\"check\": \"fragile vs heavy\", \"actual\": [[[\"h\"], [\"f\"]], []], \"expected\": [[[\"h\"], [\"f\"]], []], \"passed\": true}, {\"check\": \"oversize weight\", \"actual\": [[[\"y\"]], [\"x\"]], \"expected\": [[[\"y\"]], [\"x\"]], \"passed\": true}, {\"check\": \"generated mix 9\", \"actual\": [[[\"i2\"], [\"i1\"], [\"i3\"]], [\"i0\"]], \"expected\": [[[\"i2\"], [\"i1\"], [\"i3\"]], [\"i0\"]], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":41.32,"exit_code":0,"observations":[{"actual":[[["a","c"],["b"]],[]],"check":"first fit not best fit","expected":[[["a","c"],["b"]],[]],"passed":true},{"actual":[[["i1"],["i3"],["i2","i5"],["i4","i0"]],[]],"check":"generated mix 7","expected":[[["i1"],["i3"],["i2","i5"],["i4","i0"]],[]],"passed":true},{"actual":[[["a","b"]],[]],"check":"exact fill","expected":[[["a","b"]],[]],"passed":true},{"actual":[[["f"],["h"]],[]],"check":"heavy after fragile","expected":[[["f"],["h"]],[]],"passed":true},{"actual":[[["a"],["b"]],[]],"check":"weight limit splits","expected":[[["a"],["b"]],[]],"passed":true},{"actual":[[["h"],["f"]],[]],"check":"fragile vs heavy","expected":[[["h"],["f"]],[]],"passed":true},{"actual":[[["y"]],["x"]],"check":"oversize weight","expected":[[["y"]],["x"]],"passed":true},{"actual":[[["i2"],["i1"],["i3"]],["i0"]],"check":"generated mix 9","expected":[[["i2"],["i1"],["i3"]],["i0"]],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"first fit not best fit\", \"actual\": [[[\"a\", \"c\"], [\"b\"]], []], \"expected\": [[[\"a\", \"c\"], [\"b\"]], []], \"passed\": true}, {\"check\": \"generated mix 7\", \"actual\": [[[\"i1\"], [\"i3\"], [\"i2\", \"i5\"], [\"i4\", \"i0\"]], []], \"expected\": [[[\"i1\"], [\"i3\"], [\"i2\", \"i5\"], [\"i4\", \"i0\"]], []], \"passed\": true}, {\"check\": \"exact fill\", \"actual\": [[[\"a\", \"b\"]], []], \"expected\": [[[\"a\", \"b\"]], []], \"passed\": true}, {\"check\": \"heavy after fragile\", \"actual\": [[[\"f\"], [\"h\"]], []], \"expected\": [[[\"f\"], [\"h\"]], []], \"passed\": true}, {\"check\": \"weight limit splits\", \"actual\": [[[\"a\"], [\"b\"]], []], \"expected\": [[[\"a\"], [\"b\"]], []], \"passed\": true}, {\"check\": \"fragile vs heavy\", \"actual\": [[[\"h\"], [\"f\"]], []], \"expected\": [[[\"h\"], [\"f\"]], []], \"passed\": true}, {\"check\": \"oversize weight\", \"actual\": [[[\"y\"]], [\"x\"]], \"expected\": [[[\"y\"]], [\"x\"]], \"passed\": true}, {\"check\": \"generated mix 9\", \"actual\": [[[\"i2\"], [\"i1\"], [\"i3\"]], [\"i0\"]], \"expected\": [[[\"i2\"], [\"i1\"], [\"i3\"]], [\"i0\"]], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}