FA-95086 / Warehouse slotting and bin packing / Open access
Slot fit: first orientation taken · case 01
Slot capacity is understated when a rotated orientation packs more units.
ROOT CAUSE
The orientation loop stops after evaluating the first orientation.
THE FAILURE
The orientation loop stops after evaluating the first orientation.
Unsuccessful approach: Keeping the maximum but using uncapped layers overstates capacity when a stack limit applies.
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 = [(uw, ud, uh), (ud, uw, 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 = (SW // a) * (SD // b) * layers
break
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 = [[['laydown helps', [[40, 40, 12], [10, 10, 20], 0, False], [8, 8333]], ['generated mix 1', [[40, 40, 30], [5, 15, 7], 1, False], [40, 4375]], ['upright plane rotation', [[48, 40, 30], [12, 10, 10], 0, True], [48, 10000]], ['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]], ['unlimited zero', [[20, 20, 40], [10, 10, 10], 0, True], [16, 10000]], ['generated mix 9', [[48, 30, 60], [25, 10, 4], 3, False], [72, 8333]]], [['generated mix 18', [[40, 48, 20], [25, 20, 10], 3, False], [4, 5208]], ['generated mix 21', [[40, 48, 45], [10, 10, 10], 2, True], [32, 3703]], ['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 27', [[60, 60, 45], [8, 20, 7], 3, False], [112, 7743]]], [['generated mix 36', [[48, 30, 20], [8, 15, 7], 2, False], [24, 7000]], ['generated mix 34', [[40, 60, 45], [8, 20, 12], 2, True], [30, 5333]], ['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 38', [[60, 48, 60], [12, 20, 4], 3, False], [180, 10000]]], [['generated mix 50', [[100, 48, 60], [25, 15, 35], 3, False], [12, 5468]], ['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 31', [[48, 48, 30], [12, 6, 35], 1, True], [0, 0]], ['generated mix 39', [[60, 30, 20], [12, 6, 7], 3, True], [50, 7000]], ['generated mix 47', [[60, 60, 45], [10, 15, 4], 2, False], [180, 6666]], ['generated mix 56', [[48, 30, 45], [12, 15, 10], 3, True], [24, 6666]]], [['generated mix 63', [[100, 40, 45], [10, 15, 7], 0, True], [144, 8400]], ['generated mix 64', [[100, 40, 45], [25, 6, 4], 5, False], [200, 6666]], ['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 42', [[60, 30, 30], [10, 15, 35], 1, False], [3, 2916]], ['generated mix 50', [[100, 48, 60], [25, 15, 35], 3, False], [12, 5468]], ['generated mix 58', [[40, 48, 60], [10, 20, 7], 3, False], [72, 8750]]]]
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 |
|---|---|---|---|
| laydown helps | [0, 0] | [8, 8333] | Failed |
| generated mix 1 | [40, 4375] | [40, 4375] | Passed |
| upright plane rotation | [48, 10000] | [48, 10000] | Passed |
| upright blocked | [0, 0] | [0, 0] | Passed |
| fraction bp | [48, 9333] | [48, 9333] | Passed |
| stack cap | [32, 6666] | [32, 6666] | Passed |
| unlimited zero | [16, 10000] | [16, 10000] | Passed |
| generated mix 9 | [72, 8333] | [72, 8333] | Passed |
SHA-256 / 477ed06abcae081f1a2399923127de906221e24dfbb1ecf19def0589ae8a4532
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), (ud, uw, 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) * (SH // c))
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 = [[['laydown helps', [[40, 40, 12], [10, 10, 20], 0, False], [8, 8333]], ['generated mix 1', [[40, 40, 30], [5, 15, 7], 1, False], [40, 4375]], ['upright plane rotation', [[48, 40, 30], [12, 10, 10], 0, True], [48, 10000]], ['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]], ['unlimited zero', [[20, 20, 40], [10, 10, 10], 0, True], [16, 10000]], ['generated mix 9', [[48, 30, 60], [25, 10, 4], 3, False], [72, 8333]]], [['generated mix 18', [[40, 48, 20], [25, 20, 10], 3, False], [4, 5208]], ['generated mix 21', [[40, 48, 45], [10, 10, 10], 2, True], [32, 3703]], ['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 27', [[60, 60, 45], [8, 20, 7], 3, False], [112, 7743]]], [['generated mix 36', [[48, 30, 20], [8, 15, 7], 2, False], [24, 7000]], ['generated mix 34', [[40, 60, 45], [8, 20, 12], 2, True], [30, 5333]], ['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 38', [[60, 48, 60], [12, 20, 4], 3, False], [180, 10000]]], [['generated mix 50', [[100, 48, 60], [25, 15, 35], 3, False], [12, 5468]], ['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 31', [[48, 48, 30], [12, 6, 35], 1, True], [0, 0]], ['generated mix 39', [[60, 30, 20], [12, 6, 7], 3, True], [50, 7000]], ['generated mix 47', [[60, 60, 45], [10, 15, 4], 2, False], [180, 6666]], ['generated mix 56', [[48, 30, 45], [12, 15, 10], 3, True], [24, 6666]]], [['generated mix 63', [[100, 40, 45], [10, 15, 7], 0, True], [144, 8400]], ['generated mix 64', [[100, 40, 45], [25, 6, 4], 5, False], [200, 6666]], ['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 42', [[60, 30, 30], [10, 15, 35], 1, False], [3, 2916]], ['generated mix 50', [[100, 48, 60], [25, 15, 35], 3, False], [12, 5468]], ['generated mix 58', [[40, 48, 60], [10, 20, 7], 3, False], [72, 8750]]]]
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 |
|---|---|---|---|
| laydown helps | [8, 8333] | [8, 8333] | Passed |
| generated mix 1 | [80, 8750] | [40, 4375] | Failed |
| upright plane rotation | [48, 10000] | [48, 10000] | Passed |
| upright blocked | [0, 0] | [0, 0] | Passed |
| fraction bp | [48, 9333] | [48, 9333] | Passed |
| stack cap | [48, 10000] | [32, 6666] | Failed |
| unlimited zero | [16, 10000] | [16, 10000] | Passed |
| generated mix 9 | [72, 8333] | [72, 8333] | Passed |
SHA-256 / 8cca029c2ec65bef4177dcf001ecfa2f3fa77ae90ef55f1303bb42b6b3902a9e
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.455281+00:00.
Case digest / dde7d74f0bb0d1764488633cc57eb9fd60acc06dc063a38e484ae40ec31efeeb