{"abstract":"An unrecognised insolation code silently yields a slight-insolation class.","category":"Weather index computation","checks":8,"contract":"Wind class: <2, <3, <5, <6, >=6 (index 0..4). 8 octas returns \"D\" day or night. Day: tables by insolation strong [A,A-B,B,C,C], moderate [A-B,B,B-C,C-D,D], slight [B,C,C,D,D]; unknown insolation returns None. Night: >=4 octas [E,E,D,D,D], <=3 octas [F,F,E,D,D].","evaluation_group":"w2-weather_index_computation-pasquill-stability","failed_approach":"Returning neutral D still fabricates a class.","family":"w2-weather_index_computation-pasquill-stability-unknown-insolation","id":"FA-71296","implementations":{"attempt":{"sha256":"975cd3f5c6366553090460a64da7062bab3158ec9864cf93e309e2859c388c6e","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(wind_ms, is_day, insolation, octas):\n    day = {\"strong\": [\"A\", \"A-B\", \"B\", \"C\", \"C\"],\n           \"moderate\": [\"A-B\", \"B\", \"B-C\", \"C-D\", \"D\"],\n           \"slight\": [\"B\", \"C\", \"C\", \"D\", \"D\"]}\n    thin = [\"E\", \"E\", \"D\", \"D\", \"D\"]\n    clear = [\"F\", \"F\", \"E\", \"D\", \"D\"]\n    if octas == 8:\n        return \"D\"\n    i = 0 if wind_ms < 2 else 1 if wind_ms < 3 else 2 if wind_ms < 5 else 3 if wind_ms < 6 else 4\n    if is_day:\n        if insolation not in day:\n            return \"D\"\n        return day[insolation][i]\n    return (thin if octas >= 4 else clear)[i]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['wind 1.0 day strong 2 octas', [1.0, True, 'strong', 2], 'A'], ['wind 1.0 day moderate 5 octas', [1.0, True, 'moderate', 5], 'A-B'], ['wind 1.0 day slight 8 octas', [1.0, True, 'slight', 8], 'D'], ['wind 1.0 day slight 3 octas', [1.0, True, 'slight', 3], 'B'], ['wind 1.0 night None 3 octas', [1.0, False, None, 3], 'F'], ['wind 1.0 night None 4 octas', [1.0, False, None, 4], 'E'], ['wind 1.0 day overcast-ish 4 octas', [1.0, True, 'overcast-ish', 4], None], ['wind 1.9 day overcast-ish 4 octas', [1.9, True, 'overcast-ish', 4], None]], [['wind 1.0 day overcast-ish 4 octas', [1.0, True, 'overcast-ish', 4], None], ['wind 1.0 night None 7 octas', [1.0, False, None, 7], 'E'], ['wind 1.0 day strong 7 octas', [1.0, True, 'strong', 7], 'A'], ['wind 1.9 day strong 2 octas', [1.9, True, 'strong', 2], 'A'], ['wind 1.9 day moderate 5 octas', [1.9, True, 'moderate', 5], 'A-B'], ['wind 1.9 day slight 8 octas', [1.9, True, 'slight', 8], 'D'], ['wind 2.9 day overcast-ish 4 octas', [2.9, True, 'overcast-ish', 4], None], ['wind 5.0 day overcast-ish 4 octas', [5.0, True, 'overcast-ish', 4], None]], [['wind 1.9 night None 3 octas', [1.9, False, None, 3], 'F'], ['wind 1.9 night None 4 octas', [1.9, False, None, 4], 'E'], ['wind 1.9 night None 8 octas', [1.9, False, None, 8], 'D'], ['wind 1.9 day overcast-ish 4 octas', [1.9, True, 'overcast-ish', 4], None], ['wind 1.9 night None 7 octas', [1.9, False, None, 7], 'E'], ['wind 1.9 day strong 7 octas', [1.9, True, 'strong', 7], 'A'], ['wind 2.0 day strong 2 octas', [2.0, True, 'strong', 2], 'A-B'], ['wind 5.0 day overcast-ish 4 octas', [5.0, True, 'overcast-ish', 4], None]], [['wind 2.0 day moderate 5 octas', [2.0, True, 'moderate', 5], 'B'], ['wind 2.0 day slight 8 octas', [2.0, True, 'slight', 8], 'D'], ['wind 2.0 day slight 3 octas', [2.0, True, 'slight', 3], 'C'], ['wind 2.0 night None 3 octas', [2.0, False, None, 3], 'F'], ['wind 2.0 night None 4 octas', [2.0, False, None, 4], 'E'], ['wind 2.0 night None 8 octas', [2.0, False, None, 8], 'D'], ['wind 5.0 day overcast-ish 4 octas', [5.0, True, 'overcast-ish', 4], None], ['wind 8.0 day overcast-ish 4 octas', [8.0, True, 'overcast-ish', 4], None]], [['wind 1.9 day overcast-ish 4 octas', [1.9, True, 'overcast-ish', 4], None], ['wind 2.0 day overcast-ish 4 octas', [2.0, True, 'overcast-ish', 4], None], ['wind 2.0 night None 7 octas', [2.0, False, None, 7], 'E'], ['wind 2.0 day strong 7 octas', [2.0, True, 'strong', 7], 'A-B'], ['wind 2.9 day strong 2 octas', [2.9, True, 'strong', 2], 'A-B'], ['wind 2.9 day moderate 5 octas', [2.9, True, 'moderate', 5], 'B'], ['wind 2.9 day slight 8 octas', [2.9, True, 'slight', 8], 'D'], ['wind 2.9 day slight 3 octas', [2.9, True, 'slight', 3], 'C']]]\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":"c15808229d1c508d6da9114bcf8b8daa40c4eabbb8a4f53b33739c53f3a6e98d","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(wind_ms, is_day, insolation, octas):\n    day = {\"strong\": [\"A\", \"A-B\", \"B\", \"C\", \"C\"],\n           \"moderate\": [\"A-B\", \"B\", \"B-C\", \"C-D\", \"D\"],\n           \"slight\": [\"B\", \"C\", \"C\", \"D\", \"D\"]}\n    thin = [\"E\", \"E\", \"D\", \"D\", \"D\"]\n    clear = [\"F\", \"F\", \"E\", \"D\", \"D\"]\n    if octas == 8:\n        return \"D\"\n    i = 0 if wind_ms < 2 else 1 if wind_ms < 3 else 2 if wind_ms < 5 else 3 if wind_ms < 6 else 4\n    if is_day:\n        if insolation not in day:\n            insolation = \"slight\"\n        return day[insolation][i]\n    return (thin if octas >= 4 else clear)[i]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['wind 1.0 day strong 2 octas', [1.0, True, 'strong', 2], 'A'], ['wind 1.0 day moderate 5 octas', [1.0, True, 'moderate', 5], 'A-B'], ['wind 1.0 day slight 8 octas', [1.0, True, 'slight', 8], 'D'], ['wind 1.0 day slight 3 octas', [1.0, True, 'slight', 3], 'B'], ['wind 1.0 night None 3 octas', [1.0, False, None, 3], 'F'], ['wind 1.0 night None 4 octas', [1.0, False, None, 4], 'E'], ['wind 1.0 day overcast-ish 4 octas', [1.0, True, 'overcast-ish', 4], None], ['wind 1.9 day overcast-ish 4 octas', [1.9, True, 'overcast-ish', 4], None]], [['wind 1.0 day overcast-ish 4 octas', [1.0, True, 'overcast-ish', 4], None], ['wind 1.0 night None 7 octas', [1.0, False, None, 7], 'E'], ['wind 1.0 day strong 7 octas', [1.0, True, 'strong', 7], 'A'], ['wind 1.9 day strong 2 octas', [1.9, True, 'strong', 2], 'A'], ['wind 1.9 day moderate 5 octas', [1.9, True, 'moderate', 5], 'A-B'], ['wind 1.9 day slight 8 octas', [1.9, True, 'slight', 8], 'D'], ['wind 2.9 day overcast-ish 4 octas', [2.9, True, 'overcast-ish', 4], None], ['wind 5.0 day overcast-ish 4 octas', [5.0, True, 'overcast-ish', 4], None]], [['wind 1.9 night None 3 octas', [1.9, False, None, 3], 'F'], ['wind 1.9 night None 4 octas', [1.9, False, None, 4], 'E'], ['wind 1.9 night None 8 octas', [1.9, False, None, 8], 'D'], ['wind 1.9 day overcast-ish 4 octas', [1.9, True, 'overcast-ish', 4], None], ['wind 1.9 night None 7 octas', [1.9, False, None, 7], 'E'], ['wind 1.9 day strong 7 octas', [1.9, True, 'strong', 7], 'A'], ['wind 2.0 day strong 2 octas', [2.0, True, 'strong', 2], 'A-B'], ['wind 5.0 day overcast-ish 4 octas', [5.0, True, 'overcast-ish', 4], None]], [['wind 2.0 day moderate 5 octas', [2.0, True, 'moderate', 5], 'B'], ['wind 2.0 day slight 8 octas', [2.0, True, 'slight', 8], 'D'], ['wind 2.0 day slight 3 octas', [2.0, True, 'slight', 3], 'C'], ['wind 2.0 night None 3 octas', [2.0, False, None, 3], 'F'], ['wind 2.0 night None 4 octas', [2.0, False, None, 4], 'E'], ['wind 2.0 night None 8 octas', [2.0, False, None, 8], 'D'], ['wind 5.0 day overcast-ish 4 octas', [5.0, True, 'overcast-ish', 4], None], ['wind 8.0 day overcast-ish 4 octas', [8.0, True, 'overcast-ish', 4], None]], [['wind 1.9 day overcast-ish 4 octas', [1.9, True, 'overcast-ish', 4], None], ['wind 2.0 day overcast-ish 4 octas', [2.0, True, 'overcast-ish', 4], None], ['wind 2.0 night None 7 octas', [2.0, False, None, 7], 'E'], ['wind 2.0 day strong 7 octas', [2.0, True, 'strong', 7], 'A-B'], ['wind 2.9 day strong 2 octas', [2.9, True, 'strong', 2], 'A-B'], ['wind 2.9 day moderate 5 octas', [2.9, True, 'moderate', 5], 'B'], ['wind 2.9 day slight 8 octas', [2.9, True, 'slight', 8], 'D'], ['wind 2.9 day slight 3 octas', [2.9, True, 'slight', 3], 'C']]]\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":"5b7b917fa7e5c0b46e0b5cade2518c88994c20e5463eec3a2e894fb1fee7b039","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(wind_ms, is_day, insolation, octas):\n    day = {\"strong\": [\"A\", \"A-B\", \"B\", \"C\", \"C\"],\n           \"moderate\": [\"A-B\", \"B\", \"B-C\", \"C-D\", \"D\"],\n           \"slight\": [\"B\", \"C\", \"C\", \"D\", \"D\"]}\n    thin = [\"E\", \"E\", \"D\", \"D\", \"D\"]\n    clear = [\"F\", \"F\", \"E\", \"D\", \"D\"]\n    if octas == 8:\n        return \"D\"\n    i = 0 if wind_ms < 2 else 1 if wind_ms < 3 else 2 if wind_ms < 5 else 3 if wind_ms < 6 else 4\n    if is_day:\n        if insolation not in day:\n            return None\n        return day[insolation][i]\n    return (thin if octas >= 4 else clear)[i]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['wind 1.0 day strong 2 octas', [1.0, True, 'strong', 2], 'A'], ['wind 1.0 day moderate 5 octas', [1.0, True, 'moderate', 5], 'A-B'], ['wind 1.0 day slight 8 octas', [1.0, True, 'slight', 8], 'D'], ['wind 1.0 day slight 3 octas', [1.0, True, 'slight', 3], 'B'], ['wind 1.0 night None 3 octas', [1.0, False, None, 3], 'F'], ['wind 1.0 night None 4 octas', [1.0, False, None, 4], 'E'], ['wind 1.0 day overcast-ish 4 octas', [1.0, True, 'overcast-ish', 4], None], ['wind 1.9 day overcast-ish 4 octas', [1.9, True, 'overcast-ish', 4], None]], [['wind 1.0 day overcast-ish 4 octas', [1.0, True, 'overcast-ish', 4], None], ['wind 1.0 night None 7 octas', [1.0, False, None, 7], 'E'], ['wind 1.0 day strong 7 octas', [1.0, True, 'strong', 7], 'A'], ['wind 1.9 day strong 2 octas', [1.9, True, 'strong', 2], 'A'], ['wind 1.9 day moderate 5 octas', [1.9, True, 'moderate', 5], 'A-B'], ['wind 1.9 day slight 8 octas', [1.9, True, 'slight', 8], 'D'], ['wind 2.9 day overcast-ish 4 octas', [2.9, True, 'overcast-ish', 4], None], ['wind 5.0 day overcast-ish 4 octas', [5.0, True, 'overcast-ish', 4], None]], [['wind 1.9 night None 3 octas', [1.9, False, None, 3], 'F'], ['wind 1.9 night None 4 octas', [1.9, False, None, 4], 'E'], ['wind 1.9 night None 8 octas', [1.9, False, None, 8], 'D'], ['wind 1.9 day overcast-ish 4 octas', [1.9, True, 'overcast-ish', 4], None], ['wind 1.9 night None 7 octas', [1.9, False, None, 7], 'E'], ['wind 1.9 day strong 7 octas', [1.9, True, 'strong', 7], 'A'], ['wind 2.0 day strong 2 octas', [2.0, True, 'strong', 2], 'A-B'], ['wind 5.0 day overcast-ish 4 octas', [5.0, True, 'overcast-ish', 4], None]], [['wind 2.0 day moderate 5 octas', [2.0, True, 'moderate', 5], 'B'], ['wind 2.0 day slight 8 octas', [2.0, True, 'slight', 8], 'D'], ['wind 2.0 day slight 3 octas', [2.0, True, 'slight', 3], 'C'], ['wind 2.0 night None 3 octas', [2.0, False, None, 3], 'F'], ['wind 2.0 night None 4 octas', [2.0, False, None, 4], 'E'], ['wind 2.0 night None 8 octas', [2.0, False, None, 8], 'D'], ['wind 5.0 day overcast-ish 4 octas', [5.0, True, 'overcast-ish', 4], None], ['wind 8.0 day overcast-ish 4 octas', [8.0, True, 'overcast-ish', 4], None]], [['wind 1.9 day overcast-ish 4 octas', [1.9, True, 'overcast-ish', 4], None], ['wind 2.0 day overcast-ish 4 octas', [2.0, True, 'overcast-ish', 4], None], ['wind 2.0 night None 7 octas', [2.0, False, None, 7], 'E'], ['wind 2.0 day strong 7 octas', [2.0, True, 'strong', 7], 'A-B'], ['wind 2.9 day strong 2 octas', [2.9, True, 'strong', 2], 'A-B'], ['wind 2.9 day moderate 5 octas', [2.9, True, 'moderate', 5], 'B'], ['wind 2.9 day slight 8 octas', [2.9, True, 'slight', 8], 'D'], ['wind 2.9 day slight 3 octas', [2.9, True, 'slight', 3], 'C']]]\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-pasquill-stability-unknown-insolation","generated_at":"2026-09-29T14:48:28.431249+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Air-dispersion screening models choose plume spread from the stability class.","repair":"Return None for an unknown insolation category.","root_cause":"Unknown insolation categories default to slight.","sha256":"01e3add3c47d423f0375bed04ae4ab488e82be46d168790678a484c4b512cb3c","title":"Pasquill-Gifford stability class: unknown insolation · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":40.578,"exit_code":1,"observations":[{"actual":"A","check":"wind 1.0 day strong 2 octas","expected":"A","passed":true},{"actual":"A-B","check":"wind 1.0 day moderate 5 octas","expected":"A-B","passed":true},{"actual":"D","check":"wind 1.0 day slight 8 octas","expected":"D","passed":true},{"actual":"B","check":"wind 1.0 day slight 3 octas","expected":"B","passed":true},{"actual":"F","check":"wind 1.0 night None 3 octas","expected":"F","passed":true},{"actual":"E","check":"wind 1.0 night None 4 octas","expected":"E","passed":true},{"actual":"D","check":"wind 1.0 day overcast-ish 4 octas","expected":null,"passed":false},{"actual":"D","check":"wind 1.9 day overcast-ish 4 octas","expected":null,"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"wind 1.0 day strong 2 octas\", \"actual\": \"A\", \"expected\": \"A\", \"passed\": true}, {\"check\": \"wind 1.0 day moderate 5 octas\", \"actual\": \"A-B\", \"expected\": \"A-B\", \"passed\": true}, {\"check\": \"wind 1.0 day slight 8 octas\", \"actual\": \"D\", \"expected\": \"D\", \"passed\": true}, {\"check\": \"wind 1.0 day slight 3 octas\", \"actual\": \"B\", \"expected\": \"B\", \"passed\": true}, {\"check\": \"wind 1.0 night None 3 octas\", \"actual\": \"F\", \"expected\": \"F\", \"passed\": true}, {\"check\": \"wind 1.0 night None 4 octas\", \"actual\": \"E\", \"expected\": \"E\", \"passed\": true}, {\"check\": \"wind 1.0 day overcast-ish 4 octas\", \"actual\": \"D\", \"expected\": null, \"passed\": false}, {\"check\": \"wind 1.9 day overcast-ish 4 octas\", \"actual\": \"D\", \"expected\": null, \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.62,"exit_code":1,"observations":[{"actual":"A","check":"wind 1.0 day strong 2 octas","expected":"A","passed":true},{"actual":"A-B","check":"wind 1.0 day moderate 5 octas","expected":"A-B","passed":true},{"actual":"D","check":"wind 1.0 day slight 8 octas","expected":"D","passed":true},{"actual":"B","check":"wind 1.0 day slight 3 octas","expected":"B","passed":true},{"actual":"F","check":"wind 1.0 night None 3 octas","expected":"F","passed":true},{"actual":"E","check":"wind 1.0 night None 4 octas","expected":"E","passed":true},{"actual":"B","check":"wind 1.0 day overcast-ish 4 octas","expected":null,"passed":false},{"actual":"B","check":"wind 1.9 day overcast-ish 4 octas","expected":null,"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"wind 1.0 day strong 2 octas\", \"actual\": \"A\", \"expected\": \"A\", \"passed\": true}, {\"check\": \"wind 1.0 day moderate 5 octas\", \"actual\": \"A-B\", \"expected\": \"A-B\", \"passed\": true}, {\"check\": \"wind 1.0 day slight 8 octas\", \"actual\": \"D\", \"expected\": \"D\", \"passed\": true}, {\"check\": \"wind 1.0 day slight 3 octas\", \"actual\": \"B\", \"expected\": \"B\", \"passed\": true}, {\"check\": \"wind 1.0 night None 3 octas\", \"actual\": \"F\", \"expected\": \"F\", \"passed\": true}, {\"check\": \"wind 1.0 night None 4 octas\", \"actual\": \"E\", \"expected\": \"E\", \"passed\": true}, {\"check\": \"wind 1.0 day overcast-ish 4 octas\", \"actual\": \"B\", \"expected\": null, \"passed\": false}, {\"check\": \"wind 1.9 day overcast-ish 4 octas\", \"actual\": \"B\", \"expected\": null, \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":36.579,"exit_code":0,"observations":[{"actual":"A","check":"wind 1.0 day strong 2 octas","expected":"A","passed":true},{"actual":"A-B","check":"wind 1.0 day moderate 5 octas","expected":"A-B","passed":true},{"actual":"D","check":"wind 1.0 day slight 8 octas","expected":"D","passed":true},{"actual":"B","check":"wind 1.0 day slight 3 octas","expected":"B","passed":true},{"actual":"F","check":"wind 1.0 night None 3 octas","expected":"F","passed":true},{"actual":"E","check":"wind 1.0 night None 4 octas","expected":"E","passed":true},{"actual":null,"check":"wind 1.0 day overcast-ish 4 octas","expected":null,"passed":true},{"actual":null,"check":"wind 1.9 day overcast-ish 4 octas","expected":null,"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"wind 1.0 day strong 2 octas\", \"actual\": \"A\", \"expected\": \"A\", \"passed\": true}, {\"check\": \"wind 1.0 day moderate 5 octas\", \"actual\": \"A-B\", \"expected\": \"A-B\", \"passed\": true}, {\"check\": \"wind 1.0 day slight 8 octas\", \"actual\": \"D\", \"expected\": \"D\", \"passed\": true}, {\"check\": \"wind 1.0 day slight 3 octas\", \"actual\": \"B\", \"expected\": \"B\", \"passed\": true}, {\"check\": \"wind 1.0 night None 3 octas\", \"actual\": \"F\", \"expected\": \"F\", \"passed\": true}, {\"check\": \"wind 1.0 night None 4 octas\", \"actual\": \"E\", \"expected\": \"E\", \"passed\": true}, {\"check\": \"wind 1.0 day overcast-ish 4 octas\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"wind 1.9 day overcast-ish 4 octas\", \"actual\": null, \"expected\": null, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}