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