{"abstract":"Heat waves add implausibly many degree days.","category":"Weather index computation","checks":8,"contract":"days are [day_of_year, tmax_F, tmin_F]; only days with day_of_year >= biofix count. Each day clamps tmax to at most 86 and at least 50, tmin to at least 50 and at most 86, and adds (tmax+tmin)/2 - 50. Return [total rounded to 0.1, number of counted days].","evaluation_group":"w2-weather_index_computation-growing-degree-days","failed_approach":"Capping the daily mean instead of tmax still credits hot afternoons with warm nights.","family":"w2-weather_index_computation-growing-degree-days-upper-temperature-cutoff","id":"FA-70996","implementations":{"attempt":{"sha256":"dbd14e9da9b88405bb530c08d885f43dbd8927f9e186a16c52e9ec4352eb15a1","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(days, biofix):\n    total = 0.0\n    counted = 0\n    for doy, hi, lo in days:\n        if doy < biofix:\n            continue\n        hi = float(hi)\n        hi = max(hi, 50.0)\n        lo = max(lo, 50.0)\n        lo = min(lo, 86.0)\n        gdd = min((hi + lo) / 2, 86.0) - 50.0\n        total += gdd\n        counted += 1\n    return [round(total, 1), counted]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['season 0 biofix 91', [[[90, 53, 39], [91, 89, 59], [92, 63, 41], [93, 78, 55], [94, 65, 52], [95, 87, 62], [96, 54, 37], [97, 39, 37]], 91], [80.0, 7]], ['season 1 biofix 93', [[[91, 94, 67], [92, 71, 42], [93, 93, 64], [94, 66, 52], [95, 54, 33], [96, 68, 62], [97, 75, 68], [98, 63, 48]], 93], [79.0, 6]], ['season 2 biofix 95', [[[92, 60, 39], [93, 80, 69], [94, 57, 40], [95, 91, 72], [96, 53, 41], [97, 67, 48], [98, 75, 57], [99, 68, 67]], 95], [72.5, 5]], ['season 3 biofix 94', [[[93, 88, 59], [94, 65, 43], [95, 63, 34], [96, 91, 68], [97, 57, 37], [98, 68, 54], [99, 78, 51], [100, 52, 37]], 94], [71.0, 7]], ['season 4 biofix 96', [[[94, 58, 31], [95, 65, 42], [96, 56, 44], [97, 51, 51], [98, 63, 38], [99, 60, 31], [100, 43, 40], [101, 42, 39]], 96], [15.5, 6]], ['season 5 biofix 98', [[[95, 78, 67], [96, 92, 67], [97, 66, 36], [98, 39, 30], [99, 87, 63], [100, 76, 66], [101, 53, 48], [102, 57, 52]], 98], [51.5, 5]], ['season 6 biofix 97', [[[96, 60, 60], [97, 95, 65], [98, 89, 63], [99, 61, 60], [100, 71, 46], [101, 40, 34], [102, 72, 61], [103, 71, 57]], 97], [101.5, 7]], ['season 7 biofix 99', [[[97, 64, 45], [98, 91, 67], [99, 85, 72], [100, 84, 60], [101, 79, 49], [102, 51, 38], [103, 88, 64], [104, 45, 37]], 99], [90.5, 6]]], [['season 3 biofix 94', [[[93, 88, 59], [94, 65, 43], [95, 63, 34], [96, 91, 68], [97, 57, 37], [98, 68, 54], [99, 78, 51], [100, 52, 37]], 94], [71.0, 7]], ['season 7 biofix 99', [[[97, 64, 45], [98, 91, 67], [99, 85, 72], [100, 84, 60], [101, 79, 49], [102, 51, 38], [103, 88, 64], [104, 45, 37]], 99], [90.5, 6]], ['season 8 biofix 101', [[[98, 60, 38], [99, 63, 35], [100, 84, 72], [101, 59, 47], [102, 44, 42], [103, 55, 49], [104, 47, 41], [105, 56, 50]], 101], [10.0, 5]], ['season 9 biofix 100', [[[99, 54, 47], [100, 73, 59], [101, 66, 65], [102, 43, 36], [103, 77, 62], [104, 67, 49], [105, 65, 63], [106, 59, 45]], 100], [78.0, 7]], ['season 10 biofix 102', [[[100, 79, 54], [101, 75, 68], [102, 71, 56], [103, 67, 47], [104, 86, 64], [105, 51, 34], [106, 72, 56], [107, 73, 50]], 102], [73.0, 6]], ['season 11 biofix 104', [[[101, 72, 43], [102, 65, 50], [103, 54, 42], [104, 75, 56], [105, 60, 40], [106, 64, 42], [107, 73, 56], [108, 49, 44]], 104], [42.0, 5]], ['season 12 biofix 103', [[[102, 86, 60], [103, 90, 72], [104, 78, 69], [105, 87, 59], [106, 80, 56], [107, 77, 72], [108, 60, 53], [109, 77, 63]], 103], [144.0, 7]], ['season 13 biofix 105', [[[103, 51, 31], [104, 47, 47], [105, 77, 60], [106, 59, 52], [107, 85, 57], [108, 58, 31], [109, 43, 34], [110, 57, 38]], 105], [52.5, 6]]], [['season 7 biofix 99', [[[97, 64, 45], [98, 91, 67], [99, 85, 72], [100, 84, 60], [101, 79, 49], [102, 51, 38], [103, 88, 64], [104, 45, 37]], 99], [90.5, 6]], ['season 14 biofix 107', [[[104, 63, 45], [105, 46, 36], [106, 102, 72], [107, 65, 45], [108, 70, 69], [109, 55, 39], [110, 84, 63], [111, 72, 63]], 107], [70.5, 5]], ['season 15 biofix 106', [[[105, 54, 48], [106, 54, 37], [107, 47, 37], [108, 74, 65], [109, 79, 70], [110, 66, 51], [111, 50, 33], [112, 69, 65]], 106], [71.5, 7]], ['season 16 biofix 108', [[[106, 85, 68], [107, 49, 49], [108, 74, 71], [109, 53, 38], [110, 90, 60], [111, 53, 45], [112, 84, 56], [113, 80, 67]], 108], [92.0, 6]], ['season 17 biofix 110', [[[107, 50, 45], [108, 46, 40], [109, 81, 55], [110, 57, 40], [111, 78, 56], [112, 59, 37], [113, 93, 63], [114, 76, 66]], 110], [70.5, 5]], ['season 18 biofix 109', [[[108, 75, 70], [109, 52, 49], [110, 62, 53], [111, 40, 31], [112, 79, 51], [113, 50, 31], [114, 77, 61], [115, 78, 68]], 109], [65.5, 7]], ['season 19 biofix 111', [[[109, 53, 48], [110, 85, 64], [111, 89, 65], [112, 60, 57], [113, 63, 35], [114, 77, 57], [115, 50, 45], [116, 76, 46]], 111], [70.5, 6]], ['season 20 biofix 113', [[[110, 69, 62], [111, 72, 42], [112, 93, 70], [113, 88, 67], [114, 61, 59], [115, 75, 50], [116, 50, 43], [117, 69, 46]], 113], [58.5, 5]]], [['season 0 biofix 91', [[[90, 53, 39], [91, 89, 59], [92, 63, 41], [93, 78, 55], [94, 65, 52], [95, 87, 62], [96, 54, 37], [97, 39, 37]], 91], [80.0, 7]], ['season 17 biofix 110', [[[107, 50, 45], [108, 46, 40], [109, 81, 55], [110, 57, 40], [111, 78, 56], [112, 59, 37], [113, 93, 63], [114, 76, 66]], 110], [70.5, 5]], ['season 21 biofix 112', [[[111, 41, 35], [112, 94, 67], [113, 75, 55], [114, 60, 41], [115, 68, 63], [116, 60, 51], [117, 68, 41], [118, 83, 70]], 112], [103.0, 7]], ['season 22 biofix 114', [[[112, 68, 62], [113, 95, 68], [114, 78, 49], [115, 57, 34], [116, 77, 53], [117, 58, 44], [118, 95, 72], [119, 72, 67]], 114], [85.0, 6]], ['season 23 biofix 116', [[[113, 41, 33], [114, 59, 35], [115, 64, 56], [116, 62, 36], [117, 44, 32], [118, 81, 64], [119, 61, 51], [120, 38, 33]], 116], [34.5, 5]], ['hot spell capped', [[[150, 95, 70], [151, 99, 75], [152, 88, 66]], 150], [84.5, 3]], ['cold snap floored', [[[120, 45, 30], [121, 60, 40], [122, 48, 20]], 120], [5.0, 3]], ['biofix day itself', [[[130, 70, 55], [131, 80, 60]], 131], [20.0, 1]]], [['season 0 biofix 91', [[[90, 53, 39], [91, 89, 59], [92, 63, 41], [93, 78, 55], [94, 65, 52], [95, 87, 62], [96, 54, 37], [97, 39, 37]], 91], [80.0, 7]], ['season 1 biofix 93', [[[91, 94, 67], [92, 71, 42], [93, 93, 64], [94, 66, 52], [95, 54, 33], [96, 68, 62], [97, 75, 68], [98, 63, 48]], 93], [79.0, 6]], ['season 2 biofix 95', [[[92, 60, 39], [93, 80, 69], [94, 57, 40], [95, 91, 72], [96, 53, 41], [97, 67, 48], [98, 75, 57], [99, 68, 67]], 95], [72.5, 5]], ['season 6 biofix 97', [[[96, 60, 60], [97, 95, 65], [98, 89, 63], [99, 61, 60], [100, 71, 46], [101, 40, 34], [102, 72, 61], [103, 71, 57]], 97], [101.5, 7]], ['season 21 biofix 112', [[[111, 41, 35], [112, 94, 67], [113, 75, 55], [114, 60, 41], [115, 68, 63], [116, 60, 51], [117, 68, 41], [118, 83, 70]], 112], [103.0, 7]], ['record gap after biofix', [[[140, 75, 55], [141, 80, 58], [145, 82, 60], [146, 70, 52]], 140], [66.0, 4]], ['record starts after biofix', [[[160, 84, 62], [161, 88, 64]], 150], [48.0, 2]], ['cold day after biofix with gap', [[[170, 48, 35], [172, 70, 55]], 169], [12.5, 2]]]]\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":"4931e80393d3ada4a0872843721628eacf1c1df9fdcae022a5706fb0477d0085","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(days, biofix):\n    total = 0.0\n    counted = 0\n    for doy, hi, lo in days:\n        if doy < biofix:\n            continue\n        hi = float(hi)\n        hi = max(hi, 50.0)\n        lo = max(lo, 50.0)\n        lo = min(lo, 86.0)\n        gdd = (hi + lo) / 2 - 50.0\n        total += gdd\n        counted += 1\n    return [round(total, 1), counted]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['season 0 biofix 91', [[[90, 53, 39], [91, 89, 59], [92, 63, 41], [93, 78, 55], [94, 65, 52], [95, 87, 62], [96, 54, 37], [97, 39, 37]], 91], [80.0, 7]], ['season 1 biofix 93', [[[91, 94, 67], [92, 71, 42], [93, 93, 64], [94, 66, 52], [95, 54, 33], [96, 68, 62], [97, 75, 68], [98, 63, 48]], 93], [79.0, 6]], ['season 2 biofix 95', [[[92, 60, 39], [93, 80, 69], [94, 57, 40], [95, 91, 72], [96, 53, 41], [97, 67, 48], [98, 75, 57], [99, 68, 67]], 95], [72.5, 5]], ['season 3 biofix 94', [[[93, 88, 59], [94, 65, 43], [95, 63, 34], [96, 91, 68], [97, 57, 37], [98, 68, 54], [99, 78, 51], [100, 52, 37]], 94], [71.0, 7]], ['season 4 biofix 96', [[[94, 58, 31], [95, 65, 42], [96, 56, 44], [97, 51, 51], [98, 63, 38], [99, 60, 31], [100, 43, 40], [101, 42, 39]], 96], [15.5, 6]], ['season 5 biofix 98', [[[95, 78, 67], [96, 92, 67], [97, 66, 36], [98, 39, 30], [99, 87, 63], [100, 76, 66], [101, 53, 48], [102, 57, 52]], 98], [51.5, 5]], ['season 6 biofix 97', [[[96, 60, 60], [97, 95, 65], [98, 89, 63], [99, 61, 60], [100, 71, 46], [101, 40, 34], [102, 72, 61], [103, 71, 57]], 97], [101.5, 7]], ['season 7 biofix 99', [[[97, 64, 45], [98, 91, 67], [99, 85, 72], [100, 84, 60], [101, 79, 49], [102, 51, 38], [103, 88, 64], [104, 45, 37]], 99], [90.5, 6]]], [['season 3 biofix 94', [[[93, 88, 59], [94, 65, 43], [95, 63, 34], [96, 91, 68], [97, 57, 37], [98, 68, 54], [99, 78, 51], [100, 52, 37]], 94], [71.0, 7]], ['season 7 biofix 99', [[[97, 64, 45], [98, 91, 67], [99, 85, 72], [100, 84, 60], [101, 79, 49], [102, 51, 38], [103, 88, 64], [104, 45, 37]], 99], [90.5, 6]], ['season 8 biofix 101', [[[98, 60, 38], [99, 63, 35], [100, 84, 72], [101, 59, 47], [102, 44, 42], [103, 55, 49], [104, 47, 41], [105, 56, 50]], 101], [10.0, 5]], ['season 9 biofix 100', [[[99, 54, 47], [100, 73, 59], [101, 66, 65], [102, 43, 36], [103, 77, 62], [104, 67, 49], [105, 65, 63], [106, 59, 45]], 100], [78.0, 7]], ['season 10 biofix 102', [[[100, 79, 54], [101, 75, 68], [102, 71, 56], [103, 67, 47], [104, 86, 64], [105, 51, 34], [106, 72, 56], [107, 73, 50]], 102], [73.0, 6]], ['season 11 biofix 104', [[[101, 72, 43], [102, 65, 50], [103, 54, 42], [104, 75, 56], [105, 60, 40], [106, 64, 42], [107, 73, 56], [108, 49, 44]], 104], [42.0, 5]], ['season 12 biofix 103', [[[102, 86, 60], [103, 90, 72], [104, 78, 69], [105, 87, 59], [106, 80, 56], [107, 77, 72], [108, 60, 53], [109, 77, 63]], 103], [144.0, 7]], ['season 13 biofix 105', [[[103, 51, 31], [104, 47, 47], [105, 77, 60], [106, 59, 52], [107, 85, 57], [108, 58, 31], [109, 43, 34], [110, 57, 38]], 105], [52.5, 6]]], [['season 7 biofix 99', [[[97, 64, 45], [98, 91, 67], [99, 85, 72], [100, 84, 60], [101, 79, 49], [102, 51, 38], [103, 88, 64], [104, 45, 37]], 99], [90.5, 6]], ['season 14 biofix 107', [[[104, 63, 45], [105, 46, 36], [106, 102, 72], [107, 65, 45], [108, 70, 69], [109, 55, 39], [110, 84, 63], [111, 72, 63]], 107], [70.5, 5]], ['season 15 biofix 106', [[[105, 54, 48], [106, 54, 37], [107, 47, 37], [108, 74, 65], [109, 79, 70], [110, 66, 51], [111, 50, 33], [112, 69, 65]], 106], [71.5, 7]], ['season 16 biofix 108', [[[106, 85, 68], [107, 49, 49], [108, 74, 71], [109, 53, 38], [110, 90, 60], [111, 53, 45], [112, 84, 56], [113, 80, 67]], 108], [92.0, 6]], ['season 17 biofix 110', [[[107, 50, 45], [108, 46, 40], [109, 81, 55], [110, 57, 40], [111, 78, 56], [112, 59, 37], [113, 93, 63], [114, 76, 66]], 110], [70.5, 5]], ['season 18 biofix 109', [[[108, 75, 70], [109, 52, 49], [110, 62, 53], [111, 40, 31], [112, 79, 51], [113, 50, 31], [114, 77, 61], [115, 78, 68]], 109], [65.5, 7]], ['season 19 biofix 111', [[[109, 53, 48], [110, 85, 64], [111, 89, 65], [112, 60, 57], [113, 63, 35], [114, 77, 57], [115, 50, 45], [116, 76, 46]], 111], [70.5, 6]], ['season 20 biofix 113', [[[110, 69, 62], [111, 72, 42], [112, 93, 70], [113, 88, 67], [114, 61, 59], [115, 75, 50], [116, 50, 43], [117, 69, 46]], 113], [58.5, 5]]], [['season 0 biofix 91', [[[90, 53, 39], [91, 89, 59], [92, 63, 41], [93, 78, 55], [94, 65, 52], [95, 87, 62], [96, 54, 37], [97, 39, 37]], 91], [80.0, 7]], ['season 17 biofix 110', [[[107, 50, 45], [108, 46, 40], [109, 81, 55], [110, 57, 40], [111, 78, 56], [112, 59, 37], [113, 93, 63], [114, 76, 66]], 110], [70.5, 5]], ['season 21 biofix 112', [[[111, 41, 35], [112, 94, 67], [113, 75, 55], [114, 60, 41], [115, 68, 63], [116, 60, 51], [117, 68, 41], [118, 83, 70]], 112], [103.0, 7]], ['season 22 biofix 114', [[[112, 68, 62], [113, 95, 68], [114, 78, 49], [115, 57, 34], [116, 77, 53], [117, 58, 44], [118, 95, 72], [119, 72, 67]], 114], [85.0, 6]], ['season 23 biofix 116', [[[113, 41, 33], [114, 59, 35], [115, 64, 56], [116, 62, 36], [117, 44, 32], [118, 81, 64], [119, 61, 51], [120, 38, 33]], 116], [34.5, 5]], ['hot spell capped', [[[150, 95, 70], [151, 99, 75], [152, 88, 66]], 150], [84.5, 3]], ['cold snap floored', [[[120, 45, 30], [121, 60, 40], [122, 48, 20]], 120], [5.0, 3]], ['biofix day itself', [[[130, 70, 55], [131, 80, 60]], 131], [20.0, 1]]], [['season 0 biofix 91', [[[90, 53, 39], [91, 89, 59], [92, 63, 41], [93, 78, 55], [94, 65, 52], [95, 87, 62], [96, 54, 37], [97, 39, 37]], 91], [80.0, 7]], ['season 1 biofix 93', [[[91, 94, 67], [92, 71, 42], [93, 93, 64], [94, 66, 52], [95, 54, 33], [96, 68, 62], [97, 75, 68], [98, 63, 48]], 93], [79.0, 6]], ['season 2 biofix 95', [[[92, 60, 39], [93, 80, 69], [94, 57, 40], [95, 91, 72], [96, 53, 41], [97, 67, 48], [98, 75, 57], [99, 68, 67]], 95], [72.5, 5]], ['season 6 biofix 97', [[[96, 60, 60], [97, 95, 65], [98, 89, 63], [99, 61, 60], [100, 71, 46], [101, 40, 34], [102, 72, 61], [103, 71, 57]], 97], [101.5, 7]], ['season 21 biofix 112', [[[111, 41, 35], [112, 94, 67], [113, 75, 55], [114, 60, 41], [115, 68, 63], [116, 60, 51], [117, 68, 41], [118, 83, 70]], 112], [103.0, 7]], ['record gap after biofix', [[[140, 75, 55], [141, 80, 58], [145, 82, 60], [146, 70, 52]], 140], [66.0, 4]], ['record starts after biofix', [[[160, 84, 62], [161, 88, 64]], 150], [48.0, 2]], ['cold day after biofix with gap', [[[170, 48, 35], [172, 70, 55]], 169], [12.5, 2]]]]\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":"646d4387574ef7304317ab8826ce91e5e3f966c154918b6fed95fc55188ca701","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(days, biofix):\n    total = 0.0\n    counted = 0\n    for doy, hi, lo in days:\n        if doy < biofix:\n            continue\n        hi = min(hi, 86.0)\n        hi = max(hi, 50.0)\n        lo = max(lo, 50.0)\n        lo = min(lo, 86.0)\n        gdd = (hi + lo) / 2 - 50.0\n        total += gdd\n        counted += 1\n    return [round(total, 1), counted]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['season 0 biofix 91', [[[90, 53, 39], [91, 89, 59], [92, 63, 41], [93, 78, 55], [94, 65, 52], [95, 87, 62], [96, 54, 37], [97, 39, 37]], 91], [80.0, 7]], ['season 1 biofix 93', [[[91, 94, 67], [92, 71, 42], [93, 93, 64], [94, 66, 52], [95, 54, 33], [96, 68, 62], [97, 75, 68], [98, 63, 48]], 93], [79.0, 6]], ['season 2 biofix 95', [[[92, 60, 39], [93, 80, 69], [94, 57, 40], [95, 91, 72], [96, 53, 41], [97, 67, 48], [98, 75, 57], [99, 68, 67]], 95], [72.5, 5]], ['season 3 biofix 94', [[[93, 88, 59], [94, 65, 43], [95, 63, 34], [96, 91, 68], [97, 57, 37], [98, 68, 54], [99, 78, 51], [100, 52, 37]], 94], [71.0, 7]], ['season 4 biofix 96', [[[94, 58, 31], [95, 65, 42], [96, 56, 44], [97, 51, 51], [98, 63, 38], [99, 60, 31], [100, 43, 40], [101, 42, 39]], 96], [15.5, 6]], ['season 5 biofix 98', [[[95, 78, 67], [96, 92, 67], [97, 66, 36], [98, 39, 30], [99, 87, 63], [100, 76, 66], [101, 53, 48], [102, 57, 52]], 98], [51.5, 5]], ['season 6 biofix 97', [[[96, 60, 60], [97, 95, 65], [98, 89, 63], [99, 61, 60], [100, 71, 46], [101, 40, 34], [102, 72, 61], [103, 71, 57]], 97], [101.5, 7]], ['season 7 biofix 99', [[[97, 64, 45], [98, 91, 67], [99, 85, 72], [100, 84, 60], [101, 79, 49], [102, 51, 38], [103, 88, 64], [104, 45, 37]], 99], [90.5, 6]]], [['season 3 biofix 94', [[[93, 88, 59], [94, 65, 43], [95, 63, 34], [96, 91, 68], [97, 57, 37], [98, 68, 54], [99, 78, 51], [100, 52, 37]], 94], [71.0, 7]], ['season 7 biofix 99', [[[97, 64, 45], [98, 91, 67], [99, 85, 72], [100, 84, 60], [101, 79, 49], [102, 51, 38], [103, 88, 64], [104, 45, 37]], 99], [90.5, 6]], ['season 8 biofix 101', [[[98, 60, 38], [99, 63, 35], [100, 84, 72], [101, 59, 47], [102, 44, 42], [103, 55, 49], [104, 47, 41], [105, 56, 50]], 101], [10.0, 5]], ['season 9 biofix 100', [[[99, 54, 47], [100, 73, 59], [101, 66, 65], [102, 43, 36], [103, 77, 62], [104, 67, 49], [105, 65, 63], [106, 59, 45]], 100], [78.0, 7]], ['season 10 biofix 102', [[[100, 79, 54], [101, 75, 68], [102, 71, 56], [103, 67, 47], [104, 86, 64], [105, 51, 34], [106, 72, 56], [107, 73, 50]], 102], [73.0, 6]], ['season 11 biofix 104', [[[101, 72, 43], [102, 65, 50], [103, 54, 42], [104, 75, 56], [105, 60, 40], [106, 64, 42], [107, 73, 56], [108, 49, 44]], 104], [42.0, 5]], ['season 12 biofix 103', [[[102, 86, 60], [103, 90, 72], [104, 78, 69], [105, 87, 59], [106, 80, 56], [107, 77, 72], [108, 60, 53], [109, 77, 63]], 103], [144.0, 7]], ['season 13 biofix 105', [[[103, 51, 31], [104, 47, 47], [105, 77, 60], [106, 59, 52], [107, 85, 57], [108, 58, 31], [109, 43, 34], [110, 57, 38]], 105], [52.5, 6]]], [['season 7 biofix 99', [[[97, 64, 45], [98, 91, 67], [99, 85, 72], [100, 84, 60], [101, 79, 49], [102, 51, 38], [103, 88, 64], [104, 45, 37]], 99], [90.5, 6]], ['season 14 biofix 107', [[[104, 63, 45], [105, 46, 36], [106, 102, 72], [107, 65, 45], [108, 70, 69], [109, 55, 39], [110, 84, 63], [111, 72, 63]], 107], [70.5, 5]], ['season 15 biofix 106', [[[105, 54, 48], [106, 54, 37], [107, 47, 37], [108, 74, 65], [109, 79, 70], [110, 66, 51], [111, 50, 33], [112, 69, 65]], 106], [71.5, 7]], ['season 16 biofix 108', [[[106, 85, 68], [107, 49, 49], [108, 74, 71], [109, 53, 38], [110, 90, 60], [111, 53, 45], [112, 84, 56], [113, 80, 67]], 108], [92.0, 6]], ['season 17 biofix 110', [[[107, 50, 45], [108, 46, 40], [109, 81, 55], [110, 57, 40], [111, 78, 56], [112, 59, 37], [113, 93, 63], [114, 76, 66]], 110], [70.5, 5]], ['season 18 biofix 109', [[[108, 75, 70], [109, 52, 49], [110, 62, 53], [111, 40, 31], [112, 79, 51], [113, 50, 31], [114, 77, 61], [115, 78, 68]], 109], [65.5, 7]], ['season 19 biofix 111', [[[109, 53, 48], [110, 85, 64], [111, 89, 65], [112, 60, 57], [113, 63, 35], [114, 77, 57], [115, 50, 45], [116, 76, 46]], 111], [70.5, 6]], ['season 20 biofix 113', [[[110, 69, 62], [111, 72, 42], [112, 93, 70], [113, 88, 67], [114, 61, 59], [115, 75, 50], [116, 50, 43], [117, 69, 46]], 113], [58.5, 5]]], [['season 0 biofix 91', [[[90, 53, 39], [91, 89, 59], [92, 63, 41], [93, 78, 55], [94, 65, 52], [95, 87, 62], [96, 54, 37], [97, 39, 37]], 91], [80.0, 7]], ['season 17 biofix 110', [[[107, 50, 45], [108, 46, 40], [109, 81, 55], [110, 57, 40], [111, 78, 56], [112, 59, 37], [113, 93, 63], [114, 76, 66]], 110], [70.5, 5]], ['season 21 biofix 112', [[[111, 41, 35], [112, 94, 67], [113, 75, 55], [114, 60, 41], [115, 68, 63], [116, 60, 51], [117, 68, 41], [118, 83, 70]], 112], [103.0, 7]], ['season 22 biofix 114', [[[112, 68, 62], [113, 95, 68], [114, 78, 49], [115, 57, 34], [116, 77, 53], [117, 58, 44], [118, 95, 72], [119, 72, 67]], 114], [85.0, 6]], ['season 23 biofix 116', [[[113, 41, 33], [114, 59, 35], [115, 64, 56], [116, 62, 36], [117, 44, 32], [118, 81, 64], [119, 61, 51], [120, 38, 33]], 116], [34.5, 5]], ['hot spell capped', [[[150, 95, 70], [151, 99, 75], [152, 88, 66]], 150], [84.5, 3]], ['cold snap floored', [[[120, 45, 30], [121, 60, 40], [122, 48, 20]], 120], [5.0, 3]], ['biofix day itself', [[[130, 70, 55], [131, 80, 60]], 131], [20.0, 1]]], [['season 0 biofix 91', [[[90, 53, 39], [91, 89, 59], [92, 63, 41], [93, 78, 55], [94, 65, 52], [95, 87, 62], [96, 54, 37], [97, 39, 37]], 91], [80.0, 7]], ['season 1 biofix 93', [[[91, 94, 67], [92, 71, 42], [93, 93, 64], [94, 66, 52], [95, 54, 33], [96, 68, 62], [97, 75, 68], [98, 63, 48]], 93], [79.0, 6]], ['season 2 biofix 95', [[[92, 60, 39], [93, 80, 69], [94, 57, 40], [95, 91, 72], [96, 53, 41], [97, 67, 48], [98, 75, 57], [99, 68, 67]], 95], [72.5, 5]], ['season 6 biofix 97', [[[96, 60, 60], [97, 95, 65], [98, 89, 63], [99, 61, 60], [100, 71, 46], [101, 40, 34], [102, 72, 61], [103, 71, 57]], 97], [101.5, 7]], ['season 21 biofix 112', [[[111, 41, 35], [112, 94, 67], [113, 75, 55], [114, 60, 41], [115, 68, 63], [116, 60, 51], [117, 68, 41], [118, 83, 70]], 112], [103.0, 7]], ['record gap after biofix', [[[140, 75, 55], [141, 80, 58], [145, 82, 60], [146, 70, 52]], 140], [66.0, 4]], ['record starts after biofix', [[[160, 84, 62], [161, 88, 64]], 150], [48.0, 2]], ['cold day after biofix with gap', [[[170, 48, 35], [172, 70, 55]], 169], [12.5, 2]]]]\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 deterministic teaching model of an operational weather index; coefficients and thresholds are fixed by the contract and no claim of standards conformance is made. 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-weather_index_computation-growing-degree-days-upper-temperature-cutoff","generated_at":"2026-09-29T14:48:25.725712+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Pest spray timing and crop stage models accumulate GDD from a biofix date.","repair":"Cap tmax at 86 before averaging.","root_cause":"Daily maxima above 86 degF are not capped before averaging.","sha256":"20cdf4227d85aebcb26b23c88be0414c56b29f2b8090c32041421b0c1783efc2","title":"Modified growing degree days with biofix: upper temperature cutoff · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":39.353,"exit_code":1,"observations":[{"actual":[82.0,7],"check":"season 0 biofix 91","expected":[80.0,7],"passed":false},{"actual":[82.5,6],"check":"season 1 biofix 93","expected":[79.0,6],"passed":false},{"actual":[75.0,5],"check":"season 2 biofix 95","expected":[72.5,5],"passed":false},{"actual":[73.5,7],"check":"season 3 biofix 94","expected":[71.0,7],"passed":false},{"actual":[15.5,6],"check":"season 4 biofix 96","expected":[15.5,6],"passed":true},{"actual":[52.0,5],"check":"season 5 biofix 98","expected":[51.5,5],"passed":false},{"actual":[107.5,7],"check":"season 6 biofix 97","expected":[101.5,7],"passed":false},{"actual":[91.5,6],"check":"season 7 biofix 99","expected":[90.5,6],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"season 0 biofix 91\", \"actual\": [82.0, 7], \"expected\": [80.0, 7], \"passed\": false}, {\"check\": \"season 1 biofix 93\", \"actual\": [82.5, 6], \"expected\": [79.0, 6], \"passed\": false}, {\"check\": \"season 2 biofix 95\", \"actual\": [75.0, 5], \"expected\": [72.5, 5], \"passed\": false}, {\"check\": \"season 3 biofix 94\", \"actual\": [73.5, 7], \"expected\": [71.0, 7], \"passed\": false}, {\"check\": \"season 4 biofix 96\", \"actual\": [15.5, 6], \"expected\": [15.5, 6], \"passed\": true}, {\"check\": \"season 5 biofix 98\", \"actual\": [52.0, 5], \"expected\": [51.5, 5], \"passed\": false}, {\"check\": \"season 6 biofix 97\", \"actual\": [107.5, 7], \"expected\": [101.5, 7], \"passed\": false}, {\"check\": \"season 7 biofix 99\", \"actual\": [91.5, 6], \"expected\": [90.5, 6], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.479,"exit_code":1,"observations":[{"actual":[82.0,7],"check":"season 0 biofix 91","expected":[80.0,7],"passed":false},{"actual":[82.5,6],"check":"season 1 biofix 93","expected":[79.0,6],"passed":false},{"actual":[75.0,5],"check":"season 2 biofix 95","expected":[72.5,5],"passed":false},{"actual":[73.5,7],"check":"season 3 biofix 94","expected":[71.0,7],"passed":false},{"actual":[15.5,6],"check":"season 4 biofix 96","expected":[15.5,6],"passed":true},{"actual":[52.0,5],"check":"season 5 biofix 98","expected":[51.5,5],"passed":false},{"actual":[107.5,7],"check":"season 6 biofix 97","expected":[101.5,7],"passed":false},{"actual":[91.5,6],"check":"season 7 biofix 99","expected":[90.5,6],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"season 0 biofix 91\", \"actual\": [82.0, 7], \"expected\": [80.0, 7], \"passed\": false}, {\"check\": \"season 1 biofix 93\", \"actual\": [82.5, 6], \"expected\": [79.0, 6], \"passed\": false}, {\"check\": \"season 2 biofix 95\", \"actual\": [75.0, 5], \"expected\": [72.5, 5], \"passed\": false}, {\"check\": \"season 3 biofix 94\", \"actual\": [73.5, 7], \"expected\": [71.0, 7], \"passed\": false}, {\"check\": \"season 4 biofix 96\", \"actual\": [15.5, 6], \"expected\": [15.5, 6], \"passed\": true}, {\"check\": \"season 5 biofix 98\", \"actual\": [52.0, 5], \"expected\": [51.5, 5], \"passed\": false}, {\"check\": \"season 6 biofix 97\", \"actual\": [107.5, 7], \"expected\": [101.5, 7], \"passed\": false}, {\"check\": \"season 7 biofix 99\", \"actual\": [91.5, 6], \"expected\": [90.5, 6], \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":40.355,"exit_code":0,"observations":[{"actual":[80.0,7],"check":"season 0 biofix 91","expected":[80.0,7],"passed":true},{"actual":[79.0,6],"check":"season 1 biofix 93","expected":[79.0,6],"passed":true},{"actual":[72.5,5],"check":"season 2 biofix 95","expected":[72.5,5],"passed":true},{"actual":[71.0,7],"check":"season 3 biofix 94","expected":[71.0,7],"passed":true},{"actual":[15.5,6],"check":"season 4 biofix 96","expected":[15.5,6],"passed":true},{"actual":[51.5,5],"check":"season 5 biofix 98","expected":[51.5,5],"passed":true},{"actual":[101.5,7],"check":"season 6 biofix 97","expected":[101.5,7],"passed":true},{"actual":[90.5,6],"check":"season 7 biofix 99","expected":[90.5,6],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"season 0 biofix 91\", \"actual\": [80.0, 7], \"expected\": [80.0, 7], \"passed\": true}, {\"check\": \"season 1 biofix 93\", \"actual\": [79.0, 6], \"expected\": [79.0, 6], \"passed\": true}, {\"check\": \"season 2 biofix 95\", \"actual\": [72.5, 5], \"expected\": [72.5, 5], \"passed\": true}, {\"check\": \"season 3 biofix 94\", \"actual\": [71.0, 7], \"expected\": [71.0, 7], \"passed\": true}, {\"check\": \"season 4 biofix 96\", \"actual\": [15.5, 6], \"expected\": [15.5, 6], \"passed\": true}, {\"check\": \"season 5 biofix 98\", \"actual\": [51.5, 5], \"expected\": [51.5, 5], \"passed\": true}, {\"check\": \"season 6 biofix 97\", \"actual\": [101.5, 7], \"expected\": [101.5, 7], \"passed\": true}, {\"check\": \"season 7 biofix 99\", \"actual\": [90.5, 6], \"expected\": [90.5, 6], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}