{"abstract":"Irrigation demand is about 2.5 times too high.","category":"Weather index computation","checks":8,"contract":"Daily tmax/tmin degC (tmax >= tmin) and extraterrestrial radiation Ra in MJ/m2/day. Convert Ra to mm/day with 0.408. ET0 = 0.0023*Ra_mm*(Tmean+17.8)*sqrt(tmax-tmin), Tmean=(tmax+tmin)/2; negative results clamp to 0; round to 0.01 mm.","contract_signature":"tmax, tmin, ra_mj","evaluation_group":"w2-weather_index_computation-hargreaves-et0","failed_approach":"Dividing by 0.408 applies the conversion in the wrong direction.","family":"w2-weather_index_computation-hargreaves-et0-radiation-equivalent-evaporation","id":"FA-71176","implementations":{"attempt":{"sha256":"d208ebb009d8fe9311a6826be4520d38ad55828b6a6ab6df21709ec7870a5ffb","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(tmax, tmin, ra_mj):\n    tmean = (tmax + tmin) / 2\n    et = 0.0023 * ra_mj / 0.408 * (tmean + 17.8) * math.sqrt(tmax - tmin)\n    return round(max(et, 0.0), 2)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['tmax 30 tmin 15 Ra 10.0', [30, 15, 10.0], 1.46], ['tmax 30 tmin 15 Ra 25.0', [30, 15, 25.0], 3.66], ['tmax 30 tmin 15 Ra 40.0', [30, 15, 40.0], 5.86], ['tmax 35 tmin 20 Ra 10.0', [35, 20, 10.0], 1.65], ['tmax 35 tmin 20 Ra 25.0', [35, 20, 25.0], 4.12], ['tmax 35 tmin 20 Ra 40.0', [35, 20, 40.0], 6.59], ['tmax 10 tmin -2 Ra 10.0', [10, -2, 10.0], 0.71], ['tmax 10 tmin -2 Ra 25.0', [10, -2, 25.0], 1.77]], [['tmax 35 tmin 20 Ra 10.0', [35, 20, 10.0], 1.65], ['tmax 10 tmin -2 Ra 10.0', [10, -2, 10.0], 0.71], ['tmax 10 tmin -2 Ra 25.0', [10, -2, 25.0], 1.77], ['tmax 10 tmin -2 Ra 40.0', [10, -2, 40.0], 2.83], ['tmax -10 tmin -25 Ra 10.0', [-10, -25, 10.0], 0.01], ['tmax -10 tmin -25 Ra 25.0', [-10, -25, 25.0], 0.03], ['tmax -10 tmin -25 Ra 40.0', [-10, -25, 40.0], 0.04], ['tmax -12 tmin -30 Ra 10.0', [-12, -30, 10.0], 0.0]], [['tmax 10 tmin -2 Ra 10.0', [10, -2, 10.0], 0.71], ['tmax -10 tmin -25 Ra 40.0', [-10, -25, 40.0], 0.04], ['tmax -12 tmin -30 Ra 40.0', [-12, -30, 40.0], 0.0], ['tmax 25 tmin 25 Ra 10.0', [25, 25, 10.0], 0.0], ['tmax 25 tmin 25 Ra 25.0', [25, 25, 25.0], 0.0], ['tmax 25 tmin 25 Ra 40.0', [25, 25, 40.0], 0.0], ['tmax 40 tmin 18 Ra 10.0', [40, 18, 10.0], 2.06], ['tmax 40 tmin 18 Ra 25.0', [40, 18, 25.0], 5.15]], [['tmax 30 tmin 15 Ra 10.0', [30, 15, 10.0], 1.46], ['tmax -10 tmin -25 Ra 10.0', [-10, -25, 10.0], 0.01], ['tmax 22 tmin 8 Ra 10.0', [22, 8, 10.0], 1.15], ['tmax 22 tmin 8 Ra 25.0', [22, 8, 25.0], 2.88], ['tmax 22 tmin 8 Ra 40.0', [22, 8, 40.0], 4.61], ['tmax -5 tmin -20 Ra 10.0', [-5, -20, 10.0], 0.19], ['tmax -5 tmin -20 Ra 25.0', [-5, -20, 25.0], 0.48], ['tmax -5 tmin -20 Ra 40.0', [-5, -20, 40.0], 0.77]], [['tmax 30 tmin 15 Ra 10.0', [30, 15, 10.0], 1.46], ['tmax 30 tmin 15 Ra 25.0', [30, 15, 25.0], 3.66], ['tmax 30 tmin 15 Ra 40.0', [30, 15, 40.0], 5.86], ['tmax 35 tmin 20 Ra 10.0', [35, 20, 10.0], 1.65], ['tmax 35 tmin 20 Ra 25.0', [35, 20, 25.0], 4.12], ['tmax 35 tmin 20 Ra 40.0', [35, 20, 40.0], 6.59], ['tmax 10 tmin -2 Ra 10.0', [10, -2, 10.0], 0.71], ['tmax 40 tmin 18 Ra 10.0', [40, 18, 10.0], 2.06]]]\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":"4c0ac98d1cd34503e01d6fc8737831d7aef0c09ce5a83183f94ad178ff474347","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(tmax, tmin, ra_mj):\n    tmean = (tmax + tmin) / 2\n    et = 0.0023 * ra_mj * (tmean + 17.8) * math.sqrt(tmax - tmin)\n    return round(max(et, 0.0), 2)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['tmax 30 tmin 15 Ra 10.0', [30, 15, 10.0], 1.46], ['tmax 30 tmin 15 Ra 25.0', [30, 15, 25.0], 3.66], ['tmax 30 tmin 15 Ra 40.0', [30, 15, 40.0], 5.86], ['tmax 35 tmin 20 Ra 10.0', [35, 20, 10.0], 1.65], ['tmax 35 tmin 20 Ra 25.0', [35, 20, 25.0], 4.12], ['tmax 35 tmin 20 Ra 40.0', [35, 20, 40.0], 6.59], ['tmax 10 tmin -2 Ra 10.0', [10, -2, 10.0], 0.71], ['tmax 10 tmin -2 Ra 25.0', [10, -2, 25.0], 1.77]], [['tmax 35 tmin 20 Ra 10.0', [35, 20, 10.0], 1.65], ['tmax 10 tmin -2 Ra 10.0', [10, -2, 10.0], 0.71], ['tmax 10 tmin -2 Ra 25.0', [10, -2, 25.0], 1.77], ['tmax 10 tmin -2 Ra 40.0', [10, -2, 40.0], 2.83], ['tmax -10 tmin -25 Ra 10.0', [-10, -25, 10.0], 0.01], ['tmax -10 tmin -25 Ra 25.0', [-10, -25, 25.0], 0.03], ['tmax -10 tmin -25 Ra 40.0', [-10, -25, 40.0], 0.04], ['tmax -12 tmin -30 Ra 10.0', [-12, -30, 10.0], 0.0]], [['tmax 10 tmin -2 Ra 10.0', [10, -2, 10.0], 0.71], ['tmax -10 tmin -25 Ra 40.0', [-10, -25, 40.0], 0.04], ['tmax -12 tmin -30 Ra 40.0', [-12, -30, 40.0], 0.0], ['tmax 25 tmin 25 Ra 10.0', [25, 25, 10.0], 0.0], ['tmax 25 tmin 25 Ra 25.0', [25, 25, 25.0], 0.0], ['tmax 25 tmin 25 Ra 40.0', [25, 25, 40.0], 0.0], ['tmax 40 tmin 18 Ra 10.0', [40, 18, 10.0], 2.06], ['tmax 40 tmin 18 Ra 25.0', [40, 18, 25.0], 5.15]], [['tmax 30 tmin 15 Ra 10.0', [30, 15, 10.0], 1.46], ['tmax -10 tmin -25 Ra 10.0', [-10, -25, 10.0], 0.01], ['tmax 22 tmin 8 Ra 10.0', [22, 8, 10.0], 1.15], ['tmax 22 tmin 8 Ra 25.0', [22, 8, 25.0], 2.88], ['tmax 22 tmin 8 Ra 40.0', [22, 8, 40.0], 4.61], ['tmax -5 tmin -20 Ra 10.0', [-5, -20, 10.0], 0.19], ['tmax -5 tmin -20 Ra 25.0', [-5, -20, 25.0], 0.48], ['tmax -5 tmin -20 Ra 40.0', [-5, -20, 40.0], 0.77]], [['tmax 30 tmin 15 Ra 10.0', [30, 15, 10.0], 1.46], ['tmax 30 tmin 15 Ra 25.0', [30, 15, 25.0], 3.66], ['tmax 30 tmin 15 Ra 40.0', [30, 15, 40.0], 5.86], ['tmax 35 tmin 20 Ra 10.0', [35, 20, 10.0], 1.65], ['tmax 35 tmin 20 Ra 25.0', [35, 20, 25.0], 4.12], ['tmax 35 tmin 20 Ra 40.0', [35, 20, 40.0], 6.59], ['tmax 10 tmin -2 Ra 10.0', [10, -2, 10.0], 0.71], ['tmax 40 tmin 18 Ra 10.0', [40, 18, 10.0], 2.06]]]\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-hargreaves-et0-radiation-equivalent-evaporation","generated_at":"2026-09-29T14:48:27.337948+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Irrigation scheduling uses ET0 where full meteorological data are unavailable.","root_cause":"Radiation in MJ/m2/day is used without the 0.408 mm-equivalent conversion.","sha256":"5b19ece7c145f3966b1bbae30049c87db8f0f6f94a9247e2079c17e5d738caea","title":"Hargreaves reference evapotranspiration: radiation equivalent evaporation · 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":38.437,"exit_code":1,"observations":[{"actual":8.8,"check":"tmax 30 tmin 15 Ra 10.0","expected":1.46,"passed":false},{"actual":22.0,"check":"tmax 30 tmin 15 Ra 25.0","expected":3.66,"passed":false},{"actual":35.19,"check":"tmax 30 tmin 15 Ra 40.0","expected":5.86,"passed":false},{"actual":9.89,"check":"tmax 35 tmin 20 Ra 10.0","expected":1.65,"passed":false},{"actual":24.73,"check":"tmax 35 tmin 20 Ra 25.0","expected":4.12,"passed":false},{"actual":39.56,"check":"tmax 35 tmin 20 Ra 40.0","expected":6.59,"passed":false},{"actual":4.26,"check":"tmax 10 tmin -2 Ra 10.0","expected":0.71,"passed":false},{"actual":10.64,"check":"tmax 10 tmin -2 Ra 25.0","expected":1.77,"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"tmax 30 tmin 15 Ra 10.0\", \"actual\": 8.8, \"expected\": 1.46, \"passed\": false}, {\"check\": \"tmax 30 tmin 15 Ra 25.0\", \"actual\": 22.0, \"expected\": 3.66, \"passed\": false}, {\"check\": \"tmax 30 tmin 15 Ra 40.0\", \"actual\": 35.19, \"expected\": 5.86, \"passed\": false}, {\"check\": \"tmax 35 tmin 20 Ra 10.0\", \"actual\": 9.89, \"expected\": 1.65, \"passed\": false}, {\"check\": \"tmax 35 tmin 20 Ra 25.0\", \"actual\": 24.73, \"expected\": 4.12, \"passed\": false}, {\"check\": \"tmax 35 tmin 20 Ra 40.0\", \"actual\": 39.56, \"expected\": 6.59, \"passed\": false}, {\"check\": \"tmax 10 tmin -2 Ra 10.0\", \"actual\": 4.26, \"expected\": 0.71, \"passed\": false}, {\"check\": \"tmax 10 tmin -2 Ra 25.0\", \"actual\": 10.64, \"expected\": 1.77, \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.704,"exit_code":1,"observations":[{"actual":3.59,"check":"tmax 30 tmin 15 Ra 10.0","expected":1.46,"passed":false},{"actual":8.97,"check":"tmax 30 tmin 15 Ra 25.0","expected":3.66,"passed":false},{"actual":14.36,"check":"tmax 30 tmin 15 Ra 40.0","expected":5.86,"passed":false},{"actual":4.04,"check":"tmax 35 tmin 20 Ra 10.0","expected":1.65,"passed":false},{"actual":10.09,"check":"tmax 35 tmin 20 Ra 25.0","expected":4.12,"passed":false},{"actual":16.14,"check":"tmax 35 tmin 20 Ra 40.0","expected":6.59,"passed":false},{"actual":1.74,"check":"tmax 10 tmin -2 Ra 10.0","expected":0.71,"passed":false},{"actual":4.34,"check":"tmax 10 tmin -2 Ra 25.0","expected":1.77,"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"tmax 30 tmin 15 Ra 10.0\", \"actual\": 3.59, \"expected\": 1.46, \"passed\": false}, {\"check\": \"tmax 30 tmin 15 Ra 25.0\", \"actual\": 8.97, \"expected\": 3.66, \"passed\": false}, {\"check\": \"tmax 30 tmin 15 Ra 40.0\", \"actual\": 14.36, \"expected\": 5.86, \"passed\": false}, {\"check\": \"tmax 35 tmin 20 Ra 10.0\", \"actual\": 4.04, \"expected\": 1.65, \"passed\": false}, {\"check\": \"tmax 35 tmin 20 Ra 25.0\", \"actual\": 10.09, \"expected\": 4.12, \"passed\": false}, {\"check\": \"tmax 35 tmin 20 Ra 40.0\", \"actual\": 16.14, \"expected\": 6.59, \"passed\": false}, {\"check\": \"tmax 10 tmin -2 Ra 10.0\", \"actual\": 1.74, \"expected\": 0.71, \"passed\": false}, {\"check\": \"tmax 10 tmin -2 Ra 25.0\", \"actual\": 4.34, \"expected\": 1.77, \"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."}}