FA-94976 / Warehouse slotting and bin packing / Open access
Carton selection: SIOC item overboxed · case 01
An item flagged ships-in-own-container is placed into an overbox.
ROOT CAUSE
The SIOC flag is never consulted before carton search.
VERIFIED REPAIR
Return SIOC for flagged items before any carton search.
Unsuccessful approach: Reporting NO_FIT for SIOC items sends them to exception handling instead of direct labelling.
Case contract
Item dims [a,b,c], weight kg, sioc flag (ships in own container). cartons [[id, L, W, H, max_kg, cost]]. SIOC items return "SIOC". Otherwise add 1 unit of dunnage per side (2 per dimension); the item fits a carton if the sorted padded dims are each <= the sorted inner dims (any orientation) and kg <= max_kg. Choose the smallest inner volume, then cost, then id. None -> "NO_FIT".
Why this case matters
Cartonization picks the shipping box, which drives material cost and dimensional weight.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(dims, kg, sioc, cartons):
need = sorted(d + 2 for d in dims)
best = None
for cid, L, W, H, max_kg, cost in cartons:
inner = sorted([L, W, H])
if any(n > c for n, c in zip(need, inner)):
continue
if kg > max_kg:
continue
key = (L * W * H, cost, cid)
if best is None or key < best[0]:
best = (key, cid)
return best[1] if best else 'NO_FIT'
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['sioc', [[3, 3, 3], 1, True, [['S', 12, 10, 6, 10, 50], ['M', 16, 12, 10, 20, 70], ['L', 24, 18, 14, 30, 95]]], 'SIOC'], ['generated mix 3', [[5, 7, 14], 10, True, [['C0', 12, 20, 4, 30, 90], ['C1', 32, 20, 20, 5, 90]]], 'SIOC'], ['rotated fit', [[4, 10, 8], 3, False, [['S', 12, 10, 6, 10, 50], ['M', 16, 12, 10, 20, 70], ['L', 24, 18, 14, 30, 95]]], 'S'], ['weight at limit', [[3, 3, 3], 10, False, [['S', 12, 10, 6, 10, 50], ['M', 16, 12, 10, 20, 70], ['L', 24, 18, 14, 30, 95]]], 'S'], ['no fit', [[40, 3, 3], 1, False, [['S', 12, 10, 6, 10, 50], ['M', 16, 12, 10, 20, 70], ['L', 24, 18, 14, 30, 95]]], 'NO_FIT'], ['cheap but bulky', [[3, 3, 3], 1, False, [['BIG', 30, 30, 30, 30, 40], ['SMALL', 10, 10, 10, 30, 60]]], 'SMALL'], ['padding pushes to M', [[11, 3, 3], 3, False, [['S', 12, 10, 6, 10, 50], ['M', 16, 12, 10, 20, 70], ['L', 24, 18, 14, 30, 95]]], 'M'], ['generated mix 6', [[13, 6, 9], 19, False, [['C0', 16, 6, 30, 5, 55], ['C1', 6, 12, 6, 5, 70], ['C2', 6, 8, 12, 20, 90], ['C3', 10, 20, 6, 20, 70], ['C4', 24, 8, 30, 10, 70]]], 'NO_FIT']], [['generated mix 71', [[6, 6, 6], 19, True, [['C0', 24, 8, 8, 20, 40], ['C1', 10, 6, 8, 10, 70]]], 'SIOC'], ['generated mix 60', [[14, 7, 8], 20, True, [['C0', 20, 8, 20, 30, 55], ['C1', 24, 6, 6, 20, 40], ['C2', 12, 6, 12, 30, 70], ['C3', 32, 8, 20, 10, 40]]], 'SIOC'], ['weight over limit', [[3, 3, 3], 10.5, False, [['S', 12, 10, 6, 10, 50], ['M', 16, 12, 10, 20, 70], ['L', 24, 18, 14, 30, 95]]], 'M'], ['no fit', [[40, 3, 3], 1, False, [['S', 12, 10, 6, 10, 50], ['M', 16, 12, 10, 20, 70], ['L', 24, 18, 14, 30, 95]]], 'NO_FIT'], ['cheap but bulky', [[3, 3, 3], 1, False, [['BIG', 30, 30, 30, 30, 40], ['SMALL', 10, 10, 10, 30, 60]]], 'SMALL'], ['rotated fit', [[4, 10, 8], 3, False, [['S', 12, 10, 6, 10, 50], ['M', 16, 12, 10, 20, 70], ['L', 24, 18, 14, 30, 95]]], 'S'], ['generated mix 7', [[7, 9, 14], 5, True, [['C0', 16, 16, 4, 20, 55], ['C1', 20, 16, 8, 10, 70], ['C2', 24, 6, 4, 5, 40], ['C3', 10, 8, 30, 10, 90], ['C4', 20, 8, 30, 5, 90], ['C5', 24, 12, 12, 10, 90]]], 'SIOC'], ['generated mix 15', [[2, 8, 6], 1, False, [['C0', 32, 12, 4, 5, 40], ['C1', 16, 12, 6, 5, 55], ['C2', 16, 12, 20, 20, 40]]], 'C1']], [['generated mix 37', [[2, 4, 13], 1, True, [['C0', 32, 12, 6, 30, 55], ['C1', 16, 6, 30, 30, 70], ['C2', 6, 8, 6, 5, 55], ['C3', 32, 16, 30, 10, 40], ['C4', 16, 16, 12, 30, 70], ['C5', 16, 8, 6, 10, 90]]], 'SIOC'], ['generated mix 7', [[7, 9, 14], 5, True, [['C0', 16, 16, 4, 20, 55], ['C1', 20, 16, 8, 10, 70], ['C2', 24, 6, 4, 5, 40], ['C3', 10, 8, 30, 10, 90], ['C4', 20, 8, 30, 5, 90], ['C5', 24, 12, 12, 10, 90]]], 'SIOC'], ['volume tie by cost', [[3, 3, 3], 1, False, [['A', 10, 10, 10, 9, 60], ['B', 20, 10, 5, 9, 55]]], 'B'], ['long thin carton', [[3, 3, 3], 1, False, [['LONG', 40, 6, 6, 30, 50], ['CUBE', 12, 12, 12, 30, 60]]], 'LONG'], ['padding pushes to M', [[11, 3, 3], 3, False, [['S', 12, 10, 6, 10, 50], ['M', 16, 12, 10, 20, 70], ['L', 24, 18, 14, 30, 95]]], 'M'], ['weight over limit', [[3, 3, 3], 10.5, False, [['S', 12, 10, 6, 10, 50], ['M', 16, 12, 10, 20, 70], ['L', 24, 18, 14, 30, 95]]], 'M'], ['generated mix 19', [[11, 3, 5], 1, False, [['C0', 6, 20, 4, 20, 90], ['C1', 20, 20, 6, 5, 40], ['C2', 32, 6, 4, 20, 55], ['C3', 12, 8, 30, 20, 90], ['C4', 32, 20, 8, 10, 55], ['C5', 20, 6, 12, 20, 40]]], 'C5'], ['generated mix 27', [[10, 11, 6], 10, False, [['C0', 20, 20, 8, 30, 90], ['C1', 24, 20, 20, 5, 90], ['C2', 32, 16, 4, 5, 55], ['C3', 10, 16, 30, 5, 55], ['C4', 10, 6, 4, 10, 90], ['C5', 16, 20, 30, 5, 70]]], 'C0']], [['generated mix 9', [[6, 3, 6], 9.5, True, [['C0', 20, 16, 30, 10, 55], ['C1', 24, 8, 6, 10, 90], ['C2', 20, 16, 8, 20, 90], ['C3', 16, 6, 30, 10, 90], ['C4', 24, 20, 30, 20, 55], ['C5', 6, 6, 6, 5, 55]]], 'SIOC'], ['generated mix 71', [[6, 6, 6], 19, True, [['C0', 24, 8, 8, 20, 40], ['C1', 10, 6, 8, 10, 70]]], 'SIOC'], ['rotated fit', [[4, 10, 8], 3, False, [['S', 12, 10, 6, 10, 50], ['M', 16, 12, 10, 20, 70], ['L', 24, 18, 14, 30, 95]]], 'S'], ['weight at limit', [[3, 3, 3], 10, False, [['S', 12, 10, 6, 10, 50], ['M', 16, 12, 10, 20, 70], ['L', 24, 18, 14, 30, 95]]], 'S'], ['sioc', [[3, 3, 3], 1, True, [['S', 12, 10, 6, 10, 50], ['M', 16, 12, 10, 20, 70], ['L', 24, 18, 14, 30, 95]]], 'SIOC'], ['volume tie by cost', [[3, 3, 3], 1, False, [['A', 10, 10, 10, 9, 60], ['B', 20, 10, 5, 9, 55]]], 'B'], ['generated mix 30', [[14, 13, 10], 1, False, [['C0', 16, 8, 8, 10, 55], ['C1', 20, 20, 20, 5, 55], ['C2', 32, 20, 20, 20, 40], ['C3', 24, 20, 4, 20, 40], ['C4', 16, 12, 4, 20, 55]]], 'C1'], ['generated mix 38', [[8, 8, 5], 10, False, [['C0', 24, 16, 4, 5, 70], ['C1', 20, 16, 12, 20, 70]]], 'C1']], [['generated mix 3', [[5, 7, 14], 10, True, [['C0', 12, 20, 4, 30, 90], ['C1', 32, 20, 20, 5, 90]]], 'SIOC'], ['generated mix 9', [[6, 3, 6], 9.5, True, [['C0', 20, 16, 30, 10, 55], ['C1', 24, 8, 6, 10, 90], ['C2', 20, 16, 8, 20, 90], ['C3', 16, 6, 30, 10, 90], ['C4', 24, 20, 30, 20, 55], ['C5', 6, 6, 6, 5, 55]]], 'SIOC'], ['weight over limit', [[3, 3, 3], 10.5, False, [['S', 12, 10, 6, 10, 50], ['M', 16, 12, 10, 20, 70], ['L', 24, 18, 14, 30, 95]]], 'M'], ['no fit', [[40, 3, 3], 1, False, [['S', 12, 10, 6, 10, 50], ['M', 16, 12, 10, 20, 70], ['L', 24, 18, 14, 30, 95]]], 'NO_FIT'], ['cheap but bulky', [[3, 3, 3], 1, False, [['BIG', 30, 30, 30, 30, 40], ['SMALL', 10, 10, 10, 30, 60]]], 'SMALL'], ['rotated fit', [[4, 10, 8], 3, False, [['S', 12, 10, 6, 10, 50], ['M', 16, 12, 10, 20, 70], ['L', 24, 18, 14, 30, 95]]], 'S'], ['generated mix 42', [[9, 13, 6], 4.5, False, [['C0', 6, 12, 12, 5, 90], ['C1', 24, 6, 6, 5, 70]]], 'NO_FIT'], ['generated mix 50', [[4, 4, 13], 20, False, [['C0', 12, 8, 12, 10, 70], ['C1', 20, 20, 6, 30, 90], ['C2', 32, 12, 12, 5, 70], ['C3', 32, 8, 30, 5, 70], ['C4', 24, 16, 20, 20, 90], ['C5', 12, 12, 6, 5, 40]]], 'C1']]]
for label, args, expected in fixtures[N-1]:
check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| sioc | S | SIOC | Failed |
| generated mix 3 | NO_FIT | SIOC | Failed |
| rotated fit | S | S | Passed |
| weight at limit | S | S | Passed |
| no fit | NO_FIT | NO_FIT | Passed |
| cheap but bulky | SMALL | SMALL | Passed |
| padding pushes to M | M | M | Passed |
| generated mix 6 | NO_FIT | NO_FIT | Passed |
SHA-256 / 07eb230e138f70f61fd19b8588e14d23937aa10bdd10e35ac50cd59fddb9b5d4
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(dims, kg, sioc, cartons):
if sioc:
return 'NO_FIT'
need = sorted(d + 2 for d in dims)
best = None
for cid, L, W, H, max_kg, cost in cartons:
inner = sorted([L, W, H])
if any(n > c for n, c in zip(need, inner)):
continue
if kg > max_kg:
continue
key = (L * W * H, cost, cid)
if best is None or key < best[0]:
best = (key, cid)
return best[1] if best else 'NO_FIT'
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['sioc', [[3, 3, 3], 1, True, [['S', 12, 10, 6, 10, 50], ['M', 16, 12, 10, 20, 70], ['L', 24, 18, 14, 30, 95]]], 'SIOC'], ['generated mix 3', [[5, 7, 14], 10, True, [['C0', 12, 20, 4, 30, 90], ['C1', 32, 20, 20, 5, 90]]], 'SIOC'], ['rotated fit', [[4, 10, 8], 3, False, [['S', 12, 10, 6, 10, 50], ['M', 16, 12, 10, 20, 70], ['L', 24, 18, 14, 30, 95]]], 'S'], ['weight at limit', [[3, 3, 3], 10, False, [['S', 12, 10, 6, 10, 50], ['M', 16, 12, 10, 20, 70], ['L', 24, 18, 14, 30, 95]]], 'S'], ['no fit', [[40, 3, 3], 1, False, [['S', 12, 10, 6, 10, 50], ['M', 16, 12, 10, 20, 70], ['L', 24, 18, 14, 30, 95]]], 'NO_FIT'], ['cheap but bulky', [[3, 3, 3], 1, False, [['BIG', 30, 30, 30, 30, 40], ['SMALL', 10, 10, 10, 30, 60]]], 'SMALL'], ['padding pushes to M', [[11, 3, 3], 3, False, [['S', 12, 10, 6, 10, 50], ['M', 16, 12, 10, 20, 70], ['L', 24, 18, 14, 30, 95]]], 'M'], ['generated mix 6', [[13, 6, 9], 19, False, [['C0', 16, 6, 30, 5, 55], ['C1', 6, 12, 6, 5, 70], ['C2', 6, 8, 12, 20, 90], ['C3', 10, 20, 6, 20, 70], ['C4', 24, 8, 30, 10, 70]]], 'NO_FIT']], [['generated mix 71', [[6, 6, 6], 19, True, [['C0', 24, 8, 8, 20, 40], ['C1', 10, 6, 8, 10, 70]]], 'SIOC'], ['generated mix 60', [[14, 7, 8], 20, True, [['C0', 20, 8, 20, 30, 55], ['C1', 24, 6, 6, 20, 40], ['C2', 12, 6, 12, 30, 70], ['C3', 32, 8, 20, 10, 40]]], 'SIOC'], ['weight over limit', [[3, 3, 3], 10.5, False, [['S', 12, 10, 6, 10, 50], ['M', 16, 12, 10, 20, 70], ['L', 24, 18, 14, 30, 95]]], 'M'], ['no fit', [[40, 3, 3], 1, False, [['S', 12, 10, 6, 10, 50], ['M', 16, 12, 10, 20, 70], ['L', 24, 18, 14, 30, 95]]], 'NO_FIT'], ['cheap but bulky', [[3, 3, 3], 1, False, [['BIG', 30, 30, 30, 30, 40], ['SMALL', 10, 10, 10, 30, 60]]], 'SMALL'], ['rotated fit', [[4, 10, 8], 3, False, [['S', 12, 10, 6, 10, 50], ['M', 16, 12, 10, 20, 70], ['L', 24, 18, 14, 30, 95]]], 'S'], ['generated mix 7', [[7, 9, 14], 5, True, [['C0', 16, 16, 4, 20, 55], ['C1', 20, 16, 8, 10, 70], ['C2', 24, 6, 4, 5, 40], ['C3', 10, 8, 30, 10, 90], ['C4', 20, 8, 30, 5, 90], ['C5', 24, 12, 12, 10, 90]]], 'SIOC'], ['generated mix 15', [[2, 8, 6], 1, False, [['C0', 32, 12, 4, 5, 40], ['C1', 16, 12, 6, 5, 55], ['C2', 16, 12, 20, 20, 40]]], 'C1']], [['generated mix 37', [[2, 4, 13], 1, True, [['C0', 32, 12, 6, 30, 55], ['C1', 16, 6, 30, 30, 70], ['C2', 6, 8, 6, 5, 55], ['C3', 32, 16, 30, 10, 40], ['C4', 16, 16, 12, 30, 70], ['C5', 16, 8, 6, 10, 90]]], 'SIOC'], ['generated mix 7', [[7, 9, 14], 5, True, [['C0', 16, 16, 4, 20, 55], ['C1', 20, 16, 8, 10, 70], ['C2', 24, 6, 4, 5, 40], ['C3', 10, 8, 30, 10, 90], ['C4', 20, 8, 30, 5, 90], ['C5', 24, 12, 12, 10, 90]]], 'SIOC'], ['volume tie by cost', [[3, 3, 3], 1, False, [['A', 10, 10, 10, 9, 60], ['B', 20, 10, 5, 9, 55]]], 'B'], ['long thin carton', [[3, 3, 3], 1, False, [['LONG', 40, 6, 6, 30, 50], ['CUBE', 12, 12, 12, 30, 60]]], 'LONG'], ['padding pushes to M', [[11, 3, 3], 3, False, [['S', 12, 10, 6, 10, 50], ['M', 16, 12, 10, 20, 70], ['L', 24, 18, 14, 30, 95]]], 'M'], ['weight over limit', [[3, 3, 3], 10.5, False, [['S', 12, 10, 6, 10, 50], ['M', 16, 12, 10, 20, 70], ['L', 24, 18, 14, 30, 95]]], 'M'], ['generated mix 19', [[11, 3, 5], 1, False, [['C0', 6, 20, 4, 20, 90], ['C1', 20, 20, 6, 5, 40], ['C2', 32, 6, 4, 20, 55], ['C3', 12, 8, 30, 20, 90], ['C4', 32, 20, 8, 10, 55], ['C5', 20, 6, 12, 20, 40]]], 'C5'], ['generated mix 27', [[10, 11, 6], 10, False, [['C0', 20, 20, 8, 30, 90], ['C1', 24, 20, 20, 5, 90], ['C2', 32, 16, 4, 5, 55], ['C3', 10, 16, 30, 5, 55], ['C4', 10, 6, 4, 10, 90], ['C5', 16, 20, 30, 5, 70]]], 'C0']], [['generated mix 9', [[6, 3, 6], 9.5, True, [['C0', 20, 16, 30, 10, 55], ['C1', 24, 8, 6, 10, 90], ['C2', 20, 16, 8, 20, 90], ['C3', 16, 6, 30, 10, 90], ['C4', 24, 20, 30, 20, 55], ['C5', 6, 6, 6, 5, 55]]], 'SIOC'], ['generated mix 71', [[6, 6, 6], 19, True, [['C0', 24, 8, 8, 20, 40], ['C1', 10, 6, 8, 10, 70]]], 'SIOC'], ['rotated fit', [[4, 10, 8], 3, False, [['S', 12, 10, 6, 10, 50], ['M', 16, 12, 10, 20, 70], ['L', 24, 18, 14, 30, 95]]], 'S'], ['weight at limit', [[3, 3, 3], 10, False, [['S', 12, 10, 6, 10, 50], ['M', 16, 12, 10, 20, 70], ['L', 24, 18, 14, 30, 95]]], 'S'], ['sioc', [[3, 3, 3], 1, True, [['S', 12, 10, 6, 10, 50], ['M', 16, 12, 10, 20, 70], ['L', 24, 18, 14, 30, 95]]], 'SIOC'], ['volume tie by cost', [[3, 3, 3], 1, False, [['A', 10, 10, 10, 9, 60], ['B', 20, 10, 5, 9, 55]]], 'B'], ['generated mix 30', [[14, 13, 10], 1, False, [['C0', 16, 8, 8, 10, 55], ['C1', 20, 20, 20, 5, 55], ['C2', 32, 20, 20, 20, 40], ['C3', 24, 20, 4, 20, 40], ['C4', 16, 12, 4, 20, 55]]], 'C1'], ['generated mix 38', [[8, 8, 5], 10, False, [['C0', 24, 16, 4, 5, 70], ['C1', 20, 16, 12, 20, 70]]], 'C1']], [['generated mix 3', [[5, 7, 14], 10, True, [['C0', 12, 20, 4, 30, 90], ['C1', 32, 20, 20, 5, 90]]], 'SIOC'], ['generated mix 9', [[6, 3, 6], 9.5, True, [['C0', 20, 16, 30, 10, 55], ['C1', 24, 8, 6, 10, 90], ['C2', 20, 16, 8, 20, 90], ['C3', 16, 6, 30, 10, 90], ['C4', 24, 20, 30, 20, 55], ['C5', 6, 6, 6, 5, 55]]], 'SIOC'], ['weight over limit', [[3, 3, 3], 10.5, False, [['S', 12, 10, 6, 10, 50], ['M', 16, 12, 10, 20, 70], ['L', 24, 18, 14, 30, 95]]], 'M'], ['no fit', [[40, 3, 3], 1, False, [['S', 12, 10, 6, 10, 50], ['M', 16, 12, 10, 20, 70], ['L', 24, 18, 14, 30, 95]]], 'NO_FIT'], ['cheap but bulky', [[3, 3, 3], 1, False, [['BIG', 30, 30, 30, 30, 40], ['SMALL', 10, 10, 10, 30, 60]]], 'SMALL'], ['rotated fit', [[4, 10, 8], 3, False, [['S', 12, 10, 6, 10, 50], ['M', 16, 12, 10, 20, 70], ['L', 24, 18, 14, 30, 95]]], 'S'], ['generated mix 42', [[9, 13, 6], 4.5, False, [['C0', 6, 12, 12, 5, 90], ['C1', 24, 6, 6, 5, 70]]], 'NO_FIT'], ['generated mix 50', [[4, 4, 13], 20, False, [['C0', 12, 8, 12, 10, 70], ['C1', 20, 20, 6, 30, 90], ['C2', 32, 12, 12, 5, 70], ['C3', 32, 8, 30, 5, 70], ['C4', 24, 16, 20, 20, 90], ['C5', 12, 12, 6, 5, 40]]], 'C1']]]
for label, args, expected in fixtures[N-1]:
check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| sioc | NO_FIT | SIOC | Failed |
| generated mix 3 | NO_FIT | SIOC | Failed |
| rotated fit | S | S | Passed |
| weight at limit | S | S | Passed |
| no fit | NO_FIT | NO_FIT | Passed |
| cheap but bulky | SMALL | SMALL | Passed |
| padding pushes to M | M | M | Passed |
| generated mix 6 | NO_FIT | NO_FIT | Passed |
SHA-256 / 1c073a5b214225c361ddc4a2eaaee5f9c68b950430faaa2e9e57cb4b65708fe6
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(dims, kg, sioc, cartons):
if sioc:
return 'SIOC'
need = sorted(d + 2 for d in dims)
best = None
for cid, L, W, H, max_kg, cost in cartons:
inner = sorted([L, W, H])
if any(n > c for n, c in zip(need, inner)):
continue
if kg > max_kg:
continue
key = (L * W * H, cost, cid)
if best is None or key < best[0]:
best = (key, cid)
return best[1] if best else 'NO_FIT'
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['sioc', [[3, 3, 3], 1, True, [['S', 12, 10, 6, 10, 50], ['M', 16, 12, 10, 20, 70], ['L', 24, 18, 14, 30, 95]]], 'SIOC'], ['generated mix 3', [[5, 7, 14], 10, True, [['C0', 12, 20, 4, 30, 90], ['C1', 32, 20, 20, 5, 90]]], 'SIOC'], ['rotated fit', [[4, 10, 8], 3, False, [['S', 12, 10, 6, 10, 50], ['M', 16, 12, 10, 20, 70], ['L', 24, 18, 14, 30, 95]]], 'S'], ['weight at limit', [[3, 3, 3], 10, False, [['S', 12, 10, 6, 10, 50], ['M', 16, 12, 10, 20, 70], ['L', 24, 18, 14, 30, 95]]], 'S'], ['no fit', [[40, 3, 3], 1, False, [['S', 12, 10, 6, 10, 50], ['M', 16, 12, 10, 20, 70], ['L', 24, 18, 14, 30, 95]]], 'NO_FIT'], ['cheap but bulky', [[3, 3, 3], 1, False, [['BIG', 30, 30, 30, 30, 40], ['SMALL', 10, 10, 10, 30, 60]]], 'SMALL'], ['padding pushes to M', [[11, 3, 3], 3, False, [['S', 12, 10, 6, 10, 50], ['M', 16, 12, 10, 20, 70], ['L', 24, 18, 14, 30, 95]]], 'M'], ['generated mix 6', [[13, 6, 9], 19, False, [['C0', 16, 6, 30, 5, 55], ['C1', 6, 12, 6, 5, 70], ['C2', 6, 8, 12, 20, 90], ['C3', 10, 20, 6, 20, 70], ['C4', 24, 8, 30, 10, 70]]], 'NO_FIT']], [['generated mix 71', [[6, 6, 6], 19, True, [['C0', 24, 8, 8, 20, 40], ['C1', 10, 6, 8, 10, 70]]], 'SIOC'], ['generated mix 60', [[14, 7, 8], 20, True, [['C0', 20, 8, 20, 30, 55], ['C1', 24, 6, 6, 20, 40], ['C2', 12, 6, 12, 30, 70], ['C3', 32, 8, 20, 10, 40]]], 'SIOC'], ['weight over limit', [[3, 3, 3], 10.5, False, [['S', 12, 10, 6, 10, 50], ['M', 16, 12, 10, 20, 70], ['L', 24, 18, 14, 30, 95]]], 'M'], ['no fit', [[40, 3, 3], 1, False, [['S', 12, 10, 6, 10, 50], ['M', 16, 12, 10, 20, 70], ['L', 24, 18, 14, 30, 95]]], 'NO_FIT'], ['cheap but bulky', [[3, 3, 3], 1, False, [['BIG', 30, 30, 30, 30, 40], ['SMALL', 10, 10, 10, 30, 60]]], 'SMALL'], ['rotated fit', [[4, 10, 8], 3, False, [['S', 12, 10, 6, 10, 50], ['M', 16, 12, 10, 20, 70], ['L', 24, 18, 14, 30, 95]]], 'S'], ['generated mix 7', [[7, 9, 14], 5, True, [['C0', 16, 16, 4, 20, 55], ['C1', 20, 16, 8, 10, 70], ['C2', 24, 6, 4, 5, 40], ['C3', 10, 8, 30, 10, 90], ['C4', 20, 8, 30, 5, 90], ['C5', 24, 12, 12, 10, 90]]], 'SIOC'], ['generated mix 15', [[2, 8, 6], 1, False, [['C0', 32, 12, 4, 5, 40], ['C1', 16, 12, 6, 5, 55], ['C2', 16, 12, 20, 20, 40]]], 'C1']], [['generated mix 37', [[2, 4, 13], 1, True, [['C0', 32, 12, 6, 30, 55], ['C1', 16, 6, 30, 30, 70], ['C2', 6, 8, 6, 5, 55], ['C3', 32, 16, 30, 10, 40], ['C4', 16, 16, 12, 30, 70], ['C5', 16, 8, 6, 10, 90]]], 'SIOC'], ['generated mix 7', [[7, 9, 14], 5, True, [['C0', 16, 16, 4, 20, 55], ['C1', 20, 16, 8, 10, 70], ['C2', 24, 6, 4, 5, 40], ['C3', 10, 8, 30, 10, 90], ['C4', 20, 8, 30, 5, 90], ['C5', 24, 12, 12, 10, 90]]], 'SIOC'], ['volume tie by cost', [[3, 3, 3], 1, False, [['A', 10, 10, 10, 9, 60], ['B', 20, 10, 5, 9, 55]]], 'B'], ['long thin carton', [[3, 3, 3], 1, False, [['LONG', 40, 6, 6, 30, 50], ['CUBE', 12, 12, 12, 30, 60]]], 'LONG'], ['padding pushes to M', [[11, 3, 3], 3, False, [['S', 12, 10, 6, 10, 50], ['M', 16, 12, 10, 20, 70], ['L', 24, 18, 14, 30, 95]]], 'M'], ['weight over limit', [[3, 3, 3], 10.5, False, [['S', 12, 10, 6, 10, 50], ['M', 16, 12, 10, 20, 70], ['L', 24, 18, 14, 30, 95]]], 'M'], ['generated mix 19', [[11, 3, 5], 1, False, [['C0', 6, 20, 4, 20, 90], ['C1', 20, 20, 6, 5, 40], ['C2', 32, 6, 4, 20, 55], ['C3', 12, 8, 30, 20, 90], ['C4', 32, 20, 8, 10, 55], ['C5', 20, 6, 12, 20, 40]]], 'C5'], ['generated mix 27', [[10, 11, 6], 10, False, [['C0', 20, 20, 8, 30, 90], ['C1', 24, 20, 20, 5, 90], ['C2', 32, 16, 4, 5, 55], ['C3', 10, 16, 30, 5, 55], ['C4', 10, 6, 4, 10, 90], ['C5', 16, 20, 30, 5, 70]]], 'C0']], [['generated mix 9', [[6, 3, 6], 9.5, True, [['C0', 20, 16, 30, 10, 55], ['C1', 24, 8, 6, 10, 90], ['C2', 20, 16, 8, 20, 90], ['C3', 16, 6, 30, 10, 90], ['C4', 24, 20, 30, 20, 55], ['C5', 6, 6, 6, 5, 55]]], 'SIOC'], ['generated mix 71', [[6, 6, 6], 19, True, [['C0', 24, 8, 8, 20, 40], ['C1', 10, 6, 8, 10, 70]]], 'SIOC'], ['rotated fit', [[4, 10, 8], 3, False, [['S', 12, 10, 6, 10, 50], ['M', 16, 12, 10, 20, 70], ['L', 24, 18, 14, 30, 95]]], 'S'], ['weight at limit', [[3, 3, 3], 10, False, [['S', 12, 10, 6, 10, 50], ['M', 16, 12, 10, 20, 70], ['L', 24, 18, 14, 30, 95]]], 'S'], ['sioc', [[3, 3, 3], 1, True, [['S', 12, 10, 6, 10, 50], ['M', 16, 12, 10, 20, 70], ['L', 24, 18, 14, 30, 95]]], 'SIOC'], ['volume tie by cost', [[3, 3, 3], 1, False, [['A', 10, 10, 10, 9, 60], ['B', 20, 10, 5, 9, 55]]], 'B'], ['generated mix 30', [[14, 13, 10], 1, False, [['C0', 16, 8, 8, 10, 55], ['C1', 20, 20, 20, 5, 55], ['C2', 32, 20, 20, 20, 40], ['C3', 24, 20, 4, 20, 40], ['C4', 16, 12, 4, 20, 55]]], 'C1'], ['generated mix 38', [[8, 8, 5], 10, False, [['C0', 24, 16, 4, 5, 70], ['C1', 20, 16, 12, 20, 70]]], 'C1']], [['generated mix 3', [[5, 7, 14], 10, True, [['C0', 12, 20, 4, 30, 90], ['C1', 32, 20, 20, 5, 90]]], 'SIOC'], ['generated mix 9', [[6, 3, 6], 9.5, True, [['C0', 20, 16, 30, 10, 55], ['C1', 24, 8, 6, 10, 90], ['C2', 20, 16, 8, 20, 90], ['C3', 16, 6, 30, 10, 90], ['C4', 24, 20, 30, 20, 55], ['C5', 6, 6, 6, 5, 55]]], 'SIOC'], ['weight over limit', [[3, 3, 3], 10.5, False, [['S', 12, 10, 6, 10, 50], ['M', 16, 12, 10, 20, 70], ['L', 24, 18, 14, 30, 95]]], 'M'], ['no fit', [[40, 3, 3], 1, False, [['S', 12, 10, 6, 10, 50], ['M', 16, 12, 10, 20, 70], ['L', 24, 18, 14, 30, 95]]], 'NO_FIT'], ['cheap but bulky', [[3, 3, 3], 1, False, [['BIG', 30, 30, 30, 30, 40], ['SMALL', 10, 10, 10, 30, 60]]], 'SMALL'], ['rotated fit', [[4, 10, 8], 3, False, [['S', 12, 10, 6, 10, 50], ['M', 16, 12, 10, 20, 70], ['L', 24, 18, 14, 30, 95]]], 'S'], ['generated mix 42', [[9, 13, 6], 4.5, False, [['C0', 6, 12, 12, 5, 90], ['C1', 24, 6, 6, 5, 70]]], 'NO_FIT'], ['generated mix 50', [[4, 4, 13], 20, False, [['C0', 12, 8, 12, 10, 70], ['C1', 20, 20, 6, 30, 90], ['C2', 32, 12, 12, 5, 70], ['C3', 32, 8, 30, 5, 70], ['C4', 24, 16, 20, 20, 90], ['C5', 12, 12, 6, 5, 40]]], 'C1']]]
for label, args, expected in fixtures[N-1]:
check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| sioc | SIOC | SIOC | Passed |
| generated mix 3 | SIOC | SIOC | Passed |
| rotated fit | S | S | Passed |
| weight at limit | S | S | Passed |
| no fit | NO_FIT | NO_FIT | Passed |
| cheap but bulky | SMALL | SMALL | Passed |
| padding pushes to M | M | M | Passed |
| generated mix 6 | NO_FIT | NO_FIT | Passed |
SHA-256 / 237d10be7241c9133b6f2be2fdb6538350ccf1f2106fd234b011b33cec325438
Verification & scope
Stipulated fit rule with uniform dunnage; no void-fill or multi-item cartonization. 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.
Observations recorded using Python 3.12.14 at 2026-09-29T14:52:09.435835+00:00.
Case digest / 83e4dfbc88b76bd9beada49b7e752520637d42d70ff935f20172396ec9829a4d