{"abstract":"Backfilled late reports make the API grow instead of decay.","category":"Weather index computation","checks":8,"contract":"obs are [day, precip_mm] in any order; process in ascending day order (stable for equal days). Between observations API decays by k^(day gap); several reports on the same day accumulate without decay; negative precipitation is a sensor glitch treated as 0. Return API after each observation, rounded to 0.01.","evaluation_group":"w2-weather_index_computation-antecedent-precip-index","failed_approach":"Sorting descending decays backward in time.","family":"w2-weather_index_computation-antecedent-precip-index-chronological-ordering","id":"FA-71226","implementations":{"attempt":{"sha256":"2a609124aa4e4ac7ab86e05ae8b3f41243e236c4722c3ded4a5c07c647dc0e4c","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(k, obs):\n    api = 0.0\n    last = None\n    out = []\n    for day, p in sorted(obs, key=lambda r: r[0], reverse=True):\n        if last is not None:\n            api *= k ** (day - last)\n        api += max(p, 0.0)\n        last = day\n        out.append(round(api, 2))\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['basin 0', [0.85, [[1, 0.0], [1, -1.0], [2, -1.0], [3, 0.0], [4, 12.5], [5, 30.0]]], [0.0, 0.0, 0.0, 0.0, 12.5, 40.62]], ['basin 1', [0.9, [[7, 2.0], [10, -1.0], [9, 12.5], [3, 0.0], [13, 12.5], [11, -1.0]]], [0.0, 2.0, 14.12, 12.71, 11.44, 21.76]], ['basin 2', [0.85, [[2, 12.5], [2, 30.0], [3, -1.0], [7, 30.0], [8, 30.0], [9, 30.0], [10, 5.0]]], [12.5, 42.5, 36.12, 48.86, 71.53, 90.8, 82.18]], ['basin 3', [0.9, [[0, 5.0], [6, 2.0], [7, 12.5], [2, 2.0]]], [5.0, 6.05, 5.97, 17.87]], ['basin 4', [0.85, [[2, 30.0], [2, 12.5], [4, 30.0], [4, 12.5], [4, 12.5], [4, 12.5], [5, 5.0]]], [30.0, 42.5, 60.71, 73.21, 85.71, 98.21, 88.48]], ['basin 5', [0.9, [[6, 2.0], [4, 30.0], [4, 2.0], [14, 12.5], [10, 0.0], [2, 30.0]]], [30.0, 54.3, 56.3, 47.6, 31.23, 32.99]], ['basin 6', [0.85, [[1, 0.0], [4, 5.0], [2, 5.0], [6, 5.0], [0, 30.0], [10, 12.5]]], [30.0, 25.5, 26.68, 24.27, 22.54, 24.26]], ['basin 7', [0.9, [[7, 2.0], [6, 2.0], [3, 2.0], [4, 5.0]]], [2.0, 6.8, 7.51, 8.76]]], [['basin 6', [0.85, [[1, 0.0], [4, 5.0], [2, 5.0], [6, 5.0], [0, 30.0], [10, 12.5]]], [30.0, 25.5, 26.68, 24.27, 22.54, 24.26]], ['basin 7', [0.9, [[7, 2.0], [6, 2.0], [3, 2.0], [4, 5.0]]], [2.0, 6.8, 7.51, 8.76]], ['basin 8', [0.85, [[0, 2.0], [0, 5.0], [1, -1.0], [3, 5.0], [4, 30.0], [5, 2.0], [6, 2.0]]], [2.0, 7.0, 5.95, 9.3, 37.9, 34.22, 31.09]], ['basin 9', [0.9, [[1, -1.0], [2, 2.0], [2, 30.0], [3, 12.5], [5, 30.0], [7, 2.0], [9, 30.0]]], [0.0, 2.0, 32.0, 41.3, 63.45, 53.4, 73.25]], ['basin 10', [0.85, [[6, 2.0], [3, 30.0], [4, -1.0], [4, 5.0]]], [30.0, 25.5, 30.5, 24.04]], ['basin 11', [0.9, [[3, -1.0], [5, 2.0], [6, 30.0], [7, -1.0], [9, -1.0], [10, 0.0], [14, 12.5]]], [0.0, 2.0, 31.8, 28.62, 23.18, 20.86, 26.19]], ['basin 12', [0.85, [[2, 30.0], [4, -1.0], [5, 30.0], [6, 0.0], [6, 0.0]]], [30.0, 21.67, 48.42, 41.16, 41.16]], ['basin 13', [0.9, [[0, 12.5], [4, -1.0], [5, 5.0], [7, 12.5]]], [12.5, 8.2, 12.38, 22.53]]], [['basin 11', [0.9, [[3, -1.0], [5, 2.0], [6, 30.0], [7, -1.0], [9, -1.0], [10, 0.0], [14, 12.5]]], [0.0, 2.0, 31.8, 28.62, 23.18, 20.86, 26.19]], ['basin 14', [0.85, [[0, -1.0], [0, 30.0], [1, 5.0], [2, 0.0], [4, 5.0], [8, -1.0]]], [0.0, 30.0, 30.5, 25.93, 23.73, 12.39]], ['basin 15', [0.9, [[6, 5.0], [6, 30.0], [3, 0.0], [1, 5.0], [4, 12.5], [7, 12.5]]], [5.0, 4.05, 16.14, 18.08, 48.08, 55.77]], ['basin 16', [0.85, [[1, 30.0], [13, -1.0], [5, 30.0], [9, 30.0]]], [30.0, 45.66, 53.83, 28.1]], ['basin 17', [0.9, [[7, 5.0], [4, 12.5], [0, 0.0], [6, 30.0]]], [0.0, 12.5, 40.12, 41.11]], ['basin 18', [0.85, [[4, 12.5], [4, -1.0], [3, 2.0], [4, 12.5]]], [2.0, 14.2, 14.2, 26.7]], ['basin 19', [0.9, [[2, 2.0], [6, 2.0], [7, 2.0], [11, 2.0], [13, 0.0], [15, 0.0]]], [2.0, 3.31, 4.98, 5.27, 4.27, 3.46]], ['basin 20', [0.85, [[2, -1.0], [3, 5.0], [4, 0.0], [8, -1.0], [12, -1.0], [13, 12.5], [17, 12.5]]], [0.0, 5.0, 4.25, 2.22, 1.16, 13.48, 19.54]]], [['basin 16', [0.85, [[1, 30.0], [13, -1.0], [5, 30.0], [9, 30.0]]], [30.0, 45.66, 53.83, 28.1]], ['basin 18', [0.85, [[4, 12.5], [4, -1.0], [3, 2.0], [4, 12.5]]], [2.0, 14.2, 14.2, 26.7]], ['basin 21', [0.9, [[2, 12.5], [2, 30.0], [4, -1.0], [3, 0.0], [7, 0.0], [5, -1.0]]], [12.5, 42.5, 38.25, 34.43, 30.98, 25.1]], ['basin 22', [0.85, [[0, 2.0], [1, -1.0], [1, -1.0], [2, 5.0], [3, 0.0], [7, 2.0], [8, 5.0]]], [2.0, 1.7, 1.7, 6.45, 5.48, 4.86, 9.13]], ['basin 23', [0.9, [[3, 30.0], [4, 30.0], [8, -1.0], [8, -1.0], [10, 0.0]]], [30.0, 57.0, 37.4, 37.4, 30.29]], ['basin 24', [0.85, [[2, 0.0], [4, -1.0], [5, -1.0], [5, 0.0], [6, 2.0], [7, 30.0], [7, 2.0]]], [0.0, 0.0, 0.0, 0.0, 2.0, 31.7, 33.7]], ['basin 25', [0.9, [[3, 0.0], [1, -1.0], [0, -1.0], [4, 2.0]]], [0.0, 0.0, 0.0, 2.0]], ['basin 26', [0.85, [[3, 30.0], [4, 2.0], [8, 0.0], [12, 0.0], [16, 12.5]]], [30.0, 27.5, 14.36, 7.49, 16.41]]], [['basin 0', [0.85, [[1, 0.0], [1, -1.0], [2, -1.0], [3, 0.0], [4, 12.5], [5, 30.0]]], [0.0, 0.0, 0.0, 0.0, 12.5, 40.62]], ['basin 1', [0.9, [[7, 2.0], [10, -1.0], [9, 12.5], [3, 0.0], [13, 12.5], [11, -1.0]]], [0.0, 2.0, 14.12, 12.71, 11.44, 21.76]], ['basin 21', [0.9, [[2, 12.5], [2, 30.0], [4, -1.0], [3, 0.0], [7, 0.0], [5, -1.0]]], [12.5, 42.5, 38.25, 34.43, 30.98, 25.1]], ['basin 28', [0.85, [[2, 30.0], [3, 2.0], [5, 2.0], [6, 30.0], [10, 2.0], [10, 5.0], [14, 5.0]]], [30.0, 27.5, 21.87, 48.59, 27.36, 32.36, 21.89]], ['basin 29', [0.9, [[4, 5.0], [1, 30.0], [1, 5.0], [3, 30.0]]], [30.0, 35.0, 58.35, 57.52]], ['two gauges same day', [0.9, [[1, 10.0], [1, 5.0], [3, 0.0]]], [10.0, 15.0, 12.15]], ['negative glitch', [0.8, [[0, 10.0], [1, -3.0]]], [10.0, 8.0]], ['week gap', [0.9, [[0, 20.0], [7, 0.0]]], [20.0, 9.57]]]]\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":"e694a2687466e3493a31f3d08c4884e010239a6168886d95f748868355f6dc15","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(k, obs):\n    api = 0.0\n    last = None\n    out = []\n    for day, p in obs:\n        if last is not None:\n            api *= k ** (day - last)\n        api += max(p, 0.0)\n        last = day\n        out.append(round(api, 2))\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['basin 0', [0.85, [[1, 0.0], [1, -1.0], [2, -1.0], [3, 0.0], [4, 12.5], [5, 30.0]]], [0.0, 0.0, 0.0, 0.0, 12.5, 40.62]], ['basin 1', [0.9, [[7, 2.0], [10, -1.0], [9, 12.5], [3, 0.0], [13, 12.5], [11, -1.0]]], [0.0, 2.0, 14.12, 12.71, 11.44, 21.76]], ['basin 2', [0.85, [[2, 12.5], [2, 30.0], [3, -1.0], [7, 30.0], [8, 30.0], [9, 30.0], [10, 5.0]]], [12.5, 42.5, 36.12, 48.86, 71.53, 90.8, 82.18]], ['basin 3', [0.9, [[0, 5.0], [6, 2.0], [7, 12.5], [2, 2.0]]], [5.0, 6.05, 5.97, 17.87]], ['basin 4', [0.85, [[2, 30.0], [2, 12.5], [4, 30.0], [4, 12.5], [4, 12.5], [4, 12.5], [5, 5.0]]], [30.0, 42.5, 60.71, 73.21, 85.71, 98.21, 88.48]], ['basin 5', [0.9, [[6, 2.0], [4, 30.0], [4, 2.0], [14, 12.5], [10, 0.0], [2, 30.0]]], [30.0, 54.3, 56.3, 47.6, 31.23, 32.99]], ['basin 6', [0.85, [[1, 0.0], [4, 5.0], [2, 5.0], [6, 5.0], [0, 30.0], [10, 12.5]]], [30.0, 25.5, 26.68, 24.27, 22.54, 24.26]], ['basin 7', [0.9, [[7, 2.0], [6, 2.0], [3, 2.0], [4, 5.0]]], [2.0, 6.8, 7.51, 8.76]]], [['basin 6', [0.85, [[1, 0.0], [4, 5.0], [2, 5.0], [6, 5.0], [0, 30.0], [10, 12.5]]], [30.0, 25.5, 26.68, 24.27, 22.54, 24.26]], ['basin 7', [0.9, [[7, 2.0], [6, 2.0], [3, 2.0], [4, 5.0]]], [2.0, 6.8, 7.51, 8.76]], ['basin 8', [0.85, [[0, 2.0], [0, 5.0], [1, -1.0], [3, 5.0], [4, 30.0], [5, 2.0], [6, 2.0]]], [2.0, 7.0, 5.95, 9.3, 37.9, 34.22, 31.09]], ['basin 9', [0.9, [[1, -1.0], [2, 2.0], [2, 30.0], [3, 12.5], [5, 30.0], [7, 2.0], [9, 30.0]]], [0.0, 2.0, 32.0, 41.3, 63.45, 53.4, 73.25]], ['basin 10', [0.85, [[6, 2.0], [3, 30.0], [4, -1.0], [4, 5.0]]], [30.0, 25.5, 30.5, 24.04]], ['basin 11', [0.9, [[3, -1.0], [5, 2.0], [6, 30.0], [7, -1.0], [9, -1.0], [10, 0.0], [14, 12.5]]], [0.0, 2.0, 31.8, 28.62, 23.18, 20.86, 26.19]], ['basin 12', [0.85, [[2, 30.0], [4, -1.0], [5, 30.0], [6, 0.0], [6, 0.0]]], [30.0, 21.67, 48.42, 41.16, 41.16]], ['basin 13', [0.9, [[0, 12.5], [4, -1.0], [5, 5.0], [7, 12.5]]], [12.5, 8.2, 12.38, 22.53]]], [['basin 11', [0.9, [[3, -1.0], [5, 2.0], [6, 30.0], [7, -1.0], [9, -1.0], [10, 0.0], [14, 12.5]]], [0.0, 2.0, 31.8, 28.62, 23.18, 20.86, 26.19]], ['basin 14', [0.85, [[0, -1.0], [0, 30.0], [1, 5.0], [2, 0.0], [4, 5.0], [8, -1.0]]], [0.0, 30.0, 30.5, 25.93, 23.73, 12.39]], ['basin 15', [0.9, [[6, 5.0], [6, 30.0], [3, 0.0], [1, 5.0], [4, 12.5], [7, 12.5]]], [5.0, 4.05, 16.14, 18.08, 48.08, 55.77]], ['basin 16', [0.85, [[1, 30.0], [13, -1.0], [5, 30.0], [9, 30.0]]], [30.0, 45.66, 53.83, 28.1]], ['basin 17', [0.9, [[7, 5.0], [4, 12.5], [0, 0.0], [6, 30.0]]], [0.0, 12.5, 40.12, 41.11]], ['basin 18', [0.85, [[4, 12.5], [4, -1.0], [3, 2.0], [4, 12.5]]], [2.0, 14.2, 14.2, 26.7]], ['basin 19', [0.9, [[2, 2.0], [6, 2.0], [7, 2.0], [11, 2.0], [13, 0.0], [15, 0.0]]], [2.0, 3.31, 4.98, 5.27, 4.27, 3.46]], ['basin 20', [0.85, [[2, -1.0], [3, 5.0], [4, 0.0], [8, -1.0], [12, -1.0], [13, 12.5], [17, 12.5]]], [0.0, 5.0, 4.25, 2.22, 1.16, 13.48, 19.54]]], [['basin 16', [0.85, [[1, 30.0], [13, -1.0], [5, 30.0], [9, 30.0]]], [30.0, 45.66, 53.83, 28.1]], ['basin 18', [0.85, [[4, 12.5], [4, -1.0], [3, 2.0], [4, 12.5]]], [2.0, 14.2, 14.2, 26.7]], ['basin 21', [0.9, [[2, 12.5], [2, 30.0], [4, -1.0], [3, 0.0], [7, 0.0], [5, -1.0]]], [12.5, 42.5, 38.25, 34.43, 30.98, 25.1]], ['basin 22', [0.85, [[0, 2.0], [1, -1.0], [1, -1.0], [2, 5.0], [3, 0.0], [7, 2.0], [8, 5.0]]], [2.0, 1.7, 1.7, 6.45, 5.48, 4.86, 9.13]], ['basin 23', [0.9, [[3, 30.0], [4, 30.0], [8, -1.0], [8, -1.0], [10, 0.0]]], [30.0, 57.0, 37.4, 37.4, 30.29]], ['basin 24', [0.85, [[2, 0.0], [4, -1.0], [5, -1.0], [5, 0.0], [6, 2.0], [7, 30.0], [7, 2.0]]], [0.0, 0.0, 0.0, 0.0, 2.0, 31.7, 33.7]], ['basin 25', [0.9, [[3, 0.0], [1, -1.0], [0, -1.0], [4, 2.0]]], [0.0, 0.0, 0.0, 2.0]], ['basin 26', [0.85, [[3, 30.0], [4, 2.0], [8, 0.0], [12, 0.0], [16, 12.5]]], [30.0, 27.5, 14.36, 7.49, 16.41]]], [['basin 0', [0.85, [[1, 0.0], [1, -1.0], [2, -1.0], [3, 0.0], [4, 12.5], [5, 30.0]]], [0.0, 0.0, 0.0, 0.0, 12.5, 40.62]], ['basin 1', [0.9, [[7, 2.0], [10, -1.0], [9, 12.5], [3, 0.0], [13, 12.5], [11, -1.0]]], [0.0, 2.0, 14.12, 12.71, 11.44, 21.76]], ['basin 21', [0.9, [[2, 12.5], [2, 30.0], [4, -1.0], [3, 0.0], [7, 0.0], [5, -1.0]]], [12.5, 42.5, 38.25, 34.43, 30.98, 25.1]], ['basin 28', [0.85, [[2, 30.0], [3, 2.0], [5, 2.0], [6, 30.0], [10, 2.0], [10, 5.0], [14, 5.0]]], [30.0, 27.5, 21.87, 48.59, 27.36, 32.36, 21.89]], ['basin 29', [0.9, [[4, 5.0], [1, 30.0], [1, 5.0], [3, 30.0]]], [30.0, 35.0, 58.35, 57.52]], ['two gauges same day', [0.9, [[1, 10.0], [1, 5.0], [3, 0.0]]], [10.0, 15.0, 12.15]], ['negative glitch', [0.8, [[0, 10.0], [1, -3.0]]], [10.0, 8.0]], ['week gap', [0.9, [[0, 20.0], [7, 0.0]]], [20.0, 9.57]]]]\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":"c03e48fe914d58874f05bd9ab9a8ac447c7059a3a4869af5c556072a281d9f9b","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(k, obs):\n    api = 0.0\n    last = None\n    out = []\n    for day, p in sorted(obs, key=lambda r: r[0]):\n        if last is not None:\n            api *= k ** (day - last)\n        api += max(p, 0.0)\n        last = day\n        out.append(round(api, 2))\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['basin 0', [0.85, [[1, 0.0], [1, -1.0], [2, -1.0], [3, 0.0], [4, 12.5], [5, 30.0]]], [0.0, 0.0, 0.0, 0.0, 12.5, 40.62]], ['basin 1', [0.9, [[7, 2.0], [10, -1.0], [9, 12.5], [3, 0.0], [13, 12.5], [11, -1.0]]], [0.0, 2.0, 14.12, 12.71, 11.44, 21.76]], ['basin 2', [0.85, [[2, 12.5], [2, 30.0], [3, -1.0], [7, 30.0], [8, 30.0], [9, 30.0], [10, 5.0]]], [12.5, 42.5, 36.12, 48.86, 71.53, 90.8, 82.18]], ['basin 3', [0.9, [[0, 5.0], [6, 2.0], [7, 12.5], [2, 2.0]]], [5.0, 6.05, 5.97, 17.87]], ['basin 4', [0.85, [[2, 30.0], [2, 12.5], [4, 30.0], [4, 12.5], [4, 12.5], [4, 12.5], [5, 5.0]]], [30.0, 42.5, 60.71, 73.21, 85.71, 98.21, 88.48]], ['basin 5', [0.9, [[6, 2.0], [4, 30.0], [4, 2.0], [14, 12.5], [10, 0.0], [2, 30.0]]], [30.0, 54.3, 56.3, 47.6, 31.23, 32.99]], ['basin 6', [0.85, [[1, 0.0], [4, 5.0], [2, 5.0], [6, 5.0], [0, 30.0], [10, 12.5]]], [30.0, 25.5, 26.68, 24.27, 22.54, 24.26]], ['basin 7', [0.9, [[7, 2.0], [6, 2.0], [3, 2.0], [4, 5.0]]], [2.0, 6.8, 7.51, 8.76]]], [['basin 6', [0.85, [[1, 0.0], [4, 5.0], [2, 5.0], [6, 5.0], [0, 30.0], [10, 12.5]]], [30.0, 25.5, 26.68, 24.27, 22.54, 24.26]], ['basin 7', [0.9, [[7, 2.0], [6, 2.0], [3, 2.0], [4, 5.0]]], [2.0, 6.8, 7.51, 8.76]], ['basin 8', [0.85, [[0, 2.0], [0, 5.0], [1, -1.0], [3, 5.0], [4, 30.0], [5, 2.0], [6, 2.0]]], [2.0, 7.0, 5.95, 9.3, 37.9, 34.22, 31.09]], ['basin 9', [0.9, [[1, -1.0], [2, 2.0], [2, 30.0], [3, 12.5], [5, 30.0], [7, 2.0], [9, 30.0]]], [0.0, 2.0, 32.0, 41.3, 63.45, 53.4, 73.25]], ['basin 10', [0.85, [[6, 2.0], [3, 30.0], [4, -1.0], [4, 5.0]]], [30.0, 25.5, 30.5, 24.04]], ['basin 11', [0.9, [[3, -1.0], [5, 2.0], [6, 30.0], [7, -1.0], [9, -1.0], [10, 0.0], [14, 12.5]]], [0.0, 2.0, 31.8, 28.62, 23.18, 20.86, 26.19]], ['basin 12', [0.85, [[2, 30.0], [4, -1.0], [5, 30.0], [6, 0.0], [6, 0.0]]], [30.0, 21.67, 48.42, 41.16, 41.16]], ['basin 13', [0.9, [[0, 12.5], [4, -1.0], [5, 5.0], [7, 12.5]]], [12.5, 8.2, 12.38, 22.53]]], [['basin 11', [0.9, [[3, -1.0], [5, 2.0], [6, 30.0], [7, -1.0], [9, -1.0], [10, 0.0], [14, 12.5]]], [0.0, 2.0, 31.8, 28.62, 23.18, 20.86, 26.19]], ['basin 14', [0.85, [[0, -1.0], [0, 30.0], [1, 5.0], [2, 0.0], [4, 5.0], [8, -1.0]]], [0.0, 30.0, 30.5, 25.93, 23.73, 12.39]], ['basin 15', [0.9, [[6, 5.0], [6, 30.0], [3, 0.0], [1, 5.0], [4, 12.5], [7, 12.5]]], [5.0, 4.05, 16.14, 18.08, 48.08, 55.77]], ['basin 16', [0.85, [[1, 30.0], [13, -1.0], [5, 30.0], [9, 30.0]]], [30.0, 45.66, 53.83, 28.1]], ['basin 17', [0.9, [[7, 5.0], [4, 12.5], [0, 0.0], [6, 30.0]]], [0.0, 12.5, 40.12, 41.11]], ['basin 18', [0.85, [[4, 12.5], [4, -1.0], [3, 2.0], [4, 12.5]]], [2.0, 14.2, 14.2, 26.7]], ['basin 19', [0.9, [[2, 2.0], [6, 2.0], [7, 2.0], [11, 2.0], [13, 0.0], [15, 0.0]]], [2.0, 3.31, 4.98, 5.27, 4.27, 3.46]], ['basin 20', [0.85, [[2, -1.0], [3, 5.0], [4, 0.0], [8, -1.0], [12, -1.0], [13, 12.5], [17, 12.5]]], [0.0, 5.0, 4.25, 2.22, 1.16, 13.48, 19.54]]], [['basin 16', [0.85, [[1, 30.0], [13, -1.0], [5, 30.0], [9, 30.0]]], [30.0, 45.66, 53.83, 28.1]], ['basin 18', [0.85, [[4, 12.5], [4, -1.0], [3, 2.0], [4, 12.5]]], [2.0, 14.2, 14.2, 26.7]], ['basin 21', [0.9, [[2, 12.5], [2, 30.0], [4, -1.0], [3, 0.0], [7, 0.0], [5, -1.0]]], [12.5, 42.5, 38.25, 34.43, 30.98, 25.1]], ['basin 22', [0.85, [[0, 2.0], [1, -1.0], [1, -1.0], [2, 5.0], [3, 0.0], [7, 2.0], [8, 5.0]]], [2.0, 1.7, 1.7, 6.45, 5.48, 4.86, 9.13]], ['basin 23', [0.9, [[3, 30.0], [4, 30.0], [8, -1.0], [8, -1.0], [10, 0.0]]], [30.0, 57.0, 37.4, 37.4, 30.29]], ['basin 24', [0.85, [[2, 0.0], [4, -1.0], [5, -1.0], [5, 0.0], [6, 2.0], [7, 30.0], [7, 2.0]]], [0.0, 0.0, 0.0, 0.0, 2.0, 31.7, 33.7]], ['basin 25', [0.9, [[3, 0.0], [1, -1.0], [0, -1.0], [4, 2.0]]], [0.0, 0.0, 0.0, 2.0]], ['basin 26', [0.85, [[3, 30.0], [4, 2.0], [8, 0.0], [12, 0.0], [16, 12.5]]], [30.0, 27.5, 14.36, 7.49, 16.41]]], [['basin 0', [0.85, [[1, 0.0], [1, -1.0], [2, -1.0], [3, 0.0], [4, 12.5], [5, 30.0]]], [0.0, 0.0, 0.0, 0.0, 12.5, 40.62]], ['basin 1', [0.9, [[7, 2.0], [10, -1.0], [9, 12.5], [3, 0.0], [13, 12.5], [11, -1.0]]], [0.0, 2.0, 14.12, 12.71, 11.44, 21.76]], ['basin 21', [0.9, [[2, 12.5], [2, 30.0], [4, -1.0], [3, 0.0], [7, 0.0], [5, -1.0]]], [12.5, 42.5, 38.25, 34.43, 30.98, 25.1]], ['basin 28', [0.85, [[2, 30.0], [3, 2.0], [5, 2.0], [6, 30.0], [10, 2.0], [10, 5.0], [14, 5.0]]], [30.0, 27.5, 21.87, 48.59, 27.36, 32.36, 21.89]], ['basin 29', [0.9, [[4, 5.0], [1, 30.0], [1, 5.0], [3, 30.0]]], [30.0, 35.0, 58.35, 57.52]], ['two gauges same day', [0.9, [[1, 10.0], [1, 5.0], [3, 0.0]]], [10.0, 15.0, 12.15]], ['negative glitch', [0.8, [[0, 10.0], [1, -3.0]]], [10.0, 8.0]], ['week gap', [0.9, [[0, 20.0], [7, 0.0]]], [20.0, 9.57]]]]\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-antecedent-precip-index-chronological-ordering","generated_at":"2026-09-29T14:48:27.814176+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Flash-flood guidance and soil wetness models use API as a moisture state.","repair":"Sort observations by day before decaying.","root_cause":"Observations are processed in arrival order.","sha256":"2fd4ac9627c84abf9815154c275ec3af61405b8d1d5394061b18f777365370f9","title":"Antecedent precipitation index: chronological ordering · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":36.418,"exit_code":1,"observations":[{"actual":[30.0,47.79,56.23,66.15,77.82,77.82],"check":"basin 0","expected":[0.0,0.0,0.0,0.0,12.5,40.62],"passed":false},{"actual":[12.5,15.43,17.15,31.55,40.95,62.42],"check":"basin 1","expected":[0.0,2.0,14.12,12.71,11.44,21.76],"passed":false},{"actual":[5.0,35.88,72.21,114.96,220.22,271.59,301.59],"check":"basin 2","expected":[12.5,42.5,36.12,48.86,71.53,90.8,82.18],"passed":false},{"actual":[12.5,15.89,26.22,37.37],"check":"basin 3","expected":[5.0,6.05,5.97,17.87],"passed":false},{"actual":[5.0,35.88,48.38,60.88,73.38,131.57,144.07],"check":"basin 4","expected":[30.0,42.5,60.71,73.21,85.71,98.21,88.48],"passed":false},{"actual":[12.5,19.05,31.04,68.32,70.32,116.81],"check":"basin 5","expected":[30.0,54.3,56.3,47.6,31.23,32.99],"passed":false},{"actual":[12.5,28.95,45.06,67.37,79.26,123.25],"check":"basin 6","expected":[30.0,25.5,26.68,24.27,22.54,24.26],"passed":false},{"actual":[2.0,4.22,10.21,13.35],"check":"basin 7","expected":[2.0,6.8,7.51,8.76],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"basin 0\", \"actual\": [30.0, 47.79, 56.23, 66.15, 77.82, 77.82], \"expected\": [0.0, 0.0, 0.0, 0.0, 12.5, 40.62], \"passed\": false}, {\"check\": \"basin 1\", \"actual\": [12.5, 15.43, 17.15, 31.55, 40.95, 62.42], \"expected\": [0.0, 2.0, 14.12, 12.71, 11.44, 21.76], \"passed\": false}, {\"check\": \"basin 2\", \"actual\": [5.0, 35.88, 72.21, 114.96, 220.22, 271.59, 301.59], \"expected\": [12.5, 42.5, 36.12, 48.86, 71.53, 90.8, 82.18], \"passed\": false}, {\"check\": \"basin 3\", \"actual\": [12.5, 15.89, 26.22, 37.37], \"expected\": [5.0, 6.05, 5.97, 17.87], \"passed\": false}, {\"check\": \"basin 4\", \"actual\": [5.0, 35.88, 48.38, 60.88, 73.38, 131.57, 144.07], \"expected\": [30.0, 42.5, 60.71, 73.21, 85.71, 98.21, 88.48], \"passed\": false}, {\"check\": \"basin 5\", \"actual\": [12.5, 19.05, 31.04, 68.32, 70.32, 116.81], \"expected\": [30.0, 54.3, 56.3, 47.6, 31.23, 32.99], \"passed\": false}, {\"check\": \"basin 6\", \"actual\": [12.5, 28.95, 45.06, 67.37, 79.26, 123.25], \"expected\": [30.0, 25.5, 26.68, 24.27, 22.54, 24.26], \"passed\": false}, {\"check\": \"basin 7\", \"actual\": [2.0, 4.22, 10.21, 13.35], \"expected\": [2.0, 6.8, 7.51, 8.76], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":37.404,"exit_code":1,"observations":[{"actual":[0.0,0.0,0.0,0.0,12.5,40.62],"check":"basin 0","expected":[0.0,0.0,0.0,0.0,12.5,40.62],"passed":true},{"actual":[2.0,1.46,14.12,26.57,21.76,26.87],"check":"basin 1","expected":[0.0,2.0,14.12,12.71,11.44,21.76],"passed":false},{"actual":[12.5,42.5,36.12,48.86,71.53,90.8,82.18],"check":"basin 2","expected":[12.5,42.5,36.12,48.86,71.53,90.8,82.18],"passed":true},{"actual":[5.0,4.66,16.69,30.27],"check":"basin 3","expected":[5.0,6.05,5.97,17.87],"passed":false},{"actual":[30.0,42.5,60.71,73.21,85.71,98.21,88.48],"check":"basin 4","expected":[30.0,42.5,60.71,73.21,85.71,98.21,88.48],"passed":true},{"actual":[2.0,32.47,34.47,24.52,37.37,116.81],"check":"basin 5","expected":[30.0,54.3,56.3,47.6,31.23,32.99],"passed":false},{"actual":[0.0,5.0,11.92,11.22,59.76,24.26],"check":"basin 6","expected":[30.0,25.5,26.68,24.27,22.54,24.26],"passed":false},{"actual":[2.0,4.22,7.79,12.01],"check":"basin 7","expected":[2.0,6.8,7.51,8.76],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"basin 0\", \"actual\": [0.0, 0.0, 0.0, 0.0, 12.5, 40.62], \"expected\": [0.0, 0.0, 0.0, 0.0, 12.5, 40.62], \"passed\": true}, {\"check\": \"basin 1\", \"actual\": [2.0, 1.46, 14.12, 26.57, 21.76, 26.87], \"expected\": [0.0, 2.0, 14.12, 12.71, 11.44, 21.76], \"passed\": false}, {\"check\": \"basin 2\", \"actual\": [12.5, 42.5, 36.12, 48.86, 71.53, 90.8, 82.18], \"expected\": [12.5, 42.5, 36.12, 48.86, 71.53, 90.8, 82.18], \"passed\": true}, {\"check\": \"basin 3\", \"actual\": [5.0, 4.66, 16.69, 30.27], \"expected\": [5.0, 6.05, 5.97, 17.87], \"passed\": false}, {\"check\": \"basin 4\", \"actual\": [30.0, 42.5, 60.71, 73.21, 85.71, 98.21, 88.48], \"expected\": [30.0, 42.5, 60.71, 73.21, 85.71, 98.21, 88.48], \"passed\": true}, {\"check\": \"basin 5\", \"actual\": [2.0, 32.47, 34.47, 24.52, 37.37, 116.81], \"expected\": [30.0, 54.3, 56.3, 47.6, 31.23, 32.99], \"passed\": false}, {\"check\": \"basin 6\", \"actual\": [0.0, 5.0, 11.92, 11.22, 59.76, 24.26], \"expected\": [30.0, 25.5, 26.68, 24.27, 22.54, 24.26], \"passed\": false}, {\"check\": \"basin 7\", \"actual\": [2.0, 4.22, 7.79, 12.01], \"expected\": [2.0, 6.8, 7.51, 8.76], \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":39.926,"exit_code":0,"observations":[{"actual":[0.0,0.0,0.0,0.0,12.5,40.62],"check":"basin 0","expected":[0.0,0.0,0.0,0.0,12.5,40.62],"passed":true},{"actual":[0.0,2.0,14.12,12.71,11.44,21.76],"check":"basin 1","expected":[0.0,2.0,14.12,12.71,11.44,21.76],"passed":true},{"actual":[12.5,42.5,36.12,48.86,71.53,90.8,82.18],"check":"basin 2","expected":[12.5,42.5,36.12,48.86,71.53,90.8,82.18],"passed":true},{"actual":[5.0,6.05,5.97,17.87],"check":"basin 3","expected":[5.0,6.05,5.97,17.87],"passed":true},{"actual":[30.0,42.5,60.71,73.21,85.71,98.21,88.48],"check":"basin 4","expected":[30.0,42.5,60.71,73.21,85.71,98.21,88.48],"passed":true},{"actual":[30.0,54.3,56.3,47.6,31.23,32.99],"check":"basin 5","expected":[30.0,54.3,56.3,47.6,31.23,32.99],"passed":true},{"actual":[30.0,25.5,26.68,24.27,22.54,24.26],"check":"basin 6","expected":[30.0,25.5,26.68,24.27,22.54,24.26],"passed":true},{"actual":[2.0,6.8,7.51,8.76],"check":"basin 7","expected":[2.0,6.8,7.51,8.76],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"basin 0\", \"actual\": [0.0, 0.0, 0.0, 0.0, 12.5, 40.62], \"expected\": [0.0, 0.0, 0.0, 0.0, 12.5, 40.62], \"passed\": true}, {\"check\": \"basin 1\", \"actual\": [0.0, 2.0, 14.12, 12.71, 11.44, 21.76], \"expected\": [0.0, 2.0, 14.12, 12.71, 11.44, 21.76], \"passed\": true}, {\"check\": \"basin 2\", \"actual\": [12.5, 42.5, 36.12, 48.86, 71.53, 90.8, 82.18], \"expected\": [12.5, 42.5, 36.12, 48.86, 71.53, 90.8, 82.18], \"passed\": true}, {\"check\": \"basin 3\", \"actual\": [5.0, 6.05, 5.97, 17.87], \"expected\": [5.0, 6.05, 5.97, 17.87], \"passed\": true}, {\"check\": \"basin 4\", \"actual\": [30.0, 42.5, 60.71, 73.21, 85.71, 98.21, 88.48], \"expected\": [30.0, 42.5, 60.71, 73.21, 85.71, 98.21, 88.48], \"passed\": true}, {\"check\": \"basin 5\", \"actual\": [30.0, 54.3, 56.3, 47.6, 31.23, 32.99], \"expected\": [30.0, 54.3, 56.3, 47.6, 31.23, 32.99], \"passed\": true}, {\"check\": \"basin 6\", \"actual\": [30.0, 25.5, 26.68, 24.27, 22.54, 24.26], \"expected\": [30.0, 25.5, 26.68, 24.27, 22.54, 24.26], \"passed\": true}, {\"check\": \"basin 7\", \"actual\": [2.0, 6.8, 7.51, 8.76], \"expected\": [2.0, 6.8, 7.51, 8.76], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}