FAILURE MAP
← Case archive

FA-71161 / Weather index computation / Open access

Utah chill unit accumulation: full-chill band upper edge · case 01

Hours at exactly 9.1 degC earn half a unit.

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

ROOT CAUSE

The full-unit band excludes its upper limit.

VERIFIED REPAIR

Assign 1 unit through 9.1 degC inclusive.

Unsuccessful approach: Including 9.2 gives full credit to the next band.

Case contract

Hourly degC readings (None = missing hour, skipped with no effect). Units: <=1.4:0, <=2.4:0.5, <=9.1:1, <=12.4:0.5, <=15.9:0, <=18.0:-0.5, else -1. The running total is floored at zero after every hour. Return the total.

Why this case matters

Orchard dormancy and bloom forecasts depend on accumulated chill units.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(hourly):
    total = 0.0
    for t in hourly:
        if t is None:
            continue
        if t <= 1.4:
            u = 0.0
        elif t <= 2.4:
            u = 0.5
        elif t < 9.1:
            u = 1.0
        elif t <= 12.4:
            u = 0.5
        elif t <= 15.9:
            u = 0.0
        elif t <= 18.0:
            u = -0.5
        else:
            u = -1.0
        total = max(total + u, 0.0)
    return total
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['orchard night 0', [[2.4, 2.4, 12.5, 18.1, None, 1.4, 18.1, 5.0, 22.0, 12.5, 2.5, 5.0]], 2.0], ['orchard night 1', [[9.2, 18.0, 2.4, 2.4, 12.4, 2.5, 22.0, 12.4, 0.0, 9.1, 2.5, 1.4]], 4.0], ['orchard night 2', [[18.0, 0.0, 18.1, 2.4, 2.5, 22.0, 22.0, None, 16.0, 1.5, 1.5, 1.4]], 1.0], ['orchard night 3', [[None, 15.9, 1.4, 0.0, 9.1, 12.4, 1.5, 2.5, 12.5, 18.1, 2.4, 1.4]], 2.5], ['orchard night 4', [[5.0, 12.5, 9.1, 1.5, 22.0, 1.5, 1.4, 1.4, 15.9, 2.4, 9.1, 12.5]], 3.5], ['orchard night 5', [[0.0, 15.9, 2.5, 12.4, 18.0, 0.0, 1.4, 1.4, 2.5, 12.4, 15.9, 12.4]], 3.0], ['orchard night 6', [[22.0, 15.9, 12.4, 9.2, 12.4, 0.0, 5.0, 2.4, 22.0, 1.4, 9.1, None]], 3.0], ['orchard night 7', [[None, 5.0, 12.4, 0.0, 22.0, 18.1, 2.5, 9.2, None, None, 1.4, 12.5]], 1.5]], [['orchard night 6', [[22.0, 15.9, 12.4, 9.2, 12.4, 0.0, 5.0, 2.4, 22.0, 1.4, 9.1, None]], 3.0], ['orchard night 7', [[None, 5.0, 12.4, 0.0, 22.0, 18.1, 2.5, 9.2, None, None, 1.4, 12.5]], 1.5], ['orchard night 8', [[18.1, 22.0, 2.5, 18.0, 12.5, 2.4, 5.0, 9.1, None, 2.4, 2.5, 15.9]], 4.5], ['orchard night 9', [[2.5, None, 1.4, 18.0, None, 12.4, 5.0, None, 22.0, 18.1, 5.0, 18.1]], 0.0], ['orchard night 10', [[12.4, 2.4, 12.4, None, 9.1, 0.0, 12.4, 18.1, 9.1, 12.5, 1.4, 9.1]], 4.0], ['orchard night 11', [[9.1, 5.0, 18.1, 2.5, 5.0, 1.4, 9.1, None, 15.9, 2.4, 2.4, 18.1]], 4.0], ['orchard night 12', [[9.2, 16.0, 0.0, 9.2, 2.5, 15.9, 0.0, 9.2, 0.0, 0.0, 9.2, 2.5]], 3.5], ['orchard night 20', [[1.5, None, 18.0, 1.4, 18.1, 9.2, 9.1, 2.5, 2.5, 2.4, 2.5, 9.2]], 5.5]], [['orchard night 11', [[9.1, 5.0, 18.1, 2.5, 5.0, 1.4, 9.1, None, 15.9, 2.4, 2.4, 18.1]], 4.0], ['orchard night 14', [[1.4, 1.4, 18.0, 16.0, 12.4, 2.4, 15.9, 18.1, 18.0, 2.4, 0.0, 18.0]], 0.0], ['orchard night 15', [[1.5, 2.4, 12.5, 16.0, 16.0, 12.4, 12.4, 12.4, 18.0, 18.0, 2.5, 1.5]], 2.0], ['orchard night 16', [[16.0, 1.5, 22.0, 1.5, 12.5, 12.4, 1.4, 9.1, 22.0, 9.1, 9.1, 15.9]], 3.0], ['orchard night 17', [[1.5, 12.5, 9.2, 1.4, None, 0.0, 15.9, 12.5, 0.0, 16.0, 2.4, 12.4]], 1.5], ['orchard night 18', [[15.9, 9.2, 9.1, 15.9, 9.2, 15.9, 15.9, 9.2, 22.0, 12.4, 2.4, None]], 2.5], ['orchard night 19', [[16.0, 1.5, 18.1, 9.1, 22.0, 16.0, 12.4, 16.0, 12.4, 12.5, 2.4, 22.0]], 0.0], ['orchard night 29', [[5.0, 12.5, 18.1, 2.4, 1.4, 9.2, 1.4, 1.4, None, None, 18.0, 15.9]], 0.5]], [['orchard night 17', [[1.5, 12.5, 9.2, 1.4, None, 0.0, 15.9, 12.5, 0.0, 16.0, 2.4, 12.4]], 1.5], ['orchard night 20', [[1.5, None, 18.0, 1.4, 18.1, 9.2, 9.1, 2.5, 2.5, 2.4, 2.5, 9.2]], 5.5], ['orchard night 21', [[9.1, 16.0, 15.9, 9.2, 5.0, 0.0, 9.2, 16.0, 18.0, 12.5, 9.2, 18.0]], 1.5], ['orchard night 22', [[1.5, 22.0, 2.5, 2.4, 12.5, 12.4, 22.0, 2.5, 15.9, 18.1, 1.5, 9.1]], 2.5], ['orchard night 23', [[2.4, 16.0, 18.0, 1.5, 15.9, 16.0, 9.1, 9.2, 1.5, 12.5, 16.0, 22.0]], 0.5], ['orchard night 24', [[2.5, 16.0, 2.5, 18.0, 18.0, 12.5, 22.0, 9.1, 12.4, 5.0, 9.1, 1.4]], 3.5], ['orchard night 25', [[0.0, None, 5.0, 22.0, 5.0, 9.1, 2.4, 1.4, 5.0, 9.1, 22.0, 2.4]], 4.0], ['orchard night 26', [[5.0, 9.1, None, 18.1, 9.2, None, 0.0, 2.5, 22.0, 15.9, 18.1, 15.9]], 0.5]], [['orchard night 0', [[2.4, 2.4, 12.5, 18.1, None, 1.4, 18.1, 5.0, 22.0, 12.5, 2.5, 5.0]], 2.0], ['orchard night 23', [[2.4, 16.0, 18.0, 1.5, 15.9, 16.0, 9.1, 9.2, 1.5, 12.5, 16.0, 22.0]], 0.5], ['orchard night 26', [[5.0, 9.1, None, 18.1, 9.2, None, 0.0, 2.5, 22.0, 15.9, 18.1, 15.9]], 0.5], ['orchard night 28', [[9.2, 16.0, 15.9, 0.0, 5.0, 12.5, 22.0, 12.4, 2.4, 9.1, 18.0, 0.0]], 1.5], ['orchard night 29', [[5.0, 12.5, 18.1, 2.4, 1.4, 9.2, 1.4, 1.4, None, None, 18.0, 15.9]], 0.5], ['warm spell after chill', [[5.0, 5.0, 20.0, 20.0, 20.0, 5.0]], 1.0], ['gap mid night', [[5.0, None, 5.0]], 2.0], ['warm start', [[19.0, 19.0, 6.0]], 1.0]]]
for label, args, expected in fixtures[N - 1]:
    check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
orchard night 02.02.0Passed
orchard night 13.54.0Failed
orchard night 21.01.0Passed
orchard night 32.02.5Failed
orchard night 42.53.5Failed
orchard night 53.03.0Passed
orchard night 62.53.0Failed
orchard night 71.51.5Passed

SHA-256 / 31bf6c2fa202dac2137b75abea685f67c2c01236208883a2089f5a62f9781664

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(hourly):
    total = 0.0
    for t in hourly:
        if t is None:
            continue
        if t <= 1.4:
            u = 0.0
        elif t <= 2.4:
            u = 0.5
        elif t <= 9.2:
            u = 1.0
        elif t <= 12.4:
            u = 0.5
        elif t <= 15.9:
            u = 0.0
        elif t <= 18.0:
            u = -0.5
        else:
            u = -1.0
        total = max(total + u, 0.0)
    return total
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['orchard night 0', [[2.4, 2.4, 12.5, 18.1, None, 1.4, 18.1, 5.0, 22.0, 12.5, 2.5, 5.0]], 2.0], ['orchard night 1', [[9.2, 18.0, 2.4, 2.4, 12.4, 2.5, 22.0, 12.4, 0.0, 9.1, 2.5, 1.4]], 4.0], ['orchard night 2', [[18.0, 0.0, 18.1, 2.4, 2.5, 22.0, 22.0, None, 16.0, 1.5, 1.5, 1.4]], 1.0], ['orchard night 3', [[None, 15.9, 1.4, 0.0, 9.1, 12.4, 1.5, 2.5, 12.5, 18.1, 2.4, 1.4]], 2.5], ['orchard night 4', [[5.0, 12.5, 9.1, 1.5, 22.0, 1.5, 1.4, 1.4, 15.9, 2.4, 9.1, 12.5]], 3.5], ['orchard night 5', [[0.0, 15.9, 2.5, 12.4, 18.0, 0.0, 1.4, 1.4, 2.5, 12.4, 15.9, 12.4]], 3.0], ['orchard night 6', [[22.0, 15.9, 12.4, 9.2, 12.4, 0.0, 5.0, 2.4, 22.0, 1.4, 9.1, None]], 3.0], ['orchard night 7', [[None, 5.0, 12.4, 0.0, 22.0, 18.1, 2.5, 9.2, None, None, 1.4, 12.5]], 1.5]], [['orchard night 6', [[22.0, 15.9, 12.4, 9.2, 12.4, 0.0, 5.0, 2.4, 22.0, 1.4, 9.1, None]], 3.0], ['orchard night 7', [[None, 5.0, 12.4, 0.0, 22.0, 18.1, 2.5, 9.2, None, None, 1.4, 12.5]], 1.5], ['orchard night 8', [[18.1, 22.0, 2.5, 18.0, 12.5, 2.4, 5.0, 9.1, None, 2.4, 2.5, 15.9]], 4.5], ['orchard night 9', [[2.5, None, 1.4, 18.0, None, 12.4, 5.0, None, 22.0, 18.1, 5.0, 18.1]], 0.0], ['orchard night 10', [[12.4, 2.4, 12.4, None, 9.1, 0.0, 12.4, 18.1, 9.1, 12.5, 1.4, 9.1]], 4.0], ['orchard night 11', [[9.1, 5.0, 18.1, 2.5, 5.0, 1.4, 9.1, None, 15.9, 2.4, 2.4, 18.1]], 4.0], ['orchard night 12', [[9.2, 16.0, 0.0, 9.2, 2.5, 15.9, 0.0, 9.2, 0.0, 0.0, 9.2, 2.5]], 3.5], ['orchard night 20', [[1.5, None, 18.0, 1.4, 18.1, 9.2, 9.1, 2.5, 2.5, 2.4, 2.5, 9.2]], 5.5]], [['orchard night 11', [[9.1, 5.0, 18.1, 2.5, 5.0, 1.4, 9.1, None, 15.9, 2.4, 2.4, 18.1]], 4.0], ['orchard night 14', [[1.4, 1.4, 18.0, 16.0, 12.4, 2.4, 15.9, 18.1, 18.0, 2.4, 0.0, 18.0]], 0.0], ['orchard night 15', [[1.5, 2.4, 12.5, 16.0, 16.0, 12.4, 12.4, 12.4, 18.0, 18.0, 2.5, 1.5]], 2.0], ['orchard night 16', [[16.0, 1.5, 22.0, 1.5, 12.5, 12.4, 1.4, 9.1, 22.0, 9.1, 9.1, 15.9]], 3.0], ['orchard night 17', [[1.5, 12.5, 9.2, 1.4, None, 0.0, 15.9, 12.5, 0.0, 16.0, 2.4, 12.4]], 1.5], ['orchard night 18', [[15.9, 9.2, 9.1, 15.9, 9.2, 15.9, 15.9, 9.2, 22.0, 12.4, 2.4, None]], 2.5], ['orchard night 19', [[16.0, 1.5, 18.1, 9.1, 22.0, 16.0, 12.4, 16.0, 12.4, 12.5, 2.4, 22.0]], 0.0], ['orchard night 29', [[5.0, 12.5, 18.1, 2.4, 1.4, 9.2, 1.4, 1.4, None, None, 18.0, 15.9]], 0.5]], [['orchard night 17', [[1.5, 12.5, 9.2, 1.4, None, 0.0, 15.9, 12.5, 0.0, 16.0, 2.4, 12.4]], 1.5], ['orchard night 20', [[1.5, None, 18.0, 1.4, 18.1, 9.2, 9.1, 2.5, 2.5, 2.4, 2.5, 9.2]], 5.5], ['orchard night 21', [[9.1, 16.0, 15.9, 9.2, 5.0, 0.0, 9.2, 16.0, 18.0, 12.5, 9.2, 18.0]], 1.5], ['orchard night 22', [[1.5, 22.0, 2.5, 2.4, 12.5, 12.4, 22.0, 2.5, 15.9, 18.1, 1.5, 9.1]], 2.5], ['orchard night 23', [[2.4, 16.0, 18.0, 1.5, 15.9, 16.0, 9.1, 9.2, 1.5, 12.5, 16.0, 22.0]], 0.5], ['orchard night 24', [[2.5, 16.0, 2.5, 18.0, 18.0, 12.5, 22.0, 9.1, 12.4, 5.0, 9.1, 1.4]], 3.5], ['orchard night 25', [[0.0, None, 5.0, 22.0, 5.0, 9.1, 2.4, 1.4, 5.0, 9.1, 22.0, 2.4]], 4.0], ['orchard night 26', [[5.0, 9.1, None, 18.1, 9.2, None, 0.0, 2.5, 22.0, 15.9, 18.1, 15.9]], 0.5]], [['orchard night 0', [[2.4, 2.4, 12.5, 18.1, None, 1.4, 18.1, 5.0, 22.0, 12.5, 2.5, 5.0]], 2.0], ['orchard night 23', [[2.4, 16.0, 18.0, 1.5, 15.9, 16.0, 9.1, 9.2, 1.5, 12.5, 16.0, 22.0]], 0.5], ['orchard night 26', [[5.0, 9.1, None, 18.1, 9.2, None, 0.0, 2.5, 22.0, 15.9, 18.1, 15.9]], 0.5], ['orchard night 28', [[9.2, 16.0, 15.9, 0.0, 5.0, 12.5, 22.0, 12.4, 2.4, 9.1, 18.0, 0.0]], 1.5], ['orchard night 29', [[5.0, 12.5, 18.1, 2.4, 1.4, 9.2, 1.4, 1.4, None, None, 18.0, 15.9]], 0.5], ['warm spell after chill', [[5.0, 5.0, 20.0, 20.0, 20.0, 5.0]], 1.0], ['gap mid night', [[5.0, None, 5.0]], 2.0], ['warm start', [[19.0, 19.0, 6.0]], 1.0]]]
for label, args, expected in fixtures[N - 1]:
    check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
orchard night 02.02.0Passed
orchard night 14.54.0Failed
orchard night 21.01.0Passed
orchard night 32.52.5Passed
orchard night 43.53.5Passed
orchard night 53.03.0Passed
orchard night 63.53.0Failed
orchard night 72.01.5Failed

SHA-256 / e8cd4ae029973bda55c5c15fa6e3d3696855057878b4caf39e95f102d588cda1

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(hourly):
    total = 0.0
    for t in hourly:
        if t is None:
            continue
        if t <= 1.4:
            u = 0.0
        elif t <= 2.4:
            u = 0.5
        elif t <= 9.1:
            u = 1.0
        elif t <= 12.4:
            u = 0.5
        elif t <= 15.9:
            u = 0.0
        elif t <= 18.0:
            u = -0.5
        else:
            u = -1.0
        total = max(total + u, 0.0)
    return total
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['orchard night 0', [[2.4, 2.4, 12.5, 18.1, None, 1.4, 18.1, 5.0, 22.0, 12.5, 2.5, 5.0]], 2.0], ['orchard night 1', [[9.2, 18.0, 2.4, 2.4, 12.4, 2.5, 22.0, 12.4, 0.0, 9.1, 2.5, 1.4]], 4.0], ['orchard night 2', [[18.0, 0.0, 18.1, 2.4, 2.5, 22.0, 22.0, None, 16.0, 1.5, 1.5, 1.4]], 1.0], ['orchard night 3', [[None, 15.9, 1.4, 0.0, 9.1, 12.4, 1.5, 2.5, 12.5, 18.1, 2.4, 1.4]], 2.5], ['orchard night 4', [[5.0, 12.5, 9.1, 1.5, 22.0, 1.5, 1.4, 1.4, 15.9, 2.4, 9.1, 12.5]], 3.5], ['orchard night 5', [[0.0, 15.9, 2.5, 12.4, 18.0, 0.0, 1.4, 1.4, 2.5, 12.4, 15.9, 12.4]], 3.0], ['orchard night 6', [[22.0, 15.9, 12.4, 9.2, 12.4, 0.0, 5.0, 2.4, 22.0, 1.4, 9.1, None]], 3.0], ['orchard night 7', [[None, 5.0, 12.4, 0.0, 22.0, 18.1, 2.5, 9.2, None, None, 1.4, 12.5]], 1.5]], [['orchard night 6', [[22.0, 15.9, 12.4, 9.2, 12.4, 0.0, 5.0, 2.4, 22.0, 1.4, 9.1, None]], 3.0], ['orchard night 7', [[None, 5.0, 12.4, 0.0, 22.0, 18.1, 2.5, 9.2, None, None, 1.4, 12.5]], 1.5], ['orchard night 8', [[18.1, 22.0, 2.5, 18.0, 12.5, 2.4, 5.0, 9.1, None, 2.4, 2.5, 15.9]], 4.5], ['orchard night 9', [[2.5, None, 1.4, 18.0, None, 12.4, 5.0, None, 22.0, 18.1, 5.0, 18.1]], 0.0], ['orchard night 10', [[12.4, 2.4, 12.4, None, 9.1, 0.0, 12.4, 18.1, 9.1, 12.5, 1.4, 9.1]], 4.0], ['orchard night 11', [[9.1, 5.0, 18.1, 2.5, 5.0, 1.4, 9.1, None, 15.9, 2.4, 2.4, 18.1]], 4.0], ['orchard night 12', [[9.2, 16.0, 0.0, 9.2, 2.5, 15.9, 0.0, 9.2, 0.0, 0.0, 9.2, 2.5]], 3.5], ['orchard night 20', [[1.5, None, 18.0, 1.4, 18.1, 9.2, 9.1, 2.5, 2.5, 2.4, 2.5, 9.2]], 5.5]], [['orchard night 11', [[9.1, 5.0, 18.1, 2.5, 5.0, 1.4, 9.1, None, 15.9, 2.4, 2.4, 18.1]], 4.0], ['orchard night 14', [[1.4, 1.4, 18.0, 16.0, 12.4, 2.4, 15.9, 18.1, 18.0, 2.4, 0.0, 18.0]], 0.0], ['orchard night 15', [[1.5, 2.4, 12.5, 16.0, 16.0, 12.4, 12.4, 12.4, 18.0, 18.0, 2.5, 1.5]], 2.0], ['orchard night 16', [[16.0, 1.5, 22.0, 1.5, 12.5, 12.4, 1.4, 9.1, 22.0, 9.1, 9.1, 15.9]], 3.0], ['orchard night 17', [[1.5, 12.5, 9.2, 1.4, None, 0.0, 15.9, 12.5, 0.0, 16.0, 2.4, 12.4]], 1.5], ['orchard night 18', [[15.9, 9.2, 9.1, 15.9, 9.2, 15.9, 15.9, 9.2, 22.0, 12.4, 2.4, None]], 2.5], ['orchard night 19', [[16.0, 1.5, 18.1, 9.1, 22.0, 16.0, 12.4, 16.0, 12.4, 12.5, 2.4, 22.0]], 0.0], ['orchard night 29', [[5.0, 12.5, 18.1, 2.4, 1.4, 9.2, 1.4, 1.4, None, None, 18.0, 15.9]], 0.5]], [['orchard night 17', [[1.5, 12.5, 9.2, 1.4, None, 0.0, 15.9, 12.5, 0.0, 16.0, 2.4, 12.4]], 1.5], ['orchard night 20', [[1.5, None, 18.0, 1.4, 18.1, 9.2, 9.1, 2.5, 2.5, 2.4, 2.5, 9.2]], 5.5], ['orchard night 21', [[9.1, 16.0, 15.9, 9.2, 5.0, 0.0, 9.2, 16.0, 18.0, 12.5, 9.2, 18.0]], 1.5], ['orchard night 22', [[1.5, 22.0, 2.5, 2.4, 12.5, 12.4, 22.0, 2.5, 15.9, 18.1, 1.5, 9.1]], 2.5], ['orchard night 23', [[2.4, 16.0, 18.0, 1.5, 15.9, 16.0, 9.1, 9.2, 1.5, 12.5, 16.0, 22.0]], 0.5], ['orchard night 24', [[2.5, 16.0, 2.5, 18.0, 18.0, 12.5, 22.0, 9.1, 12.4, 5.0, 9.1, 1.4]], 3.5], ['orchard night 25', [[0.0, None, 5.0, 22.0, 5.0, 9.1, 2.4, 1.4, 5.0, 9.1, 22.0, 2.4]], 4.0], ['orchard night 26', [[5.0, 9.1, None, 18.1, 9.2, None, 0.0, 2.5, 22.0, 15.9, 18.1, 15.9]], 0.5]], [['orchard night 0', [[2.4, 2.4, 12.5, 18.1, None, 1.4, 18.1, 5.0, 22.0, 12.5, 2.5, 5.0]], 2.0], ['orchard night 23', [[2.4, 16.0, 18.0, 1.5, 15.9, 16.0, 9.1, 9.2, 1.5, 12.5, 16.0, 22.0]], 0.5], ['orchard night 26', [[5.0, 9.1, None, 18.1, 9.2, None, 0.0, 2.5, 22.0, 15.9, 18.1, 15.9]], 0.5], ['orchard night 28', [[9.2, 16.0, 15.9, 0.0, 5.0, 12.5, 22.0, 12.4, 2.4, 9.1, 18.0, 0.0]], 1.5], ['orchard night 29', [[5.0, 12.5, 18.1, 2.4, 1.4, 9.2, 1.4, 1.4, None, None, 18.0, 15.9]], 0.5], ['warm spell after chill', [[5.0, 5.0, 20.0, 20.0, 20.0, 5.0]], 1.0], ['gap mid night', [[5.0, None, 5.0]], 2.0], ['warm start', [[19.0, 19.0, 6.0]], 1.0]]]
for label, args, expected in fixtures[N - 1]:
    check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
orchard night 02.02.0Passed
orchard night 14.04.0Passed
orchard night 21.01.0Passed
orchard night 32.52.5Passed
orchard night 43.53.5Passed
orchard night 53.03.0Passed
orchard night 63.03.0Passed
orchard night 71.51.5Passed

SHA-256 / 4914abba2d75904602057b8b284c5adde144ac2a5ef9e9e23a44649962fb8892

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:27.258858+00:00.

Case digest / af9c292fff9b5f187a9081c2b6a9f6b593f4edf0c099e9f11d19e918fa5c3930