FAILURE MAP
← Case archive

FA-71546 / Seismic magnitude estimation / Open access

Epicentral distance and station selection: haversine half angle · case 01

North-south separations are doubled.

Verified by executionVariant 1 · 8 checks per implementationDownload source bundle ↓JSON ↗

ROOT CAUSE

The latitude haversine term uses the full angle.

THE FAILURE

The latitude haversine term uses the full angle.

Unsuccessful approach: Taking the absolute sine without squaring overstates every north-south separation.

Case contract

event [lat, lon] and stations [code, lat, lon] in degrees. Haversine distance with R = 6371 km. Keep stations within 600 km inclusive. Return [[code, km rounded 0.1, degrees rounded 0.001]] sorted by distance then code.

Why this case matters

Local magnitude and location use only stations in the calibrated distance range.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(event, stations):
    R = 6371.0
    out = []
    for code, la, lo in stations:
        p1 = math.radians(event[0])
        p2 = math.radians(la)
        dphi = p2 - p1
        dl = math.radians(lo - event[1])
        a = math.sin(dphi) ** 2 + math.cos(p1) * math.cos(p2) * math.sin(dl / 2) ** 2
        d = 2 * R * math.asin(math.sqrt(min(1.0, a)))
        if d <= 600:
            out.append([code, round(d, 1), round(math.degrees(d / R), 3)])
    return sorted(out, key=lambda r: (r[1], r[0]))
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['network 0', [[43.44, -118.77], [['S00', 33.06, -119.2], ['S01', 32.76, -122.81], ['S02', 40.37, -113.11], ['S03', 47.01, -115.45], ['S04', 33.17, -122.81]]], [['S03', 474.4, 4.267], ['S02', 579.4, 5.21]]], ['network 1', [[36.34, -120.83], [['S00', 37.53, -117.85], ['S01', 32.11, -122.6], ['S02', 34.89, -117.33], ['S03', 49.21, -120.87], ['S04', 42.08, -112.12]]], [['S00', 296.1, 2.662], ['S02', 355.1, 3.193], ['S01', 497.7, 4.476]]], ['network 2', [[44.56, -117.35], [['S00', 33.87, -122.39], ['S01', 32.58, -119.0], ['S02', 30.34, -116.47], ['S03', 43.88, -121.21], ['S04', 32.47, -111.54]]], [['S03', 316.7, 2.848]]], ['network 3', [[37.38, -120.81], [['S00', 37.99, -119.17], ['S01', 44.87, -121.53], ['S02', 36.92, -112.06], ['S03', 45.59, -124.41], ['S04', 48.41, -124.22], ['S05', 45.33, -114.43]]], [['S00', 159.5, 1.434]]], ['network 4', [[37.36, -114.17], [['S00', 43.21, -115.97], ['S01', 45.47, -113.6], ['S02', 43.88, -123.02], ['S03', 33.26, -123.35], ['S04', 41.04, -116.35], ['S05', 41.29, -123.64]]], [['S04', 450.2, 4.049]]], ['network 5', [[41.23, -114.32], [['S00', 48.44, -112.36], ['S01', 39.92, -111.66], ['S02', 31.63, -118.69], ['S03', 44.86, -116.63], ['S04', 45.92, -112.0], ['S05', 31.93, -116.6]]], [['S01', 267.7, 2.408], ['S03', 445.1, 4.003], ['S04', 553.9, 4.981]]], ['network 6', [[42.93, -114.98], [['S00', 41.78, -113.99], ['S01', 46.04, -120.17], ['S02', 39.37, -111.82], ['S03', 48.06, -111.76], ['S04', 45.02, -119.59]]], [['S00', 151.6, 1.363], ['S04', 435.9, 3.92], ['S02', 476.0, 4.281], ['S01', 537.5, 4.834]]], ['network 7', [[38.24, -116.31], [['S00', 44.82, -111.25], ['S01', 41.96, -117.22], ['S02', 45.77, -122.79]]], [['S01', 420.8, 3.784]]]], [['network 3', [[37.38, -120.81], [['S00', 37.99, -119.17], ['S01', 44.87, -121.53], ['S02', 36.92, -112.06], ['S03', 45.59, -124.41], ['S04', 48.41, -124.22], ['S05', 45.33, -114.43]]], [['S00', 159.5, 1.434]]], ['network 6', [[42.93, -114.98], [['S00', 41.78, -113.99], ['S01', 46.04, -120.17], ['S02', 39.37, -111.82], ['S03', 48.06, -111.76], ['S04', 45.02, -119.59]]], [['S00', 151.6, 1.363], ['S04', 435.9, 3.92], ['S02', 476.0, 4.281], ['S01', 537.5, 4.834]]], ['network 7', [[38.24, -116.31], [['S00', 44.82, -111.25], ['S01', 41.96, -117.22], ['S02', 45.77, -122.79]]], [['S01', 420.8, 3.784]]], ['network 8', [[37.27, -120.03], [['S00', 32.27, -124.77], ['S01', 36.2, -116.4], ['S02', 46.93, -122.1], ['S03', 48.81, -114.9]]], [['S01', 344.6, 3.099]]], ['network 9', [[39.63, -120.96], [['S00', 47.23, -111.26], ['S01', 41.57, -124.4], ['S02', 43.29, -122.87], ['S03', 45.0, -116.27], ['S04', 49.12, -110.82], ['S05', 33.21, -123.87]]], [['S01', 361.7, 3.253], ['S02', 437.0, 3.93]]], ['network 10', [[40.71, -119.76], [['S00', 42.0, -113.32], ['S01', 47.1, -113.65], ['S02', 40.97, -110.91], ['S03', 38.42, -122.78], ['S04', 40.45, -114.89]]], [['S03', 363.1, 3.265], ['S04', 412.2, 3.707], ['S00', 556.2, 5.002]]], ['network 11', [[39.52, -114.53], [['S00', 35.96, -123.88], ['S01', 41.26, -111.67], ['S02', 46.06, -119.82], ['S03', 38.64, -110.68], ['S04', 43.59, -119.31]]], [['S01', 310.0, 2.788], ['S03', 346.4, 3.115]]], ['network 12', [[39.75, -115.38], [['S00', 39.91, -122.96], ['S01', 40.0, -124.22], ['S02', 45.24, -114.12], ['S03', 36.65, -117.11], ['S04', 39.11, -115.83], ['S05', 48.17, -111.51]]], [['S04', 81.0, 0.728], ['S03', 376.4, 3.385]]]], [['network 6', [[42.93, -114.98], [['S00', 41.78, -113.99], ['S01', 46.04, -120.17], ['S02', 39.37, -111.82], ['S03', 48.06, -111.76], ['S04', 45.02, -119.59]]], [['S00', 151.6, 1.363], ['S04', 435.9, 3.92], ['S02', 476.0, 4.281], ['S01', 537.5, 4.834]]], ['network 11', [[39.52, -114.53], [['S00', 35.96, -123.88], ['S01', 41.26, -111.67], ['S02', 46.06, -119.82], ['S03', 38.64, -110.68], ['S04', 43.59, -119.31]]], [['S01', 310.0, 2.788], ['S03', 346.4, 3.115]]], ['network 14', [[36.07, -121.76], [['S00', 47.41, -116.96], ['S01', 36.95, -119.89], ['S02', 31.53, -122.92], ['S03', 32.44, -118.51], ['S04', 35.33, -113.8]]], [['S01', 193.7, 1.742], ['S03', 502.1, 4.515], ['S02', 516.1, 4.641]]], ['network 15', [[44.65, -120.07], [['S00', 46.05, -112.8], ['S01', 42.47, -123.99], ['S02', 38.63, -115.24], ['S03', 45.86, -118.34], ['S04', 39.78, -111.34], ['S05', 46.45, -117.59]]], [['S03', 190.9, 1.717], ['S05', 278.1, 2.501], ['S01', 398.1, 3.58], ['S00', 588.8, 5.295]]], ['network 16', [[38.62, -114.83], [['S00', 44.48, -122.4], ['S01', 39.21, -110.38]]], [['S01', 390.5, 3.512]]], ['network 17', [[40.22, -115.43], [['S00', 34.58, -110.93], ['S01', 32.33, -116.94], ['S02', 42.07, -117.12]]], [['S02', 249.7, 2.245]]], ['network 18', [[36.81, -120.08], [['S00', 45.93, -122.19], ['S01', 42.64, -115.55], ['S02', 44.75, -122.18], ['S03', 41.26, -115.09], ['S04', 43.24, -121.66]]], []], ['network 19', [[41.77, -116.31], [['S00', 37.95, -124.57], ['S01', 45.84, -119.62], ['S02', 42.56, -111.41], ['S03', 40.32, -110.13], ['S04', 47.42, -111.15], ['S05', 31.98, -115.86]]], [['S02', 413.2, 3.716], ['S01', 524.6, 4.718], ['S03', 542.6, 4.88]]]], [['network 9', [[39.63, -120.96], [['S00', 47.23, -111.26], ['S01', 41.57, -124.4], ['S02', 43.29, -122.87], ['S03', 45.0, -116.27], ['S04', 49.12, -110.82], ['S05', 33.21, -123.87]]], [['S01', 361.7, 3.253], ['S02', 437.0, 3.93]]], ['network 16', [[38.62, -114.83], [['S00', 44.48, -122.4], ['S01', 39.21, -110.38]]], [['S01', 390.5, 3.512]]], ['network 21', [[36.65, -117.88], [['S00', 38.12, -115.31], ['S01', 38.66, -112.95], ['S02', 34.34, -114.03]]], [['S00', 279.8, 2.516], ['S02', 432.9, 3.893], ['S01', 488.1, 4.389]]], ['network 22', [[44.58, -121.3], [['S00', 38.09, -120.43], ['S01', 49.5, -111.91], ['S02', 46.12, -110.34], ['S03', 49.31, -118.62], ['S04', 34.6, -110.46]]], [['S03', 563.8, 5.071]]], ['network 23', [[44.25, -117.92], [['S00', 44.39, -122.69], ['S01', 37.18, -114.68], ['S02', 44.85, -124.42], ['S03', 42.91, -119.64]]], [['S03', 203.5, 1.83], ['S00', 379.7, 3.415], ['S02', 519.2, 4.67]]], ['network 24', [[42.12, -121.58], [['S00', 39.06, -115.35], ['S01', 41.41, -121.4]]], [['S01', 80.3, 0.723]]], ['network 25', [[38.77, -114.31], [['S00', 43.94, -110.09], ['S01', 47.99, -124.55], ['S02', 48.6, -124.13], ['S03', 47.11, -121.53]]], []], ['network 26', [[42.47, -114.8], [['S00', 36.7, -111.1], ['S01', 46.83, -118.43], ['S02', 34.65, -112.02]]], [['S01', 563.3, 5.066]]]], [['network 0', [[43.44, -118.77], [['S00', 33.06, -119.2], ['S01', 32.76, -122.81], ['S02', 40.37, -113.11], ['S03', 47.01, -115.45], ['S04', 33.17, -122.81]]], [['S03', 474.4, 4.267], ['S02', 579.4, 5.21]]], ['network 12', [[39.75, -115.38], [['S00', 39.91, -122.96], ['S01', 40.0, -124.22], ['S02', 45.24, -114.12], ['S03', 36.65, -117.11], ['S04', 39.11, -115.83], ['S05', 48.17, -111.51]]], [['S04', 81.0, 0.728], ['S03', 376.4, 3.385]]], ['network 23', [[44.25, -117.92], [['S00', 44.39, -122.69], ['S01', 37.18, -114.68], ['S02', 44.85, -124.42], ['S03', 42.91, -119.64]]], [['S03', 203.5, 1.83], ['S00', 379.7, 3.415], ['S02', 519.2, 4.67]]], ['network 28', [[36.13, -121.64], [['S00', 30.99, -116.87], ['S01', 48.63, -114.1], ['S02', 30.53, -117.85], ['S03', 31.41, -124.62], ['S04', 35.71, -124.61]]], [['S04', 271.5, 2.442], ['S03', 592.6, 5.33]]], ['network 29', [[40.48, -114.48], [['S00', 38.22, -118.13], ['S01', 43.34, -122.26]]], [['S00', 402.0, 3.615]]], ['co-located station', [[40.0, -120.0], [['AAA', 40.0, -120.0], ['BBB', 41.0, -120.0]]], [['AAA', 0.0, 0.0], ['BBB', 111.2, 1.0]]], ['equal distance tie', [[0.0, 0.0], [['ZZZ', 1.0, 0.0], ['AAA', -1.0, 0.0]]], [['AAA', 111.2, 1.0], ['ZZZ', 111.2, 1.0]]], ['east-west line', [[10.0, 20.0], [['E1', 10.0, 23.0], ['W1', 10.0, 17.5]]], [['W1', 273.8, 2.462], ['E1', 328.5, 2.954]]]]]
for label, args, expected in fixtures[N - 1]:
    check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
network 0[][['S03', 474.4, 4.267], ['S02', 579.4, 5.21]]Failed
network 1[['S00', 374.4, 3.367], ['S02', 451.8, 4.063]][['S00', 296.1, 2.662], ['S02', 355.1, 3.193], ['S01', 497.7, 4.476]]Failed
network 2[['S03', 342.7, 3.082]][['S03', 316.7, 2.848]]Failed
network 3[['S00', 198.1, 1.781]][['S00', 159.5, 1.434]]Failed
network 4[][['S04', 450.2, 4.049]]Failed
network 5[['S01', 367.9, 3.309]][['S01', 267.7, 2.408], ['S03', 445.1, 4.003], ['S04', 553.9, 4.981]]Failed
network 6[['S00', 268.4, 2.414], ['S04', 593.4, 5.337]][['S00', 151.6, 1.363], ['S04', 435.9, 3.92], ['S02', 476.0, 4.281], ['S01', 537.5, 4.834]]Failed
network 7[][['S01', 420.8, 3.784]]Failed

SHA-256 / ffb56db1665b3315cc26069f8ad31338ee66d8c688cb1e3a12edee5e359ab328

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(event, stations):
    R = 6371.0
    out = []
    for code, la, lo in stations:
        p1 = math.radians(event[0])
        p2 = math.radians(la)
        dphi = p2 - p1
        dl = math.radians(lo - event[1])
        a = abs(math.sin(dphi / 2)) + math.cos(p1) * math.cos(p2) * math.sin(dl / 2) ** 2
        d = 2 * R * math.asin(math.sqrt(min(1.0, a)))
        if d <= 600:
            out.append([code, round(d, 1), round(math.degrees(d / R), 3)])
    return sorted(out, key=lambda r: (r[1], r[0]))
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['network 0', [[43.44, -118.77], [['S00', 33.06, -119.2], ['S01', 32.76, -122.81], ['S02', 40.37, -113.11], ['S03', 47.01, -115.45], ['S04', 33.17, -122.81]]], [['S03', 474.4, 4.267], ['S02', 579.4, 5.21]]], ['network 1', [[36.34, -120.83], [['S00', 37.53, -117.85], ['S01', 32.11, -122.6], ['S02', 34.89, -117.33], ['S03', 49.21, -120.87], ['S04', 42.08, -112.12]]], [['S00', 296.1, 2.662], ['S02', 355.1, 3.193], ['S01', 497.7, 4.476]]], ['network 2', [[44.56, -117.35], [['S00', 33.87, -122.39], ['S01', 32.58, -119.0], ['S02', 30.34, -116.47], ['S03', 43.88, -121.21], ['S04', 32.47, -111.54]]], [['S03', 316.7, 2.848]]], ['network 3', [[37.38, -120.81], [['S00', 37.99, -119.17], ['S01', 44.87, -121.53], ['S02', 36.92, -112.06], ['S03', 45.59, -124.41], ['S04', 48.41, -124.22], ['S05', 45.33, -114.43]]], [['S00', 159.5, 1.434]]], ['network 4', [[37.36, -114.17], [['S00', 43.21, -115.97], ['S01', 45.47, -113.6], ['S02', 43.88, -123.02], ['S03', 33.26, -123.35], ['S04', 41.04, -116.35], ['S05', 41.29, -123.64]]], [['S04', 450.2, 4.049]]], ['network 5', [[41.23, -114.32], [['S00', 48.44, -112.36], ['S01', 39.92, -111.66], ['S02', 31.63, -118.69], ['S03', 44.86, -116.63], ['S04', 45.92, -112.0], ['S05', 31.93, -116.6]]], [['S01', 267.7, 2.408], ['S03', 445.1, 4.003], ['S04', 553.9, 4.981]]], ['network 6', [[42.93, -114.98], [['S00', 41.78, -113.99], ['S01', 46.04, -120.17], ['S02', 39.37, -111.82], ['S03', 48.06, -111.76], ['S04', 45.02, -119.59]]], [['S00', 151.6, 1.363], ['S04', 435.9, 3.92], ['S02', 476.0, 4.281], ['S01', 537.5, 4.834]]], ['network 7', [[38.24, -116.31], [['S00', 44.82, -111.25], ['S01', 41.96, -117.22], ['S02', 45.77, -122.79]]], [['S01', 420.8, 3.784]]]], [['network 3', [[37.38, -120.81], [['S00', 37.99, -119.17], ['S01', 44.87, -121.53], ['S02', 36.92, -112.06], ['S03', 45.59, -124.41], ['S04', 48.41, -124.22], ['S05', 45.33, -114.43]]], [['S00', 159.5, 1.434]]], ['network 6', [[42.93, -114.98], [['S00', 41.78, -113.99], ['S01', 46.04, -120.17], ['S02', 39.37, -111.82], ['S03', 48.06, -111.76], ['S04', 45.02, -119.59]]], [['S00', 151.6, 1.363], ['S04', 435.9, 3.92], ['S02', 476.0, 4.281], ['S01', 537.5, 4.834]]], ['network 7', [[38.24, -116.31], [['S00', 44.82, -111.25], ['S01', 41.96, -117.22], ['S02', 45.77, -122.79]]], [['S01', 420.8, 3.784]]], ['network 8', [[37.27, -120.03], [['S00', 32.27, -124.77], ['S01', 36.2, -116.4], ['S02', 46.93, -122.1], ['S03', 48.81, -114.9]]], [['S01', 344.6, 3.099]]], ['network 9', [[39.63, -120.96], [['S00', 47.23, -111.26], ['S01', 41.57, -124.4], ['S02', 43.29, -122.87], ['S03', 45.0, -116.27], ['S04', 49.12, -110.82], ['S05', 33.21, -123.87]]], [['S01', 361.7, 3.253], ['S02', 437.0, 3.93]]], ['network 10', [[40.71, -119.76], [['S00', 42.0, -113.32], ['S01', 47.1, -113.65], ['S02', 40.97, -110.91], ['S03', 38.42, -122.78], ['S04', 40.45, -114.89]]], [['S03', 363.1, 3.265], ['S04', 412.2, 3.707], ['S00', 556.2, 5.002]]], ['network 11', [[39.52, -114.53], [['S00', 35.96, -123.88], ['S01', 41.26, -111.67], ['S02', 46.06, -119.82], ['S03', 38.64, -110.68], ['S04', 43.59, -119.31]]], [['S01', 310.0, 2.788], ['S03', 346.4, 3.115]]], ['network 12', [[39.75, -115.38], [['S00', 39.91, -122.96], ['S01', 40.0, -124.22], ['S02', 45.24, -114.12], ['S03', 36.65, -117.11], ['S04', 39.11, -115.83], ['S05', 48.17, -111.51]]], [['S04', 81.0, 0.728], ['S03', 376.4, 3.385]]]], [['network 6', [[42.93, -114.98], [['S00', 41.78, -113.99], ['S01', 46.04, -120.17], ['S02', 39.37, -111.82], ['S03', 48.06, -111.76], ['S04', 45.02, -119.59]]], [['S00', 151.6, 1.363], ['S04', 435.9, 3.92], ['S02', 476.0, 4.281], ['S01', 537.5, 4.834]]], ['network 11', [[39.52, -114.53], [['S00', 35.96, -123.88], ['S01', 41.26, -111.67], ['S02', 46.06, -119.82], ['S03', 38.64, -110.68], ['S04', 43.59, -119.31]]], [['S01', 310.0, 2.788], ['S03', 346.4, 3.115]]], ['network 14', [[36.07, -121.76], [['S00', 47.41, -116.96], ['S01', 36.95, -119.89], ['S02', 31.53, -122.92], ['S03', 32.44, -118.51], ['S04', 35.33, -113.8]]], [['S01', 193.7, 1.742], ['S03', 502.1, 4.515], ['S02', 516.1, 4.641]]], ['network 15', [[44.65, -120.07], [['S00', 46.05, -112.8], ['S01', 42.47, -123.99], ['S02', 38.63, -115.24], ['S03', 45.86, -118.34], ['S04', 39.78, -111.34], ['S05', 46.45, -117.59]]], [['S03', 190.9, 1.717], ['S05', 278.1, 2.501], ['S01', 398.1, 3.58], ['S00', 588.8, 5.295]]], ['network 16', [[38.62, -114.83], [['S00', 44.48, -122.4], ['S01', 39.21, -110.38]]], [['S01', 390.5, 3.512]]], ['network 17', [[40.22, -115.43], [['S00', 34.58, -110.93], ['S01', 32.33, -116.94], ['S02', 42.07, -117.12]]], [['S02', 249.7, 2.245]]], ['network 18', [[36.81, -120.08], [['S00', 45.93, -122.19], ['S01', 42.64, -115.55], ['S02', 44.75, -122.18], ['S03', 41.26, -115.09], ['S04', 43.24, -121.66]]], []], ['network 19', [[41.77, -116.31], [['S00', 37.95, -124.57], ['S01', 45.84, -119.62], ['S02', 42.56, -111.41], ['S03', 40.32, -110.13], ['S04', 47.42, -111.15], ['S05', 31.98, -115.86]]], [['S02', 413.2, 3.716], ['S01', 524.6, 4.718], ['S03', 542.6, 4.88]]]], [['network 9', [[39.63, -120.96], [['S00', 47.23, -111.26], ['S01', 41.57, -124.4], ['S02', 43.29, -122.87], ['S03', 45.0, -116.27], ['S04', 49.12, -110.82], ['S05', 33.21, -123.87]]], [['S01', 361.7, 3.253], ['S02', 437.0, 3.93]]], ['network 16', [[38.62, -114.83], [['S00', 44.48, -122.4], ['S01', 39.21, -110.38]]], [['S01', 390.5, 3.512]]], ['network 21', [[36.65, -117.88], [['S00', 38.12, -115.31], ['S01', 38.66, -112.95], ['S02', 34.34, -114.03]]], [['S00', 279.8, 2.516], ['S02', 432.9, 3.893], ['S01', 488.1, 4.389]]], ['network 22', [[44.58, -121.3], [['S00', 38.09, -120.43], ['S01', 49.5, -111.91], ['S02', 46.12, -110.34], ['S03', 49.31, -118.62], ['S04', 34.6, -110.46]]], [['S03', 563.8, 5.071]]], ['network 23', [[44.25, -117.92], [['S00', 44.39, -122.69], ['S01', 37.18, -114.68], ['S02', 44.85, -124.42], ['S03', 42.91, -119.64]]], [['S03', 203.5, 1.83], ['S00', 379.7, 3.415], ['S02', 519.2, 4.67]]], ['network 24', [[42.12, -121.58], [['S00', 39.06, -115.35], ['S01', 41.41, -121.4]]], [['S01', 80.3, 0.723]]], ['network 25', [[38.77, -114.31], [['S00', 43.94, -110.09], ['S01', 47.99, -124.55], ['S02', 48.6, -124.13], ['S03', 47.11, -121.53]]], []], ['network 26', [[42.47, -114.8], [['S00', 36.7, -111.1], ['S01', 46.83, -118.43], ['S02', 34.65, -112.02]]], [['S01', 563.3, 5.066]]]], [['network 0', [[43.44, -118.77], [['S00', 33.06, -119.2], ['S01', 32.76, -122.81], ['S02', 40.37, -113.11], ['S03', 47.01, -115.45], ['S04', 33.17, -122.81]]], [['S03', 474.4, 4.267], ['S02', 579.4, 5.21]]], ['network 12', [[39.75, -115.38], [['S00', 39.91, -122.96], ['S01', 40.0, -124.22], ['S02', 45.24, -114.12], ['S03', 36.65, -117.11], ['S04', 39.11, -115.83], ['S05', 48.17, -111.51]]], [['S04', 81.0, 0.728], ['S03', 376.4, 3.385]]], ['network 23', [[44.25, -117.92], [['S00', 44.39, -122.69], ['S01', 37.18, -114.68], ['S02', 44.85, -124.42], ['S03', 42.91, -119.64]]], [['S03', 203.5, 1.83], ['S00', 379.7, 3.415], ['S02', 519.2, 4.67]]], ['network 28', [[36.13, -121.64], [['S00', 30.99, -116.87], ['S01', 48.63, -114.1], ['S02', 30.53, -117.85], ['S03', 31.41, -124.62], ['S04', 35.71, -124.61]]], [['S04', 271.5, 2.442], ['S03', 592.6, 5.33]]], ['network 29', [[40.48, -114.48], [['S00', 38.22, -118.13], ['S01', 43.34, -122.26]]], [['S00', 402.0, 3.615]]], ['co-located station', [[40.0, -120.0], [['AAA', 40.0, -120.0], ['BBB', 41.0, -120.0]]], [['AAA', 0.0, 0.0], ['BBB', 111.2, 1.0]]], ['equal distance tie', [[0.0, 0.0], [['ZZZ', 1.0, 0.0], ['AAA', -1.0, 0.0]]], [['AAA', 111.2, 1.0], ['ZZZ', 111.2, 1.0]]], ['east-west line', [[10.0, 20.0], [['E1', 10.0, 23.0], ['W1', 10.0, 17.5]]], [['W1', 273.8, 2.462], ['E1', 328.5, 2.954]]]]]
for label, args, expected in fixtures[N - 1]:
    check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
network 0[][['S03', 474.4, 4.267], ['S02', 579.4, 5.21]]Failed
network 1[][['S00', 296.1, 2.662], ['S02', 355.1, 3.193], ['S01', 497.7, 4.476]]Failed
network 2[][['S03', 316.7, 2.848]]Failed
network 3[][['S00', 159.5, 1.434]]Failed
network 4[][['S04', 450.2, 4.049]]Failed
network 5[][['S01', 267.7, 2.408], ['S03', 445.1, 4.003], ['S04', 553.9, 4.981]]Failed
network 6[][['S00', 151.6, 1.363], ['S04', 435.9, 3.92], ['S02', 476.0, 4.281], ['S01', 537.5, 4.834]]Failed
network 7[][['S01', 420.8, 3.784]]Failed

SHA-256 / bbcfc35e4665ac20949a89f44ce4790e8350c4b7f79ccd032f4e5ddaff2a065e

HELD IN THE MEMBER ARCHIVE

The verified repair and its recorded checks are member-only.

This mechanism has 8 recorded checks per implementation. The open-access tier publishes the failure and the unsuccessful fix; the repaired source that passes every check, and the observations that prove it, are available to members.

Every case sharing this mechanism uses the same contract and the same repair, so this one record is held back for all of them.

Member access is invitation-based. Sign in with your invited account to inspect the repair.

Sign in to the archive ↗

Verification & scope

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.

Observations recorded using Python 3.12.14 at 2026-09-29T14:48:30.543847+00:00.

Case digest / f638cc51fb310363060f12f4960800ea6ce45018e0026cfdfe1cc9c3040d0e26