{"abstract":"A single dropped logger hour discards the rest of the night.","category":"Weather index computation","checks":8,"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.","contract_signature":"hourly","evaluation_group":"w2-weather_index_computation-utah-chill-units","failed_approach":"Resetting the total on a gap discards chill already earned.","family":"w2-weather_index_computation-utah-chill-units-missing-hour-handling","id":"FA-71171","implementations":{"attempt":{"sha256":"fbe23720404567e3427ae2f97704fabccac8b338a21b07b0459176e40bc8fdda","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(hourly):\n    total = 0.0\n    for t in hourly:\n        if t is None:\n            total = 0.0\n            continue\n        if t <= 1.4:\n            u = 0.0\n        elif t <= 2.4:\n            u = 0.5\n        elif t <= 9.1:\n            u = 1.0\n        elif t <= 12.4:\n            u = 0.5\n        elif t <= 15.9:\n            u = 0.0\n        elif t <= 18.0:\n            u = -0.5\n        else:\n            u = -1.0\n        total = max(total + u, 0.0)\n    return total\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['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 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 13', [[2.5, 15.9, 1.4, 12.5, 5.0, 1.4, 12.4, 2.4, 18.1, 0.0, 1.4, 12.4]], 2.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 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 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 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 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 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 27', [[1.5, 16.0, 9.2, 12.5, 2.5, 22.0, 2.4, 12.5, 1.4, 22.0, 12.5, 22.0]], 0.0]], [['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 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 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]]]\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":"59f19cf391d2788939e8f1ed48428d78edde54514a15848579aa2a81de71f77f","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(hourly):\n    total = 0.0\n    for t in hourly:\n        if t is None:\n            break\n        if t <= 1.4:\n            u = 0.0\n        elif t <= 2.4:\n            u = 0.5\n        elif t <= 9.1:\n            u = 1.0\n        elif t <= 12.4:\n            u = 0.5\n        elif t <= 15.9:\n            u = 0.0\n        elif t <= 18.0:\n            u = -0.5\n        else:\n            u = -1.0\n        total = max(total + u, 0.0)\n    return total\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['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 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 13', [[2.5, 15.9, 1.4, 12.5, 5.0, 1.4, 12.4, 2.4, 18.1, 0.0, 1.4, 12.4]], 2.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 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 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 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 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 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 27', [[1.5, 16.0, 9.2, 12.5, 2.5, 22.0, 2.4, 12.5, 1.4, 22.0, 12.5, 22.0]], 0.0]], [['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 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 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]]]\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-utah-chill-units-missing-hour-handling","generated_at":"2026-09-29T14:48:27.300439+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Orchard dormancy and bloom forecasts depend on accumulated chill units.","root_cause":"A missing reading stops the accumulation loop.","sha256":"0d0ec1353c8c2509bd91a29ea76ba5a5ad2aaf16340c3f3985c210375d926414","title":"Utah chill unit accumulation: missing hour handling · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":39.7,"exit_code":1,"observations":[{"actual":2.0,"check":"orchard night 0","expected":2.0,"passed":true},{"actual":4.0,"check":"orchard night 1","expected":4.0,"passed":true},{"actual":1.0,"check":"orchard night 2","expected":1.0,"passed":true},{"actual":2.5,"check":"orchard night 3","expected":2.5,"passed":true},{"actual":3.5,"check":"orchard night 4","expected":3.5,"passed":true},{"actual":3.0,"check":"orchard night 5","expected":3.0,"passed":true},{"actual":0.0,"check":"orchard night 6","expected":3.0,"passed":false},{"actual":0.0,"check":"orchard night 7","expected":1.5,"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"orchard night 0\", \"actual\": 2.0, \"expected\": 2.0, \"passed\": true}, {\"check\": \"orchard night 1\", \"actual\": 4.0, \"expected\": 4.0, \"passed\": true}, {\"check\": \"orchard night 2\", \"actual\": 1.0, \"expected\": 1.0, \"passed\": true}, {\"check\": \"orchard night 3\", \"actual\": 2.5, \"expected\": 2.5, \"passed\": true}, {\"check\": \"orchard night 4\", \"actual\": 3.5, \"expected\": 3.5, \"passed\": true}, {\"check\": \"orchard night 5\", \"actual\": 3.0, \"expected\": 3.0, \"passed\": true}, {\"check\": \"orchard night 6\", \"actual\": 0.0, \"expected\": 3.0, \"passed\": false}, {\"check\": \"orchard night 7\", \"actual\": 0.0, \"expected\": 1.5, \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":36.975,"exit_code":1,"observations":[{"actual":0.0,"check":"orchard night 0","expected":2.0,"passed":false},{"actual":4.0,"check":"orchard night 1","expected":4.0,"passed":true},{"actual":0.0,"check":"orchard night 2","expected":1.0,"passed":false},{"actual":0.0,"check":"orchard night 3","expected":2.5,"passed":false},{"actual":3.5,"check":"orchard night 4","expected":3.5,"passed":true},{"actual":3.0,"check":"orchard night 5","expected":3.0,"passed":true},{"actual":3.0,"check":"orchard night 6","expected":3.0,"passed":true},{"actual":0.0,"check":"orchard night 7","expected":1.5,"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"orchard night 0\", \"actual\": 0.0, \"expected\": 2.0, \"passed\": false}, {\"check\": \"orchard night 1\", \"actual\": 4.0, \"expected\": 4.0, \"passed\": true}, {\"check\": \"orchard night 2\", \"actual\": 0.0, \"expected\": 1.0, \"passed\": false}, {\"check\": \"orchard night 3\", \"actual\": 0.0, \"expected\": 2.5, \"passed\": false}, {\"check\": \"orchard night 4\", \"actual\": 3.5, \"expected\": 3.5, \"passed\": true}, {\"check\": \"orchard night 5\", \"actual\": 3.0, \"expected\": 3.0, \"passed\": true}, {\"check\": \"orchard night 6\", \"actual\": 3.0, \"expected\": 3.0, \"passed\": true}, {\"check\": \"orchard night 7\", \"actual\": 0.0, \"expected\": 1.5, \"passed\": false}], \"passed\": false}\n"}},"member_only":{"stages":["fixed"],"fields":["implementations.fixed","verification.fixed","harness","repair"],"note":"The verified repair, its recorded checks, the repair description, and the scoring harness are available to members."}}