FA-95076 / Warehouse slotting and bin packing / Open access
Slot fit: this-side-up units laid down · case 01
Units marked upright-only are counted in lying-down orientations.
ROOT CAUSE
The upright branch enumerates all six axis permutations.
THE FAILURE
The upright branch enumerates all six axis permutations.
Unsuccessful approach: Allowing no rotation at all misses the legal quarter turn in the horizontal plane.
Case contract
slot [width, depth, height], unit [w, d, h]. Upright units may only rotate in the horizontal plane; others may take any of the 6 axis orientations. Vertical layers = height // unit height, capped at max_stack when max_stack > 0 (0 = unlimited). Units = best over orientations of (W//a)*(D//b)*layers. Utilization in basis points = floor(units*unit volume*10000/slot volume).
Why this case matters
Slot sizing converts product cube into units per location for slotting and replenishment.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
import itertools
N = 1
observations = []
def solve(slot, unit, max_stack, upright):
SW, SD, SH = slot
uw, ud, uh = unit
if upright:
orients = sorted(set(itertools.permutations(unit)))
else:
orients = sorted(set(itertools.permutations(unit)))
best = 0
for a, b, c in orients:
layers = SH // c
if max_stack:
layers = min(layers, max_stack)
best = max(best, (SW // a) * (SD // b) * layers)
bp = best * uw * ud * uh * 10000 // (SW * SD * SH)
return [best, bp]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['upright blocked', [[40, 40, 12], [10, 10, 20], 0, True], [0, 0]], ['generated mix 10', [[48, 60, 45], [25, 20, 10], 0, True], [16, 6172]], ['upright plane rotation', [[48, 40, 30], [12, 10, 10], 0, True], [48, 10000]], ['laydown helps', [[40, 40, 12], [10, 10, 20], 0, False], [8, 8333]], ['fraction bp', [[100, 30, 45], [25, 15, 7], 0, True], [48, 9333]], ['stack cap', [[48, 40, 30], [12, 10, 10], 2, True], [32, 6666]], ['unlimited zero', [[20, 20, 40], [10, 10, 10], 0, True], [16, 10000]], ['generated mix 8', [[60, 48, 60], [25, 10, 12], 5, False], [48, 8333]]], [['generated mix 22', [[100, 48, 45], [25, 10, 4], 0, True], [176, 8148]], ['generated mix 63', [[100, 40, 45], [10, 15, 7], 0, True], [144, 8400]], ['upright blocked', [[40, 40, 12], [10, 10, 20], 0, True], [0, 0]], ['fraction bp', [[100, 30, 45], [25, 15, 7], 0, True], [48, 9333]], ['stack cap', [[48, 40, 30], [12, 10, 10], 2, True], [32, 6666]], ['generated mix 9', [[48, 30, 60], [25, 10, 4], 3, False], [72, 8333]], ['generated mix 17', [[100, 60, 45], [10, 6, 35], 2, False], [100, 7777]], ['generated mix 26', [[40, 40, 45], [5, 6, 35], 0, False], [56, 8166]]], [['generated mix 39', [[60, 30, 20], [12, 6, 7], 3, True], [50, 7000]], ['generated mix 29', [[100, 48, 20], [8, 20, 12], 1, True], [30, 6000]], ['upright plane rotation', [[48, 40, 30], [12, 10, 10], 0, True], [48, 10000]], ['laydown helps', [[40, 40, 12], [10, 10, 20], 0, False], [8, 8333]], ['unlimited zero', [[20, 20, 40], [10, 10, 10], 0, True], [16, 10000]], ['generated mix 20', [[48, 60, 60], [25, 10, 4], 3, True], [24, 1388]], ['generated mix 28', [[48, 40, 20], [25, 15, 35], 3, True], [0, 0]], ['generated mix 37', [[40, 48, 20], [8, 6, 7], 1, False], [40, 3500]]], [['generated mix 72', [[60, 48, 45], [12, 6, 10], 2, True], [80, 4444]], ['generated mix 7', [[48, 40, 60], [12, 15, 12], 5, True], [45, 8437]], ['upright blocked', [[40, 40, 12], [10, 10, 20], 0, True], [0, 0]], ['fraction bp', [[100, 30, 45], [25, 15, 7], 0, True], [48, 9333]], ['stack cap', [[48, 40, 30], [12, 10, 10], 2, True], [32, 6666]], ['generated mix 32', [[60, 30, 45], [8, 20, 4], 3, True], [27, 2133]], ['generated mix 40', [[40, 40, 30], [5, 6, 12], 2, False], [96, 7200]], ['generated mix 48', [[60, 30, 45], [5, 20, 12], 2, False], [60, 8888]]], [['generated mix 16', [[60, 30, 60], [25, 15, 7], 1, True], [4, 972]], ['generated mix 44', [[40, 60, 30], [12, 10, 10], 0, True], [60, 10000]], ['upright plane rotation', [[48, 40, 30], [12, 10, 10], 0, True], [48, 10000]], ['laydown helps', [[40, 40, 12], [10, 10, 20], 0, False], [8, 8333]], ['unlimited zero', [[20, 20, 40], [10, 10, 10], 0, True], [16, 10000]], ['generated mix 43', [[48, 48, 45], [25, 10, 10], 1, False], [16, 3858]], ['generated mix 52', [[40, 48, 45], [10, 20, 35], 2, True], [8, 6481]], ['generated mix 60', [[40, 48, 20], [8, 6, 12], 1, False], [40, 6000]]]]
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 |
|---|---|---|---|
| upright blocked | [8, 8333] | [0, 0] | Failed |
| generated mix 10 | [16, 6172] | [16, 6172] | Passed |
| upright plane rotation | [48, 10000] | [48, 10000] | Passed |
| laydown helps | [8, 8333] | [8, 8333] | Passed |
| fraction bp | [48, 9333] | [48, 9333] | Passed |
| stack cap | [32, 6666] | [32, 6666] | Passed |
| unlimited zero | [16, 10000] | [16, 10000] | Passed |
| generated mix 8 | [48, 8333] | [48, 8333] | Passed |
SHA-256 / f14011be28acbf6fb8664640ce20b215695852d354f3239a2e98a75de14c09b7
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
import itertools
N = 1
observations = []
def solve(slot, unit, max_stack, upright):
SW, SD, SH = slot
uw, ud, uh = unit
if upright:
orients = [(uw, ud, uh)]
else:
orients = sorted(set(itertools.permutations(unit)))
best = 0
for a, b, c in orients:
layers = SH // c
if max_stack:
layers = min(layers, max_stack)
best = max(best, (SW // a) * (SD // b) * layers)
bp = best * uw * ud * uh * 10000 // (SW * SD * SH)
return [best, bp]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['upright blocked', [[40, 40, 12], [10, 10, 20], 0, True], [0, 0]], ['generated mix 10', [[48, 60, 45], [25, 20, 10], 0, True], [16, 6172]], ['upright plane rotation', [[48, 40, 30], [12, 10, 10], 0, True], [48, 10000]], ['laydown helps', [[40, 40, 12], [10, 10, 20], 0, False], [8, 8333]], ['fraction bp', [[100, 30, 45], [25, 15, 7], 0, True], [48, 9333]], ['stack cap', [[48, 40, 30], [12, 10, 10], 2, True], [32, 6666]], ['unlimited zero', [[20, 20, 40], [10, 10, 10], 0, True], [16, 10000]], ['generated mix 8', [[60, 48, 60], [25, 10, 12], 5, False], [48, 8333]]], [['generated mix 22', [[100, 48, 45], [25, 10, 4], 0, True], [176, 8148]], ['generated mix 63', [[100, 40, 45], [10, 15, 7], 0, True], [144, 8400]], ['upright blocked', [[40, 40, 12], [10, 10, 20], 0, True], [0, 0]], ['fraction bp', [[100, 30, 45], [25, 15, 7], 0, True], [48, 9333]], ['stack cap', [[48, 40, 30], [12, 10, 10], 2, True], [32, 6666]], ['generated mix 9', [[48, 30, 60], [25, 10, 4], 3, False], [72, 8333]], ['generated mix 17', [[100, 60, 45], [10, 6, 35], 2, False], [100, 7777]], ['generated mix 26', [[40, 40, 45], [5, 6, 35], 0, False], [56, 8166]]], [['generated mix 39', [[60, 30, 20], [12, 6, 7], 3, True], [50, 7000]], ['generated mix 29', [[100, 48, 20], [8, 20, 12], 1, True], [30, 6000]], ['upright plane rotation', [[48, 40, 30], [12, 10, 10], 0, True], [48, 10000]], ['laydown helps', [[40, 40, 12], [10, 10, 20], 0, False], [8, 8333]], ['unlimited zero', [[20, 20, 40], [10, 10, 10], 0, True], [16, 10000]], ['generated mix 20', [[48, 60, 60], [25, 10, 4], 3, True], [24, 1388]], ['generated mix 28', [[48, 40, 20], [25, 15, 35], 3, True], [0, 0]], ['generated mix 37', [[40, 48, 20], [8, 6, 7], 1, False], [40, 3500]]], [['generated mix 72', [[60, 48, 45], [12, 6, 10], 2, True], [80, 4444]], ['generated mix 7', [[48, 40, 60], [12, 15, 12], 5, True], [45, 8437]], ['upright blocked', [[40, 40, 12], [10, 10, 20], 0, True], [0, 0]], ['fraction bp', [[100, 30, 45], [25, 15, 7], 0, True], [48, 9333]], ['stack cap', [[48, 40, 30], [12, 10, 10], 2, True], [32, 6666]], ['generated mix 32', [[60, 30, 45], [8, 20, 4], 3, True], [27, 2133]], ['generated mix 40', [[40, 40, 30], [5, 6, 12], 2, False], [96, 7200]], ['generated mix 48', [[60, 30, 45], [5, 20, 12], 2, False], [60, 8888]]], [['generated mix 16', [[60, 30, 60], [25, 15, 7], 1, True], [4, 972]], ['generated mix 44', [[40, 60, 30], [12, 10, 10], 0, True], [60, 10000]], ['upright plane rotation', [[48, 40, 30], [12, 10, 10], 0, True], [48, 10000]], ['laydown helps', [[40, 40, 12], [10, 10, 20], 0, False], [8, 8333]], ['unlimited zero', [[20, 20, 40], [10, 10, 10], 0, True], [16, 10000]], ['generated mix 43', [[48, 48, 45], [25, 10, 10], 1, False], [16, 3858]], ['generated mix 52', [[40, 48, 45], [10, 20, 35], 2, True], [8, 6481]], ['generated mix 60', [[40, 48, 20], [8, 6, 12], 1, False], [40, 6000]]]]
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 |
|---|---|---|---|
| upright blocked | [0, 0] | [0, 0] | Passed |
| generated mix 10 | [12, 4629] | [16, 6172] | Failed |
| upright plane rotation | [48, 10000] | [48, 10000] | Passed |
| laydown helps | [8, 8333] | [8, 8333] | Passed |
| fraction bp | [48, 9333] | [48, 9333] | Passed |
| stack cap | [32, 6666] | [32, 6666] | Passed |
| unlimited zero | [16, 10000] | [16, 10000] | Passed |
| generated mix 8 | [48, 8333] | [48, 8333] | Passed |
SHA-256 / f13fa1864c3c8c75647f14dd321442a23b0ebbaada1092dc903aaef4a1a1a2f8
HELD IN THE MEMBER ARCHIVE
The verified repair and its recorded checks are member-only.
This mechanism has 8 recorded checks per implementation. The open-access tier publishes the failure and the unsuccessful fix; the repaired source that passes every check, and the observations that prove it, are available to members.
Every case sharing this mechanism uses the same contract and the same repair, so this one record is held back for all of them.
Member access is invitation-based. Sign in with your invited account to inspect the repair.
Sign in to the archive ↗Verification & scope
Uniform unit, single orientation per slot; no mixed orientation packing. 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:10.439831+00:00.
Case digest / 7f5a2240d70c746ee93de3a7f335be5c92160aa2c8a8b6e3acffa0b8a67a6613