FA-95821 / Shipping rate zone lookup / Open access
LTL breaks: cwt charge truncated · case 01
Charges are a cent low on fractional hundredweight results.
ROOT CAUSE
The actual-weight charge is floor-divided.
THE FAILURE
The actual-weight charge is floor-divided.
Unsuccessful approach: Rounding to nearest still drops fractions below one half.
Case contract
Weight breaks 0, 500, 1000, 2000, 5000, 10000 lb with cents-per-cwt rates for the lane. Weight rounds up to a whole lb (min 1) and is rated at its break: ceil(w * rate / 100). Deficit rating: if billing any heavier break minimum at that break rate is strictly cheaper, use the cheapest such. Charge is at least min_charge. Return [charge, break index, rated weight].
Why this case matters
LTL lane rates use weight breaks with deficit weight rating.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(weight, rates, min_charge):
BREAKS = [0, 500, 1000, 2000, 5000, 10000]
w = max(1, math.ceil(weight))
idx = max(i for i, b in enumerate(BREAKS) if w >= b)
cost = w * rates[idx] // 100
best = [cost, idx, w]
for j in range(idx + 1, len(BREAKS)):
alt = BREAKS[j] * rates[j] // 100
if alt < best[0]:
best = [alt, j, BREAKS[j]]
return [max(best[0], min_charge), best[1], best[2]]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['generated mix 4', [333.3, [4237, 3611, 3044, 2517, 2150, 1833], 9000], [14152, 0, 334]], ['generated mix 45', [800.5, [4237, 3611, 3044, 2517, 2150, 1833], 9000], [28925, 1, 801]], ['deficit to 500', [450, [4200, 3600, 3000, 2500, 2100, 1800], 9000], [18000, 1, 500]], ['minimum', [100, [4200, 3600, 3000, 2500, 2100, 1800], 9000], [9000, 0, 100]], ['deficit to 1000', [850, [4200, 3600, 3000, 2500, 2100, 1800], 9000], [30000, 2, 1000]], ['skip a break', [400, [5000, 4900, 1000, 900, 800, 700], 0], [10000, 2, 1000]], ['on break', [500, [4200, 3600, 3000, 2500, 2100, 1800], 9000], [18000, 1, 500]], ['generated mix 7', [480, [4200, 3600, 3000, 2500, 2100, 1800], 0], [18000, 1, 500]]], [['generated mix 48', [333.3, [4237, 3611, 3044, 2517, 2150, 1833], 0], [14152, 0, 334]], ['generated mix 6', [800.5, [4237, 3611, 3044, 2517, 2150, 1833], 20000], [28925, 1, 801]], ['fraction', [800.5, [4200, 3600, 3000, 2500, 2100, 1800], 9000], [28836, 1, 801]], ['tie keeps actual', [450, [4000, 3600, 3000, 2500, 2100, 1800], 9000], [18000, 0, 450]], ['deficit to 500', [450, [4200, 3600, 3000, 2500, 2100, 1800], 9000], [18000, 1, 500]], ['minimum', [100, [4200, 3600, 3000, 2500, 2100, 1800], 9000], [9000, 0, 100]], ['generated mix 10', [9000, [4200, 3600, 3000, 2500, 2100, 1800], 20000], [180000, 5, 10000]], ['generated mix 18', [850, [5000, 4900, 1000, 900, 800, 700], 9000], [10000, 2, 1000]]], [['generated mix 45', [800.5, [4237, 3611, 3044, 2517, 2150, 1833], 9000], [28925, 1, 801]], ['skip a break', [400, [5000, 4900, 1000, 900, 800, 700], 0], [10000, 2, 1000]], ['on break', [500, [4200, 3600, 3000, 2500, 2100, 1800], 9000], [18000, 1, 500]], ['fraction', [800.5, [4200, 3600, 3000, 2500, 2100, 1800], 9000], [28836, 1, 801]], ['tie keeps actual', [450, [4000, 3600, 3000, 2500, 2100, 1800], 9000], [18000, 0, 450]], ['generated mix 20', [480, [4200, 3600, 3000, 2500, 2100, 1800], 0], [18000, 1, 500]], ['generated mix 28', [100, [4200, 3600, 3000, 2500, 2100, 1800], 20000], [20000, 0, 100]], ['generated mix 36', [500, [4200, 3600, 3000, 2500, 2100, 1800], 20000], [20000, 1, 500]]], [['generated mix 6', [800.5, [4237, 3611, 3044, 2517, 2150, 1833], 20000], [28925, 1, 801]], ['minimum', [100, [4200, 3600, 3000, 2500, 2100, 1800], 9000], [9000, 0, 100]], ['deficit to 1000', [850, [4200, 3600, 3000, 2500, 2100, 1800], 9000], [30000, 2, 1000]], ['skip a break', [400, [5000, 4900, 1000, 900, 800, 700], 0], [10000, 2, 1000]], ['on break', [500, [4200, 3600, 3000, 2500, 2100, 1800], 9000], [18000, 1, 500]], ['generated mix 32', [850, [5000, 4900, 1000, 900, 800, 700], 9000], [10000, 2, 1000]], ['generated mix 40', [9000, [4237, 3611, 3044, 2517, 2150, 1833], 0], [183300, 5, 10000]], ['generated mix 48', [333.3, [4237, 3611, 3044, 2517, 2150, 1833], 0], [14152, 0, 334]]], [['generated mix 4', [333.3, [4237, 3611, 3044, 2517, 2150, 1833], 9000], [14152, 0, 334]], ['generated mix 45', [800.5, [4237, 3611, 3044, 2517, 2150, 1833], 9000], [28925, 1, 801]], ['tie keeps actual', [450, [4000, 3600, 3000, 2500, 2100, 1800], 9000], [18000, 0, 450]], ['deficit to 500', [450, [4200, 3600, 3000, 2500, 2100, 1800], 9000], [18000, 1, 500]], ['minimum', [100, [4200, 3600, 3000, 2500, 2100, 1800], 9000], [9000, 0, 100]], ['deficit to 1000', [850, [4200, 3600, 3000, 2500, 2100, 1800], 9000], [30000, 2, 1000]], ['generated mix 43', [850, [5000, 4900, 1000, 900, 800, 700], 20000], [20000, 2, 1000]], ['generated mix 52', [850, [4200, 3600, 3000, 2500, 2100, 1800], 20000], [30000, 2, 1000]]]]
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 4 | [14151, 0, 334] | [14152, 0, 334] | Failed |
| generated mix 45 | [28924, 1, 801] | [28925, 1, 801] | Failed |
| deficit to 500 | [18000, 1, 500] | [18000, 1, 500] | Passed |
| minimum | [9000, 0, 100] | [9000, 0, 100] | Passed |
| deficit to 1000 | [30000, 2, 1000] | [30000, 2, 1000] | Passed |
| skip a break | [10000, 2, 1000] | [10000, 2, 1000] | Passed |
| on break | [18000, 1, 500] | [18000, 1, 500] | Passed |
| generated mix 7 | [18000, 1, 500] | [18000, 1, 500] | Passed |
SHA-256 / 0db3808b50b61f481041e68df57c1227da2e3b9e5638f0b22c0ab328ed802acd
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(weight, rates, min_charge):
BREAKS = [0, 500, 1000, 2000, 5000, 10000]
w = max(1, math.ceil(weight))
idx = max(i for i, b in enumerate(BREAKS) if w >= b)
cost = round(w * rates[idx] / 100)
best = [cost, idx, w]
for j in range(idx + 1, len(BREAKS)):
alt = BREAKS[j] * rates[j] // 100
if alt < best[0]:
best = [alt, j, BREAKS[j]]
return [max(best[0], min_charge), best[1], best[2]]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['generated mix 4', [333.3, [4237, 3611, 3044, 2517, 2150, 1833], 9000], [14152, 0, 334]], ['generated mix 45', [800.5, [4237, 3611, 3044, 2517, 2150, 1833], 9000], [28925, 1, 801]], ['deficit to 500', [450, [4200, 3600, 3000, 2500, 2100, 1800], 9000], [18000, 1, 500]], ['minimum', [100, [4200, 3600, 3000, 2500, 2100, 1800], 9000], [9000, 0, 100]], ['deficit to 1000', [850, [4200, 3600, 3000, 2500, 2100, 1800], 9000], [30000, 2, 1000]], ['skip a break', [400, [5000, 4900, 1000, 900, 800, 700], 0], [10000, 2, 1000]], ['on break', [500, [4200, 3600, 3000, 2500, 2100, 1800], 9000], [18000, 1, 500]], ['generated mix 7', [480, [4200, 3600, 3000, 2500, 2100, 1800], 0], [18000, 1, 500]]], [['generated mix 48', [333.3, [4237, 3611, 3044, 2517, 2150, 1833], 0], [14152, 0, 334]], ['generated mix 6', [800.5, [4237, 3611, 3044, 2517, 2150, 1833], 20000], [28925, 1, 801]], ['fraction', [800.5, [4200, 3600, 3000, 2500, 2100, 1800], 9000], [28836, 1, 801]], ['tie keeps actual', [450, [4000, 3600, 3000, 2500, 2100, 1800], 9000], [18000, 0, 450]], ['deficit to 500', [450, [4200, 3600, 3000, 2500, 2100, 1800], 9000], [18000, 1, 500]], ['minimum', [100, [4200, 3600, 3000, 2500, 2100, 1800], 9000], [9000, 0, 100]], ['generated mix 10', [9000, [4200, 3600, 3000, 2500, 2100, 1800], 20000], [180000, 5, 10000]], ['generated mix 18', [850, [5000, 4900, 1000, 900, 800, 700], 9000], [10000, 2, 1000]]], [['generated mix 45', [800.5, [4237, 3611, 3044, 2517, 2150, 1833], 9000], [28925, 1, 801]], ['skip a break', [400, [5000, 4900, 1000, 900, 800, 700], 0], [10000, 2, 1000]], ['on break', [500, [4200, 3600, 3000, 2500, 2100, 1800], 9000], [18000, 1, 500]], ['fraction', [800.5, [4200, 3600, 3000, 2500, 2100, 1800], 9000], [28836, 1, 801]], ['tie keeps actual', [450, [4000, 3600, 3000, 2500, 2100, 1800], 9000], [18000, 0, 450]], ['generated mix 20', [480, [4200, 3600, 3000, 2500, 2100, 1800], 0], [18000, 1, 500]], ['generated mix 28', [100, [4200, 3600, 3000, 2500, 2100, 1800], 20000], [20000, 0, 100]], ['generated mix 36', [500, [4200, 3600, 3000, 2500, 2100, 1800], 20000], [20000, 1, 500]]], [['generated mix 6', [800.5, [4237, 3611, 3044, 2517, 2150, 1833], 20000], [28925, 1, 801]], ['minimum', [100, [4200, 3600, 3000, 2500, 2100, 1800], 9000], [9000, 0, 100]], ['deficit to 1000', [850, [4200, 3600, 3000, 2500, 2100, 1800], 9000], [30000, 2, 1000]], ['skip a break', [400, [5000, 4900, 1000, 900, 800, 700], 0], [10000, 2, 1000]], ['on break', [500, [4200, 3600, 3000, 2500, 2100, 1800], 9000], [18000, 1, 500]], ['generated mix 32', [850, [5000, 4900, 1000, 900, 800, 700], 9000], [10000, 2, 1000]], ['generated mix 40', [9000, [4237, 3611, 3044, 2517, 2150, 1833], 0], [183300, 5, 10000]], ['generated mix 48', [333.3, [4237, 3611, 3044, 2517, 2150, 1833], 0], [14152, 0, 334]]], [['generated mix 4', [333.3, [4237, 3611, 3044, 2517, 2150, 1833], 9000], [14152, 0, 334]], ['generated mix 45', [800.5, [4237, 3611, 3044, 2517, 2150, 1833], 9000], [28925, 1, 801]], ['tie keeps actual', [450, [4000, 3600, 3000, 2500, 2100, 1800], 9000], [18000, 0, 450]], ['deficit to 500', [450, [4200, 3600, 3000, 2500, 2100, 1800], 9000], [18000, 1, 500]], ['minimum', [100, [4200, 3600, 3000, 2500, 2100, 1800], 9000], [9000, 0, 100]], ['deficit to 1000', [850, [4200, 3600, 3000, 2500, 2100, 1800], 9000], [30000, 2, 1000]], ['generated mix 43', [850, [5000, 4900, 1000, 900, 800, 700], 20000], [20000, 2, 1000]], ['generated mix 52', [850, [4200, 3600, 3000, 2500, 2100, 1800], 20000], [30000, 2, 1000]]]]
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 4 | [14152, 0, 334] | [14152, 0, 334] | Passed |
| generated mix 45 | [28924, 1, 801] | [28925, 1, 801] | Failed |
| deficit to 500 | [18000, 1, 500] | [18000, 1, 500] | Passed |
| minimum | [9000, 0, 100] | [9000, 0, 100] | Passed |
| deficit to 1000 | [30000, 2, 1000] | [30000, 2, 1000] | Passed |
| skip a break | [10000, 2, 1000] | [10000, 2, 1000] | Passed |
| on break | [18000, 1, 500] | [18000, 1, 500] | Passed |
| generated mix 7 | [18000, 1, 500] | [18000, 1, 500] | Passed |
SHA-256 / f671193eee06657ab8fd9710b34e7215e0e82c07c1156eb23f965ac7fb2f7bf1
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 break table; no freight class or accessorials. 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:17.147110+00:00.
Case digest / f5d6a15afcc94023f873095766d246e4aa3317a6f5dac4fcf8dc0bb7072ed649