{"abstract":"Propagation across 29 February drifts by a whole day of motion.","category":"Orbital propagation","checks":7,"contract":"Input [[y1,d1],[y2,d2],M0,n,ndot2]: epochs as calendar year and fractional 1-based day of year; M0 degrees at epoch 1; n revolutions per day; ndot2 is the published first derivative divided by two (rev/day^2). dt = epoch2-epoch1 in days (Gregorian calendar). M = (M0 + 360*(n*dt + ndot2*dt^2)) mod 360. Return [dt rounded 6, M rounded 6].","evaluation_group":"w2-orbital_propagation-epoch_mean_anomaly","failed_approach":"Adding year//4 leap days breaks at non-leap century years such as 2100.","family":"w2-orbital_propagation-epoch_mean_anomaly-leap-year-calendar","id":"FA-69391","implementations":{"attempt":{"sha256":"8cceb0e85904f5634395200f6e4cb8564675eea39900a9bd7dc6233ec96842f3","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nimport datetime\nN = 1\nobservations = []\ndef solve(x):\n    (y1,d1),(y2,d2),m0,n,nd2=x\n    def od(y,d): return y*365+(y-1)//4+d-1\n    dt=od(y2,d2)-od(y1,d1)\n    m=(m0+360.0*(n*dt+nd2*dt*dt))%360.0\n    return [round(dt,6),round(m,6)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('mean anomaly propagation between epochs [[2024, 360.0], [2025, 3.0], 20.0, 1.1, 0.0]', [[2024, 360.0], [2025, 3.0], 20.0, 1.1, 0.0], [9.0, 344.0]), ('mean anomaly propagation between epochs [[2100, 360.0], [2101, 2.0], 20.0, 0.9, 0.0]', [[2100, 360.0], [2101, 2.0], 20.0, 0.9, 0.0], [7.0, 128.0]), ('mean anomaly propagation between epochs [[2026, 10.25], [2026, 12.75], 30.0, 15.5, 0.0]', [[2026, 10.25], [2026, 12.75], 30.0, 15.5, 0.0], [2.5, 300.0]), ('mean anomaly propagation between epochs [[2023, 360.5], [2024, 2.5], 100.0, 1.00273, 0.0]', [[2023, 360.5], [2024, 2.5], 100.0, 1.00273, 0.0], [7.0, 106.8796]), ('mean anomaly propagation between epochs [[2024, 59.0], [2024, 61.0], 0.0, 2.0, 0.0]', [[2024, 59.0], [2024, 61.0], 0.0, 2.0, 0.0], [2.0, 0.0]), ('mean anomaly propagation between epochs [[2099, 365.0], [2100, 60.0], 10.0, 0.5, 0.0]', [[2099, 365.0], [2100, 60.0], 10.0, 0.5, 0.0], [60.0, 10.0]), ('mean anomaly propagation between epochs [[2100, 59.0], [2100, 61.0], 10.0, 0.25, 0.0]', [[2100, 59.0], [2100, 61.0], 10.0, 0.25, 0.0], [2.0, 190.0])], [('mean anomaly propagation between epochs [[2024, 360.0], [2025, 3.0], 20.0, 1.1, 0.0]', [[2024, 360.0], [2025, 3.0], 20.0, 1.1, 0.0], [9.0, 344.0]), ('mean anomaly propagation between epochs [[2100, 360.0], [2101, 2.0], 20.0, 0.9, 0.0]', [[2100, 360.0], [2101, 2.0], 20.0, 0.9, 0.0], [7.0, 128.0]), ('mean anomaly propagation between epochs [[2099, 365.0], [2100, 60.0], 10.0, 0.5, 0.0]', [[2099, 365.0], [2100, 60.0], 10.0, 0.5, 0.0], [60.0, 10.0]), ('mean anomaly propagation between epochs [[2100, 59.0], [2100, 61.0], 10.0, 0.25, 0.0]', [[2100, 59.0], [2100, 61.0], 10.0, 0.25, 0.0], [2.0, 190.0]), ('mean anomaly propagation between epochs [[2026, 100.0], [2026, 90.5], 45.0, 13.2, 0.0]', [[2026, 100.0], [2026, 90.5], 45.0, 13.2, 0.0], [-9.5, 261.0]), ('mean anomaly propagation between epochs [[2026, 1.0], [2026, 3.0], 350.0, 14.25, 0.0001]', [[2026, 1.0], [2026, 3.0], 350.0, 14.25, 0.0001], [2.0, 170.144]), ('mean anomaly propagation between epochs [[2025, 200.0], [2025, 210.0], 0.0, 15.0, -5e-05]', [[2025, 200.0], [2025, 210.0], 0.0, 15.0, -5e-05], [10.0, 358.2])], [('mean anomaly propagation between epochs [[2024, 360.0], [2025, 3.0], 20.0, 1.1, 0.0]', [[2024, 360.0], [2025, 3.0], 20.0, 1.1, 0.0], [9.0, 344.0]), ('mean anomaly propagation between epochs [[2100, 360.0], [2101, 2.0], 20.0, 0.9, 0.0]', [[2100, 360.0], [2101, 2.0], 20.0, 0.9, 0.0], [7.0, 128.0]), ('mean anomaly propagation between epochs [[2026, 1.0], [2026, 3.0], 350.0, 14.25, 0.0001]', [[2026, 1.0], [2026, 3.0], 350.0, 14.25, 0.0001], [2.0, 170.144]), ('mean anomaly propagation between epochs [[2025, 200.0], [2025, 210.0], 0.0, 15.0, -5e-05]', [[2025, 200.0], [2025, 210.0], 0.0, 15.0, -5e-05], [10.0, 358.2]), ('mean anomaly propagation between epochs [[2026, 5.0], [2026, 5.0], 12.5, 15.0, 0.0]', [[2026, 5.0], [2026, 5.0], 12.5, 15.0, 0.0], [0.0, 12.5]), ('mean anomaly propagation between epochs [[2026, 50.3], [2026, 51.1], 90.0, 11.1, 0.0]', [[2026, 50.3], [2026, 51.1], 90.0, 11.1, 0.0], [0.8, 46.8]), ('mean anomaly propagation between epochs [[2026, 50.7], [2026, 50.2], 270.0, 16.0, 0.0]', [[2026, 50.7], [2026, 50.2], 270.0, 16.0, 0.0], [-0.5, 270.0])], [('mean anomaly propagation between epochs [[2024, 360.0], [2025, 3.0], 20.0, 1.1, 0.0]', [[2024, 360.0], [2025, 3.0], 20.0, 1.1, 0.0], [9.0, 344.0]), ('mean anomaly propagation between epochs [[2100, 360.0], [2101, 2.0], 20.0, 0.9, 0.0]', [[2100, 360.0], [2101, 2.0], 20.0, 0.9, 0.0], [7.0, 128.0]), ('mean anomaly propagation between epochs [[2026, 50.3], [2026, 51.1], 90.0, 11.1, 0.0]', [[2026, 50.3], [2026, 51.1], 90.0, 11.1, 0.0], [0.8, 46.8]), ('mean anomaly propagation between epochs [[2026, 50.7], [2026, 50.2], 270.0, 16.0, 0.0]', [[2026, 50.7], [2026, 50.2], 270.0, 16.0, 0.0], [-0.5, 270.0]), ('mean anomaly propagation between epochs [[2000, 59.5], [2000, 61.5], 5.0, 1.0, 2e-05]', [[2000, 59.5], [2000, 61.5], 5.0, 1.0, 2e-05], [2.0, 5.0288]), ('mean anomaly propagation between epochs [[2026, 100.0], [2026, 99.5], 300.0, 0.1, 0.0]', [[2026, 100.0], [2026, 99.5], 300.0, 0.1, 0.0], [-0.5, 282.0]), ('mean anomaly propagation between epochs [[2027, 10.0], [2027, 9.0], 350.0, 0.05, 0.0]', [[2027, 10.0], [2027, 9.0], 350.0, 0.05, 0.0], [-1.0, 332.0])], [('mean anomaly propagation between epochs [[2024, 360.0], [2025, 3.0], 20.0, 1.1, 0.0]', [[2024, 360.0], [2025, 3.0], 20.0, 1.1, 0.0], [9.0, 344.0]), ('mean anomaly propagation between epochs [[2100, 360.0], [2101, 2.0], 20.0, 0.9, 0.0]', [[2100, 360.0], [2101, 2.0], 20.0, 0.9, 0.0], [7.0, 128.0]), ('mean anomaly propagation between epochs [[2026, 100.0], [2026, 99.5], 300.0, 0.1, 0.0]', [[2026, 100.0], [2026, 99.5], 300.0, 0.1, 0.0], [-0.5, 282.0]), ('mean anomaly propagation between epochs [[2027, 10.0], [2027, 9.0], 350.0, 0.05, 0.0]', [[2027, 10.0], [2027, 9.0], 350.0, 0.05, 0.0], [-1.0, 332.0]), ('mean anomaly propagation between epochs [[2026, 10.25], [2026, 12.75], 30.0, 15.5, 0.0]', [[2026, 10.25], [2026, 12.75], 30.0, 15.5, 0.0], [2.5, 300.0]), ('mean anomaly propagation between epochs [[2023, 360.5], [2024, 2.5], 100.0, 1.00273, 0.0]', [[2023, 360.5], [2024, 2.5], 100.0, 1.00273, 0.0], [7.0, 106.8796]), ('mean anomaly propagation between epochs [[2024, 59.0], [2024, 61.0], 0.0, 2.0, 0.0]', [[2024, 59.0], [2024, 61.0], 0.0, 2.0, 0.0], [2.0, 0.0])]]\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":"4e58aa7cdbfaf5504cc168be2696f3dad015bc0b01f1c4c21ea280912dbfe9b4","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nimport datetime\nN = 1\nobservations = []\ndef solve(x):\n    (y1,d1),(y2,d2),m0,n,nd2=x\n    def od(y,d): return y*365+d-1\n    dt=od(y2,d2)-od(y1,d1)\n    m=(m0+360.0*(n*dt+nd2*dt*dt))%360.0\n    return [round(dt,6),round(m,6)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('mean anomaly propagation between epochs [[2024, 360.0], [2025, 3.0], 20.0, 1.1, 0.0]', [[2024, 360.0], [2025, 3.0], 20.0, 1.1, 0.0], [9.0, 344.0]), ('mean anomaly propagation between epochs [[2100, 360.0], [2101, 2.0], 20.0, 0.9, 0.0]', [[2100, 360.0], [2101, 2.0], 20.0, 0.9, 0.0], [7.0, 128.0]), ('mean anomaly propagation between epochs [[2026, 10.25], [2026, 12.75], 30.0, 15.5, 0.0]', [[2026, 10.25], [2026, 12.75], 30.0, 15.5, 0.0], [2.5, 300.0]), ('mean anomaly propagation between epochs [[2023, 360.5], [2024, 2.5], 100.0, 1.00273, 0.0]', [[2023, 360.5], [2024, 2.5], 100.0, 1.00273, 0.0], [7.0, 106.8796]), ('mean anomaly propagation between epochs [[2024, 59.0], [2024, 61.0], 0.0, 2.0, 0.0]', [[2024, 59.0], [2024, 61.0], 0.0, 2.0, 0.0], [2.0, 0.0]), ('mean anomaly propagation between epochs [[2099, 365.0], [2100, 60.0], 10.0, 0.5, 0.0]', [[2099, 365.0], [2100, 60.0], 10.0, 0.5, 0.0], [60.0, 10.0]), ('mean anomaly propagation between epochs [[2100, 59.0], [2100, 61.0], 10.0, 0.25, 0.0]', [[2100, 59.0], [2100, 61.0], 10.0, 0.25, 0.0], [2.0, 190.0])], [('mean anomaly propagation between epochs [[2024, 360.0], [2025, 3.0], 20.0, 1.1, 0.0]', [[2024, 360.0], [2025, 3.0], 20.0, 1.1, 0.0], [9.0, 344.0]), ('mean anomaly propagation between epochs [[2100, 360.0], [2101, 2.0], 20.0, 0.9, 0.0]', [[2100, 360.0], [2101, 2.0], 20.0, 0.9, 0.0], [7.0, 128.0]), ('mean anomaly propagation between epochs [[2099, 365.0], [2100, 60.0], 10.0, 0.5, 0.0]', [[2099, 365.0], [2100, 60.0], 10.0, 0.5, 0.0], [60.0, 10.0]), ('mean anomaly propagation between epochs [[2100, 59.0], [2100, 61.0], 10.0, 0.25, 0.0]', [[2100, 59.0], [2100, 61.0], 10.0, 0.25, 0.0], [2.0, 190.0]), ('mean anomaly propagation between epochs [[2026, 100.0], [2026, 90.5], 45.0, 13.2, 0.0]', [[2026, 100.0], [2026, 90.5], 45.0, 13.2, 0.0], [-9.5, 261.0]), ('mean anomaly propagation between epochs [[2026, 1.0], [2026, 3.0], 350.0, 14.25, 0.0001]', [[2026, 1.0], [2026, 3.0], 350.0, 14.25, 0.0001], [2.0, 170.144]), ('mean anomaly propagation between epochs [[2025, 200.0], [2025, 210.0], 0.0, 15.0, -5e-05]', [[2025, 200.0], [2025, 210.0], 0.0, 15.0, -5e-05], [10.0, 358.2])], [('mean anomaly propagation between epochs [[2024, 360.0], [2025, 3.0], 20.0, 1.1, 0.0]', [[2024, 360.0], [2025, 3.0], 20.0, 1.1, 0.0], [9.0, 344.0]), ('mean anomaly propagation between epochs [[2100, 360.0], [2101, 2.0], 20.0, 0.9, 0.0]', [[2100, 360.0], [2101, 2.0], 20.0, 0.9, 0.0], [7.0, 128.0]), ('mean anomaly propagation between epochs [[2026, 1.0], [2026, 3.0], 350.0, 14.25, 0.0001]', [[2026, 1.0], [2026, 3.0], 350.0, 14.25, 0.0001], [2.0, 170.144]), ('mean anomaly propagation between epochs [[2025, 200.0], [2025, 210.0], 0.0, 15.0, -5e-05]', [[2025, 200.0], [2025, 210.0], 0.0, 15.0, -5e-05], [10.0, 358.2]), ('mean anomaly propagation between epochs [[2026, 5.0], [2026, 5.0], 12.5, 15.0, 0.0]', [[2026, 5.0], [2026, 5.0], 12.5, 15.0, 0.0], [0.0, 12.5]), ('mean anomaly propagation between epochs [[2026, 50.3], [2026, 51.1], 90.0, 11.1, 0.0]', [[2026, 50.3], [2026, 51.1], 90.0, 11.1, 0.0], [0.8, 46.8]), ('mean anomaly propagation between epochs [[2026, 50.7], [2026, 50.2], 270.0, 16.0, 0.0]', [[2026, 50.7], [2026, 50.2], 270.0, 16.0, 0.0], [-0.5, 270.0])], [('mean anomaly propagation between epochs [[2024, 360.0], [2025, 3.0], 20.0, 1.1, 0.0]', [[2024, 360.0], [2025, 3.0], 20.0, 1.1, 0.0], [9.0, 344.0]), ('mean anomaly propagation between epochs [[2100, 360.0], [2101, 2.0], 20.0, 0.9, 0.0]', [[2100, 360.0], [2101, 2.0], 20.0, 0.9, 0.0], [7.0, 128.0]), ('mean anomaly propagation between epochs [[2026, 50.3], [2026, 51.1], 90.0, 11.1, 0.0]', [[2026, 50.3], [2026, 51.1], 90.0, 11.1, 0.0], [0.8, 46.8]), ('mean anomaly propagation between epochs [[2026, 50.7], [2026, 50.2], 270.0, 16.0, 0.0]', [[2026, 50.7], [2026, 50.2], 270.0, 16.0, 0.0], [-0.5, 270.0]), ('mean anomaly propagation between epochs [[2000, 59.5], [2000, 61.5], 5.0, 1.0, 2e-05]', [[2000, 59.5], [2000, 61.5], 5.0, 1.0, 2e-05], [2.0, 5.0288]), ('mean anomaly propagation between epochs [[2026, 100.0], [2026, 99.5], 300.0, 0.1, 0.0]', [[2026, 100.0], [2026, 99.5], 300.0, 0.1, 0.0], [-0.5, 282.0]), ('mean anomaly propagation between epochs [[2027, 10.0], [2027, 9.0], 350.0, 0.05, 0.0]', [[2027, 10.0], [2027, 9.0], 350.0, 0.05, 0.0], [-1.0, 332.0])], [('mean anomaly propagation between epochs [[2024, 360.0], [2025, 3.0], 20.0, 1.1, 0.0]', [[2024, 360.0], [2025, 3.0], 20.0, 1.1, 0.0], [9.0, 344.0]), ('mean anomaly propagation between epochs [[2100, 360.0], [2101, 2.0], 20.0, 0.9, 0.0]', [[2100, 360.0], [2101, 2.0], 20.0, 0.9, 0.0], [7.0, 128.0]), ('mean anomaly propagation between epochs [[2026, 100.0], [2026, 99.5], 300.0, 0.1, 0.0]', [[2026, 100.0], [2026, 99.5], 300.0, 0.1, 0.0], [-0.5, 282.0]), ('mean anomaly propagation between epochs [[2027, 10.0], [2027, 9.0], 350.0, 0.05, 0.0]', [[2027, 10.0], [2027, 9.0], 350.0, 0.05, 0.0], [-1.0, 332.0]), ('mean anomaly propagation between epochs [[2026, 10.25], [2026, 12.75], 30.0, 15.5, 0.0]', [[2026, 10.25], [2026, 12.75], 30.0, 15.5, 0.0], [2.5, 300.0]), ('mean anomaly propagation between epochs [[2023, 360.5], [2024, 2.5], 100.0, 1.00273, 0.0]', [[2023, 360.5], [2024, 2.5], 100.0, 1.00273, 0.0], [7.0, 106.8796]), ('mean anomaly propagation between epochs [[2024, 59.0], [2024, 61.0], 0.0, 2.0, 0.0]', [[2024, 59.0], [2024, 61.0], 0.0, 2.0, 0.0], [2.0, 0.0])]]\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":"f73f9355028914cd72d6181f0ab756e0cd264b7dc298629ed2251757aa4e07fe","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nimport datetime\nN = 1\nobservations = []\ndef solve(x):\n    (y1,d1),(y2,d2),m0,n,nd2=x\n    def od(y,d): return datetime.date(y,1,1).toordinal()+d-1\n    dt=od(y2,d2)-od(y1,d1)\n    m=(m0+360.0*(n*dt+nd2*dt*dt))%360.0\n    return [round(dt,6),round(m,6)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('mean anomaly propagation between epochs [[2024, 360.0], [2025, 3.0], 20.0, 1.1, 0.0]', [[2024, 360.0], [2025, 3.0], 20.0, 1.1, 0.0], [9.0, 344.0]), ('mean anomaly propagation between epochs [[2100, 360.0], [2101, 2.0], 20.0, 0.9, 0.0]', [[2100, 360.0], [2101, 2.0], 20.0, 0.9, 0.0], [7.0, 128.0]), ('mean anomaly propagation between epochs [[2026, 10.25], [2026, 12.75], 30.0, 15.5, 0.0]', [[2026, 10.25], [2026, 12.75], 30.0, 15.5, 0.0], [2.5, 300.0]), ('mean anomaly propagation between epochs [[2023, 360.5], [2024, 2.5], 100.0, 1.00273, 0.0]', [[2023, 360.5], [2024, 2.5], 100.0, 1.00273, 0.0], [7.0, 106.8796]), ('mean anomaly propagation between epochs [[2024, 59.0], [2024, 61.0], 0.0, 2.0, 0.0]', [[2024, 59.0], [2024, 61.0], 0.0, 2.0, 0.0], [2.0, 0.0]), ('mean anomaly propagation between epochs [[2099, 365.0], [2100, 60.0], 10.0, 0.5, 0.0]', [[2099, 365.0], [2100, 60.0], 10.0, 0.5, 0.0], [60.0, 10.0]), ('mean anomaly propagation between epochs [[2100, 59.0], [2100, 61.0], 10.0, 0.25, 0.0]', [[2100, 59.0], [2100, 61.0], 10.0, 0.25, 0.0], [2.0, 190.0])], [('mean anomaly propagation between epochs [[2024, 360.0], [2025, 3.0], 20.0, 1.1, 0.0]', [[2024, 360.0], [2025, 3.0], 20.0, 1.1, 0.0], [9.0, 344.0]), ('mean anomaly propagation between epochs [[2100, 360.0], [2101, 2.0], 20.0, 0.9, 0.0]', [[2100, 360.0], [2101, 2.0], 20.0, 0.9, 0.0], [7.0, 128.0]), ('mean anomaly propagation between epochs [[2099, 365.0], [2100, 60.0], 10.0, 0.5, 0.0]', [[2099, 365.0], [2100, 60.0], 10.0, 0.5, 0.0], [60.0, 10.0]), ('mean anomaly propagation between epochs [[2100, 59.0], [2100, 61.0], 10.0, 0.25, 0.0]', [[2100, 59.0], [2100, 61.0], 10.0, 0.25, 0.0], [2.0, 190.0]), ('mean anomaly propagation between epochs [[2026, 100.0], [2026, 90.5], 45.0, 13.2, 0.0]', [[2026, 100.0], [2026, 90.5], 45.0, 13.2, 0.0], [-9.5, 261.0]), ('mean anomaly propagation between epochs [[2026, 1.0], [2026, 3.0], 350.0, 14.25, 0.0001]', [[2026, 1.0], [2026, 3.0], 350.0, 14.25, 0.0001], [2.0, 170.144]), ('mean anomaly propagation between epochs [[2025, 200.0], [2025, 210.0], 0.0, 15.0, -5e-05]', [[2025, 200.0], [2025, 210.0], 0.0, 15.0, -5e-05], [10.0, 358.2])], [('mean anomaly propagation between epochs [[2024, 360.0], [2025, 3.0], 20.0, 1.1, 0.0]', [[2024, 360.0], [2025, 3.0], 20.0, 1.1, 0.0], [9.0, 344.0]), ('mean anomaly propagation between epochs [[2100, 360.0], [2101, 2.0], 20.0, 0.9, 0.0]', [[2100, 360.0], [2101, 2.0], 20.0, 0.9, 0.0], [7.0, 128.0]), ('mean anomaly propagation between epochs [[2026, 1.0], [2026, 3.0], 350.0, 14.25, 0.0001]', [[2026, 1.0], [2026, 3.0], 350.0, 14.25, 0.0001], [2.0, 170.144]), ('mean anomaly propagation between epochs [[2025, 200.0], [2025, 210.0], 0.0, 15.0, -5e-05]', [[2025, 200.0], [2025, 210.0], 0.0, 15.0, -5e-05], [10.0, 358.2]), ('mean anomaly propagation between epochs [[2026, 5.0], [2026, 5.0], 12.5, 15.0, 0.0]', [[2026, 5.0], [2026, 5.0], 12.5, 15.0, 0.0], [0.0, 12.5]), ('mean anomaly propagation between epochs [[2026, 50.3], [2026, 51.1], 90.0, 11.1, 0.0]', [[2026, 50.3], [2026, 51.1], 90.0, 11.1, 0.0], [0.8, 46.8]), ('mean anomaly propagation between epochs [[2026, 50.7], [2026, 50.2], 270.0, 16.0, 0.0]', [[2026, 50.7], [2026, 50.2], 270.0, 16.0, 0.0], [-0.5, 270.0])], [('mean anomaly propagation between epochs [[2024, 360.0], [2025, 3.0], 20.0, 1.1, 0.0]', [[2024, 360.0], [2025, 3.0], 20.0, 1.1, 0.0], [9.0, 344.0]), ('mean anomaly propagation between epochs [[2100, 360.0], [2101, 2.0], 20.0, 0.9, 0.0]', [[2100, 360.0], [2101, 2.0], 20.0, 0.9, 0.0], [7.0, 128.0]), ('mean anomaly propagation between epochs [[2026, 50.3], [2026, 51.1], 90.0, 11.1, 0.0]', [[2026, 50.3], [2026, 51.1], 90.0, 11.1, 0.0], [0.8, 46.8]), ('mean anomaly propagation between epochs [[2026, 50.7], [2026, 50.2], 270.0, 16.0, 0.0]', [[2026, 50.7], [2026, 50.2], 270.0, 16.0, 0.0], [-0.5, 270.0]), ('mean anomaly propagation between epochs [[2000, 59.5], [2000, 61.5], 5.0, 1.0, 2e-05]', [[2000, 59.5], [2000, 61.5], 5.0, 1.0, 2e-05], [2.0, 5.0288]), ('mean anomaly propagation between epochs [[2026, 100.0], [2026, 99.5], 300.0, 0.1, 0.0]', [[2026, 100.0], [2026, 99.5], 300.0, 0.1, 0.0], [-0.5, 282.0]), ('mean anomaly propagation between epochs [[2027, 10.0], [2027, 9.0], 350.0, 0.05, 0.0]', [[2027, 10.0], [2027, 9.0], 350.0, 0.05, 0.0], [-1.0, 332.0])], [('mean anomaly propagation between epochs [[2024, 360.0], [2025, 3.0], 20.0, 1.1, 0.0]', [[2024, 360.0], [2025, 3.0], 20.0, 1.1, 0.0], [9.0, 344.0]), ('mean anomaly propagation between epochs [[2100, 360.0], [2101, 2.0], 20.0, 0.9, 0.0]', [[2100, 360.0], [2101, 2.0], 20.0, 0.9, 0.0], [7.0, 128.0]), ('mean anomaly propagation between epochs [[2026, 100.0], [2026, 99.5], 300.0, 0.1, 0.0]', [[2026, 100.0], [2026, 99.5], 300.0, 0.1, 0.0], [-0.5, 282.0]), ('mean anomaly propagation between epochs [[2027, 10.0], [2027, 9.0], 350.0, 0.05, 0.0]', [[2027, 10.0], [2027, 9.0], 350.0, 0.05, 0.0], [-1.0, 332.0]), ('mean anomaly propagation between epochs [[2026, 10.25], [2026, 12.75], 30.0, 15.5, 0.0]', [[2026, 10.25], [2026, 12.75], 30.0, 15.5, 0.0], [2.5, 300.0]), ('mean anomaly propagation between epochs [[2023, 360.5], [2024, 2.5], 100.0, 1.00273, 0.0]', [[2023, 360.5], [2024, 2.5], 100.0, 1.00273, 0.0], [7.0, 106.8796]), ('mean anomaly propagation between epochs [[2024, 59.0], [2024, 61.0], 0.0, 2.0, 0.0]', [[2024, 59.0], [2024, 61.0], 0.0, 2.0, 0.0], [2.0, 0.0])]]\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":"A deterministic toy two-body model with stipulated constants and conventions; not flight dynamics software or a validated SGP4 implementation. 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-orbital_propagation-epoch_mean_anomaly-leap-year-calendar","generated_at":"2026-09-29T14:48:10.914421+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Orbit determination and mission planning chain many small conversions; one wrong branch or unit silently moves a spacecraft by kilometres.","repair":"Count days with the Gregorian calendar.","root_cause":"Days are counted as 365*year + day, ignoring leap years.","sha256":"33f9fdfe3d42e5e94d48cccdc4c37f8f5bcc04e8cb833b51f566f27ea2cd3af3","title":"Mean anomaly propagation between epochs: Epoch difference ignores leap days · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":40.379,"exit_code":1,"observations":[{"actual":[9.0,344.0],"check":"mean anomaly propagation between epochs [[2024, 360.0], [2025, 3.0], 20.0, 1.1, 0.0]","expected":[9.0,344.0],"passed":true},{"actual":[8.0,92.0],"check":"mean anomaly propagation between epochs [[2100, 360.0], [2101, 2.0], 20.0, 0.9, 0.0]","expected":[7.0,128.0],"passed":false},{"actual":[2.5,300.0],"check":"mean anomaly propagation between epochs [[2026, 10.25], [2026, 12.75], 30.0, 15.5, 0.0]","expected":[2.5,300.0],"passed":true},{"actual":[7.0,106.8796],"check":"mean anomaly propagation between epochs [[2023, 360.5], [2024, 2.5], 100.0, 1.00273, 0.0]","expected":[7.0,106.8796],"passed":true},{"actual":[2.0,0.0],"check":"mean anomaly propagation between epochs [[2024, 59.0], [2024, 61.0], 0.0, 2.0, 0.0]","expected":[2.0,0.0],"passed":true},{"actual":[60.0,10.0],"check":"mean anomaly propagation between epochs [[2099, 365.0], [2100, 60.0], 10.0, 0.5, 0.0]","expected":[60.0,10.0],"passed":true},{"actual":[2.0,190.0],"check":"mean anomaly propagation between epochs [[2100, 59.0], [2100, 61.0], 10.0, 0.25, 0.0]","expected":[2.0,190.0],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"mean anomaly propagation between epochs [[2024, 360.0], [2025, 3.0], 20.0, 1.1, 0.0]\", \"actual\": [9.0, 344.0], \"expected\": [9.0, 344.0], \"passed\": true}, {\"check\": \"mean anomaly propagation between epochs [[2100, 360.0], [2101, 2.0], 20.0, 0.9, 0.0]\", \"actual\": [8.0, 92.0], \"expected\": [7.0, 128.0], \"passed\": false}, {\"check\": \"mean anomaly propagation between epochs [[2026, 10.25], [2026, 12.75], 30.0, 15.5, 0.0]\", \"actual\": [2.5, 300.0], \"expected\": [2.5, 300.0], \"passed\": true}, {\"check\": \"mean anomaly propagation between epochs [[2023, 360.5], [2024, 2.5], 100.0, 1.00273, 0.0]\", \"actual\": [7.0, 106.8796], \"expected\": [7.0, 106.8796], \"passed\": true}, {\"check\": \"mean anomaly propagation between epochs [[2024, 59.0], [2024, 61.0], 0.0, 2.0, 0.0]\", \"actual\": [2.0, 0.0], \"expected\": [2.0, 0.0], \"passed\": true}, {\"check\": \"mean anomaly propagation between epochs [[2099, 365.0], [2100, 60.0], 10.0, 0.5, 0.0]\", \"actual\": [60.0, 10.0], \"expected\": [60.0, 10.0], \"passed\": true}, {\"check\": \"mean anomaly propagation between epochs [[2100, 59.0], [2100, 61.0], 10.0, 0.25, 0.0]\", \"actual\": [2.0, 190.0], \"expected\": [2.0, 190.0], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":38.227,"exit_code":1,"observations":[{"actual":[8.0,308.0],"check":"mean anomaly propagation between epochs [[2024, 360.0], [2025, 3.0], 20.0, 1.1, 0.0]","expected":[9.0,344.0],"passed":false},{"actual":[7.0,128.0],"check":"mean anomaly propagation between epochs [[2100, 360.0], [2101, 2.0], 20.0, 0.9, 0.0]","expected":[7.0,128.0],"passed":true},{"actual":[2.5,300.0],"check":"mean anomaly propagation between epochs [[2026, 10.25], [2026, 12.75], 30.0, 15.5, 0.0]","expected":[2.5,300.0],"passed":true},{"actual":[7.0,106.8796],"check":"mean anomaly propagation between epochs [[2023, 360.5], [2024, 2.5], 100.0, 1.00273, 0.0]","expected":[7.0,106.8796],"passed":true},{"actual":[2.0,0.0],"check":"mean anomaly propagation between epochs [[2024, 59.0], [2024, 61.0], 0.0, 2.0, 0.0]","expected":[2.0,0.0],"passed":true},{"actual":[60.0,10.0],"check":"mean anomaly propagation between epochs [[2099, 365.0], [2100, 60.0], 10.0, 0.5, 0.0]","expected":[60.0,10.0],"passed":true},{"actual":[2.0,190.0],"check":"mean anomaly propagation between epochs [[2100, 59.0], [2100, 61.0], 10.0, 0.25, 0.0]","expected":[2.0,190.0],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"mean anomaly propagation between epochs [[2024, 360.0], [2025, 3.0], 20.0, 1.1, 0.0]\", \"actual\": [8.0, 308.0], \"expected\": [9.0, 344.0], \"passed\": false}, {\"check\": \"mean anomaly propagation between epochs [[2100, 360.0], [2101, 2.0], 20.0, 0.9, 0.0]\", \"actual\": [7.0, 128.0], \"expected\": [7.0, 128.0], \"passed\": true}, {\"check\": \"mean anomaly propagation between epochs [[2026, 10.25], [2026, 12.75], 30.0, 15.5, 0.0]\", \"actual\": [2.5, 300.0], \"expected\": [2.5, 300.0], \"passed\": true}, {\"check\": \"mean anomaly propagation between epochs [[2023, 360.5], [2024, 2.5], 100.0, 1.00273, 0.0]\", \"actual\": [7.0, 106.8796], \"expected\": [7.0, 106.8796], \"passed\": true}, {\"check\": \"mean anomaly propagation between epochs [[2024, 59.0], [2024, 61.0], 0.0, 2.0, 0.0]\", \"actual\": [2.0, 0.0], \"expected\": [2.0, 0.0], \"passed\": true}, {\"check\": \"mean anomaly propagation between epochs [[2099, 365.0], [2100, 60.0], 10.0, 0.5, 0.0]\", \"actual\": [60.0, 10.0], \"expected\": [60.0, 10.0], \"passed\": true}, {\"check\": \"mean anomaly propagation between epochs [[2100, 59.0], [2100, 61.0], 10.0, 0.25, 0.0]\", \"actual\": [2.0, 190.0], \"expected\": [2.0, 190.0], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":38.79,"exit_code":0,"observations":[{"actual":[9.0,344.0],"check":"mean anomaly propagation between epochs [[2024, 360.0], [2025, 3.0], 20.0, 1.1, 0.0]","expected":[9.0,344.0],"passed":true},{"actual":[7.0,128.0],"check":"mean anomaly propagation between epochs [[2100, 360.0], [2101, 2.0], 20.0, 0.9, 0.0]","expected":[7.0,128.0],"passed":true},{"actual":[2.5,300.0],"check":"mean anomaly propagation between epochs [[2026, 10.25], [2026, 12.75], 30.0, 15.5, 0.0]","expected":[2.5,300.0],"passed":true},{"actual":[7.0,106.8796],"check":"mean anomaly propagation between epochs [[2023, 360.5], [2024, 2.5], 100.0, 1.00273, 0.0]","expected":[7.0,106.8796],"passed":true},{"actual":[2.0,0.0],"check":"mean anomaly propagation between epochs [[2024, 59.0], [2024, 61.0], 0.0, 2.0, 0.0]","expected":[2.0,0.0],"passed":true},{"actual":[60.0,10.0],"check":"mean anomaly propagation between epochs [[2099, 365.0], [2100, 60.0], 10.0, 0.5, 0.0]","expected":[60.0,10.0],"passed":true},{"actual":[2.0,190.0],"check":"mean anomaly propagation between epochs [[2100, 59.0], [2100, 61.0], 10.0, 0.25, 0.0]","expected":[2.0,190.0],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"mean anomaly propagation between epochs [[2024, 360.0], [2025, 3.0], 20.0, 1.1, 0.0]\", \"actual\": [9.0, 344.0], \"expected\": [9.0, 344.0], \"passed\": true}, {\"check\": \"mean anomaly propagation between epochs [[2100, 360.0], [2101, 2.0], 20.0, 0.9, 0.0]\", \"actual\": [7.0, 128.0], \"expected\": [7.0, 128.0], \"passed\": true}, {\"check\": \"mean anomaly propagation between epochs [[2026, 10.25], [2026, 12.75], 30.0, 15.5, 0.0]\", \"actual\": [2.5, 300.0], \"expected\": [2.5, 300.0], \"passed\": true}, {\"check\": \"mean anomaly propagation between epochs [[2023, 360.5], [2024, 2.5], 100.0, 1.00273, 0.0]\", \"actual\": [7.0, 106.8796], \"expected\": [7.0, 106.8796], \"passed\": true}, {\"check\": \"mean anomaly propagation between epochs [[2024, 59.0], [2024, 61.0], 0.0, 2.0, 0.0]\", \"actual\": [2.0, 0.0], \"expected\": [2.0, 0.0], \"passed\": true}, {\"check\": \"mean anomaly propagation between epochs [[2099, 365.0], [2100, 60.0], 10.0, 0.5, 0.0]\", \"actual\": [60.0, 10.0], \"expected\": [60.0, 10.0], \"passed\": true}, {\"check\": \"mean anomaly propagation between epochs [[2100, 59.0], [2100, 61.0], 10.0, 0.25, 0.0]\", \"actual\": [2.0, 190.0], \"expected\": [2.0, 190.0], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}