FA-70996 / Weather index computation / Open access
Modified growing degree days with biofix: upper temperature cutoff · case 01
Heat waves add implausibly many degree days.
ROOT CAUSE
Daily maxima above 86 degF are not capped before averaging.
VERIFIED REPAIR
Cap tmax at 86 before averaging.
Unsuccessful approach: Capping the daily mean instead of tmax still credits hot afternoons with warm nights.
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 = float(hi)
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 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]]]]
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 | [82.0, 7] | [80.0, 7] | Failed |
| season 1 biofix 93 | [82.5, 6] | [79.0, 6] | Failed |
| season 2 biofix 95 | [75.0, 5] | [72.5, 5] | Failed |
| season 3 biofix 94 | [73.5, 7] | [71.0, 7] | Failed |
| season 4 biofix 96 | [15.5, 6] | [15.5, 6] | Passed |
| season 5 biofix 98 | [52.0, 5] | [51.5, 5] | Failed |
| season 6 biofix 97 | [107.5, 7] | [101.5, 7] | Failed |
| season 7 biofix 99 | [91.5, 6] | [90.5, 6] | Failed |
SHA-256 / 4931e80393d3ada4a0872843721628eacf1c1df9fdcae022a5706fb0477d0085
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 = float(hi)
hi = max(hi, 50.0)
lo = max(lo, 50.0)
lo = min(lo, 86.0)
gdd = min((hi + lo) / 2, 86.0) - 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 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]]]]
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 | [82.0, 7] | [80.0, 7] | Failed |
| season 1 biofix 93 | [82.5, 6] | [79.0, 6] | Failed |
| season 2 biofix 95 | [75.0, 5] | [72.5, 5] | Failed |
| season 3 biofix 94 | [73.5, 7] | [71.0, 7] | Failed |
| season 4 biofix 96 | [15.5, 6] | [15.5, 6] | Passed |
| season 5 biofix 98 | [52.0, 5] | [51.5, 5] | Failed |
| season 6 biofix 97 | [107.5, 7] | [101.5, 7] | Failed |
| season 7 biofix 99 | [91.5, 6] | [90.5, 6] | Failed |
SHA-256 / dbd14e9da9b88405bb530c08d885f43dbd8927f9e186a16c52e9ec4352eb15a1
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 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]]]]
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 / 646d4387574ef7304317ab8826ce91e5e3f966c154918b6fed95fc55188ca701
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.725712+00:00.
Case digest / 20cdf4227d85aebcb26b23c88be0414c56b29f2b8090c32041421b0c1783efc2