FA-95191 / Warehouse slotting and bin packing / Open access
Rack audit: bay at rated load flagged · case 01
An upright frame loaded exactly to its rating is flagged as overloaded.
ROOT CAUSE
The bay check treats a total equal to bay_cap as an overload.
THE FAILURE
The bay check treats a total equal to bay_cap as an overload.
Unsuccessful approach: Comparing whole tonnes hides overloads smaller than a tonne.
Case contract
loads [[bay, level, kg]]; level 0 is floor storage and loads neither beams nor uprights. Sum kg per (bay, level) and per bay. Beam capacity is beam_cap, derated to floor(90%) for levels 5 and up. Report ["BEAM", bay, level, total] when a level exceeds capacity and ["BAY", bay, 0, total] when a bay exceeds bay_cap, sorted.
Why this case matters
Rack load audits prevent beam and upright overloads in pallet racking.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(loads, beam_cap, bay_cap):
beam = {}
bay = {}
for b, lvl, kg in loads:
if lvl == 0:
continue
beam[(b, lvl)] = beam.get((b, lvl), 0) + kg
bay[b] = bay.get(b, 0) + kg
out = []
for (b, lvl), t in beam.items():
cap = beam_cap * 9 // 10 if lvl >= 5 else beam_cap
if t > cap:
out.append(['BEAM', b, lvl, t])
for b, t in bay.items():
if t >= bay_cap:
out.append(['BAY', b, 0, t])
out.sort()
return out
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['generated mix 54', [[[1, 2, 1000], [2, 1, 1000], [2, 1, 1000], [1, 2, 500]], 1500, 2000], [['BEAM', 2, 1, 2000]]], ['generated mix 9', [[[1, 6, 300], [1, 4, 300], [2, 2, 450], [2, 2, 1000], [2, 2, 1000], [2, 0, 1000]], 1500, 2000], [['BAY', 2, 0, 2450], ['BEAM', 2, 2, 2450]]], ['beam over', [[[1, 1, 600], [1, 1, 500]], 1000, 5000], [['BEAM', 1, 1, 1100]]], ['derated level 5', [[[1, 5, 950]], 1000, 5000], [['BEAM', 1, 5, 950]]], ['floor ignored', [[[2, 0, 3000], [2, 1, 900]], 1000, 2000], []], ['beam equal ok', [[[1, 1, 500], [1, 1, 500]], 1000, 5000], []], ['generated mix 6', [[[3, 2, 300]], 1000, 2000], []], ['generated mix 15', [[[1, 0, 300], [1, 4, 1000]], 1000, 2000], []]], [['generated mix 54', [[[1, 2, 1000], [2, 1, 1000], [2, 1, 1000], [1, 2, 500]], 1500, 2000], [['BEAM', 2, 1, 2000]]], ['generated mix 67', [[[1, 1, 900], [1, 1, 300], [3, 2, 1000], [2, 0, 500], [2, 4, 450], [1, 4, 450], [3, 0, 300], [1, 4, 500]], 1500, 2000], [['BAY', 1, 0, 2150]]], ['level 4 full rating', [[[1, 4, 950]], 1000, 5000], []], ['bay over', [[[3, 1, 900], [3, 2, 900], [3, 3, 900]], 1000, 2500], [['BAY', 3, 0, 2700]]], ['beam equal ok', [[[1, 1, 500], [1, 1, 500]], 1000, 5000], []], ['generated mix 9', [[[1, 6, 300], [1, 4, 300], [2, 2, 450], [2, 2, 1000], [2, 2, 1000], [2, 0, 1000]], 1500, 2000], [['BAY', 2, 0, 2450], ['BEAM', 2, 2, 2450]]], ['generated mix 17', [[[2, 6, 500], [2, 0, 1000], [1, 0, 300], [1, 1, 300]], 1000, 3000], []], ['generated mix 25', [[[2, 4, 300], [1, 2, 1000], [2, 2, 1000], [2, 0, 900], [2, 0, 500], [1, 6, 450], [3, 6, 300]], 1000, 4000], []]], [['generated mix 54', [[[1, 2, 1000], [2, 1, 1000], [2, 1, 1000], [1, 2, 500]], 1500, 2000], [['BEAM', 2, 1, 2000]]], ['generated mix 21', [[[1, 2, 500], [2, 4, 450], [3, 6, 300], [3, 5, 500], [1, 6, 900], [1, 5, 300], [1, 6, 450], [3, 0, 500]], 1000, 2000], [['BAY', 1, 0, 2150], ['BEAM', 1, 6, 1350]]], ['beam over', [[[1, 1, 600], [1, 1, 500]], 1000, 5000], [['BEAM', 1, 1, 1100]]], ['derated level 5', [[[1, 5, 950]], 1000, 5000], [['BEAM', 1, 5, 950]]], ['floor ignored', [[[2, 0, 3000], [2, 1, 900]], 1000, 2000], []], ['generated mix 20', [[[1, 1, 1000], [1, 0, 900], [3, 0, 300], [2, 4, 300]], 1000, 3000], []], ['generated mix 29', [[[3, 4, 900], [1, 0, 1000], [1, 6, 300]], 1500, 2000], []], ['generated mix 37', [[[1, 6, 300], [1, 4, 1000], [3, 0, 1000], [1, 4, 900], [1, 4, 900], [1, 5, 1000], [3, 0, 900], [3, 0, 1000]], 1000, 3000], [['BAY', 1, 0, 4100], ['BEAM', 1, 4, 2800], ['BEAM', 1, 5, 1000]]]], [['generated mix 54', [[[1, 2, 1000], [2, 1, 1000], [2, 1, 1000], [1, 2, 500]], 1500, 2000], [['BEAM', 2, 1, 2000]]], ['generated mix 74', [[[2, 6, 1000], [1, 6, 450], [1, 0, 1000], [2, 2, 450], [2, 0, 900], [3, 6, 300], [2, 5, 900], [1, 2, 300]], 1500, 2000], [['BAY', 2, 0, 2350]]], ['level 4 full rating', [[[1, 4, 950]], 1000, 5000], []], ['bay over', [[[3, 1, 900], [3, 2, 900], [3, 3, 900]], 1000, 2500], [['BAY', 3, 0, 2700]]], ['beam equal ok', [[[1, 1, 500], [1, 1, 500]], 1000, 5000], []], ['generated mix 31', [[[3, 6, 1000], [3, 6, 300]], 1000, 3000], [['BEAM', 3, 6, 1300]]], ['generated mix 39', [[[1, 1, 300]], 1000, 3000], []], ['generated mix 47', [[[2, 2, 500], [2, 2, 500], [3, 4, 450], [2, 5, 1000]], 1500, 4000], []]], [['generated mix 54', [[[1, 2, 1000], [2, 1, 1000], [2, 1, 1000], [1, 2, 500]], 1500, 2000], [['BEAM', 2, 1, 2000]]], ['generated mix 23', [[[2, 0, 450], [1, 6, 900], [1, 0, 300], [1, 2, 1000], [2, 0, 1000], [1, 5, 450], [2, 5, 450], [2, 5, 450]], 1500, 2000], [['BAY', 1, 0, 2350]]], ['beam over', [[[1, 1, 600], [1, 1, 500]], 1000, 5000], [['BEAM', 1, 1, 1100]]], ['derated level 5', [[[1, 5, 950]], 1000, 5000], [['BEAM', 1, 5, 950]]], ['floor ignored', [[[2, 0, 3000], [2, 1, 900]], 1000, 2000], []], ['generated mix 43', [[[3, 4, 450], [2, 4, 450], [3, 2, 900], [1, 2, 450], [1, 1, 300], [3, 4, 1000], [2, 6, 900]], 1500, 4000], []], ['generated mix 51', [[[1, 5, 500], [3, 2, 300], [3, 6, 450], [2, 4, 900], [1, 6, 900]], 1500, 2000], []], ['generated mix 60', [[[1, 4, 450], [1, 4, 900], [2, 4, 500]], 1500, 4000], []]]]
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 |
|---|---|---|---|
| generated mix 54 | [['BAY', 2, 0, 2000], ['BEAM', 2, 1, 2000]] | [['BEAM', 2, 1, 2000]] | Failed |
| generated mix 9 | [['BAY', 2, 0, 2450], ['BEAM', 2, 2, 2450]] | [['BAY', 2, 0, 2450], ['BEAM', 2, 2, 2450]] | Passed |
| beam over | [['BEAM', 1, 1, 1100]] | [['BEAM', 1, 1, 1100]] | Passed |
| derated level 5 | [['BEAM', 1, 5, 950]] | [['BEAM', 1, 5, 950]] | Passed |
| floor ignored | [] | [] | Passed |
| beam equal ok | [] | [] | Passed |
| generated mix 6 | [] | [] | Passed |
| generated mix 15 | [] | [] | Passed |
SHA-256 / 5b15fd59a2b68e92beb27a79c5a981184519566de06f140941ed8435fe55586a
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(loads, beam_cap, bay_cap):
beam = {}
bay = {}
for b, lvl, kg in loads:
if lvl == 0:
continue
beam[(b, lvl)] = beam.get((b, lvl), 0) + kg
bay[b] = bay.get(b, 0) + kg
out = []
for (b, lvl), t in beam.items():
cap = beam_cap * 9 // 10 if lvl >= 5 else beam_cap
if t > cap:
out.append(['BEAM', b, lvl, t])
for b, t in bay.items():
if t // 1000 > bay_cap // 1000:
out.append(['BAY', b, 0, t])
out.sort()
return out
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['generated mix 54', [[[1, 2, 1000], [2, 1, 1000], [2, 1, 1000], [1, 2, 500]], 1500, 2000], [['BEAM', 2, 1, 2000]]], ['generated mix 9', [[[1, 6, 300], [1, 4, 300], [2, 2, 450], [2, 2, 1000], [2, 2, 1000], [2, 0, 1000]], 1500, 2000], [['BAY', 2, 0, 2450], ['BEAM', 2, 2, 2450]]], ['beam over', [[[1, 1, 600], [1, 1, 500]], 1000, 5000], [['BEAM', 1, 1, 1100]]], ['derated level 5', [[[1, 5, 950]], 1000, 5000], [['BEAM', 1, 5, 950]]], ['floor ignored', [[[2, 0, 3000], [2, 1, 900]], 1000, 2000], []], ['beam equal ok', [[[1, 1, 500], [1, 1, 500]], 1000, 5000], []], ['generated mix 6', [[[3, 2, 300]], 1000, 2000], []], ['generated mix 15', [[[1, 0, 300], [1, 4, 1000]], 1000, 2000], []]], [['generated mix 54', [[[1, 2, 1000], [2, 1, 1000], [2, 1, 1000], [1, 2, 500]], 1500, 2000], [['BEAM', 2, 1, 2000]]], ['generated mix 67', [[[1, 1, 900], [1, 1, 300], [3, 2, 1000], [2, 0, 500], [2, 4, 450], [1, 4, 450], [3, 0, 300], [1, 4, 500]], 1500, 2000], [['BAY', 1, 0, 2150]]], ['level 4 full rating', [[[1, 4, 950]], 1000, 5000], []], ['bay over', [[[3, 1, 900], [3, 2, 900], [3, 3, 900]], 1000, 2500], [['BAY', 3, 0, 2700]]], ['beam equal ok', [[[1, 1, 500], [1, 1, 500]], 1000, 5000], []], ['generated mix 9', [[[1, 6, 300], [1, 4, 300], [2, 2, 450], [2, 2, 1000], [2, 2, 1000], [2, 0, 1000]], 1500, 2000], [['BAY', 2, 0, 2450], ['BEAM', 2, 2, 2450]]], ['generated mix 17', [[[2, 6, 500], [2, 0, 1000], [1, 0, 300], [1, 1, 300]], 1000, 3000], []], ['generated mix 25', [[[2, 4, 300], [1, 2, 1000], [2, 2, 1000], [2, 0, 900], [2, 0, 500], [1, 6, 450], [3, 6, 300]], 1000, 4000], []]], [['generated mix 54', [[[1, 2, 1000], [2, 1, 1000], [2, 1, 1000], [1, 2, 500]], 1500, 2000], [['BEAM', 2, 1, 2000]]], ['generated mix 21', [[[1, 2, 500], [2, 4, 450], [3, 6, 300], [3, 5, 500], [1, 6, 900], [1, 5, 300], [1, 6, 450], [3, 0, 500]], 1000, 2000], [['BAY', 1, 0, 2150], ['BEAM', 1, 6, 1350]]], ['beam over', [[[1, 1, 600], [1, 1, 500]], 1000, 5000], [['BEAM', 1, 1, 1100]]], ['derated level 5', [[[1, 5, 950]], 1000, 5000], [['BEAM', 1, 5, 950]]], ['floor ignored', [[[2, 0, 3000], [2, 1, 900]], 1000, 2000], []], ['generated mix 20', [[[1, 1, 1000], [1, 0, 900], [3, 0, 300], [2, 4, 300]], 1000, 3000], []], ['generated mix 29', [[[3, 4, 900], [1, 0, 1000], [1, 6, 300]], 1500, 2000], []], ['generated mix 37', [[[1, 6, 300], [1, 4, 1000], [3, 0, 1000], [1, 4, 900], [1, 4, 900], [1, 5, 1000], [3, 0, 900], [3, 0, 1000]], 1000, 3000], [['BAY', 1, 0, 4100], ['BEAM', 1, 4, 2800], ['BEAM', 1, 5, 1000]]]], [['generated mix 54', [[[1, 2, 1000], [2, 1, 1000], [2, 1, 1000], [1, 2, 500]], 1500, 2000], [['BEAM', 2, 1, 2000]]], ['generated mix 74', [[[2, 6, 1000], [1, 6, 450], [1, 0, 1000], [2, 2, 450], [2, 0, 900], [3, 6, 300], [2, 5, 900], [1, 2, 300]], 1500, 2000], [['BAY', 2, 0, 2350]]], ['level 4 full rating', [[[1, 4, 950]], 1000, 5000], []], ['bay over', [[[3, 1, 900], [3, 2, 900], [3, 3, 900]], 1000, 2500], [['BAY', 3, 0, 2700]]], ['beam equal ok', [[[1, 1, 500], [1, 1, 500]], 1000, 5000], []], ['generated mix 31', [[[3, 6, 1000], [3, 6, 300]], 1000, 3000], [['BEAM', 3, 6, 1300]]], ['generated mix 39', [[[1, 1, 300]], 1000, 3000], []], ['generated mix 47', [[[2, 2, 500], [2, 2, 500], [3, 4, 450], [2, 5, 1000]], 1500, 4000], []]], [['generated mix 54', [[[1, 2, 1000], [2, 1, 1000], [2, 1, 1000], [1, 2, 500]], 1500, 2000], [['BEAM', 2, 1, 2000]]], ['generated mix 23', [[[2, 0, 450], [1, 6, 900], [1, 0, 300], [1, 2, 1000], [2, 0, 1000], [1, 5, 450], [2, 5, 450], [2, 5, 450]], 1500, 2000], [['BAY', 1, 0, 2350]]], ['beam over', [[[1, 1, 600], [1, 1, 500]], 1000, 5000], [['BEAM', 1, 1, 1100]]], ['derated level 5', [[[1, 5, 950]], 1000, 5000], [['BEAM', 1, 5, 950]]], ['floor ignored', [[[2, 0, 3000], [2, 1, 900]], 1000, 2000], []], ['generated mix 43', [[[3, 4, 450], [2, 4, 450], [3, 2, 900], [1, 2, 450], [1, 1, 300], [3, 4, 1000], [2, 6, 900]], 1500, 4000], []], ['generated mix 51', [[[1, 5, 500], [3, 2, 300], [3, 6, 450], [2, 4, 900], [1, 6, 900]], 1500, 2000], []], ['generated mix 60', [[[1, 4, 450], [1, 4, 900], [2, 4, 500]], 1500, 4000], []]]]
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 |
|---|---|---|---|
| generated mix 54 | [['BEAM', 2, 1, 2000]] | [['BEAM', 2, 1, 2000]] | Passed |
| generated mix 9 | [['BEAM', 2, 2, 2450]] | [['BAY', 2, 0, 2450], ['BEAM', 2, 2, 2450]] | Failed |
| beam over | [['BEAM', 1, 1, 1100]] | [['BEAM', 1, 1, 1100]] | Passed |
| derated level 5 | [['BEAM', 1, 5, 950]] | [['BEAM', 1, 5, 950]] | Passed |
| floor ignored | [] | [] | Passed |
| beam equal ok | [] | [] | Passed |
| generated mix 6 | [] | [] | Passed |
| generated mix 15 | [] | [] | Passed |
SHA-256 / fe675bdecfe6a723a8941cd980c3421b3392ad8a6cdfd837dd620946ef24eff8
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
Stipulated capacities and derate; not an engineering rack load calculation. 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:11.428199+00:00.
Case digest / 6dc61ade40f51338be2f0a3ba33cfac799e54b68f711c4ab3e30d87b814f9afd