FAILURE MAP
← Case archive

FA-95421 / Shipping rate zone lookup / Open access

Rate table: unavailable cell returns null rate · case 01

A zone and weight that the service does not offer returns a null price instead of NO_RATE.

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

ROOT CAUSE

Empty table cells are returned as-is.

VERIFIED REPAIR

Return NO_RATE when the selected cell is empty.

Unsuccessful approach: Returning 0 makes an unavailable service look free.

Case contract

rows [[max_lb, [cents for zones 2..8]]] ascending; weight is rounded up to whole lb (minimum 1) and uses the first row with max_lb >= weight. Zone 1 is billed as zone 2; zones outside 1-8 -> "NO_RATE"; a None cell -> "NO_RATE". Above the last row: last row rate + (lb over last max) * over[zone].

Why this case matters

Zone rate tables convert billable weight and zone into a base charge.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(weight, zone, rows, over):
    if zone < 1 or zone > 8:
        return 'NO_RATE'
    w = max(1, math.ceil(weight))
    col = max(zone, 2) - 2
    for max_lb, rates in rows:
        if w <= max_lb:
            r = rates[col]
            return r
    last_lb, last_rates = rows[-1]
    return last_rates[col] + (w - last_lb) * over[col]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['unavailable cell', [4, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['generated mix 4', [5, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['bracket edge', [2, 3, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 960], ['zone 1 as 2', [1, 1, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 800], ['fraction over table', [10.2, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1600], ['fraction up', [1.5, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 900], ['generated mix 7', [0.3, 1, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 800], ['generated mix 15', [10.2, 3, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1760]], [['generated mix 26', [2.01, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['generated mix 23', [5, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['over table', [12, 5, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 2280], ['unavailable cell', [4, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['bracket edge', [2, 3, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 960], ['zone 1 as 2', [1, 1, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 800], ['generated mix 9', [9, 5, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 2000], ['generated mix 17', [9, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1500]], [['generated mix 23', [5, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['generated mix 26', [2.01, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['bad zone', [4, 9, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['fraction up', [1.5, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 900], ['over table', [12, 5, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 2280], ['unavailable cell', [4, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['generated mix 20', [11, 3, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1760], ['generated mix 30', [9, 0, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE']], [['generated mix 4', [5, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['unavailable cell', [4, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['over table', [12, 5, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 2280], ['bad zone', [4, 9, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['fraction up', [1.5, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 900], ['generated mix 32', [3, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1100], ['generated mix 40', [1.5, 1, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 900], ['generated mix 48', [5.5, 1, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1500]], [['unavailable cell', [4, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['generated mix 4', [5, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['bracket edge', [2, 3, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 960], ['zone 1 as 2', [1, 1, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 800], ['fraction over table', [10.2, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1600], ['generated mix 43', [0.3, 1, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 800], ['generated mix 51', [2, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 900], ['generated mix 59', [2, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 900]]]
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
unavailable cellNoneNO_RATEFailed
generated mix 4NoneNO_RATEFailed
bracket edge960960Passed
zone 1 as 2800800Passed
fraction over table16001600Passed
fraction up900900Passed
generated mix 7800800Passed
generated mix 1517601760Passed

SHA-256 / 1f9b172bd0719013be3b66c11e2d5875e36e7669d844c5d959a9eb329bf4e20a

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(weight, zone, rows, over):
    if zone < 1 or zone > 8:
        return 'NO_RATE'
    w = max(1, math.ceil(weight))
    col = max(zone, 2) - 2
    for max_lb, rates in rows:
        if w <= max_lb:
            r = rates[col]
            return r if r is not None else 0
    last_lb, last_rates = rows[-1]
    return last_rates[col] + (w - last_lb) * over[col]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['unavailable cell', [4, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['generated mix 4', [5, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['bracket edge', [2, 3, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 960], ['zone 1 as 2', [1, 1, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 800], ['fraction over table', [10.2, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1600], ['fraction up', [1.5, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 900], ['generated mix 7', [0.3, 1, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 800], ['generated mix 15', [10.2, 3, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1760]], [['generated mix 26', [2.01, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['generated mix 23', [5, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['over table', [12, 5, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 2280], ['unavailable cell', [4, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['bracket edge', [2, 3, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 960], ['zone 1 as 2', [1, 1, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 800], ['generated mix 9', [9, 5, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 2000], ['generated mix 17', [9, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1500]], [['generated mix 23', [5, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['generated mix 26', [2.01, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['bad zone', [4, 9, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['fraction up', [1.5, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 900], ['over table', [12, 5, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 2280], ['unavailable cell', [4, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['generated mix 20', [11, 3, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1760], ['generated mix 30', [9, 0, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE']], [['generated mix 4', [5, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['unavailable cell', [4, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['over table', [12, 5, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 2280], ['bad zone', [4, 9, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['fraction up', [1.5, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 900], ['generated mix 32', [3, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1100], ['generated mix 40', [1.5, 1, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 900], ['generated mix 48', [5.5, 1, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1500]], [['unavailable cell', [4, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['generated mix 4', [5, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['bracket edge', [2, 3, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 960], ['zone 1 as 2', [1, 1, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 800], ['fraction over table', [10.2, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1600], ['generated mix 43', [0.3, 1, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 800], ['generated mix 51', [2, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 900], ['generated mix 59', [2, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 900]]]
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
unavailable cell0NO_RATEFailed
generated mix 40NO_RATEFailed
bracket edge960960Passed
zone 1 as 2800800Passed
fraction over table16001600Passed
fraction up900900Passed
generated mix 7800800Passed
generated mix 1517601760Passed

SHA-256 / ee495893846f1cabbe202f30af8ec0719c019a468b9120a52d4a04d7286ad2d4

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(weight, zone, rows, over):
    if zone < 1 or zone > 8:
        return 'NO_RATE'
    w = max(1, math.ceil(weight))
    col = max(zone, 2) - 2
    for max_lb, rates in rows:
        if w <= max_lb:
            r = rates[col]
            return r if r is not None else 'NO_RATE'
    last_lb, last_rates = rows[-1]
    return last_rates[col] + (w - last_lb) * over[col]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['unavailable cell', [4, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['generated mix 4', [5, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['bracket edge', [2, 3, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 960], ['zone 1 as 2', [1, 1, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 800], ['fraction over table', [10.2, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1600], ['fraction up', [1.5, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 900], ['generated mix 7', [0.3, 1, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 800], ['generated mix 15', [10.2, 3, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1760]], [['generated mix 26', [2.01, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['generated mix 23', [5, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['over table', [12, 5, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 2280], ['unavailable cell', [4, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['bracket edge', [2, 3, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 960], ['zone 1 as 2', [1, 1, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 800], ['generated mix 9', [9, 5, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 2000], ['generated mix 17', [9, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1500]], [['generated mix 23', [5, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['generated mix 26', [2.01, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['bad zone', [4, 9, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['fraction up', [1.5, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 900], ['over table', [12, 5, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 2280], ['unavailable cell', [4, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['generated mix 20', [11, 3, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1760], ['generated mix 30', [9, 0, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE']], [['generated mix 4', [5, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['unavailable cell', [4, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['over table', [12, 5, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 2280], ['bad zone', [4, 9, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['fraction up', [1.5, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 900], ['generated mix 32', [3, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1100], ['generated mix 40', [1.5, 1, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 900], ['generated mix 48', [5.5, 1, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1500]], [['unavailable cell', [4, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['generated mix 4', [5, 8, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 'NO_RATE'], ['bracket edge', [2, 3, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 960], ['zone 1 as 2', [1, 1, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 800], ['fraction over table', [10.2, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 1600], ['generated mix 43', [0.3, 1, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 800], ['generated mix 51', [2, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 900], ['generated mix 59', [2, 2, [[1, [800, 850, 900, 950, 1000, 1100, 1200]], [2, [900, 960, 1020, 1080, 1140, 1250, 1400]], [5, [1100, 1200, 1300, 1400, 1500, 1650, None]], [10, [1500, 1650, 1800, 2000, 2200, 2450, 2800]]], [100, 110, 120, 140, 160, 180, 210]], 900]]]
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
unavailable cellNO_RATENO_RATEPassed
generated mix 4NO_RATENO_RATEPassed
bracket edge960960Passed
zone 1 as 2800800Passed
fraction over table16001600Passed
fraction up900900Passed
generated mix 7800800Passed
generated mix 1517601760Passed

SHA-256 / bb73d600be3c4e15174238a1d87863d8e1cefed3a17d18e19729121863e95202

Verification & scope

Stipulated table layout and increments. 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:13.599035+00:00.

Case digest / 550884f09b9a0e271182d71f7fb3cd50c929f5088531184c0eb500d71ffc7413