FAILURE MAP
← Case archive

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

Rack audit: beam load keeps last pallet only · case 01

Two pallets on one beam pair that together exceed the rating pass the audit.

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

ROOT CAUSE

The beam total is overwritten by each pallet instead of accumulated.

VERIFIED REPAIR

Sum all pallet weights on the same bay and level.

Unsuccessful approach: Keeping the heaviest pallet still ignores the second pallet on the beam.

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)] = 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 = [[['beam over', [[[1, 1, 600], [1, 1, 500]], 1000, 5000], [['BEAM', 1, 1, 1100]]], ['generated mix 5', [[[1, 6, 300], [1, 2, 500], [3, 5, 1000], [3, 5, 1000], [2, 0, 300], [1, 1, 500], [3, 5, 1000]], 1500, 4000], [['BEAM', 3, 5, 3000]]], ['beam equal ok', [[[1, 1, 500], [1, 1, 500]], 1000, 5000], []], ['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]]], ['derated level 5', [[[1, 5, 950]], 1000, 5000], [['BEAM', 1, 5, 950]]], ['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]]]], [['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 31', [[[3, 6, 1000], [3, 6, 300]], 1000, 3000], [['BEAM', 3, 6, 1300]]], ['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], []]], [['beam over', [[[1, 1, 600], [1, 1, 500]], 1000, 5000], [['BEAM', 1, 1, 1100]]], ['generated mix 61', [[[2, 4, 300], [1, 0, 1000], [2, 4, 450], [2, 4, 450], [1, 4, 900], [2, 6, 900], [3, 4, 450]], 1000, 4000], [['BEAM', 2, 4, 1200]]], ['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], []], ['level 4 full rating', [[[1, 4, 950]], 1000, 5000], []], ['generated mix 22', [[[3, 5, 1000], [1, 6, 1000], [2, 5, 450], [2, 0, 300]], 1500, 3000], []], ['generated mix 30', [[[3, 6, 900], [2, 6, 1000], [2, 5, 450], [3, 0, 500], [1, 5, 900], [2, 6, 500], [3, 1, 450]], 1500, 2000], [['BEAM', 2, 6, 1500]]]], [['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 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]]], ['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 32', [[[1, 2, 500], [3, 6, 900], [2, 2, 300], [1, 6, 900], [1, 0, 900], [1, 5, 900], [2, 6, 450]], 1500, 4000], []], ['generated mix 41', [[[1, 4, 1000]], 1000, 4000], []], ['generated mix 49', [[[2, 4, 450], [1, 4, 500]], 1000, 4000], []]], [['beam over', [[[1, 1, 600], [1, 1, 500]], 1000, 5000], [['BEAM', 1, 1, 1100]]], ['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]]], ['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]]], ['derated level 5', [[[1, 5, 950]], 1000, 5000], [['BEAM', 1, 5, 950]]], ['floor ignored', [[[2, 0, 3000], [2, 1, 900]], 1000, 2000], []], ['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
beam over[][['BEAM', 1, 1, 1100]]Failed
generated mix 5[][['BEAM', 3, 5, 3000]]Failed
beam equal ok[][]Passed
level 4 full rating[][]Passed
bay over[['BAY', 3, 0, 2700]][['BAY', 3, 0, 2700]]Passed
derated level 5[['BEAM', 1, 5, 950]][['BEAM', 1, 5, 950]]Passed
floor ignored[][]Passed
generated mix 9[['BAY', 2, 0, 2450]][['BAY', 2, 0, 2450], ['BEAM', 2, 2, 2450]]Failed

SHA-256 / b308e525b79bb13152719b9674329cb16dfc331abfb6540f5eb1b0aefbe61cfb

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)] = max(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 = [[['beam over', [[[1, 1, 600], [1, 1, 500]], 1000, 5000], [['BEAM', 1, 1, 1100]]], ['generated mix 5', [[[1, 6, 300], [1, 2, 500], [3, 5, 1000], [3, 5, 1000], [2, 0, 300], [1, 1, 500], [3, 5, 1000]], 1500, 4000], [['BEAM', 3, 5, 3000]]], ['beam equal ok', [[[1, 1, 500], [1, 1, 500]], 1000, 5000], []], ['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]]], ['derated level 5', [[[1, 5, 950]], 1000, 5000], [['BEAM', 1, 5, 950]]], ['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]]]], [['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 31', [[[3, 6, 1000], [3, 6, 300]], 1000, 3000], [['BEAM', 3, 6, 1300]]], ['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], []]], [['beam over', [[[1, 1, 600], [1, 1, 500]], 1000, 5000], [['BEAM', 1, 1, 1100]]], ['generated mix 61', [[[2, 4, 300], [1, 0, 1000], [2, 4, 450], [2, 4, 450], [1, 4, 900], [2, 6, 900], [3, 4, 450]], 1000, 4000], [['BEAM', 2, 4, 1200]]], ['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], []], ['level 4 full rating', [[[1, 4, 950]], 1000, 5000], []], ['generated mix 22', [[[3, 5, 1000], [1, 6, 1000], [2, 5, 450], [2, 0, 300]], 1500, 3000], []], ['generated mix 30', [[[3, 6, 900], [2, 6, 1000], [2, 5, 450], [3, 0, 500], [1, 5, 900], [2, 6, 500], [3, 1, 450]], 1500, 2000], [['BEAM', 2, 6, 1500]]]], [['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 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]]], ['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 32', [[[1, 2, 500], [3, 6, 900], [2, 2, 300], [1, 6, 900], [1, 0, 900], [1, 5, 900], [2, 6, 450]], 1500, 4000], []], ['generated mix 41', [[[1, 4, 1000]], 1000, 4000], []], ['generated mix 49', [[[2, 4, 450], [1, 4, 500]], 1000, 4000], []]], [['beam over', [[[1, 1, 600], [1, 1, 500]], 1000, 5000], [['BEAM', 1, 1, 1100]]], ['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]]], ['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]]], ['derated level 5', [[[1, 5, 950]], 1000, 5000], [['BEAM', 1, 5, 950]]], ['floor ignored', [[[2, 0, 3000], [2, 1, 900]], 1000, 2000], []], ['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
beam over[][['BEAM', 1, 1, 1100]]Failed
generated mix 5[][['BEAM', 3, 5, 3000]]Failed
beam equal ok[][]Passed
level 4 full rating[][]Passed
bay over[['BAY', 3, 0, 2700]][['BAY', 3, 0, 2700]]Passed
derated level 5[['BEAM', 1, 5, 950]][['BEAM', 1, 5, 950]]Passed
floor ignored[][]Passed
generated mix 9[['BAY', 2, 0, 2450]][['BAY', 2, 0, 2450], ['BEAM', 2, 2, 2450]]Failed

SHA-256 / f2721c5b9c84b4780a758467ab891e516ab938c852f4da51e30651fcc5232221

3 / The verified repair

Exit 0
"""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 = [[['beam over', [[[1, 1, 600], [1, 1, 500]], 1000, 5000], [['BEAM', 1, 1, 1100]]], ['generated mix 5', [[[1, 6, 300], [1, 2, 500], [3, 5, 1000], [3, 5, 1000], [2, 0, 300], [1, 1, 500], [3, 5, 1000]], 1500, 4000], [['BEAM', 3, 5, 3000]]], ['beam equal ok', [[[1, 1, 500], [1, 1, 500]], 1000, 5000], []], ['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]]], ['derated level 5', [[[1, 5, 950]], 1000, 5000], [['BEAM', 1, 5, 950]]], ['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]]]], [['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 31', [[[3, 6, 1000], [3, 6, 300]], 1000, 3000], [['BEAM', 3, 6, 1300]]], ['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], []]], [['beam over', [[[1, 1, 600], [1, 1, 500]], 1000, 5000], [['BEAM', 1, 1, 1100]]], ['generated mix 61', [[[2, 4, 300], [1, 0, 1000], [2, 4, 450], [2, 4, 450], [1, 4, 900], [2, 6, 900], [3, 4, 450]], 1000, 4000], [['BEAM', 2, 4, 1200]]], ['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], []], ['level 4 full rating', [[[1, 4, 950]], 1000, 5000], []], ['generated mix 22', [[[3, 5, 1000], [1, 6, 1000], [2, 5, 450], [2, 0, 300]], 1500, 3000], []], ['generated mix 30', [[[3, 6, 900], [2, 6, 1000], [2, 5, 450], [3, 0, 500], [1, 5, 900], [2, 6, 500], [3, 1, 450]], 1500, 2000], [['BEAM', 2, 6, 1500]]]], [['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 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]]], ['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 32', [[[1, 2, 500], [3, 6, 900], [2, 2, 300], [1, 6, 900], [1, 0, 900], [1, 5, 900], [2, 6, 450]], 1500, 4000], []], ['generated mix 41', [[[1, 4, 1000]], 1000, 4000], []], ['generated mix 49', [[[2, 4, 450], [1, 4, 500]], 1000, 4000], []]], [['beam over', [[[1, 1, 600], [1, 1, 500]], 1000, 5000], [['BEAM', 1, 1, 1100]]], ['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]]], ['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]]], ['derated level 5', [[[1, 5, 950]], 1000, 5000], [['BEAM', 1, 5, 950]]], ['floor ignored', [[[2, 0, 3000], [2, 1, 900]], 1000, 2000], []], ['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
beam over[['BEAM', 1, 1, 1100]][['BEAM', 1, 1, 1100]]Passed
generated mix 5[['BEAM', 3, 5, 3000]][['BEAM', 3, 5, 3000]]Passed
beam equal ok[][]Passed
level 4 full rating[][]Passed
bay over[['BAY', 3, 0, 2700]][['BAY', 3, 0, 2700]]Passed
derated level 5[['BEAM', 1, 5, 950]][['BEAM', 1, 5, 950]]Passed
floor ignored[][]Passed
generated mix 9[['BAY', 2, 0, 2450], ['BEAM', 2, 2, 2450]][['BAY', 2, 0, 2450], ['BEAM', 2, 2, 2450]]Passed

SHA-256 / 60f7bf1f7b3ef94e74b41abe12c50dfa9dcc0ce217cefd2a3ceb864ae2319d2a

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

Case digest / c0d3473348f9bd6b9957e0817c334c902120bfa1b8056451a03bb039ea639cf6