{"abstract":"Strong lapse rates score as stable while inversions score as unstable.","category":"Weather index computation","checks":8,"contract":"temps/dews map pressure level (hPa) to degC. low: stability T950-T850 (<=3:1, <=7:2, else 3), moisture T850-Td850 (<=5:1, <=9:2, else 3); mid: T850-T700 (<=5, <=10), T850-Td850 (<=5, <=12); high: T700-T500 (<=17, <=21), T700-Td700 (<=14, <=20). Unknown elevation returns None. Return [sum, label] with 2-3 very low, 4 low, 5 moderate, 6 high.","contract_signature":"elev, temps, dews","evaluation_group":"w2-weather_index_computation-haines-index","failed_approach":"Taking the absolute value scores inversions as if they were steep lapse rates.","family":"w2-weather_index_computation-haines-index-stability-lapse-direction","id":"FA-71141","implementations":{"attempt":{"sha256":"71d7c56af799ddf92eaa9516db581c2dd1e248a53484c29904752f0fcdcc1d41","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(elev, temps, dews):\n    levels = {\"low\": (950, 850, 850, 850, (3, 7), (5, 9)),\n              \"mid\": (850, 700, 850, 850, (5, 10), (5, 12)),\n              \"high\": (700, 500, 700, 700, (17, 21), (14, 20))}\n    if elev not in levels:\n        return None\n    lo, up, tm, dm, (a1, a2), (b1, b2) = levels[elev]\n    stab = abs(temps[up] - temps[lo])\n    moist = temps[tm] - dews[dm]\n    sa = 1 if stab <= a1 else 2 if stab <= a2 else 3\n    sb = 1 if moist <= b1 else 2 if moist <= b2 else 3\n    total = sa + sb\n    label = \"very low\" if total <= 3 else \"low\" if total == 4 else \"moderate\" if total == 5 else \"high\"\n    return [total, label]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['low elevation sounding', ['low', {950: 13, 850: 9, 700: 3, 500: -20}, {850: 1, 700: -6}], [4, 'low']], ['low elevation sounding', ['low', {950: 12, 850: 1, 700: -5, 500: -24}, {850: -11, 700: -17}], [6, 'high']], ['low elevation sounding', ['low', {950: 13, 850: 8, 700: 3, 500: -22}, {850: -2, 700: -8}], [5, 'moderate']], ['low elevation sounding', ['low', {950: 18, 850: 10, 700: -4, 500: -26}, {850: -6, 700: -8}], [6, 'high']], ['low elevation sounding', ['low', {950: 15, 850: 10, 700: 6, 500: -6}, {850: 8, 700: 3}], [3, 'very low']], ['low elevation sounding', ['low', {950: 29, 850: 22, 700: 20, 500: 7}, {850: 14, 700: 14}], [4, 'low']], ['low elevation sounding', ['low', {950: 22, 850: 13, 700: 2, 500: -24}, {850: -1, 700: -17}], [6, 'high']], ['mid strong inversion', ['mid', {950: 10, 850: 4, 700: 12, 500: -8}, {850: 0, 700: 3}], [2, 'very low']]], [['low elevation sounding', ['low', {950: 18, 850: 10, 700: -4, 500: -26}, {850: -6, 700: -8}], [6, 'high']], ['low elevation sounding', ['low', {950: 13, 850: 13, 700: 2, 500: -19}, {850: 2, 700: -3}], [4, 'low']], ['low elevation sounding', ['low', {950: 13, 850: 1, 700: -9, 500: -31}, {850: -5, 700: -17}], [5, 'moderate']], ['low elevation sounding', ['low', {950: 24, 850: 21, 700: 12, 500: -12}, {850: 12, 700: -4}], [3, 'very low']], ['low elevation sounding', ['low', {950: 18, 850: 18, 700: 15, 500: -10}, {850: 16, 700: 7}], [2, 'very low']], ['low elevation sounding', ['low', {950: 18, 850: 18, 700: 16, 500: 2}, {850: 5, 700: 13}], [4, 'low']], ['low elevation sounding', ['low', {950: 26, 850: 27, 700: 19, 500: 0}, {850: 22, 700: 2}], [2, 'very low']], ['low surface inversion', ['low', {950: 12, 850: 18, 700: 6, 500: -14}, {850: 10, 700: -5}], [3, 'very low']]], [['low elevation sounding', ['low', {950: 22, 850: 13, 700: 2, 500: -24}, {850: -1, 700: -17}], [6, 'high']], ['mid elevation sounding', ['mid', {950: 23, 850: 23, 700: 17, 500: -2}, {850: 11, 700: 10}], [4, 'low']], ['mid elevation sounding', ['mid', {950: 24, 850: 12, 700: 9, 500: -12}, {850: 8, 700: -6}], [2, 'very low']], ['mid elevation sounding', ['mid', {950: 18, 850: 7, 700: 5, 500: -20}, {850: -5, 700: -8}], [3, 'very low']], ['mid elevation sounding', ['mid', {950: 10, 850: 2, 700: -11, 500: -32}, {850: -9, 700: -26}], [5, 'moderate']], ['mid elevation sounding', ['mid', {950: 18, 850: 10, 700: 4, 500: -16}, {850: 4, 700: 3}], [4, 'low']], ['mid elevation sounding', ['mid', {950: 30, 850: 18, 700: 4, 500: -12}, {850: 15, 700: -8}], [4, 'low']], ['high inversion aloft', ['high', {950: 10, 850: 4, 700: -30, 500: -12}, {850: 0, 700: -40}], [2, 'very low']]], [['mid elevation sounding', ['mid', {950: 23, 850: 23, 700: 17, 500: -2}, {850: 11, 700: 10}], [4, 'low']], ['mid elevation sounding', ['mid', {950: 28, 850: 22, 700: 12, 500: -14}, {850: 11, 700: 4}], [4, 'low']], ['mid elevation sounding', ['mid', {950: 13, 850: 15, 700: 11, 500: -13}, {850: 9, 700: 11}], [3, 'very low']], ['mid elevation sounding', ['mid', {950: 17, 850: 12, 700: -3, 500: -23}, {850: 4, 700: -8}], [5, 'moderate']], ['mid elevation sounding', ['mid', {950: 17, 850: 14, 700: 3, 500: -19}, {850: 4, 700: -6}], [5, 'moderate']], ['mid elevation sounding', ['mid', {950: 21, 850: 23, 700: 13, 500: -13}, {850: 18, 700: -3}], [3, 'very low']], ['mid elevation sounding', ['mid', {950: 30, 850: 27, 700: 20, 500: 1}, {850: 15, 700: 13}], [4, 'low']], ['mid strong inversion', ['mid', {950: 10, 850: 4, 700: 12, 500: -8}, {850: 0, 700: 3}], [2, 'very low']]], [['mid elevation sounding', ['mid', {950: 30, 850: 18, 700: 4, 500: -12}, {850: 15, 700: -8}], [4, 'low']], ['high elevation sounding', ['high', {950: 30, 850: 20, 700: 11, 500: -13}, {850: 10, 700: 9}], [4, 'low']], ['high elevation sounding', ['high', {950: 18, 850: 18, 700: 14, 500: -1}, {850: 17, 700: -8}], [4, 'low']], ['high elevation sounding', ['high', {950: 14, 850: 11, 700: 5, 500: -14}, {850: -3, 700: 1}], [3, 'very low']], ['high elevation sounding', ['high', {950: 27, 850: 18, 700: 16, 500: -8}, {850: 15, 700: 8}], [4, 'low']], ['high elevation sounding', ['high', {950: 21, 850: 11, 700: 3, 500: -11}, {850: -3, 700: -4}], [2, 'very low']], ['high elevation sounding', ['high', {950: 12, 850: 11, 700: -3, 500: -26}, {850: 6, 700: -7}], [4, 'low']], ['low surface inversion', ['low', {950: 12, 850: 18, 700: 6, 500: -14}, {850: 10, 700: -5}], [3, 'very low']]]]\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":"97233542c9e4a250b035cbf1fd7a24a98e70dcc7591b78b76f348b6feb1734a3","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(elev, temps, dews):\n    levels = {\"low\": (950, 850, 850, 850, (3, 7), (5, 9)),\n              \"mid\": (850, 700, 850, 850, (5, 10), (5, 12)),\n              \"high\": (700, 500, 700, 700, (17, 21), (14, 20))}\n    if elev not in levels:\n        return None\n    lo, up, tm, dm, (a1, a2), (b1, b2) = levels[elev]\n    stab = temps[up] - temps[lo]\n    moist = temps[tm] - dews[dm]\n    sa = 1 if stab <= a1 else 2 if stab <= a2 else 3\n    sb = 1 if moist <= b1 else 2 if moist <= b2 else 3\n    total = sa + sb\n    label = \"very low\" if total <= 3 else \"low\" if total == 4 else \"moderate\" if total == 5 else \"high\"\n    return [total, label]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['low elevation sounding', ['low', {950: 13, 850: 9, 700: 3, 500: -20}, {850: 1, 700: -6}], [4, 'low']], ['low elevation sounding', ['low', {950: 12, 850: 1, 700: -5, 500: -24}, {850: -11, 700: -17}], [6, 'high']], ['low elevation sounding', ['low', {950: 13, 850: 8, 700: 3, 500: -22}, {850: -2, 700: -8}], [5, 'moderate']], ['low elevation sounding', ['low', {950: 18, 850: 10, 700: -4, 500: -26}, {850: -6, 700: -8}], [6, 'high']], ['low elevation sounding', ['low', {950: 15, 850: 10, 700: 6, 500: -6}, {850: 8, 700: 3}], [3, 'very low']], ['low elevation sounding', ['low', {950: 29, 850: 22, 700: 20, 500: 7}, {850: 14, 700: 14}], [4, 'low']], ['low elevation sounding', ['low', {950: 22, 850: 13, 700: 2, 500: -24}, {850: -1, 700: -17}], [6, 'high']], ['mid strong inversion', ['mid', {950: 10, 850: 4, 700: 12, 500: -8}, {850: 0, 700: 3}], [2, 'very low']]], [['low elevation sounding', ['low', {950: 18, 850: 10, 700: -4, 500: -26}, {850: -6, 700: -8}], [6, 'high']], ['low elevation sounding', ['low', {950: 13, 850: 13, 700: 2, 500: -19}, {850: 2, 700: -3}], [4, 'low']], ['low elevation sounding', ['low', {950: 13, 850: 1, 700: -9, 500: -31}, {850: -5, 700: -17}], [5, 'moderate']], ['low elevation sounding', ['low', {950: 24, 850: 21, 700: 12, 500: -12}, {850: 12, 700: -4}], [3, 'very low']], ['low elevation sounding', ['low', {950: 18, 850: 18, 700: 15, 500: -10}, {850: 16, 700: 7}], [2, 'very low']], ['low elevation sounding', ['low', {950: 18, 850: 18, 700: 16, 500: 2}, {850: 5, 700: 13}], [4, 'low']], ['low elevation sounding', ['low', {950: 26, 850: 27, 700: 19, 500: 0}, {850: 22, 700: 2}], [2, 'very low']], ['low surface inversion', ['low', {950: 12, 850: 18, 700: 6, 500: -14}, {850: 10, 700: -5}], [3, 'very low']]], [['low elevation sounding', ['low', {950: 22, 850: 13, 700: 2, 500: -24}, {850: -1, 700: -17}], [6, 'high']], ['mid elevation sounding', ['mid', {950: 23, 850: 23, 700: 17, 500: -2}, {850: 11, 700: 10}], [4, 'low']], ['mid elevation sounding', ['mid', {950: 24, 850: 12, 700: 9, 500: -12}, {850: 8, 700: -6}], [2, 'very low']], ['mid elevation sounding', ['mid', {950: 18, 850: 7, 700: 5, 500: -20}, {850: -5, 700: -8}], [3, 'very low']], ['mid elevation sounding', ['mid', {950: 10, 850: 2, 700: -11, 500: -32}, {850: -9, 700: -26}], [5, 'moderate']], ['mid elevation sounding', ['mid', {950: 18, 850: 10, 700: 4, 500: -16}, {850: 4, 700: 3}], [4, 'low']], ['mid elevation sounding', ['mid', {950: 30, 850: 18, 700: 4, 500: -12}, {850: 15, 700: -8}], [4, 'low']], ['high inversion aloft', ['high', {950: 10, 850: 4, 700: -30, 500: -12}, {850: 0, 700: -40}], [2, 'very low']]], [['mid elevation sounding', ['mid', {950: 23, 850: 23, 700: 17, 500: -2}, {850: 11, 700: 10}], [4, 'low']], ['mid elevation sounding', ['mid', {950: 28, 850: 22, 700: 12, 500: -14}, {850: 11, 700: 4}], [4, 'low']], ['mid elevation sounding', ['mid', {950: 13, 850: 15, 700: 11, 500: -13}, {850: 9, 700: 11}], [3, 'very low']], ['mid elevation sounding', ['mid', {950: 17, 850: 12, 700: -3, 500: -23}, {850: 4, 700: -8}], [5, 'moderate']], ['mid elevation sounding', ['mid', {950: 17, 850: 14, 700: 3, 500: -19}, {850: 4, 700: -6}], [5, 'moderate']], ['mid elevation sounding', ['mid', {950: 21, 850: 23, 700: 13, 500: -13}, {850: 18, 700: -3}], [3, 'very low']], ['mid elevation sounding', ['mid', {950: 30, 850: 27, 700: 20, 500: 1}, {850: 15, 700: 13}], [4, 'low']], ['mid strong inversion', ['mid', {950: 10, 850: 4, 700: 12, 500: -8}, {850: 0, 700: 3}], [2, 'very low']]], [['mid elevation sounding', ['mid', {950: 30, 850: 18, 700: 4, 500: -12}, {850: 15, 700: -8}], [4, 'low']], ['high elevation sounding', ['high', {950: 30, 850: 20, 700: 11, 500: -13}, {850: 10, 700: 9}], [4, 'low']], ['high elevation sounding', ['high', {950: 18, 850: 18, 700: 14, 500: -1}, {850: 17, 700: -8}], [4, 'low']], ['high elevation sounding', ['high', {950: 14, 850: 11, 700: 5, 500: -14}, {850: -3, 700: 1}], [3, 'very low']], ['high elevation sounding', ['high', {950: 27, 850: 18, 700: 16, 500: -8}, {850: 15, 700: 8}], [4, 'low']], ['high elevation sounding', ['high', {950: 21, 850: 11, 700: 3, 500: -11}, {850: -3, 700: -4}], [2, 'very low']], ['high elevation sounding', ['high', {950: 12, 850: 11, 700: -3, 500: -26}, {850: 6, 700: -7}], [4, 'low']], ['low surface inversion', ['low', {950: 12, 850: 18, 700: 6, 500: -14}, {850: 10, 700: -5}], [3, 'very low']]]]\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-haines-index-stability-lapse-direction","generated_at":"2026-09-29T14:48:27.020005+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Fire behaviour analysts use the Haines index for plume-dominated fire potential.","root_cause":"The stability term subtracts the lower level from the upper one.","sha256":"f8506e1654e86e27267443b0817092e01df1bbc7b07d6357f2d4737979f7ec01","title":"Haines lower-atmosphere severity index: stability lapse direction · 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.731,"exit_code":1,"observations":[{"actual":[4,"low"],"check":"low elevation sounding","expected":[4,"low"],"passed":true},{"actual":[6,"high"],"check":"low elevation sounding","expected":[6,"high"],"passed":true},{"actual":[5,"moderate"],"check":"low elevation sounding","expected":[5,"moderate"],"passed":true},{"actual":[6,"high"],"check":"low elevation sounding","expected":[6,"high"],"passed":true},{"actual":[3,"very low"],"check":"low elevation sounding","expected":[3,"very low"],"passed":true},{"actual":[4,"low"],"check":"low elevation sounding","expected":[4,"low"],"passed":true},{"actual":[6,"high"],"check":"low elevation sounding","expected":[6,"high"],"passed":true},{"actual":[3,"very low"],"check":"mid strong inversion","expected":[2,"very low"],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"low elevation sounding\", \"actual\": [4, \"low\"], \"expected\": [4, \"low\"], \"passed\": true}, {\"check\": \"low elevation sounding\", \"actual\": [6, \"high\"], \"expected\": [6, \"high\"], \"passed\": true}, {\"check\": \"low elevation sounding\", \"actual\": [5, \"moderate\"], \"expected\": [5, \"moderate\"], \"passed\": true}, {\"check\": \"low elevation sounding\", \"actual\": [6, \"high\"], \"expected\": [6, \"high\"], \"passed\": true}, {\"check\": \"low elevation sounding\", \"actual\": [3, \"very low\"], \"expected\": [3, \"very low\"], \"passed\": true}, {\"check\": \"low elevation sounding\", \"actual\": [4, \"low\"], \"expected\": [4, \"low\"], \"passed\": true}, {\"check\": \"low elevation sounding\", \"actual\": [6, \"high\"], \"expected\": [6, \"high\"], \"passed\": true}, {\"check\": \"mid strong inversion\", \"actual\": [3, \"very low\"], \"expected\": [2, \"very low\"], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":42.092,"exit_code":1,"observations":[{"actual":[3,"very low"],"check":"low elevation sounding","expected":[4,"low"],"passed":false},{"actual":[4,"low"],"check":"low elevation sounding","expected":[6,"high"],"passed":false},{"actual":[4,"low"],"check":"low elevation sounding","expected":[5,"moderate"],"passed":false},{"actual":[4,"low"],"check":"low elevation sounding","expected":[6,"high"],"passed":false},{"actual":[2,"very low"],"check":"low elevation sounding","expected":[3,"very low"],"passed":false},{"actual":[3,"very low"],"check":"low elevation sounding","expected":[4,"low"],"passed":false},{"actual":[4,"low"],"check":"low elevation sounding","expected":[6,"high"],"passed":false},{"actual":[3,"very low"],"check":"mid strong inversion","expected":[2,"very low"],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"low elevation sounding\", \"actual\": [3, \"very low\"], \"expected\": [4, \"low\"], \"passed\": false}, {\"check\": \"low elevation sounding\", \"actual\": [4, \"low\"], \"expected\": [6, \"high\"], \"passed\": false}, {\"check\": \"low elevation sounding\", \"actual\": [4, \"low\"], \"expected\": [5, \"moderate\"], \"passed\": false}, {\"check\": \"low elevation sounding\", \"actual\": [4, \"low\"], \"expected\": [6, \"high\"], \"passed\": false}, {\"check\": \"low elevation sounding\", \"actual\": [2, \"very low\"], \"expected\": [3, \"very low\"], \"passed\": false}, {\"check\": \"low elevation sounding\", \"actual\": [3, \"very low\"], \"expected\": [4, \"low\"], \"passed\": false}, {\"check\": \"low elevation sounding\", \"actual\": [4, \"low\"], \"expected\": [6, \"high\"], \"passed\": false}, {\"check\": \"mid strong inversion\", \"actual\": [3, \"very low\"], \"expected\": [2, \"very low\"], \"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."}}