FA-71006 / Weather index computation / Open access
Modified growing degree days with biofix: maximum temperature floor · case 01
Cold days produce negative degree days even though tmin is floored.
ROOT CAUSE
The daily maximum is never raised to the 50 degF base.
VERIFIED REPAIR
Raise tmax to at least 50.
Unsuccessful approach: Flooring tmax at freezing still allows negative contributions.
Case 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].
Why this case matters
Pest spray timing and crop stage models accumulate GDD from a biofix date.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(days, biofix):
total = 0.0
counted = 0
for doy, hi, lo in days:
if doy < biofix:
continue
hi = min(hi, 86.0)
lo = max(lo, 50.0)
lo = min(lo, 86.0)
gdd = (hi + lo) / 2 - 50.0
total += gdd
counted += 1
return [round(total, 1), counted]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['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 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 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 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 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 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]]], [['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 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 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 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]], ['cold snap floored', [[[120, 45, 30], [121, 60, 40], [122, 48, 20]], 120], [5.0, 3]], ['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]]]]
for label, args, expected in fixtures[N - 1]:
check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| season 0 biofix 91 | [74.5, 7] | [80.0, 7] | Failed |
| season 1 biofix 93 | [79.0, 6] | [79.0, 6] | Passed |
| season 2 biofix 95 | [72.5, 5] | [72.5, 5] | Passed |
| season 3 biofix 94 | [71.0, 7] | [71.0, 7] | Passed |
| season 4 biofix 96 | [8.0, 6] | [15.5, 6] | Failed |
| season 5 biofix 98 | [46.0, 5] | [51.5, 5] | Failed |
| season 6 biofix 97 | [96.5, 7] | [101.5, 7] | Failed |
| season 7 biofix 99 | [88.0, 6] | [90.5, 6] | Failed |
SHA-256 / d9e0cbf47333f8c8c506db7cb6b8d3ac2e306a19ae611d72699d249621a6eb94
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(days, biofix):
total = 0.0
counted = 0
for doy, hi, lo in days:
if doy < biofix:
continue
hi = min(hi, 86.0)
hi = max(hi, 32.0)
lo = max(lo, 50.0)
lo = min(lo, 86.0)
gdd = (hi + lo) / 2 - 50.0
total += gdd
counted += 1
return [round(total, 1), counted]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['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 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 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 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 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 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]]], [['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 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 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 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]], ['cold snap floored', [[[120, 45, 30], [121, 60, 40], [122, 48, 20]], 120], [5.0, 3]], ['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]]]]
for label, args, expected in fixtures[N - 1]:
check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| season 0 biofix 91 | [74.5, 7] | [80.0, 7] | Failed |
| season 1 biofix 93 | [79.0, 6] | [79.0, 6] | Passed |
| season 2 biofix 95 | [72.5, 5] | [72.5, 5] | Passed |
| season 3 biofix 94 | [71.0, 7] | [71.0, 7] | Passed |
| season 4 biofix 96 | [8.0, 6] | [15.5, 6] | Failed |
| season 5 biofix 98 | [46.0, 5] | [51.5, 5] | Failed |
| season 6 biofix 97 | [96.5, 7] | [101.5, 7] | Failed |
| season 7 biofix 99 | [88.0, 6] | [90.5, 6] | Failed |
SHA-256 / 28221e7b3527ef605614f57196a95e130f44d3ee4908a6500a16aa69105481be
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(days, biofix):
total = 0.0
counted = 0
for doy, hi, lo in days:
if doy < biofix:
continue
hi = min(hi, 86.0)
hi = max(hi, 50.0)
lo = max(lo, 50.0)
lo = min(lo, 86.0)
gdd = (hi + lo) / 2 - 50.0
total += gdd
counted += 1
return [round(total, 1), counted]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['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 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 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 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 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 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]]], [['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 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 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 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]], ['cold snap floored', [[[120, 45, 30], [121, 60, 40], [122, 48, 20]], 120], [5.0, 3]], ['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]]]]
for label, args, expected in fixtures[N - 1]:
check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| season 0 biofix 91 | [80.0, 7] | [80.0, 7] | Passed |
| season 1 biofix 93 | [79.0, 6] | [79.0, 6] | Passed |
| season 2 biofix 95 | [72.5, 5] | [72.5, 5] | Passed |
| season 3 biofix 94 | [71.0, 7] | [71.0, 7] | Passed |
| season 4 biofix 96 | [15.5, 6] | [15.5, 6] | Passed |
| season 5 biofix 98 | [51.5, 5] | [51.5, 5] | Passed |
| season 6 biofix 97 | [101.5, 7] | [101.5, 7] | Passed |
| season 7 biofix 99 | [90.5, 6] | [90.5, 6] | Passed |
SHA-256 / ada5d75a8d87671853f912e2dc37c6e45dcb089c16eac6a8b97d096a08a5afdc
Verification & scope
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.
Observations recorded using Python 3.12.14 at 2026-09-29T14:48:25.851659+00:00.
Case digest / eebda2c07b7a9ab8009e8aa16cb3578741ffada3628dc0e2efc9c70876b508a5