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.
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| 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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| 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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| 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