{"abstract":"Propagation from sub-day epochs is off by hours 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":"Rounding to the nearest whole day still discards the time of day.","family":"w2-orbital_propagation-epoch_mean_anomaly-fractional-day","id":"FA-69411","implementations":{"attempt":{"sha256":"25db7ae5f608837be535ae19a37702670d35c75c4a81712e341956152cc6fdec","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()+round(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 [[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 [[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 [[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 [[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, 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.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, 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.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 [[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 [[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 [[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 [[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 [[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, 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 [[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 [[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":"ffaf83b2383688e03e13d84b09f3e7955e26dfcd9911cf3d4f5660379f0d85af","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()+int(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 [[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 [[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 [[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 [[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, 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.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, 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.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 [[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 [[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 [[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 [[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 [[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, 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 [[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 [[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":"937e2eef9aed9be1b7b03b5f5bcccbd83a22cd5a9ce17dc349546f62fb202b91","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 [[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 [[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 [[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 [[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, 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.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, 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.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 [[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 [[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 [[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 [[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 [[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, 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 [[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 [[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-fractional-day","generated_at":"2026-09-29T14:48:11.258507+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":"Keep the fractional day.","root_cause":"Day-of-year values are truncated to whole days.","sha256":"d4c5064bd9c5ef6cd89cf37a03970274b728e558fa8a282667016cfb094eacaa","title":"Mean anomaly propagation between epochs: Epoch fractions of a day are discarded · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":41.326,"exit_code":1,"observations":[{"actual":[3,210.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":false},{"actual":[7,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],"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,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,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},{"actual":[-10,45.0],"check":"mean anomaly propagation between epochs [[2026, 100.0], [2026, 90.5], 45.0, 13.2, 0.0]","expected":[-9.5,261.0],"passed":false},{"actual":[2,170.144],"check":"mean anomaly propagation between epochs [[2026, 1.0], [2026, 3.0], 350.0, 14.25, 0.0001]","expected":[2.0,170.144],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"mean anomaly propagation between epochs [[2026, 10.25], [2026, 12.75], 30.0, 15.5, 0.0]\", \"actual\": [3, 210.0], \"expected\": [2.5, 300.0], \"passed\": false}, {\"check\": \"mean anomaly propagation between epochs [[2023, 360.5], [2024, 2.5], 100.0, 1.00273, 0.0]\", \"actual\": [7, 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], \"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, 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, 190.0], \"expected\": [2.0, 190.0], \"passed\": true}, {\"check\": \"mean anomaly propagation between epochs [[2026, 100.0], [2026, 90.5], 45.0, 13.2, 0.0]\", \"actual\": [-10, 45.0], \"expected\": [-9.5, 261.0], \"passed\": false}, {\"check\": \"mean anomaly propagation between epochs [[2026, 1.0], [2026, 3.0], 350.0, 14.25, 0.0001]\", \"actual\": [2, 170.144], \"expected\": [2.0, 170.144], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":45.103,"exit_code":1,"observations":[{"actual":[2,30.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":false},{"actual":[7,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],"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,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,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},{"actual":[-10,45.0],"check":"mean anomaly propagation between epochs [[2026, 100.0], [2026, 90.5], 45.0, 13.2, 0.0]","expected":[-9.5,261.0],"passed":false},{"actual":[2,170.144],"check":"mean anomaly propagation between epochs [[2026, 1.0], [2026, 3.0], 350.0, 14.25, 0.0001]","expected":[2.0,170.144],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"mean anomaly propagation between epochs [[2026, 10.25], [2026, 12.75], 30.0, 15.5, 0.0]\", \"actual\": [2, 30.0], \"expected\": [2.5, 300.0], \"passed\": false}, {\"check\": \"mean anomaly propagation between epochs [[2023, 360.5], [2024, 2.5], 100.0, 1.00273, 0.0]\", \"actual\": [7, 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], \"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, 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, 190.0], \"expected\": [2.0, 190.0], \"passed\": true}, {\"check\": \"mean anomaly propagation between epochs [[2026, 100.0], [2026, 90.5], 45.0, 13.2, 0.0]\", \"actual\": [-10, 45.0], \"expected\": [-9.5, 261.0], \"passed\": false}, {\"check\": \"mean anomaly propagation between epochs [[2026, 1.0], [2026, 3.0], 350.0, 14.25, 0.0001]\", \"actual\": [2, 170.144], \"expected\": [2.0, 170.144], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":42.355,"exit_code":0,"observations":[{"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},{"actual":[-9.5,261.0],"check":"mean anomaly propagation between epochs [[2026, 100.0], [2026, 90.5], 45.0, 13.2, 0.0]","expected":[-9.5,261.0],"passed":true},{"actual":[2.0,170.144],"check":"mean anomaly propagation between epochs [[2026, 1.0], [2026, 3.0], 350.0, 14.25, 0.0001]","expected":[2.0,170.144],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"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}, {\"check\": \"mean anomaly propagation between epochs [[2026, 100.0], [2026, 90.5], 45.0, 13.2, 0.0]\", \"actual\": [-9.5, 261.0], \"expected\": [-9.5, 261.0], \"passed\": true}, {\"check\": \"mean anomaly propagation between epochs [[2026, 1.0], [2026, 3.0], 350.0, 14.25, 0.0001]\", \"actual\": [2.0, 170.144], \"expected\": [2.0, 170.144], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}