{"abstract":"The target gets further ahead after the phasing orbit.","category":"Orbital propagation","checks":7,"contract":"Input [r, theta, k, mu, rmin]: circular radius, target lead angle in degrees (positive = target ahead), k phasing revolutions. Phasing period Tph=T-theta_rad/(k n). a_ph from Tph; total dv = 2|v_ph(r)-v_circ| with vis-viva at r. Return None if the phasing perigee 2a_ph-r is below rmin, else [a_ph rounded 3, dv rounded 6, k*Tph rounded 3].","evaluation_group":"w2-orbital_propagation-phasing","failed_approach":"Subtracting the lead angle in degrees mixes units.","family":"w2-orbital_propagation-phasing-lead-sign","id":"FA-69796","implementations":{"attempt":{"sha256":"ac7b7970b87ac776c1b4f61f0de173f60850bd7d8face289f13a0305384ee4f5","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(x):\n    r,theta,k,mu,rmin=x\n    n=math.sqrt(mu/r**3)\n    T=2*math.pi/n\n    Tph=T-theta/(k*n)\n    aph=(mu*(Tph/(2*math.pi))**2)**(1/3)\n    if 2*aph-r<rmin: return None\n    vc=math.sqrt(mu/r)\n    vph=math.sqrt(mu*(2/r-1/aph))\n    dv=2*abs(vph-vc)\n    return [round(aph,3),round(dv,6),round(k*Tph,3)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('co-orbital phasing manoeuvre [6778.0, 20.0, 1, 398600.4418, 6478.0]', [6778.0, 20.0, 1, 398600.4418, 6478.0], None), ('co-orbital phasing manoeuvre [6778.0, 20.0, 3, 398600.4418, 6478.0]', [6778.0, 20.0, 3, 398600.4418, 6478.0], [6694.061, 0.096463, 16351.842]), ('co-orbital phasing manoeuvre [6778.0, -30.0, 2, 398600.4418, 6478.0]', [6778.0, -30.0, 2, 398600.4418, 6478.0], [6964.994, 0.204521, 11569.7]), ('co-orbital phasing manoeuvre [42164.0, 10.0, 1, 398600.4418, 6478.0]', [42164.0, 10.0, 1, 398600.4418, 6478.0], [41379.525, 0.058569, 83770.138]), ('co-orbital phasing manoeuvre [42164.0, -45.0, 4, 398600.4418, 6478.0]', [42164.0, -45.0, 4, 398600.4418, 6478.0], [43037.904, 0.062119, 355424.729]), ('co-orbital phasing manoeuvre [6778.0, 90.0, 1, 398600.4418, 6478.0]', [6778.0, 90.0, 1, 398600.4418, 6478.0], None), ('co-orbital phasing manoeuvre [6778.0, 90.0, 5, 398600.4418, 6478.0]', [6778.0, 90.0, 5, 398600.4418, 6478.0], None)], [('co-orbital phasing manoeuvre [6778.0, 20.0, 3, 398600.4418, 6478.0]', [6778.0, 20.0, 3, 398600.4418, 6478.0], [6694.061, 0.096463, 16351.842]), ('co-orbital phasing manoeuvre [42164.0, 10.0, 1, 398600.4418, 6478.0]', [42164.0, 10.0, 1, 398600.4418, 6478.0], [41379.525, 0.058569, 83770.138]), ('co-orbital phasing manoeuvre [42164.0, -45.0, 4, 398600.4418, 6478.0]', [42164.0, -45.0, 4, 398600.4418, 6478.0], [43037.904, 0.062119, 355424.729]), ('co-orbital phasing manoeuvre [6778.0, 90.0, 1, 398600.4418, 6478.0]', [6778.0, 90.0, 1, 398600.4418, 6478.0], None), ('co-orbital phasing manoeuvre [6778.0, 90.0, 5, 398600.4418, 6478.0]', [6778.0, 90.0, 5, 398600.4418, 6478.0], None), ('co-orbital phasing manoeuvre [1.0, 60.0, 2, 1.0, 0.5]', [1.0, 60.0, 2, 1.0, 0.5], [0.944, 0.060642, 11.519]), ('co-orbital phasing manoeuvre [1.0, -60.0, 2, 1.0, 0.5]', [1.0, -60.0, 2, 1.0, 0.5], [1.055, 0.051305, 13.614])], [('co-orbital phasing manoeuvre [6778.0, -30.0, 2, 398600.4418, 6478.0]', [6778.0, -30.0, 2, 398600.4418, 6478.0], [6964.994, 0.204521, 11569.7]), ('co-orbital phasing manoeuvre [6778.0, 90.0, 5, 398600.4418, 6478.0]', [6778.0, 90.0, 5, 398600.4418, 6478.0], None), ('co-orbital phasing manoeuvre [1.0, 60.0, 2, 1.0, 0.5]', [1.0, 60.0, 2, 1.0, 0.5], [0.944, 0.060642, 11.519]), ('co-orbital phasing manoeuvre [1.0, -60.0, 2, 1.0, 0.5]', [1.0, -60.0, 2, 1.0, 0.5], [1.055, 0.051305, 13.614]), ('co-orbital phasing manoeuvre [1.0, 170.0, 1, 1.0, 0.1]', [1.0, 170.0, 1, 1.0, 0.1], [0.653, 0.630624, 3.316]), ('co-orbital phasing manoeuvre [6778.0, 20.0, 1, 398600.4418, 6478.0]', [6778.0, 20.0, 1, 398600.4418, 6478.0], None), ('co-orbital phasing manoeuvre [6778.0, 20.0, 3, 398600.4418, 6478.0]', [6778.0, 20.0, 3, 398600.4418, 6478.0], [6694.061, 0.096463, 16351.842])], [('co-orbital phasing manoeuvre [42164.0, 10.0, 1, 398600.4418, 6478.0]', [42164.0, 10.0, 1, 398600.4418, 6478.0], [41379.525, 0.058569, 83770.138]), ('co-orbital phasing manoeuvre [1.0, 170.0, 1, 1.0, 0.1]', [1.0, 170.0, 1, 1.0, 0.1], [0.653, 0.630624, 3.316]), ('co-orbital phasing manoeuvre [6778.0, 20.0, 1, 398600.4418, 6478.0]', [6778.0, 20.0, 1, 398600.4418, 6478.0], None), ('co-orbital phasing manoeuvre [6778.0, 20.0, 3, 398600.4418, 6478.0]', [6778.0, 20.0, 3, 398600.4418, 6478.0], [6694.061, 0.096463, 16351.842]), ('co-orbital phasing manoeuvre [6778.0, -30.0, 2, 398600.4418, 6478.0]', [6778.0, -30.0, 2, 398600.4418, 6478.0], [6964.994, 0.204521, 11569.7]), ('co-orbital phasing manoeuvre [42164.0, -45.0, 4, 398600.4418, 6478.0]', [42164.0, -45.0, 4, 398600.4418, 6478.0], [43037.904, 0.062119, 355424.729]), ('co-orbital phasing manoeuvre [6778.0, 90.0, 1, 398600.4418, 6478.0]', [6778.0, 90.0, 1, 398600.4418, 6478.0], None)], [('co-orbital phasing manoeuvre [42164.0, -45.0, 4, 398600.4418, 6478.0]', [42164.0, -45.0, 4, 398600.4418, 6478.0], [43037.904, 0.062119, 355424.729]), ('co-orbital phasing manoeuvre [6778.0, -30.0, 2, 398600.4418, 6478.0]', [6778.0, -30.0, 2, 398600.4418, 6478.0], [6964.994, 0.204521, 11569.7]), ('co-orbital phasing manoeuvre [42164.0, 10.0, 1, 398600.4418, 6478.0]', [42164.0, 10.0, 1, 398600.4418, 6478.0], [41379.525, 0.058569, 83770.138]), ('co-orbital phasing manoeuvre [6778.0, 90.0, 1, 398600.4418, 6478.0]', [6778.0, 90.0, 1, 398600.4418, 6478.0], None), ('co-orbital phasing manoeuvre [6778.0, 90.0, 5, 398600.4418, 6478.0]', [6778.0, 90.0, 5, 398600.4418, 6478.0], None), ('co-orbital phasing manoeuvre [1.0, 60.0, 2, 1.0, 0.5]', [1.0, 60.0, 2, 1.0, 0.5], [0.944, 0.060642, 11.519]), ('co-orbital phasing manoeuvre [1.0, -60.0, 2, 1.0, 0.5]', [1.0, -60.0, 2, 1.0, 0.5], [1.055, 0.051305, 13.614])]]\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":"9ce88adc36d0ead00aebd91c2f0b187a4be32a247ae95c87f3bce823692c8466","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(x):\n    r,theta,k,mu,rmin=x\n    n=math.sqrt(mu/r**3)\n    T=2*math.pi/n\n    Tph=T+math.radians(theta)/(k*n)\n    aph=(mu*(Tph/(2*math.pi))**2)**(1/3)\n    if 2*aph-r<rmin: return None\n    vc=math.sqrt(mu/r)\n    vph=math.sqrt(mu*(2/r-1/aph))\n    dv=2*abs(vph-vc)\n    return [round(aph,3),round(dv,6),round(k*Tph,3)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('co-orbital phasing manoeuvre [6778.0, 20.0, 1, 398600.4418, 6478.0]', [6778.0, 20.0, 1, 398600.4418, 6478.0], None), ('co-orbital phasing manoeuvre [6778.0, 20.0, 3, 398600.4418, 6478.0]', [6778.0, 20.0, 3, 398600.4418, 6478.0], [6694.061, 0.096463, 16351.842]), ('co-orbital phasing manoeuvre [6778.0, -30.0, 2, 398600.4418, 6478.0]', [6778.0, -30.0, 2, 398600.4418, 6478.0], [6964.994, 0.204521, 11569.7]), ('co-orbital phasing manoeuvre [42164.0, 10.0, 1, 398600.4418, 6478.0]', [42164.0, 10.0, 1, 398600.4418, 6478.0], [41379.525, 0.058569, 83770.138]), ('co-orbital phasing manoeuvre [42164.0, -45.0, 4, 398600.4418, 6478.0]', [42164.0, -45.0, 4, 398600.4418, 6478.0], [43037.904, 0.062119, 355424.729]), ('co-orbital phasing manoeuvre [6778.0, 90.0, 1, 398600.4418, 6478.0]', [6778.0, 90.0, 1, 398600.4418, 6478.0], None), ('co-orbital phasing manoeuvre [6778.0, 90.0, 5, 398600.4418, 6478.0]', [6778.0, 90.0, 5, 398600.4418, 6478.0], None)], [('co-orbital phasing manoeuvre [6778.0, 20.0, 3, 398600.4418, 6478.0]', [6778.0, 20.0, 3, 398600.4418, 6478.0], [6694.061, 0.096463, 16351.842]), ('co-orbital phasing manoeuvre [42164.0, 10.0, 1, 398600.4418, 6478.0]', [42164.0, 10.0, 1, 398600.4418, 6478.0], [41379.525, 0.058569, 83770.138]), ('co-orbital phasing manoeuvre [42164.0, -45.0, 4, 398600.4418, 6478.0]', [42164.0, -45.0, 4, 398600.4418, 6478.0], [43037.904, 0.062119, 355424.729]), ('co-orbital phasing manoeuvre [6778.0, 90.0, 1, 398600.4418, 6478.0]', [6778.0, 90.0, 1, 398600.4418, 6478.0], None), ('co-orbital phasing manoeuvre [6778.0, 90.0, 5, 398600.4418, 6478.0]', [6778.0, 90.0, 5, 398600.4418, 6478.0], None), ('co-orbital phasing manoeuvre [1.0, 60.0, 2, 1.0, 0.5]', [1.0, 60.0, 2, 1.0, 0.5], [0.944, 0.060642, 11.519]), ('co-orbital phasing manoeuvre [1.0, -60.0, 2, 1.0, 0.5]', [1.0, -60.0, 2, 1.0, 0.5], [1.055, 0.051305, 13.614])], [('co-orbital phasing manoeuvre [6778.0, -30.0, 2, 398600.4418, 6478.0]', [6778.0, -30.0, 2, 398600.4418, 6478.0], [6964.994, 0.204521, 11569.7]), ('co-orbital phasing manoeuvre [6778.0, 90.0, 5, 398600.4418, 6478.0]', [6778.0, 90.0, 5, 398600.4418, 6478.0], None), ('co-orbital phasing manoeuvre [1.0, 60.0, 2, 1.0, 0.5]', [1.0, 60.0, 2, 1.0, 0.5], [0.944, 0.060642, 11.519]), ('co-orbital phasing manoeuvre [1.0, -60.0, 2, 1.0, 0.5]', [1.0, -60.0, 2, 1.0, 0.5], [1.055, 0.051305, 13.614]), ('co-orbital phasing manoeuvre [1.0, 170.0, 1, 1.0, 0.1]', [1.0, 170.0, 1, 1.0, 0.1], [0.653, 0.630624, 3.316]), ('co-orbital phasing manoeuvre [6778.0, 20.0, 1, 398600.4418, 6478.0]', [6778.0, 20.0, 1, 398600.4418, 6478.0], None), ('co-orbital phasing manoeuvre [6778.0, 20.0, 3, 398600.4418, 6478.0]', [6778.0, 20.0, 3, 398600.4418, 6478.0], [6694.061, 0.096463, 16351.842])], [('co-orbital phasing manoeuvre [42164.0, 10.0, 1, 398600.4418, 6478.0]', [42164.0, 10.0, 1, 398600.4418, 6478.0], [41379.525, 0.058569, 83770.138]), ('co-orbital phasing manoeuvre [1.0, 170.0, 1, 1.0, 0.1]', [1.0, 170.0, 1, 1.0, 0.1], [0.653, 0.630624, 3.316]), ('co-orbital phasing manoeuvre [6778.0, 20.0, 1, 398600.4418, 6478.0]', [6778.0, 20.0, 1, 398600.4418, 6478.0], None), ('co-orbital phasing manoeuvre [6778.0, 20.0, 3, 398600.4418, 6478.0]', [6778.0, 20.0, 3, 398600.4418, 6478.0], [6694.061, 0.096463, 16351.842]), ('co-orbital phasing manoeuvre [6778.0, -30.0, 2, 398600.4418, 6478.0]', [6778.0, -30.0, 2, 398600.4418, 6478.0], [6964.994, 0.204521, 11569.7]), ('co-orbital phasing manoeuvre [42164.0, -45.0, 4, 398600.4418, 6478.0]', [42164.0, -45.0, 4, 398600.4418, 6478.0], [43037.904, 0.062119, 355424.729]), ('co-orbital phasing manoeuvre [6778.0, 90.0, 1, 398600.4418, 6478.0]', [6778.0, 90.0, 1, 398600.4418, 6478.0], None)], [('co-orbital phasing manoeuvre [42164.0, -45.0, 4, 398600.4418, 6478.0]', [42164.0, -45.0, 4, 398600.4418, 6478.0], [43037.904, 0.062119, 355424.729]), ('co-orbital phasing manoeuvre [6778.0, -30.0, 2, 398600.4418, 6478.0]', [6778.0, -30.0, 2, 398600.4418, 6478.0], [6964.994, 0.204521, 11569.7]), ('co-orbital phasing manoeuvre [42164.0, 10.0, 1, 398600.4418, 6478.0]', [42164.0, 10.0, 1, 398600.4418, 6478.0], [41379.525, 0.058569, 83770.138]), ('co-orbital phasing manoeuvre [6778.0, 90.0, 1, 398600.4418, 6478.0]', [6778.0, 90.0, 1, 398600.4418, 6478.0], None), ('co-orbital phasing manoeuvre [6778.0, 90.0, 5, 398600.4418, 6478.0]', [6778.0, 90.0, 5, 398600.4418, 6478.0], None), ('co-orbital phasing manoeuvre [1.0, 60.0, 2, 1.0, 0.5]', [1.0, 60.0, 2, 1.0, 0.5], [0.944, 0.060642, 11.519]), ('co-orbital phasing manoeuvre [1.0, -60.0, 2, 1.0, 0.5]', [1.0, -60.0, 2, 1.0, 0.5], [1.055, 0.051305, 13.614])]]\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":"b0e475801c0a1c4e99785f32e54073f9c8969b7740cd9b57a1e3dd7823814d1c","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(x):\n    r,theta,k,mu,rmin=x\n    n=math.sqrt(mu/r**3)\n    T=2*math.pi/n\n    Tph=T-math.radians(theta)/(k*n)\n    aph=(mu*(Tph/(2*math.pi))**2)**(1/3)\n    if 2*aph-r<rmin: return None\n    vc=math.sqrt(mu/r)\n    vph=math.sqrt(mu*(2/r-1/aph))\n    dv=2*abs(vph-vc)\n    return [round(aph,3),round(dv,6),round(k*Tph,3)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('co-orbital phasing manoeuvre [6778.0, 20.0, 1, 398600.4418, 6478.0]', [6778.0, 20.0, 1, 398600.4418, 6478.0], None), ('co-orbital phasing manoeuvre [6778.0, 20.0, 3, 398600.4418, 6478.0]', [6778.0, 20.0, 3, 398600.4418, 6478.0], [6694.061, 0.096463, 16351.842]), ('co-orbital phasing manoeuvre [6778.0, -30.0, 2, 398600.4418, 6478.0]', [6778.0, -30.0, 2, 398600.4418, 6478.0], [6964.994, 0.204521, 11569.7]), ('co-orbital phasing manoeuvre [42164.0, 10.0, 1, 398600.4418, 6478.0]', [42164.0, 10.0, 1, 398600.4418, 6478.0], [41379.525, 0.058569, 83770.138]), ('co-orbital phasing manoeuvre [42164.0, -45.0, 4, 398600.4418, 6478.0]', [42164.0, -45.0, 4, 398600.4418, 6478.0], [43037.904, 0.062119, 355424.729]), ('co-orbital phasing manoeuvre [6778.0, 90.0, 1, 398600.4418, 6478.0]', [6778.0, 90.0, 1, 398600.4418, 6478.0], None), ('co-orbital phasing manoeuvre [6778.0, 90.0, 5, 398600.4418, 6478.0]', [6778.0, 90.0, 5, 398600.4418, 6478.0], None)], [('co-orbital phasing manoeuvre [6778.0, 20.0, 3, 398600.4418, 6478.0]', [6778.0, 20.0, 3, 398600.4418, 6478.0], [6694.061, 0.096463, 16351.842]), ('co-orbital phasing manoeuvre [42164.0, 10.0, 1, 398600.4418, 6478.0]', [42164.0, 10.0, 1, 398600.4418, 6478.0], [41379.525, 0.058569, 83770.138]), ('co-orbital phasing manoeuvre [42164.0, -45.0, 4, 398600.4418, 6478.0]', [42164.0, -45.0, 4, 398600.4418, 6478.0], [43037.904, 0.062119, 355424.729]), ('co-orbital phasing manoeuvre [6778.0, 90.0, 1, 398600.4418, 6478.0]', [6778.0, 90.0, 1, 398600.4418, 6478.0], None), ('co-orbital phasing manoeuvre [6778.0, 90.0, 5, 398600.4418, 6478.0]', [6778.0, 90.0, 5, 398600.4418, 6478.0], None), ('co-orbital phasing manoeuvre [1.0, 60.0, 2, 1.0, 0.5]', [1.0, 60.0, 2, 1.0, 0.5], [0.944, 0.060642, 11.519]), ('co-orbital phasing manoeuvre [1.0, -60.0, 2, 1.0, 0.5]', [1.0, -60.0, 2, 1.0, 0.5], [1.055, 0.051305, 13.614])], [('co-orbital phasing manoeuvre [6778.0, -30.0, 2, 398600.4418, 6478.0]', [6778.0, -30.0, 2, 398600.4418, 6478.0], [6964.994, 0.204521, 11569.7]), ('co-orbital phasing manoeuvre [6778.0, 90.0, 5, 398600.4418, 6478.0]', [6778.0, 90.0, 5, 398600.4418, 6478.0], None), ('co-orbital phasing manoeuvre [1.0, 60.0, 2, 1.0, 0.5]', [1.0, 60.0, 2, 1.0, 0.5], [0.944, 0.060642, 11.519]), ('co-orbital phasing manoeuvre [1.0, -60.0, 2, 1.0, 0.5]', [1.0, -60.0, 2, 1.0, 0.5], [1.055, 0.051305, 13.614]), ('co-orbital phasing manoeuvre [1.0, 170.0, 1, 1.0, 0.1]', [1.0, 170.0, 1, 1.0, 0.1], [0.653, 0.630624, 3.316]), ('co-orbital phasing manoeuvre [6778.0, 20.0, 1, 398600.4418, 6478.0]', [6778.0, 20.0, 1, 398600.4418, 6478.0], None), ('co-orbital phasing manoeuvre [6778.0, 20.0, 3, 398600.4418, 6478.0]', [6778.0, 20.0, 3, 398600.4418, 6478.0], [6694.061, 0.096463, 16351.842])], [('co-orbital phasing manoeuvre [42164.0, 10.0, 1, 398600.4418, 6478.0]', [42164.0, 10.0, 1, 398600.4418, 6478.0], [41379.525, 0.058569, 83770.138]), ('co-orbital phasing manoeuvre [1.0, 170.0, 1, 1.0, 0.1]', [1.0, 170.0, 1, 1.0, 0.1], [0.653, 0.630624, 3.316]), ('co-orbital phasing manoeuvre [6778.0, 20.0, 1, 398600.4418, 6478.0]', [6778.0, 20.0, 1, 398600.4418, 6478.0], None), ('co-orbital phasing manoeuvre [6778.0, 20.0, 3, 398600.4418, 6478.0]', [6778.0, 20.0, 3, 398600.4418, 6478.0], [6694.061, 0.096463, 16351.842]), ('co-orbital phasing manoeuvre [6778.0, -30.0, 2, 398600.4418, 6478.0]', [6778.0, -30.0, 2, 398600.4418, 6478.0], [6964.994, 0.204521, 11569.7]), ('co-orbital phasing manoeuvre [42164.0, -45.0, 4, 398600.4418, 6478.0]', [42164.0, -45.0, 4, 398600.4418, 6478.0], [43037.904, 0.062119, 355424.729]), ('co-orbital phasing manoeuvre [6778.0, 90.0, 1, 398600.4418, 6478.0]', [6778.0, 90.0, 1, 398600.4418, 6478.0], None)], [('co-orbital phasing manoeuvre [42164.0, -45.0, 4, 398600.4418, 6478.0]', [42164.0, -45.0, 4, 398600.4418, 6478.0], [43037.904, 0.062119, 355424.729]), ('co-orbital phasing manoeuvre [6778.0, -30.0, 2, 398600.4418, 6478.0]', [6778.0, -30.0, 2, 398600.4418, 6478.0], [6964.994, 0.204521, 11569.7]), ('co-orbital phasing manoeuvre [42164.0, 10.0, 1, 398600.4418, 6478.0]', [42164.0, 10.0, 1, 398600.4418, 6478.0], [41379.525, 0.058569, 83770.138]), ('co-orbital phasing manoeuvre [6778.0, 90.0, 1, 398600.4418, 6478.0]', [6778.0, 90.0, 1, 398600.4418, 6478.0], None), ('co-orbital phasing manoeuvre [6778.0, 90.0, 5, 398600.4418, 6478.0]', [6778.0, 90.0, 5, 398600.4418, 6478.0], None), ('co-orbital phasing manoeuvre [1.0, 60.0, 2, 1.0, 0.5]', [1.0, 60.0, 2, 1.0, 0.5], [0.944, 0.060642, 11.519]), ('co-orbital phasing manoeuvre [1.0, -60.0, 2, 1.0, 0.5]', [1.0, -60.0, 2, 1.0, 0.5], [1.055, 0.051305, 13.614])]]\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-phasing-lead-sign","generated_at":"2026-09-29T14:48:14.679402+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":"Shorten the period when the target is ahead.","root_cause":"The lead angle is added to the period.","sha256":"35c45c04715c2eca1d5c61f257b5fef774db5578ffd7cf2737d0120bb89fc702","title":"Co-orbital phasing manoeuvre: Chaser raises its orbit to catch a target ahead · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":39.818,"exit_code":1,"observations":[{"actual":[11406.45,2.847422,-12123.743],"check":"co-orbital phasing manoeuvre [6778.0, 20.0, 1, 398600.4418, 6478.0]","expected":null,"passed":false},{"actual":null,"check":"co-orbital phasing manoeuvre [6778.0, 20.0, 3, 398600.4418, 6478.0]","expected":[6694.061,0.096463,16351.842],"passed":false},{"actual":[15287.603,3.798298,37622.711],"check":"co-orbital phasing manoeuvre [6778.0, -30.0, 2, 398600.4418, 6478.0]","expected":[6964.994,0.204521,11569.7],"passed":false},{"actual":[29712.27,1.462416,-50970.011],"check":"co-orbital phasing manoeuvre [42164.0, 10.0, 1, 398600.4418, 6478.0]","expected":[41379.525,0.058569,83770.138],"passed":false},{"actual":[83572.317,1.370672,961755.4],"check":"co-orbital phasing manoeuvre [42164.0, -45.0, 4, 398600.4418, 6478.0]","expected":[43037.904,0.062119,355424.729],"passed":false},{"actual":[38094.018,5.365612,-73993.94],"check":"co-orbital phasing manoeuvre [6778.0, 90.0, 1, 398600.4418, 6478.0]","expected":null,"passed":false},{"actual":[10268.839,2.416539,-51780.117],"check":"co-orbital phasing manoeuvre [6778.0, 90.0, 5, 398600.4418, 6478.0]","expected":null,"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"co-orbital phasing manoeuvre [6778.0, 20.0, 1, 398600.4418, 6478.0]\", \"actual\": [11406.45, 2.847422, -12123.743], \"expected\": null, \"passed\": false}, {\"check\": \"co-orbital phasing manoeuvre [6778.0, 20.0, 3, 398600.4418, 6478.0]\", \"actual\": null, \"expected\": [6694.061, 0.096463, 16351.842], \"passed\": false}, {\"check\": \"co-orbital phasing manoeuvre [6778.0, -30.0, 2, 398600.4418, 6478.0]\", \"actual\": [15287.603, 3.798298, 37622.711], \"expected\": [6964.994, 0.204521, 11569.7], \"passed\": false}, {\"check\": \"co-orbital phasing manoeuvre [42164.0, 10.0, 1, 398600.4418, 6478.0]\", \"actual\": [29712.27, 1.462416, -50970.011], \"expected\": [41379.525, 0.058569, 83770.138], \"passed\": false}, {\"check\": \"co-orbital phasing manoeuvre [42164.0, -45.0, 4, 398600.4418, 6478.0]\", \"actual\": [83572.317, 1.370672, 961755.4], \"expected\": [43037.904, 0.062119, 355424.729], \"passed\": false}, {\"check\": \"co-orbital phasing manoeuvre [6778.0, 90.0, 1, 398600.4418, 6478.0]\", \"actual\": [38094.018, 5.365612, -73993.94], \"expected\": null, \"passed\": false}, {\"check\": \"co-orbital phasing manoeuvre [6778.0, 90.0, 5, 398600.4418, 6478.0]\", \"actual\": [10268.839, 2.416539, -51780.117], \"expected\": null, \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":36.646,"exit_code":1,"observations":[{"actual":[7026.768,0.269131,5861.981],"check":"co-orbital phasing manoeuvre [6778.0, 20.0, 1, 398600.4418, 6478.0]","expected":null,"passed":false},{"actual":[6861.423,0.092955,16968.893],"check":"co-orbital phasing manoeuvre [6778.0, 20.0, 3, 398600.4418, 6478.0]","expected":[6694.061,0.096463,16351.842],"passed":false},{"actual":null,"check":"co-orbital phasing manoeuvre [6778.0, -30.0, 2, 398600.4418, 6478.0]","expected":[6964.994,0.204521,11569.7],"passed":false},{"actual":[42941.244,0.055402,88557.003],"check":"co-orbital phasing manoeuvre [42164.0, 10.0, 1, 398600.4418, 6478.0]","expected":[41379.525,0.058569,83770.138],"passed":false},{"actual":[41280.944,0.066127,333883.836],"check":"co-orbital phasing manoeuvre [42164.0, -45.0, 4, 398600.4418, 6478.0]","expected":[43037.904,0.062119,355424.729],"passed":false},{"actual":[7865.172,1.025708,6941.82],"check":"co-orbital phasing manoeuvre [6778.0, 90.0, 1, 398600.4418, 6478.0]","expected":null,"passed":false},{"actual":[7002.091,0.24349,29155.643],"check":"co-orbital phasing manoeuvre [6778.0, 90.0, 5, 398600.4418, 6478.0]","expected":null,"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"co-orbital phasing manoeuvre [6778.0, 20.0, 1, 398600.4418, 6478.0]\", \"actual\": [7026.768, 0.269131, 5861.981], \"expected\": null, \"passed\": false}, {\"check\": \"co-orbital phasing manoeuvre [6778.0, 20.0, 3, 398600.4418, 6478.0]\", \"actual\": [6861.423, 0.092955, 16968.893], \"expected\": [6694.061, 0.096463, 16351.842], \"passed\": false}, {\"check\": \"co-orbital phasing manoeuvre [6778.0, -30.0, 2, 398600.4418, 6478.0]\", \"actual\": null, \"expected\": [6964.994, 0.204521, 11569.7], \"passed\": false}, {\"check\": \"co-orbital phasing manoeuvre [42164.0, 10.0, 1, 398600.4418, 6478.0]\", \"actual\": [42941.244, 0.055402, 88557.003], \"expected\": [41379.525, 0.058569, 83770.138], \"passed\": false}, {\"check\": \"co-orbital phasing manoeuvre [42164.0, -45.0, 4, 398600.4418, 6478.0]\", \"actual\": [41280.944, 0.066127, 333883.836], \"expected\": [43037.904, 0.062119, 355424.729], \"passed\": false}, {\"check\": \"co-orbital phasing manoeuvre [6778.0, 90.0, 1, 398600.4418, 6478.0]\", \"actual\": [7865.172, 1.025708, 6941.82], \"expected\": null, \"passed\": false}, {\"check\": \"co-orbital phasing manoeuvre [6778.0, 90.0, 5, 398600.4418, 6478.0]\", \"actual\": [7002.091, 0.24349, 29155.643], \"expected\": null, \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":40.426,"exit_code":0,"observations":[{"actual":null,"check":"co-orbital phasing manoeuvre [6778.0, 20.0, 1, 398600.4418, 6478.0]","expected":null,"passed":true},{"actual":[6694.061,0.096463,16351.842],"check":"co-orbital phasing manoeuvre [6778.0, 20.0, 3, 398600.4418, 6478.0]","expected":[6694.061,0.096463,16351.842],"passed":true},{"actual":[6964.994,0.204521,11569.7],"check":"co-orbital phasing manoeuvre [6778.0, -30.0, 2, 398600.4418, 6478.0]","expected":[6964.994,0.204521,11569.7],"passed":true},{"actual":[41379.525,0.058569,83770.138],"check":"co-orbital phasing manoeuvre [42164.0, 10.0, 1, 398600.4418, 6478.0]","expected":[41379.525,0.058569,83770.138],"passed":true},{"actual":[43037.904,0.062119,355424.729],"check":"co-orbital phasing manoeuvre [42164.0, -45.0, 4, 398600.4418, 6478.0]","expected":[43037.904,0.062119,355424.729],"passed":true},{"actual":null,"check":"co-orbital phasing manoeuvre [6778.0, 90.0, 1, 398600.4418, 6478.0]","expected":null,"passed":true},{"actual":null,"check":"co-orbital phasing manoeuvre [6778.0, 90.0, 5, 398600.4418, 6478.0]","expected":null,"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"co-orbital phasing manoeuvre [6778.0, 20.0, 1, 398600.4418, 6478.0]\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"co-orbital phasing manoeuvre [6778.0, 20.0, 3, 398600.4418, 6478.0]\", \"actual\": [6694.061, 0.096463, 16351.842], \"expected\": [6694.061, 0.096463, 16351.842], \"passed\": true}, {\"check\": \"co-orbital phasing manoeuvre [6778.0, -30.0, 2, 398600.4418, 6478.0]\", \"actual\": [6964.994, 0.204521, 11569.7], \"expected\": [6964.994, 0.204521, 11569.7], \"passed\": true}, {\"check\": \"co-orbital phasing manoeuvre [42164.0, 10.0, 1, 398600.4418, 6478.0]\", \"actual\": [41379.525, 0.058569, 83770.138], \"expected\": [41379.525, 0.058569, 83770.138], \"passed\": true}, {\"check\": \"co-orbital phasing manoeuvre [42164.0, -45.0, 4, 398600.4418, 6478.0]\", \"actual\": [43037.904, 0.062119, 355424.729], \"expected\": [43037.904, 0.062119, 355424.729], \"passed\": true}, {\"check\": \"co-orbital phasing manoeuvre [6778.0, 90.0, 1, 398600.4418, 6478.0]\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"co-orbital phasing manoeuvre [6778.0, 90.0, 5, 398600.4418, 6478.0]\", \"actual\": null, \"expected\": null, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}