{"abstract":"Events recorded by near-field gauges have their Mt diluted.","category":"Seismic magnitude estimation","checks":8,"contract":"gauges are [crest-to-trough double amplitude m, distance km]. Only gauges with distance >= 100 km are used. H = double amplitude / 2; Mt_i = log10 H + log10 distance + 5.8. Return [mean rounded 0.01, gauges used] or None.","contract_signature":"gauges","evaluation_group":"w2-seismic_magnitude_estimation-tsunami-mt","failed_approach":"Taking the maximum reports the single largest gauge.","family":"w2-seismic_magnitude_estimation-tsunami-mt-gauge-averaging","id":"FA-71786","implementations":{"attempt":{"sha256":"223ff27203a50fc4a5f78ddb53b9e463f424a2019022390cd8f22fd802292085","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(gauges):\n    vals = []\n    for dbl, dist in gauges:\n        if dist < 100 or dbl <= 0:\n            continue\n        h = dbl / 2.0\n        vals.append(math.log10(h) + math.log10(dist) + 5.8)\n    if not vals:\n        return None\n    return [round(max(vals), 2), len(vals)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['tide gauges 0', [[[2.6, 100], [1.0, 50], [0.4, 99], [0.1, 99]]], [7.91, 1]], ['tide gauges 1', [[[0.4, 101], [0.4, 99], [8.0, 101]]], [7.76, 2]], ['tide gauges 2', [[[0.1, 100]]], [6.5, 1]], ['tide gauges 3', [[[0.1, 100]]], [6.5, 1]], ['tide gauges 4', [[[1.0, 101], [2.6, 50], [0.4, 800], [0.1, 101], [0.4, 100]]], [7.28, 4]], ['tide gauges 5', [[[2.6, 3000], [1.0, 101]]], [8.45, 2]], ['tide gauges 6', [[[0.1, 50], [1.0, 3000], [1.0, 50], [2.6, 50]]], [8.98, 1]], ['tide gauges 7', [[[8.0, 101], [1.0, 101], [1.0, 800]]], [8.1, 3]]], [['tide gauges 6', [[[0.1, 50], [1.0, 3000], [1.0, 50], [2.6, 50]]], [8.98, 1]], ['tide gauges 7', [[[8.0, 101], [1.0, 101], [1.0, 800]]], [8.1, 3]], ['tide gauges 8', [[[0.1, 50], [1.0, 99], [1.0, 99], [1.0, 3000]]], [8.98, 1]], ['tide gauges 9', [[[1.0, 100], [1.0, 800], [0.4, 99], [8.0, 101], [2.6, 100]]], [8.06, 4]], ['tide gauges 10', [[[8.0, 800], [8.0, 800], [8.0, 101]]], [9.01, 3]], ['tide gauges 11', [[[2.6, 100], [8.0, 100]]], [8.16, 2]], ['tide gauges 12', [[[0.1, 800], [1.0, 50], [1.0, 101], [0.4, 800]]], [7.64, 3]], ['tide gauges 13', [[[2.6, 50], [2.6, 100], [0.1, 99], [2.6, 800]]], [8.37, 2]]], [['tide gauges 12', [[[0.1, 800], [1.0, 50], [1.0, 101], [0.4, 800]]], [7.64, 3]], ['tide gauges 14', [[[0.1, 101], [2.6, 101]]], [7.21, 2]], ['tide gauges 15', [[[0.4, 50], [2.6, 800], [2.6, 50]]], [8.82, 1]], ['tide gauges 16', [[[8.0, 3000], [8.0, 101], [1.0, 99], [8.0, 800]]], [9.2, 3]], ['tide gauges 17', [[[0.1, 99], [1.0, 800], [1.0, 100], [8.0, 101]]], [8.1, 3]], ['tide gauges 18', [[[1.0, 50]]], None], ['tide gauges 19', [[[0.1, 50]]], None], ['tide gauges 20', [[[2.6, 100], [2.6, 800], [0.1, 800], [0.4, 99]]], [8.04, 3]]], [['tide gauges 16', [[[8.0, 3000], [8.0, 101], [1.0, 99], [8.0, 800]]], [9.2, 3]], ['tide gauges 21', [[[1.0, 50], [8.0, 3000], [2.6, 101]]], [8.9, 2]], ['tide gauges 22', [[[2.6, 101]]], [7.92, 1]], ['tide gauges 23', [[[0.1, 50], [1.0, 800], [1.0, 50], [0.4, 100]]], [7.75, 2]], ['tide gauges 24', [[[2.6, 100], [0.1, 100], [1.0, 101], [8.0, 101], [1.0, 99]]], [7.58, 4]], ['tide gauges 25', [[[2.6, 101], [0.4, 800], [8.0, 100], [2.6, 99], [0.1, 101]]], [7.71, 4]], ['tide gauges 26', [[[8.0, 101], [0.1, 800], [2.6, 99], [0.1, 99]]], [7.9, 2]], ['tide gauges 27', [[[0.1, 100], [0.4, 800]]], [7.25, 2]]], [['tide gauges 21', [[[1.0, 50], [8.0, 3000], [2.6, 101]]], [8.9, 2]], ['tide gauges 28', [[[8.0, 101], [1.0, 99]]], [8.41, 1]], ['tide gauges 29', [[[0.4, 101], [0.1, 99], [2.6, 99], [0.1, 100], [0.1, 50]]], [6.8, 2]], ['tide gauges 30', [[[0.1, 99], [2.6, 3000], [0.1, 3000]]], [8.68, 2]], ['tide gauges 31', [[[2.6, 3000], [0.1, 3000], [8.0, 800]]], [8.89, 3]], ['tide gauges 32', [[[2.6, 800], [1.0, 99]]], [8.82, 1]], ['tide gauges 33', [[[1.0, 800]]], [8.4, 1]], ['gauge at 100 km', [[[1.0, 100]]], [7.5, 1]]]]\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":"87a5799ace63759f87657381fcc86cab9c903276baf1ab130c59d6ea81b9e669","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(gauges):\n    vals = []\n    for dbl, dist in gauges:\n        if dist < 100 or dbl <= 0:\n            continue\n        h = dbl / 2.0\n        vals.append(math.log10(h) + math.log10(dist) + 5.8)\n    if not vals:\n        return None\n    return [round(sum(vals) / len(gauges), 2), len(vals)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['tide gauges 0', [[[2.6, 100], [1.0, 50], [0.4, 99], [0.1, 99]]], [7.91, 1]], ['tide gauges 1', [[[0.4, 101], [0.4, 99], [8.0, 101]]], [7.76, 2]], ['tide gauges 2', [[[0.1, 100]]], [6.5, 1]], ['tide gauges 3', [[[0.1, 100]]], [6.5, 1]], ['tide gauges 4', [[[1.0, 101], [2.6, 50], [0.4, 800], [0.1, 101], [0.4, 100]]], [7.28, 4]], ['tide gauges 5', [[[2.6, 3000], [1.0, 101]]], [8.45, 2]], ['tide gauges 6', [[[0.1, 50], [1.0, 3000], [1.0, 50], [2.6, 50]]], [8.98, 1]], ['tide gauges 7', [[[8.0, 101], [1.0, 101], [1.0, 800]]], [8.1, 3]]], [['tide gauges 6', [[[0.1, 50], [1.0, 3000], [1.0, 50], [2.6, 50]]], [8.98, 1]], ['tide gauges 7', [[[8.0, 101], [1.0, 101], [1.0, 800]]], [8.1, 3]], ['tide gauges 8', [[[0.1, 50], [1.0, 99], [1.0, 99], [1.0, 3000]]], [8.98, 1]], ['tide gauges 9', [[[1.0, 100], [1.0, 800], [0.4, 99], [8.0, 101], [2.6, 100]]], [8.06, 4]], ['tide gauges 10', [[[8.0, 800], [8.0, 800], [8.0, 101]]], [9.01, 3]], ['tide gauges 11', [[[2.6, 100], [8.0, 100]]], [8.16, 2]], ['tide gauges 12', [[[0.1, 800], [1.0, 50], [1.0, 101], [0.4, 800]]], [7.64, 3]], ['tide gauges 13', [[[2.6, 50], [2.6, 100], [0.1, 99], [2.6, 800]]], [8.37, 2]]], [['tide gauges 12', [[[0.1, 800], [1.0, 50], [1.0, 101], [0.4, 800]]], [7.64, 3]], ['tide gauges 14', [[[0.1, 101], [2.6, 101]]], [7.21, 2]], ['tide gauges 15', [[[0.4, 50], [2.6, 800], [2.6, 50]]], [8.82, 1]], ['tide gauges 16', [[[8.0, 3000], [8.0, 101], [1.0, 99], [8.0, 800]]], [9.2, 3]], ['tide gauges 17', [[[0.1, 99], [1.0, 800], [1.0, 100], [8.0, 101]]], [8.1, 3]], ['tide gauges 18', [[[1.0, 50]]], None], ['tide gauges 19', [[[0.1, 50]]], None], ['tide gauges 20', [[[2.6, 100], [2.6, 800], [0.1, 800], [0.4, 99]]], [8.04, 3]]], [['tide gauges 16', [[[8.0, 3000], [8.0, 101], [1.0, 99], [8.0, 800]]], [9.2, 3]], ['tide gauges 21', [[[1.0, 50], [8.0, 3000], [2.6, 101]]], [8.9, 2]], ['tide gauges 22', [[[2.6, 101]]], [7.92, 1]], ['tide gauges 23', [[[0.1, 50], [1.0, 800], [1.0, 50], [0.4, 100]]], [7.75, 2]], ['tide gauges 24', [[[2.6, 100], [0.1, 100], [1.0, 101], [8.0, 101], [1.0, 99]]], [7.58, 4]], ['tide gauges 25', [[[2.6, 101], [0.4, 800], [8.0, 100], [2.6, 99], [0.1, 101]]], [7.71, 4]], ['tide gauges 26', [[[8.0, 101], [0.1, 800], [2.6, 99], [0.1, 99]]], [7.9, 2]], ['tide gauges 27', [[[0.1, 100], [0.4, 800]]], [7.25, 2]]], [['tide gauges 21', [[[1.0, 50], [8.0, 3000], [2.6, 101]]], [8.9, 2]], ['tide gauges 28', [[[8.0, 101], [1.0, 99]]], [8.41, 1]], ['tide gauges 29', [[[0.4, 101], [0.1, 99], [2.6, 99], [0.1, 100], [0.1, 50]]], [6.8, 2]], ['tide gauges 30', [[[0.1, 99], [2.6, 3000], [0.1, 3000]]], [8.68, 2]], ['tide gauges 31', [[[2.6, 3000], [0.1, 3000], [8.0, 800]]], [8.89, 3]], ['tide gauges 32', [[[2.6, 800], [1.0, 99]]], [8.82, 1]], ['tide gauges 33', [[[1.0, 800]]], [8.4, 1]], ['gauge at 100 km', [[[1.0, 100]]], [7.5, 1]]]]\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 a seismological magnitude procedure; constants and tables are fixed by the contract and no claim of agency or 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-seismic_magnitude_estimation-tsunami-mt-gauge-averaging","generated_at":"2026-09-29T14:48:32.786372+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Tsunami magnitude compares tsunami size with seismic magnitude to flag tsunami earthquakes.","root_cause":"The mean divides by all gauges, including rejected near-field ones.","sha256":"c8ce6d953434ab8530093a85c5fe6c1bcfb6e14b4ca1868d241d7b6ee8841f80","title":"Abe tsunami magnitude: gauge averaging · 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":36.694,"exit_code":1,"observations":[{"actual":[7.91,1],"check":"tide gauges 0","expected":[7.91,1],"passed":true},{"actual":[8.41,2],"check":"tide gauges 1","expected":[7.76,2],"passed":false},{"actual":[6.5,1],"check":"tide gauges 2","expected":[6.5,1],"passed":true},{"actual":[6.5,1],"check":"tide gauges 3","expected":[6.5,1],"passed":true},{"actual":[8.0,4],"check":"tide gauges 4","expected":[7.28,4],"passed":false},{"actual":[9.39,2],"check":"tide gauges 5","expected":[8.45,2],"passed":false},{"actual":[8.98,1],"check":"tide gauges 6","expected":[8.98,1],"passed":true},{"actual":[8.41,3],"check":"tide gauges 7","expected":[8.1,3],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"tide gauges 0\", \"actual\": [7.91, 1], \"expected\": [7.91, 1], \"passed\": true}, {\"check\": \"tide gauges 1\", \"actual\": [8.41, 2], \"expected\": [7.76, 2], \"passed\": false}, {\"check\": \"tide gauges 2\", \"actual\": [6.5, 1], \"expected\": [6.5, 1], \"passed\": true}, {\"check\": \"tide gauges 3\", \"actual\": [6.5, 1], \"expected\": [6.5, 1], \"passed\": true}, {\"check\": \"tide gauges 4\", \"actual\": [8.0, 4], \"expected\": [7.28, 4], \"passed\": false}, {\"check\": \"tide gauges 5\", \"actual\": [9.39, 2], \"expected\": [8.45, 2], \"passed\": false}, {\"check\": \"tide gauges 6\", \"actual\": [8.98, 1], \"expected\": [8.98, 1], \"passed\": true}, {\"check\": \"tide gauges 7\", \"actual\": [8.41, 3], \"expected\": [8.1, 3], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.187,"exit_code":1,"observations":[{"actual":[1.98,1],"check":"tide gauges 0","expected":[7.91,1],"passed":false},{"actual":[5.17,2],"check":"tide gauges 1","expected":[7.76,2],"passed":false},{"actual":[6.5,1],"check":"tide gauges 2","expected":[6.5,1],"passed":true},{"actual":[6.5,1],"check":"tide gauges 3","expected":[6.5,1],"passed":true},{"actual":[5.82,4],"check":"tide gauges 4","expected":[7.28,4],"passed":false},{"actual":[8.45,2],"check":"tide gauges 5","expected":[8.45,2],"passed":true},{"actual":[2.24,1],"check":"tide gauges 6","expected":[8.98,1],"passed":false},{"actual":[8.1,3],"check":"tide gauges 7","expected":[8.1,3],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"tide gauges 0\", \"actual\": [1.98, 1], \"expected\": [7.91, 1], \"passed\": false}, {\"check\": \"tide gauges 1\", \"actual\": [5.17, 2], \"expected\": [7.76, 2], \"passed\": false}, {\"check\": \"tide gauges 2\", \"actual\": [6.5, 1], \"expected\": [6.5, 1], \"passed\": true}, {\"check\": \"tide gauges 3\", \"actual\": [6.5, 1], \"expected\": [6.5, 1], \"passed\": true}, {\"check\": \"tide gauges 4\", \"actual\": [5.82, 4], \"expected\": [7.28, 4], \"passed\": false}, {\"check\": \"tide gauges 5\", \"actual\": [8.45, 2], \"expected\": [8.45, 2], \"passed\": true}, {\"check\": \"tide gauges 6\", \"actual\": [2.24, 1], \"expected\": [8.98, 1], \"passed\": false}, {\"check\": \"tide gauges 7\", \"actual\": [8.1, 3], \"expected\": [8.1, 3], \"passed\": true}], \"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."}}