FAILURE MAP
← Case archive

FA-95081 / Warehouse slotting and bin packing / Open access

Slot fit: utilization rounded instead of floored · case 01

Cube utilization is overstated by one basis point on fractional values.

Verified by executionVariant 1 · 8 checks per implementationDownload source bundle ↓JSON ↗

ROOT CAUSE

Utilization basis points are rounded to nearest instead of floored as the contract requires.

VERIFIED REPAIR

Compute utilization basis points with exact integer floor division.

Unsuccessful approach: Flooring to whole percent before scaling discards the basis-point precision.

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 = max(best, (SW // a) * (SD // b) * layers)
    bp = round(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 = [[['stack cap', [[48, 40, 30], [12, 10, 10], 2, True], [32, 6666]], ['laydown helps', [[40, 40, 12], [10, 10, 20], 0, False], [8, 8333]], ['upright plane rotation', [[48, 40, 30], [12, 10, 10], 0, True], [48, 10000]], ['unlimited zero', [[20, 20, 40], [10, 10, 10], 0, True], [16, 10000]], ['upright blocked', [[40, 40, 12], [10, 10, 20], 0, True], [0, 0]], ['generated mix 7', [[48, 40, 60], [12, 15, 12], 5, True], [45, 8437]], ['generated mix 15', [[40, 60, 30], [25, 6, 4], 5, False], [100, 8333]], ['generated mix 23', [[100, 30, 45], [12, 15, 12], 3, True], [48, 7680]]], [['generated mix 21', [[40, 48, 45], [10, 10, 10], 2, True], [32, 3703]], ['generated mix 8', [[60, 48, 60], [25, 10, 12], 5, False], [48, 8333]], ['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 10', [[48, 60, 45], [25, 20, 10], 0, True], [16, 6172]], ['generated mix 18', [[40, 48, 20], [25, 20, 10], 3, False], [4, 5208]], ['generated mix 27', [[60, 60, 45], [8, 20, 7], 3, False], [112, 7743]]], [['generated mix 56', [[48, 30, 45], [12, 15, 10], 3, True], [24, 6666]], ['generated mix 15', [[40, 60, 30], [25, 6, 4], 5, False], [100, 8333]], ['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 21', [[40, 48, 45], [10, 10, 10], 2, True], [32, 3703]], ['generated mix 29', [[100, 48, 20], [8, 20, 12], 1, True], [30, 6000]], ['generated mix 37', [[40, 48, 20], [8, 6, 7], 1, False], [40, 3500]]], [['generated mix 4', [[60, 30, 45], [25, 15, 12], 0, True], [12, 6666]], ['generated mix 20', [[48, 60, 60], [25, 10, 4], 3, True], [24, 1388]], ['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 33', [[40, 40, 60], [25, 15, 35], 0, True], [2, 2734]], ['generated mix 41', [[60, 30, 20], [8, 6, 7], 0, True], [70, 6533]], ['generated mix 49', [[100, 60, 60], [25, 20, 7], 5, False], [96, 9333]]], [['generated mix 26', [[40, 40, 45], [5, 6, 35], 0, False], [56, 8166]], ['generated mix 25', [[100, 60, 45], [8, 10, 12], 1, False], [72, 2560]], ['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 44', [[40, 60, 30], [12, 10, 10], 0, True], [60, 10000]], ['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 fixtureActualExpectedOutcome
stack cap[32, 6667][32, 6666]Failed
laydown helps[8, 8333][8, 8333]Passed
upright plane rotation[48, 10000][48, 10000]Passed
unlimited zero[16, 10000][16, 10000]Passed
upright blocked[0, 0][0, 0]Passed
generated mix 7[45, 8438][45, 8437]Failed
generated mix 15[100, 8333][100, 8333]Passed
generated mix 23[48, 7680][48, 7680]Passed

SHA-256 / c59b797e7dc2f67bd8de9c4f741a964e8be069e8ee8160b2cc43e77c0355613a

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) * layers)
    bp = best * uw * ud * uh * 100 // (SW * SD * SH) * 100
    return [best, bp]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['stack cap', [[48, 40, 30], [12, 10, 10], 2, True], [32, 6666]], ['laydown helps', [[40, 40, 12], [10, 10, 20], 0, False], [8, 8333]], ['upright plane rotation', [[48, 40, 30], [12, 10, 10], 0, True], [48, 10000]], ['unlimited zero', [[20, 20, 40], [10, 10, 10], 0, True], [16, 10000]], ['upright blocked', [[40, 40, 12], [10, 10, 20], 0, True], [0, 0]], ['generated mix 7', [[48, 40, 60], [12, 15, 12], 5, True], [45, 8437]], ['generated mix 15', [[40, 60, 30], [25, 6, 4], 5, False], [100, 8333]], ['generated mix 23', [[100, 30, 45], [12, 15, 12], 3, True], [48, 7680]]], [['generated mix 21', [[40, 48, 45], [10, 10, 10], 2, True], [32, 3703]], ['generated mix 8', [[60, 48, 60], [25, 10, 12], 5, False], [48, 8333]], ['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 10', [[48, 60, 45], [25, 20, 10], 0, True], [16, 6172]], ['generated mix 18', [[40, 48, 20], [25, 20, 10], 3, False], [4, 5208]], ['generated mix 27', [[60, 60, 45], [8, 20, 7], 3, False], [112, 7743]]], [['generated mix 56', [[48, 30, 45], [12, 15, 10], 3, True], [24, 6666]], ['generated mix 15', [[40, 60, 30], [25, 6, 4], 5, False], [100, 8333]], ['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 21', [[40, 48, 45], [10, 10, 10], 2, True], [32, 3703]], ['generated mix 29', [[100, 48, 20], [8, 20, 12], 1, True], [30, 6000]], ['generated mix 37', [[40, 48, 20], [8, 6, 7], 1, False], [40, 3500]]], [['generated mix 4', [[60, 30, 45], [25, 15, 12], 0, True], [12, 6666]], ['generated mix 20', [[48, 60, 60], [25, 10, 4], 3, True], [24, 1388]], ['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 33', [[40, 40, 60], [25, 15, 35], 0, True], [2, 2734]], ['generated mix 41', [[60, 30, 20], [8, 6, 7], 0, True], [70, 6533]], ['generated mix 49', [[100, 60, 60], [25, 20, 7], 5, False], [96, 9333]]], [['generated mix 26', [[40, 40, 45], [5, 6, 35], 0, False], [56, 8166]], ['generated mix 25', [[100, 60, 45], [8, 10, 12], 1, False], [72, 2560]], ['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 44', [[40, 60, 30], [12, 10, 10], 0, True], [60, 10000]], ['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 fixtureActualExpectedOutcome
stack cap[32, 6600][32, 6666]Failed
laydown helps[8, 8300][8, 8333]Failed
upright plane rotation[48, 10000][48, 10000]Passed
unlimited zero[16, 10000][16, 10000]Passed
upright blocked[0, 0][0, 0]Passed
generated mix 7[45, 8400][45, 8437]Failed
generated mix 15[100, 8300][100, 8333]Failed
generated mix 23[48, 7600][48, 7680]Failed

SHA-256 / 241ab7d3b070655277087c18fdf0738a16285ffd7de1d026d37eaf007ce82ada

3 / The verified repair

Exit 0
"""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) * 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 = [[['stack cap', [[48, 40, 30], [12, 10, 10], 2, True], [32, 6666]], ['laydown helps', [[40, 40, 12], [10, 10, 20], 0, False], [8, 8333]], ['upright plane rotation', [[48, 40, 30], [12, 10, 10], 0, True], [48, 10000]], ['unlimited zero', [[20, 20, 40], [10, 10, 10], 0, True], [16, 10000]], ['upright blocked', [[40, 40, 12], [10, 10, 20], 0, True], [0, 0]], ['generated mix 7', [[48, 40, 60], [12, 15, 12], 5, True], [45, 8437]], ['generated mix 15', [[40, 60, 30], [25, 6, 4], 5, False], [100, 8333]], ['generated mix 23', [[100, 30, 45], [12, 15, 12], 3, True], [48, 7680]]], [['generated mix 21', [[40, 48, 45], [10, 10, 10], 2, True], [32, 3703]], ['generated mix 8', [[60, 48, 60], [25, 10, 12], 5, False], [48, 8333]], ['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 10', [[48, 60, 45], [25, 20, 10], 0, True], [16, 6172]], ['generated mix 18', [[40, 48, 20], [25, 20, 10], 3, False], [4, 5208]], ['generated mix 27', [[60, 60, 45], [8, 20, 7], 3, False], [112, 7743]]], [['generated mix 56', [[48, 30, 45], [12, 15, 10], 3, True], [24, 6666]], ['generated mix 15', [[40, 60, 30], [25, 6, 4], 5, False], [100, 8333]], ['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 21', [[40, 48, 45], [10, 10, 10], 2, True], [32, 3703]], ['generated mix 29', [[100, 48, 20], [8, 20, 12], 1, True], [30, 6000]], ['generated mix 37', [[40, 48, 20], [8, 6, 7], 1, False], [40, 3500]]], [['generated mix 4', [[60, 30, 45], [25, 15, 12], 0, True], [12, 6666]], ['generated mix 20', [[48, 60, 60], [25, 10, 4], 3, True], [24, 1388]], ['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 33', [[40, 40, 60], [25, 15, 35], 0, True], [2, 2734]], ['generated mix 41', [[60, 30, 20], [8, 6, 7], 0, True], [70, 6533]], ['generated mix 49', [[100, 60, 60], [25, 20, 7], 5, False], [96, 9333]]], [['generated mix 26', [[40, 40, 45], [5, 6, 35], 0, False], [56, 8166]], ['generated mix 25', [[100, 60, 45], [8, 10, 12], 1, False], [72, 2560]], ['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 44', [[40, 60, 30], [12, 10, 10], 0, True], [60, 10000]], ['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 fixtureActualExpectedOutcome
stack cap[32, 6666][32, 6666]Passed
laydown helps[8, 8333][8, 8333]Passed
upright plane rotation[48, 10000][48, 10000]Passed
unlimited zero[16, 10000][16, 10000]Passed
upright blocked[0, 0][0, 0]Passed
generated mix 7[45, 8437][45, 8437]Passed
generated mix 15[100, 8333][100, 8333]Passed
generated mix 23[48, 7680][48, 7680]Passed

SHA-256 / fcda598d7c4e359819187b8bca466eba63964c4fefa615b02550e646fd6aa9fd

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.451706+00:00.

Case digest / 868c7c6af61488eed122dff6aa2397e78aa8a9c4e1ddee5e1a082f5cb4cc78ce