FAILURE MAP
← Case archive

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

Rack audit: floor pallets load the rack · case 01

Floor-stored pallets under the first beam trigger beam and upright overload alarms.

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

ROOT CAUSE

Level 0 loads are summed into beam and bay totals.

THE FAILURE

Level 0 loads are summed into beam and bay totals.

Unsuccessful approach: Excluding the floor from beams but still counting it on the uprights keeps false bay alarms.

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:
        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 = [[['floor ignored', [[[2, 0, 3000], [2, 1, 900]], 1000, 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]]], ['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], []], ['level 4 full rating', [[[1, 4, 950]], 1000, 5000], []], ['generated mix 8', [[[1, 1, 300], [3, 5, 300], [3, 5, 300], [2, 4, 900], [2, 4, 1000], [1, 6, 1000]], 1000, 2000], [['BEAM', 1, 6, 1000], ['BEAM', 2, 4, 1900]]]], [['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 52', [[[1, 5, 900], [2, 0, 1000], [1, 6, 1000], [3, 5, 300], [1, 0, 450], [1, 0, 900], [2, 4, 500], [2, 0, 500]], 1000, 3000], [['BEAM', 1, 6, 1000]]], ['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], []]], [['floor ignored', [[[2, 0, 3000], [2, 1, 900]], 1000, 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 equal ok', [[[1, 1, 500], [1, 1, 500]], 1000, 5000], []], ['level 4 full rating', [[[1, 4, 950]], 1000, 5000], []], ['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]]], ['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]]], ['generated mix 31', [[[3, 6, 1000], [3, 6, 300]], 1000, 3000], [['BEAM', 3, 6, 1300]]]], [['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 52', [[[1, 5, 900], [2, 0, 1000], [1, 6, 1000], [3, 5, 300], [1, 0, 450], [1, 0, 900], [2, 4, 500], [2, 0, 500]], 1000, 3000], [['BEAM', 1, 6, 1000]]], ['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 40', [[[2, 1, 1000], [1, 4, 500], [1, 2, 450]], 1500, 3000], []], ['generated mix 48', [[[3, 0, 1000], [2, 4, 1000], [1, 4, 300]], 1500, 2000], []]], [['floor ignored', [[[2, 0, 3000], [2, 1, 900]], 1000, 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]]], ['derated level 5', [[[1, 5, 950]], 1000, 5000], [['BEAM', 1, 5, 950]]], ['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], []], ['level 4 full rating', [[[1, 4, 950]], 1000, 5000], []], ['generated mix 45', [[[3, 6, 300], [2, 6, 300], [1, 4, 500], [3, 1, 900], [1, 0, 300], [1, 1, 450]], 1000, 3000], []], ['generated mix 53', [[[3, 4, 300], [3, 5, 900]], 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 fixtureActualExpectedOutcome
floor ignored[['BAY', 2, 0, 3900], ['BEAM', 2, 0, 3000]][]Failed
generated mix 9[['BAY', 2, 0, 3450], ['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
bay over[['BAY', 3, 0, 2700]][['BAY', 3, 0, 2700]]Passed
beam equal ok[][]Passed
level 4 full rating[][]Passed
generated mix 8[['BEAM', 1, 6, 1000], ['BEAM', 2, 4, 1900]][['BEAM', 1, 6, 1000], ['BEAM', 2, 4, 1900]]Passed

SHA-256 / 059e2fa295409d7ae0c6fe66fa8a865373c07eb8dde69e48d22c502c6f8af00a

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:
        bay[b] = bay.get(b, 0) + (kg if lvl == 0 else 0)
        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 = [[['floor ignored', [[[2, 0, 3000], [2, 1, 900]], 1000, 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]]], ['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], []], ['level 4 full rating', [[[1, 4, 950]], 1000, 5000], []], ['generated mix 8', [[[1, 1, 300], [3, 5, 300], [3, 5, 300], [2, 4, 900], [2, 4, 1000], [1, 6, 1000]], 1000, 2000], [['BEAM', 1, 6, 1000], ['BEAM', 2, 4, 1900]]]], [['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 52', [[[1, 5, 900], [2, 0, 1000], [1, 6, 1000], [3, 5, 300], [1, 0, 450], [1, 0, 900], [2, 4, 500], [2, 0, 500]], 1000, 3000], [['BEAM', 1, 6, 1000]]], ['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], []]], [['floor ignored', [[[2, 0, 3000], [2, 1, 900]], 1000, 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 equal ok', [[[1, 1, 500], [1, 1, 500]], 1000, 5000], []], ['level 4 full rating', [[[1, 4, 950]], 1000, 5000], []], ['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]]], ['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]]], ['generated mix 31', [[[3, 6, 1000], [3, 6, 300]], 1000, 3000], [['BEAM', 3, 6, 1300]]]], [['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 52', [[[1, 5, 900], [2, 0, 1000], [1, 6, 1000], [3, 5, 300], [1, 0, 450], [1, 0, 900], [2, 4, 500], [2, 0, 500]], 1000, 3000], [['BEAM', 1, 6, 1000]]], ['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 40', [[[2, 1, 1000], [1, 4, 500], [1, 2, 450]], 1500, 3000], []], ['generated mix 48', [[[3, 0, 1000], [2, 4, 1000], [1, 4, 300]], 1500, 2000], []]], [['floor ignored', [[[2, 0, 3000], [2, 1, 900]], 1000, 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]]], ['derated level 5', [[[1, 5, 950]], 1000, 5000], [['BEAM', 1, 5, 950]]], ['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], []], ['level 4 full rating', [[[1, 4, 950]], 1000, 5000], []], ['generated mix 45', [[[3, 6, 300], [2, 6, 300], [1, 4, 500], [3, 1, 900], [1, 0, 300], [1, 1, 450]], 1000, 3000], []], ['generated mix 53', [[[3, 4, 300], [3, 5, 900]], 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 fixtureActualExpectedOutcome
floor ignored[['BAY', 2, 0, 3900]][]Failed
generated mix 9[['BAY', 2, 0, 3450], ['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
bay over[['BAY', 3, 0, 2700]][['BAY', 3, 0, 2700]]Passed
beam equal ok[][]Passed
level 4 full rating[][]Passed
generated mix 8[['BEAM', 1, 6, 1000], ['BEAM', 2, 4, 1900]][['BEAM', 1, 6, 1000], ['BEAM', 2, 4, 1900]]Passed

SHA-256 / e0571070d07a9fdcc474b255474fafed7df86458d6b8ef335fca72ada420fa33

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

Case digest / a3e2ece4a63816ddf95f3caaf7fbcc273d983a3d17f3555fd616be6543d002f6