{"abstract":"Weights just above a bracket edge are rated in the lower bracket.","category":"Shipping rate zone lookup","checks":8,"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].","evaluation_group":"w2-shipping-zone-rate-table","failed_approach":"Rounding to nearest still rates 2.01 lb as 2 lb.","family":"w2-shipping-zone-rate-table-weight-rounding","id":"FA-95416","implementations":{"attempt":{"sha256":"81b160778177e23d07a92d2ec51fabb0f23f1120d9f4e2ed00714c053ac59945","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(weight, zone, rows, over):\n    if zone < 1 or zone > 8:\n        return 'NO_RATE'\n    w = max(1, round(weight))\n    col = max(zone, 2) - 2\n    for max_lb, rates in rows:\n        if w <= max_lb:\n            r = rates[col]\n            return r if r is not None else 'NO_RATE'\n    last_lb, last_rates = rows[-1]\n    return last_rates[col] + (w - last_lb) * over[col]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['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 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], ['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], ['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'], ['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 6', [10, 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 14', [1, 7, [[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 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], ['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], ['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 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 18', [10.2, 7, [[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]], 2630], ['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 18', [10.2, 7, [[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]], 2630], ['generated mix 64', [2.01, 7, [[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]], 1650], ['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 21', [1.5, 7, [[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]], 1250], ['generated mix 29', [5.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]], 2800]], [['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 50', [2.01, 7, [[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]], 1650], ['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 31', [5, 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'], ['generated mix 39', [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 47', [10.2, 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 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'], ['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], ['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 44', [9, 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], ['generated mix 52', [9, 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]]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"80ee7d5d881b809740afb2f4697acea8fe6d593411af70ea86fbf31940db43e0","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(weight, zone, rows, over):\n    if zone < 1 or zone > 8:\n        return 'NO_RATE'\n    w = max(1, weight)\n    col = max(zone, 2) - 2\n    for max_lb, rates in rows:\n        if w <= max_lb:\n            r = rates[col]\n            return r if r is not None else 'NO_RATE'\n    last_lb, last_rates = rows[-1]\n    return last_rates[col] + (w - last_lb) * over[col]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['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 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], ['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], ['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'], ['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 6', [10, 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 14', [1, 7, [[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 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], ['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], ['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 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 18', [10.2, 7, [[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]], 2630], ['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 18', [10.2, 7, [[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]], 2630], ['generated mix 64', [2.01, 7, [[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]], 1650], ['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 21', [1.5, 7, [[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]], 1250], ['generated mix 29', [5.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]], 2800]], [['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 50', [2.01, 7, [[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]], 1650], ['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 31', [5, 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'], ['generated mix 39', [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 47', [10.2, 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 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'], ['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], ['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 44', [9, 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], ['generated mix 52', [9, 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]]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"fixed":{"sha256":"3d1700236b3cac21ed2df88e85869a166a4083ea9e40b0f8e22ccb1401f34065","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(weight, zone, rows, over):\n    if zone < 1 or zone > 8:\n        return 'NO_RATE'\n    w = max(1, math.ceil(weight))\n    col = max(zone, 2) - 2\n    for max_lb, rates in rows:\n        if w <= max_lb:\n            r = rates[col]\n            return r if r is not None else 'NO_RATE'\n    last_lb, last_rates = rows[-1]\n    return last_rates[col] + (w - last_lb) * over[col]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['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 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], ['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], ['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'], ['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 6', [10, 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 14', [1, 7, [[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 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], ['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], ['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 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 18', [10.2, 7, [[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]], 2630], ['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 18', [10.2, 7, [[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]], 2630], ['generated mix 64', [2.01, 7, [[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]], 1650], ['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 21', [1.5, 7, [[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]], 1250], ['generated mix 29', [5.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]], 2800]], [['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 50', [2.01, 7, [[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]], 1650], ['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 31', [5, 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'], ['generated mix 39', [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 47', [10.2, 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 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'], ['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], ['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 44', [9, 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], ['generated mix 52', [9, 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]]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"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.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"w2-shipping-zone-rate-table-weight-rounding","generated_at":"2026-09-29T14:52:13.474365+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Zone rate tables convert billable weight and zone into a base charge.","repair":"Round weight up to a whole pound before bracket lookup.","root_cause":"Billable weight is used without rounding up to a whole pound.","sha256":"4d9aa08d8e4b8496125570c9e4dbbfc38874ba076e281bb38db205f71197d369","title":"Rate table: fractional pounds not rounded up · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":40.146,"exit_code":1,"observations":[{"actual":1500,"check":"fraction over table","expected":1600,"passed":false},{"actual":1650,"check":"generated mix 15","expected":1760,"passed":false},{"actual":960,"check":"bracket edge","expected":960,"passed":true},{"actual":800,"check":"zone 1 as 2","expected":800,"passed":true},{"actual":"NO_RATE","check":"unavailable cell","expected":"NO_RATE","passed":true},{"actual":900,"check":"fraction up","expected":900,"passed":true},{"actual":2000,"check":"generated mix 6","expected":2000,"passed":true},{"actual":1100,"check":"generated mix 14","expected":1100,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"fraction over table\", \"actual\": 1500, \"expected\": 1600, \"passed\": false}, {\"check\": \"generated mix 15\", \"actual\": 1650, \"expected\": 1760, \"passed\": false}, {\"check\": \"bracket edge\", \"actual\": 960, \"expected\": 960, \"passed\": true}, {\"check\": \"zone 1 as 2\", \"actual\": 800, \"expected\": 800, \"passed\": true}, {\"check\": \"unavailable cell\", \"actual\": \"NO_RATE\", \"expected\": \"NO_RATE\", \"passed\": true}, {\"check\": \"fraction up\", \"actual\": 900, \"expected\": 900, \"passed\": true}, {\"check\": \"generated mix 6\", \"actual\": 2000, \"expected\": 2000, \"passed\": true}, {\"check\": \"generated mix 14\", \"actual\": 1100, \"expected\": 1100, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":45.7,"exit_code":1,"observations":[{"actual":1520.0,"check":"fraction over table","expected":1600,"passed":false},{"actual":1672.0,"check":"generated mix 15","expected":1760,"passed":false},{"actual":960,"check":"bracket edge","expected":960,"passed":true},{"actual":800,"check":"zone 1 as 2","expected":800,"passed":true},{"actual":"NO_RATE","check":"unavailable cell","expected":"NO_RATE","passed":true},{"actual":900,"check":"fraction up","expected":900,"passed":true},{"actual":2000,"check":"generated mix 6","expected":2000,"passed":true},{"actual":1100,"check":"generated mix 14","expected":1100,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"fraction over table\", \"actual\": 1520.0, \"expected\": 1600, \"passed\": false}, {\"check\": \"generated mix 15\", \"actual\": 1672.0, \"expected\": 1760, \"passed\": false}, {\"check\": \"bracket edge\", \"actual\": 960, \"expected\": 960, \"passed\": true}, {\"check\": \"zone 1 as 2\", \"actual\": 800, \"expected\": 800, \"passed\": true}, {\"check\": \"unavailable cell\", \"actual\": \"NO_RATE\", \"expected\": \"NO_RATE\", \"passed\": true}, {\"check\": \"fraction up\", \"actual\": 900, \"expected\": 900, \"passed\": true}, {\"check\": \"generated mix 6\", \"actual\": 2000, \"expected\": 2000, \"passed\": true}, {\"check\": \"generated mix 14\", \"actual\": 1100, \"expected\": 1100, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":42.838,"exit_code":0,"observations":[{"actual":1600,"check":"fraction over table","expected":1600,"passed":true},{"actual":1760,"check":"generated mix 15","expected":1760,"passed":true},{"actual":960,"check":"bracket edge","expected":960,"passed":true},{"actual":800,"check":"zone 1 as 2","expected":800,"passed":true},{"actual":"NO_RATE","check":"unavailable cell","expected":"NO_RATE","passed":true},{"actual":900,"check":"fraction up","expected":900,"passed":true},{"actual":2000,"check":"generated mix 6","expected":2000,"passed":true},{"actual":1100,"check":"generated mix 14","expected":1100,"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"fraction over table\", \"actual\": 1600, \"expected\": 1600, \"passed\": true}, {\"check\": \"generated mix 15\", \"actual\": 1760, \"expected\": 1760, \"passed\": true}, {\"check\": \"bracket edge\", \"actual\": 960, \"expected\": 960, \"passed\": true}, {\"check\": \"zone 1 as 2\", \"actual\": 800, \"expected\": 800, \"passed\": true}, {\"check\": \"unavailable cell\", \"actual\": \"NO_RATE\", \"expected\": \"NO_RATE\", \"passed\": true}, {\"check\": \"fraction up\", \"actual\": 900, \"expected\": 900, \"passed\": true}, {\"check\": \"generated mix 6\", \"actual\": 2000, \"expected\": 2000, \"passed\": true}, {\"check\": \"generated mix 14\", \"actual\": 1100, \"expected\": 1100, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}