{"abstract":"Humid barns report nearly the same THI as dry ones.","category":"Weather index computation","checks":8,"contract":"Input barn temperature degC and RH percent. THI = (1.8T+32) - (0.55 - 0.0055RH)(1.8T - 26); THI is rounded to 0.1 first and the stress level is taken from the rounded value: <72 none, <79 mild, <89 moderate, <99 severe, else emergency.","evaluation_group":"w2-weather_index_computation-livestock-thi","failed_approach":"Using 0.055 makes the humidity factor negative and overshoots.","family":"w2-weather_index_computation-livestock-thi-humidity-coefficient-scale","id":"FA-70951","implementations":{"attempt":{"sha256":"eda2601a5d11a58821c156eb9905cc8228c6961d08d088f7c28d65057bbe8bd2","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(t_c, rh):\n    thi = (1.8 * t_c + 32) - (0.55 - 0.055 * rh) * (1.8 * t_c - 26)\n    thi = round(thi, 1)\n    if thi < 72:\n        level = \"none\"\n    elif thi < 79:\n        level = \"mild\"\n    elif thi < 89:\n        level = \"moderate\"\n    elif thi < 99:\n        level = \"severe\"\n    else:\n        level = \"emergency\"\n    return [thi, level]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['15 C barn at 20% RH', [15, 20], [58.6, 'none']], ['15 C barn at 40% RH', [15, 40], [58.7, 'none']], ['15 C barn at 55% RH', [15, 55], [58.8, 'none']], ['15 C barn at 70% RH', [15, 70], [58.8, 'none']], ['15 C barn at 85% RH', [15, 85], [58.9, 'none']], ['15 C barn at 100% RH', [15, 100], [59.0, 'none']], ['21 C barn at 20% RH', [21, 20], [64.6, 'none']], ['21 C barn at 40% RH', [21, 40], [65.9, 'none']]], [['15 C barn at 70% RH', [15, 70], [58.8, 'none']], ['21 C barn at 20% RH', [21, 20], [64.6, 'none']], ['21 C barn at 40% RH', [21, 40], [65.9, 'none']], ['21 C barn at 55% RH', [21, 55], [66.9, 'none']], ['21 C barn at 70% RH', [21, 70], [67.9, 'none']], ['21 C barn at 85% RH', [21, 85], [68.8, 'none']], ['21 C barn at 100% RH', [21, 100], [69.8, 'none']], ['22 C barn at 20% RH', [22, 20], [65.6, 'none']]], [['21 C barn at 20% RH', [21, 20], [64.6, 'none']], ['21 C barn at 100% RH', [21, 100], [69.8, 'none']], ['22 C barn at 55% RH', [22, 55], [68.2, 'none']], ['22 C barn at 70% RH', [22, 70], [69.4, 'none']], ['22 C barn at 85% RH', [22, 85], [70.5, 'none']], ['22 C barn at 100% RH', [22, 100], [71.6, 'none']], ['24 C barn at 20% RH', [24, 20], [67.6, 'none']], ['24 C barn at 40% RH', [24, 40], [69.5, 'none']]], [['21 C barn at 70% RH', [21, 70], [67.9, 'none']], ['22 C barn at 85% RH', [22, 85], [70.5, 'none']], ['24 C barn at 70% RH', [24, 70], [72.4, 'mild']], ['24 C barn at 85% RH', [24, 85], [73.8, 'mild']], ['24 C barn at 100% RH', [24, 100], [75.2, 'mild']], ['25 C barn at 20% RH', [25, 20], [68.6, 'none']], ['25 C barn at 40% RH', [25, 40], [70.7, 'none']], ['25 C barn at 55% RH', [25, 55], [72.3, 'mild']]], [['22 C barn at 20% RH', [22, 20], [65.6, 'none']], ['24 C barn at 70% RH', [24, 70], [72.4, 'mild']], ['25 C barn at 85% RH', [25, 85], [75.4, 'mild']], ['25 C barn at 100% RH', [25, 100], [77.0, 'mild']], ['26 C barn at 20% RH', [26, 20], [69.6, 'none']], ['26 C barn at 40% RH', [26, 40], [71.9, 'none']], ['26 C barn at 55% RH', [26, 55], [73.7, 'mild']], ['26 C barn at 70% RH', [26, 70], [75.4, 'mild']]]]\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":"3bdeebeab132710a89e17e5dd1e7a54202d56b3ca271151826b58929646acd9a","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(t_c, rh):\n    thi = (1.8 * t_c + 32) - (0.55 - 0.0055 * rh / 100) * (1.8 * t_c - 26)\n    thi = round(thi, 1)\n    if thi < 72:\n        level = \"none\"\n    elif thi < 79:\n        level = \"mild\"\n    elif thi < 89:\n        level = \"moderate\"\n    elif thi < 99:\n        level = \"severe\"\n    else:\n        level = \"emergency\"\n    return [thi, level]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['15 C barn at 20% RH', [15, 20], [58.6, 'none']], ['15 C barn at 40% RH', [15, 40], [58.7, 'none']], ['15 C barn at 55% RH', [15, 55], [58.8, 'none']], ['15 C barn at 70% RH', [15, 70], [58.8, 'none']], ['15 C barn at 85% RH', [15, 85], [58.9, 'none']], ['15 C barn at 100% RH', [15, 100], [59.0, 'none']], ['21 C barn at 20% RH', [21, 20], [64.6, 'none']], ['21 C barn at 40% RH', [21, 40], [65.9, 'none']]], [['15 C barn at 70% RH', [15, 70], [58.8, 'none']], ['21 C barn at 20% RH', [21, 20], [64.6, 'none']], ['21 C barn at 40% RH', [21, 40], [65.9, 'none']], ['21 C barn at 55% RH', [21, 55], [66.9, 'none']], ['21 C barn at 70% RH', [21, 70], [67.9, 'none']], ['21 C barn at 85% RH', [21, 85], [68.8, 'none']], ['21 C barn at 100% RH', [21, 100], [69.8, 'none']], ['22 C barn at 20% RH', [22, 20], [65.6, 'none']]], [['21 C barn at 20% RH', [21, 20], [64.6, 'none']], ['21 C barn at 100% RH', [21, 100], [69.8, 'none']], ['22 C barn at 55% RH', [22, 55], [68.2, 'none']], ['22 C barn at 70% RH', [22, 70], [69.4, 'none']], ['22 C barn at 85% RH', [22, 85], [70.5, 'none']], ['22 C barn at 100% RH', [22, 100], [71.6, 'none']], ['24 C barn at 20% RH', [24, 20], [67.6, 'none']], ['24 C barn at 40% RH', [24, 40], [69.5, 'none']]], [['21 C barn at 70% RH', [21, 70], [67.9, 'none']], ['22 C barn at 85% RH', [22, 85], [70.5, 'none']], ['24 C barn at 70% RH', [24, 70], [72.4, 'mild']], ['24 C barn at 85% RH', [24, 85], [73.8, 'mild']], ['24 C barn at 100% RH', [24, 100], [75.2, 'mild']], ['25 C barn at 20% RH', [25, 20], [68.6, 'none']], ['25 C barn at 40% RH', [25, 40], [70.7, 'none']], ['25 C barn at 55% RH', [25, 55], [72.3, 'mild']]], [['22 C barn at 20% RH', [22, 20], [65.6, 'none']], ['24 C barn at 70% RH', [24, 70], [72.4, 'mild']], ['25 C barn at 85% RH', [25, 85], [75.4, 'mild']], ['25 C barn at 100% RH', [25, 100], [77.0, 'mild']], ['26 C barn at 20% RH', [26, 20], [69.6, 'none']], ['26 C barn at 40% RH', [26, 40], [71.9, 'none']], ['26 C barn at 55% RH', [26, 55], [73.7, 'mild']], ['26 C barn at 70% RH', [26, 70], [75.4, 'mild']]]]\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"},"fixed":{"sha256":"f108ed4c9b85f765c641b77a919ae132169deefb3acb56419ffb4d5f96093024","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(t_c, rh):\n    thi = (1.8 * t_c + 32) - (0.55 - 0.0055 * rh) * (1.8 * t_c - 26)\n    thi = round(thi, 1)\n    if thi < 72:\n        level = \"none\"\n    elif thi < 79:\n        level = \"mild\"\n    elif thi < 89:\n        level = \"moderate\"\n    elif thi < 99:\n        level = \"severe\"\n    else:\n        level = \"emergency\"\n    return [thi, level]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['15 C barn at 20% RH', [15, 20], [58.6, 'none']], ['15 C barn at 40% RH', [15, 40], [58.7, 'none']], ['15 C barn at 55% RH', [15, 55], [58.8, 'none']], ['15 C barn at 70% RH', [15, 70], [58.8, 'none']], ['15 C barn at 85% RH', [15, 85], [58.9, 'none']], ['15 C barn at 100% RH', [15, 100], [59.0, 'none']], ['21 C barn at 20% RH', [21, 20], [64.6, 'none']], ['21 C barn at 40% RH', [21, 40], [65.9, 'none']]], [['15 C barn at 70% RH', [15, 70], [58.8, 'none']], ['21 C barn at 20% RH', [21, 20], [64.6, 'none']], ['21 C barn at 40% RH', [21, 40], [65.9, 'none']], ['21 C barn at 55% RH', [21, 55], [66.9, 'none']], ['21 C barn at 70% RH', [21, 70], [67.9, 'none']], ['21 C barn at 85% RH', [21, 85], [68.8, 'none']], ['21 C barn at 100% RH', [21, 100], [69.8, 'none']], ['22 C barn at 20% RH', [22, 20], [65.6, 'none']]], [['21 C barn at 20% RH', [21, 20], [64.6, 'none']], ['21 C barn at 100% RH', [21, 100], [69.8, 'none']], ['22 C barn at 55% RH', [22, 55], [68.2, 'none']], ['22 C barn at 70% RH', [22, 70], [69.4, 'none']], ['22 C barn at 85% RH', [22, 85], [70.5, 'none']], ['22 C barn at 100% RH', [22, 100], [71.6, 'none']], ['24 C barn at 20% RH', [24, 20], [67.6, 'none']], ['24 C barn at 40% RH', [24, 40], [69.5, 'none']]], [['21 C barn at 70% RH', [21, 70], [67.9, 'none']], ['22 C barn at 85% RH', [22, 85], [70.5, 'none']], ['24 C barn at 70% RH', [24, 70], [72.4, 'mild']], ['24 C barn at 85% RH', [24, 85], [73.8, 'mild']], ['24 C barn at 100% RH', [24, 100], [75.2, 'mild']], ['25 C barn at 20% RH', [25, 20], [68.6, 'none']], ['25 C barn at 40% RH', [25, 40], [70.7, 'none']], ['25 C barn at 55% RH', [25, 55], [72.3, 'mild']]], [['22 C barn at 20% RH', [22, 20], [65.6, 'none']], ['24 C barn at 70% RH', [24, 70], [72.4, 'mild']], ['25 C barn at 85% RH', [25, 85], [75.4, 'mild']], ['25 C barn at 100% RH', [25, 100], [77.0, 'mild']], ['26 C barn at 20% RH', [26, 20], [69.6, 'none']], ['26 C barn at 40% RH', [26, 40], [71.9, 'none']], ['26 C barn at 55% RH', [26, 55], [73.7, 'mild']], ['26 C barn at 70% RH', [26, 70], [75.4, 'mild']]]]\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-livestock-thi-humidity-coefficient-scale","generated_at":"2026-09-29T14:48:25.401018+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Dairy heat-stress alerts and cooling automation key off THI bands.","repair":"Use 0.55 - 0.0055*RH with RH in percent.","root_cause":"RH is divided by 100 although the 0.0055 coefficient already expects percent.","sha256":"5668f3646fd0d437c94cc9e2c1350595f176d46890d4ac5f11ddcc77a32c2c1e","title":"Livestock temperature-humidity index: humidity coefficient scale · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":40.466,"exit_code":1,"observations":[{"actual":[59.5,"none"],"check":"15 C barn at 20% RH","expected":[58.6,"none"],"passed":false},{"actual":[60.6,"none"],"check":"15 C barn at 40% RH","expected":[58.7,"none"],"passed":false},{"actual":[61.5,"none"],"check":"15 C barn at 55% RH","expected":[58.8,"none"],"passed":false},{"actual":[62.3,"none"],"check":"15 C barn at 70% RH","expected":[58.8,"none"],"passed":false},{"actual":[63.1,"none"],"check":"15 C barn at 85% RH","expected":[58.9,"none"],"passed":false},{"actual":[64.0,"none"],"check":"15 C barn at 100% RH","expected":[59.0,"none"],"passed":false},{"actual":[76.3,"mild"],"check":"21 C barn at 20% RH","expected":[64.6,"none"],"passed":false},{"actual":[89.3,"severe"],"check":"21 C barn at 40% RH","expected":[65.9,"none"],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"15 C barn at 20% RH\", \"actual\": [59.5, \"none\"], \"expected\": [58.6, \"none\"], \"passed\": false}, {\"check\": \"15 C barn at 40% RH\", \"actual\": [60.6, \"none\"], \"expected\": [58.7, \"none\"], \"passed\": false}, {\"check\": \"15 C barn at 55% RH\", \"actual\": [61.5, \"none\"], \"expected\": [58.8, \"none\"], \"passed\": false}, {\"check\": \"15 C barn at 70% RH\", \"actual\": [62.3, \"none\"], \"expected\": [58.8, \"none\"], \"passed\": false}, {\"check\": \"15 C barn at 85% RH\", \"actual\": [63.1, \"none\"], \"expected\": [58.9, \"none\"], \"passed\": false}, {\"check\": \"15 C barn at 100% RH\", \"actual\": [64.0, \"none\"], \"expected\": [59.0, \"none\"], \"passed\": false}, {\"check\": \"21 C barn at 20% RH\", \"actual\": [76.3, \"mild\"], \"expected\": [64.6, \"none\"], \"passed\": false}, {\"check\": \"21 C barn at 40% RH\", \"actual\": [89.3, \"severe\"], \"expected\": [65.9, \"none\"], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":37.895,"exit_code":1,"observations":[{"actual":[58.5,"none"],"check":"15 C barn at 20% RH","expected":[58.6,"none"],"passed":false},{"actual":[58.5,"none"],"check":"15 C barn at 40% RH","expected":[58.7,"none"],"passed":false},{"actual":[58.5,"none"],"check":"15 C barn at 55% RH","expected":[58.8,"none"],"passed":false},{"actual":[58.5,"none"],"check":"15 C barn at 70% RH","expected":[58.8,"none"],"passed":false},{"actual":[58.5,"none"],"check":"15 C barn at 85% RH","expected":[58.9,"none"],"passed":false},{"actual":[58.5,"none"],"check":"15 C barn at 100% RH","expected":[59.0,"none"],"passed":false},{"actual":[63.3,"none"],"check":"21 C barn at 20% RH","expected":[64.6,"none"],"passed":false},{"actual":[63.3,"none"],"check":"21 C barn at 40% RH","expected":[65.9,"none"],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"15 C barn at 20% RH\", \"actual\": [58.5, \"none\"], \"expected\": [58.6, \"none\"], \"passed\": false}, {\"check\": \"15 C barn at 40% RH\", \"actual\": [58.5, \"none\"], \"expected\": [58.7, \"none\"], \"passed\": false}, {\"check\": \"15 C barn at 55% RH\", \"actual\": [58.5, \"none\"], \"expected\": [58.8, \"none\"], \"passed\": false}, {\"check\": \"15 C barn at 70% RH\", \"actual\": [58.5, \"none\"], \"expected\": [58.8, \"none\"], \"passed\": false}, {\"check\": \"15 C barn at 85% RH\", \"actual\": [58.5, \"none\"], \"expected\": [58.9, \"none\"], \"passed\": false}, {\"check\": \"15 C barn at 100% RH\", \"actual\": [58.5, \"none\"], \"expected\": [59.0, \"none\"], \"passed\": false}, {\"check\": \"21 C barn at 20% RH\", \"actual\": [63.3, \"none\"], \"expected\": [64.6, \"none\"], \"passed\": false}, {\"check\": \"21 C barn at 40% RH\", \"actual\": [63.3, \"none\"], \"expected\": [65.9, \"none\"], \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":38.059,"exit_code":0,"observations":[{"actual":[58.6,"none"],"check":"15 C barn at 20% RH","expected":[58.6,"none"],"passed":true},{"actual":[58.7,"none"],"check":"15 C barn at 40% RH","expected":[58.7,"none"],"passed":true},{"actual":[58.8,"none"],"check":"15 C barn at 55% RH","expected":[58.8,"none"],"passed":true},{"actual":[58.8,"none"],"check":"15 C barn at 70% RH","expected":[58.8,"none"],"passed":true},{"actual":[58.9,"none"],"check":"15 C barn at 85% RH","expected":[58.9,"none"],"passed":true},{"actual":[59.0,"none"],"check":"15 C barn at 100% RH","expected":[59.0,"none"],"passed":true},{"actual":[64.6,"none"],"check":"21 C barn at 20% RH","expected":[64.6,"none"],"passed":true},{"actual":[65.9,"none"],"check":"21 C barn at 40% RH","expected":[65.9,"none"],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"15 C barn at 20% RH\", \"actual\": [58.6, \"none\"], \"expected\": [58.6, \"none\"], \"passed\": true}, {\"check\": \"15 C barn at 40% RH\", \"actual\": [58.7, \"none\"], \"expected\": [58.7, \"none\"], \"passed\": true}, {\"check\": \"15 C barn at 55% RH\", \"actual\": [58.8, \"none\"], \"expected\": [58.8, \"none\"], \"passed\": true}, {\"check\": \"15 C barn at 70% RH\", \"actual\": [58.8, \"none\"], \"expected\": [58.8, \"none\"], \"passed\": true}, {\"check\": \"15 C barn at 85% RH\", \"actual\": [58.9, \"none\"], \"expected\": [58.9, \"none\"], \"passed\": true}, {\"check\": \"15 C barn at 100% RH\", \"actual\": [59.0, \"none\"], \"expected\": [59.0, \"none\"], \"passed\": true}, {\"check\": \"21 C barn at 20% RH\", \"actual\": [64.6, \"none\"], \"expected\": [64.6, \"none\"], \"passed\": true}, {\"check\": \"21 C barn at 40% RH\", \"actual\": [65.9, \"none\"], \"expected\": [65.9, \"none\"], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}