FAILURE MAP
← Case archive

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

Rack audit: violation report unsorted · case 01

Violation rows appear in dictionary insertion order, so BAY and BEAM rows interleave unpredictably.

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

ROOT CAUSE

The report is never sorted.

VERIFIED REPAIR

Sort violation rows by type, bay, level.

Unsuccessful approach: Sorting by bay only keeps BEAM rows ahead of BAY rows within a bay.

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])
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['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 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], []], ['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 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 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]]], ['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 10', [[[2, 4, 300], [1, 0, 900], [3, 2, 1000], [3, 5, 1000], [1, 0, 900]], 1500, 4000], []], ['generated mix 18', [[[3, 1, 300], [1, 2, 1000], [3, 2, 900], [3, 1, 500]], 1000, 2000], []], ['generated mix 27', [[[1, 1, 500], [2, 6, 450]], 1000, 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 45', [[[3, 6, 300], [2, 6, 300], [1, 4, 500], [3, 1, 900], [1, 0, 300], [1, 1, 450]], 1000, 3000], []]], [['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 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]]], ['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], []]], [['generated mix 56', [[[2, 0, 500], [1, 2, 1000], [1, 2, 450], [3, 4, 500], [1, 6, 450], [1, 4, 1000]], 1000, 2000], [['BAY', 1, 0, 2900], ['BEAM', 1, 2, 1450]]], ['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 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 fixtureActualExpectedOutcome
generated mix 8[['BEAM', 2, 4, 1900], ['BEAM', 1, 6, 1000]][['BEAM', 1, 6, 1000], ['BEAM', 2, 4, 1900]]Failed
generated mix 21[['BEAM', 1, 6, 1350], ['BAY', 1, 0, 2150]][['BAY', 1, 0, 2150], ['BEAM', 1, 6, 1350]]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 / bc94d88a6126b006e5d12292fb0e2db9a2da416aad4f048c39c2053197e75437

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 > bay_cap:
            out.append(['BAY', b, 0, t])
    out.sort(key=lambda v: v[1])
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['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 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], []], ['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 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 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]]], ['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 10', [[[2, 4, 300], [1, 0, 900], [3, 2, 1000], [3, 5, 1000], [1, 0, 900]], 1500, 4000], []], ['generated mix 18', [[[3, 1, 300], [1, 2, 1000], [3, 2, 900], [3, 1, 500]], 1000, 2000], []], ['generated mix 27', [[[1, 1, 500], [2, 6, 450]], 1000, 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 45', [[[3, 6, 300], [2, 6, 300], [1, 4, 500], [3, 1, 900], [1, 0, 300], [1, 1, 450]], 1000, 3000], []]], [['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 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]]], ['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], []]], [['generated mix 56', [[[2, 0, 500], [1, 2, 1000], [1, 2, 450], [3, 4, 500], [1, 6, 450], [1, 4, 1000]], 1000, 2000], [['BAY', 1, 0, 2900], ['BEAM', 1, 2, 1450]]], ['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 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 fixtureActualExpectedOutcome
generated mix 8[['BEAM', 1, 6, 1000], ['BEAM', 2, 4, 1900]][['BEAM', 1, 6, 1000], ['BEAM', 2, 4, 1900]]Passed
generated mix 21[['BEAM', 1, 6, 1350], ['BAY', 1, 0, 2150]][['BAY', 1, 0, 2150], ['BEAM', 1, 6, 1350]]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 / 0ceb5ee599c5330a361e5d10b627f02d803cd713bf0c4282cfcbadf67f6cdef1

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 = [[['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 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], []], ['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 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 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]]], ['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 10', [[[2, 4, 300], [1, 0, 900], [3, 2, 1000], [3, 5, 1000], [1, 0, 900]], 1500, 4000], []], ['generated mix 18', [[[3, 1, 300], [1, 2, 1000], [3, 2, 900], [3, 1, 500]], 1000, 2000], []], ['generated mix 27', [[[1, 1, 500], [2, 6, 450]], 1000, 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 45', [[[3, 6, 300], [2, 6, 300], [1, 4, 500], [3, 1, 900], [1, 0, 300], [1, 1, 450]], 1000, 3000], []]], [['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 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]]], ['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], []]], [['generated mix 56', [[[2, 0, 500], [1, 2, 1000], [1, 2, 450], [3, 4, 500], [1, 6, 450], [1, 4, 1000]], 1000, 2000], [['BAY', 1, 0, 2900], ['BEAM', 1, 2, 1450]]], ['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 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 fixtureActualExpectedOutcome
generated mix 8[['BEAM', 1, 6, 1000], ['BEAM', 2, 4, 1900]][['BEAM', 1, 6, 1000], ['BEAM', 2, 4, 1900]]Passed
generated mix 21[['BAY', 1, 0, 2150], ['BEAM', 1, 6, 1350]][['BAY', 1, 0, 2150], ['BEAM', 1, 6, 1350]]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 / ee749e6563259f1ce3e440bd25f055c5eee94105a184df7d55091b337f0a35db

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

Case digest / a8668427df4dbf96551ad867c74ce8b6d045cda9526870077089e099dc394acc