{"abstract":"Shadow geometry scales with the length of the sun vector.","category":"Orbital propagation","checks":7,"contract":"Input [r, s, R]: satellite position, sun direction (any length) and body radius. With u=s/|s| and d=r.u, the satellite is sunlit when d>=0; otherwise it is in umbra when the distance of r from the shadow axis |r-d u| is <= R. Return \"umbra\" or \"sunlit\".","evaluation_group":"w2-orbital_propagation-shadow_cylinder","failed_approach":"Dividing by the component sum is not a normalization.","family":"w2-orbital_propagation-shadow_cylinder-sun-unit-vector","id":"FA-69691","implementations":{"attempt":{"sha256":"9ad5609ff95d8b435493ec29ba08c3830b004c9d7d77a3db3643008dad2b295a","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(x):\n    r,s,R=x\n    sn=math.sqrt(sum(c*c for c in s))\n    u=[c/sum(s) for c in s] if sum(s) else list(s)\n    d=sum(a*b for a,b in zip(r,u))\n    if d>=0: return 'sunlit'\n    perp=[a-d*b for a,b in zip(r,u)]\n    return 'umbra' if math.sqrt(sum(c*c for c in perp))<=R else 'sunlit'\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('cylindrical earth shadow test [[0.0, -8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0]', [[0.0, -8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0], 'umbra'), ('cylindrical earth shadow test [[5000.0, 5000.0, 0.0], [-3.0, -4.0, 0.0], 6378.0]', [[5000.0, 5000.0, 0.0], [-3.0, -4.0, 0.0], 6378.0], 'umbra'), ('cylindrical earth shadow test [[-7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0]', [[-7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0], 'umbra'), ('cylindrical earth shadow test [[7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0]', [[7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0], 'sunlit'), ('cylindrical earth shadow test [[-7000.0, 6378.0, 0.0], [1.0, 0.0, 0.0], 6378.0]', [[-7000.0, 6378.0, 0.0], [1.0, 0.0, 0.0], 6378.0], 'umbra'), ('cylindrical earth shadow test [[-7000.0, 6400.0, 0.0], [1.0, 0.0, 0.0], 6378.0]', [[-7000.0, 6400.0, 0.0], [1.0, 0.0, 0.0], 6378.0], 'sunlit'), ('cylindrical earth shadow test [[0.0, 8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0]', [[0.0, 8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0], 'sunlit')], [('cylindrical earth shadow test [[5000.0, 5000.0, 0.0], [-3.0, -4.0, 0.0], 6378.0]', [[5000.0, 5000.0, 0.0], [-3.0, -4.0, 0.0], 6378.0], 'umbra'), ('cylindrical earth shadow test [[-7000.0, 6400.0, 0.0], [1.0, 0.0, 0.0], 6378.0]', [[-7000.0, 6400.0, 0.0], [1.0, 0.0, 0.0], 6378.0], 'sunlit'), ('cylindrical earth shadow test [[0.0, -8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0]', [[0.0, -8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0], 'umbra'), ('cylindrical earth shadow test [[0.0, 8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0]', [[0.0, 8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0], 'sunlit'), ('cylindrical earth shadow test [[-5000.0, -5000.0, 1000.0], [3.0, 4.0, 0.0], 6378.0]', [[-5000.0, -5000.0, 1000.0], [3.0, 4.0, 0.0], 6378.0], 'umbra'), ('cylindrical earth shadow test [[100.0, 7000.0, 0.0], [1.0, 0.0, 0.0], 6378.0]', [[100.0, 7000.0, 0.0], [1.0, 0.0, 0.0], 6378.0], 'sunlit'), ('cylindrical earth shadow test [[-100.0, 7000.0, 0.0], [1.0, 0.0, 0.0], 6378.0]', [[-100.0, 7000.0, 0.0], [1.0, 0.0, 0.0], 6378.0], 'sunlit')], [('cylindrical earth shadow test [[-5000.0, -5000.0, 1000.0], [3.0, 4.0, 0.0], 6378.0]', [[-5000.0, -5000.0, 1000.0], [3.0, 4.0, 0.0], 6378.0], 'umbra'), ('cylindrical earth shadow test [[5000.0, 5000.0, 0.0], [-3.0, -4.0, 0.0], 6378.0]', [[5000.0, 5000.0, 0.0], [-3.0, -4.0, 0.0], 6378.0], 'umbra'), ('cylindrical earth shadow test [[100.0, 7000.0, 0.0], [1.0, 0.0, 0.0], 6378.0]', [[100.0, 7000.0, 0.0], [1.0, 0.0, 0.0], 6378.0], 'sunlit'), ('cylindrical earth shadow test [[-100.0, 7000.0, 0.0], [1.0, 0.0, 0.0], 6378.0]', [[-100.0, 7000.0, 0.0], [1.0, 0.0, 0.0], 6378.0], 'sunlit'), ('cylindrical earth shadow test [[-42164.0, 0.0, 6000.0], [0.0, 0.0, 0.0001], 6378.0]', [[-42164.0, 0.0, 6000.0], [0.0, 0.0, 0.0001], 6378.0], 'sunlit'), ('cylindrical earth shadow test [[3000.0, -7000.0, 0.0], [0.0, 0.5, 0.5], 6378.0]', [[3000.0, -7000.0, 0.0], [0.0, 0.5, 0.5], 6378.0], 'umbra'), ('cylindrical earth shadow test [[-7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0]', [[-7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0], 'umbra')], [('cylindrical earth shadow test [[0.0, -8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0]', [[0.0, -8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0], 'umbra'), ('cylindrical earth shadow test [[5000.0, 5000.0, 0.0], [-3.0, -4.0, 0.0], 6378.0]', [[5000.0, 5000.0, 0.0], [-3.0, -4.0, 0.0], 6378.0], 'umbra'), ('cylindrical earth shadow test [[-100.0, 7000.0, 0.0], [1.0, 0.0, 0.0], 6378.0]', [[-100.0, 7000.0, 0.0], [1.0, 0.0, 0.0], 6378.0], 'sunlit'), ('cylindrical earth shadow test [[-42164.0, 0.0, 6000.0], [0.0, 0.0, 0.0001], 6378.0]', [[-42164.0, 0.0, 6000.0], [0.0, 0.0, 0.0001], 6378.0], 'sunlit'), ('cylindrical earth shadow test [[3000.0, -7000.0, 0.0], [0.0, 0.5, 0.5], 6378.0]', [[3000.0, -7000.0, 0.0], [0.0, 0.5, 0.5], 6378.0], 'umbra'), ('cylindrical earth shadow test [[-7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0]', [[-7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0], 'umbra'), ('cylindrical earth shadow test [[7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0]', [[7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0], 'sunlit')], [('cylindrical earth shadow test [[5000.0, 5000.0, 0.0], [-3.0, -4.0, 0.0], 6378.0]', [[5000.0, 5000.0, 0.0], [-3.0, -4.0, 0.0], 6378.0], 'umbra'), ('cylindrical earth shadow test [[-7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0]', [[-7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0], 'umbra'), ('cylindrical earth shadow test [[7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0]', [[7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0], 'sunlit'), ('cylindrical earth shadow test [[-7000.0, 6378.0, 0.0], [1.0, 0.0, 0.0], 6378.0]', [[-7000.0, 6378.0, 0.0], [1.0, 0.0, 0.0], 6378.0], 'umbra'), ('cylindrical earth shadow test [[-7000.0, 6400.0, 0.0], [1.0, 0.0, 0.0], 6378.0]', [[-7000.0, 6400.0, 0.0], [1.0, 0.0, 0.0], 6378.0], 'sunlit'), ('cylindrical earth shadow test [[0.0, -8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0]', [[0.0, -8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0], 'umbra'), ('cylindrical earth shadow test [[0.0, 8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0]', [[0.0, 8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0], 'sunlit')]]\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":"8f83d52a6896909244621be59234dd30ed8fcd1f84d59300ba910f3481fb2654","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(x):\n    r,s,R=x\n    sn=math.sqrt(sum(c*c for c in s))\n    u=list(s)\n    d=sum(a*b for a,b in zip(r,u))\n    if d>=0: return 'sunlit'\n    perp=[a-d*b for a,b in zip(r,u)]\n    return 'umbra' if math.sqrt(sum(c*c for c in perp))<=R else 'sunlit'\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('cylindrical earth shadow test [[0.0, -8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0]', [[0.0, -8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0], 'umbra'), ('cylindrical earth shadow test [[5000.0, 5000.0, 0.0], [-3.0, -4.0, 0.0], 6378.0]', [[5000.0, 5000.0, 0.0], [-3.0, -4.0, 0.0], 6378.0], 'umbra'), ('cylindrical earth shadow test [[-7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0]', [[-7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0], 'umbra'), ('cylindrical earth shadow test [[7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0]', [[7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0], 'sunlit'), ('cylindrical earth shadow test [[-7000.0, 6378.0, 0.0], [1.0, 0.0, 0.0], 6378.0]', [[-7000.0, 6378.0, 0.0], [1.0, 0.0, 0.0], 6378.0], 'umbra'), ('cylindrical earth shadow test [[-7000.0, 6400.0, 0.0], [1.0, 0.0, 0.0], 6378.0]', [[-7000.0, 6400.0, 0.0], [1.0, 0.0, 0.0], 6378.0], 'sunlit'), ('cylindrical earth shadow test [[0.0, 8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0]', [[0.0, 8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0], 'sunlit')], [('cylindrical earth shadow test [[5000.0, 5000.0, 0.0], [-3.0, -4.0, 0.0], 6378.0]', [[5000.0, 5000.0, 0.0], [-3.0, -4.0, 0.0], 6378.0], 'umbra'), ('cylindrical earth shadow test [[-7000.0, 6400.0, 0.0], [1.0, 0.0, 0.0], 6378.0]', [[-7000.0, 6400.0, 0.0], [1.0, 0.0, 0.0], 6378.0], 'sunlit'), ('cylindrical earth shadow test [[0.0, -8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0]', [[0.0, -8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0], 'umbra'), ('cylindrical earth shadow test [[0.0, 8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0]', [[0.0, 8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0], 'sunlit'), ('cylindrical earth shadow test [[-5000.0, -5000.0, 1000.0], [3.0, 4.0, 0.0], 6378.0]', [[-5000.0, -5000.0, 1000.0], [3.0, 4.0, 0.0], 6378.0], 'umbra'), ('cylindrical earth shadow test [[100.0, 7000.0, 0.0], [1.0, 0.0, 0.0], 6378.0]', [[100.0, 7000.0, 0.0], [1.0, 0.0, 0.0], 6378.0], 'sunlit'), ('cylindrical earth shadow test [[-100.0, 7000.0, 0.0], [1.0, 0.0, 0.0], 6378.0]', [[-100.0, 7000.0, 0.0], [1.0, 0.0, 0.0], 6378.0], 'sunlit')], [('cylindrical earth shadow test [[-5000.0, -5000.0, 1000.0], [3.0, 4.0, 0.0], 6378.0]', [[-5000.0, -5000.0, 1000.0], [3.0, 4.0, 0.0], 6378.0], 'umbra'), ('cylindrical earth shadow test [[5000.0, 5000.0, 0.0], [-3.0, -4.0, 0.0], 6378.0]', [[5000.0, 5000.0, 0.0], [-3.0, -4.0, 0.0], 6378.0], 'umbra'), ('cylindrical earth shadow test [[100.0, 7000.0, 0.0], [1.0, 0.0, 0.0], 6378.0]', [[100.0, 7000.0, 0.0], [1.0, 0.0, 0.0], 6378.0], 'sunlit'), ('cylindrical earth shadow test [[-100.0, 7000.0, 0.0], [1.0, 0.0, 0.0], 6378.0]', [[-100.0, 7000.0, 0.0], [1.0, 0.0, 0.0], 6378.0], 'sunlit'), ('cylindrical earth shadow test [[-42164.0, 0.0, 6000.0], [0.0, 0.0, 0.0001], 6378.0]', [[-42164.0, 0.0, 6000.0], [0.0, 0.0, 0.0001], 6378.0], 'sunlit'), ('cylindrical earth shadow test [[3000.0, -7000.0, 0.0], [0.0, 0.5, 0.5], 6378.0]', [[3000.0, -7000.0, 0.0], [0.0, 0.5, 0.5], 6378.0], 'umbra'), ('cylindrical earth shadow test [[-7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0]', [[-7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0], 'umbra')], [('cylindrical earth shadow test [[0.0, -8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0]', [[0.0, -8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0], 'umbra'), ('cylindrical earth shadow test [[5000.0, 5000.0, 0.0], [-3.0, -4.0, 0.0], 6378.0]', [[5000.0, 5000.0, 0.0], [-3.0, -4.0, 0.0], 6378.0], 'umbra'), ('cylindrical earth shadow test [[-100.0, 7000.0, 0.0], [1.0, 0.0, 0.0], 6378.0]', [[-100.0, 7000.0, 0.0], [1.0, 0.0, 0.0], 6378.0], 'sunlit'), ('cylindrical earth shadow test [[-42164.0, 0.0, 6000.0], [0.0, 0.0, 0.0001], 6378.0]', [[-42164.0, 0.0, 6000.0], [0.0, 0.0, 0.0001], 6378.0], 'sunlit'), ('cylindrical earth shadow test [[3000.0, -7000.0, 0.0], [0.0, 0.5, 0.5], 6378.0]', [[3000.0, -7000.0, 0.0], [0.0, 0.5, 0.5], 6378.0], 'umbra'), ('cylindrical earth shadow test [[-7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0]', [[-7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0], 'umbra'), ('cylindrical earth shadow test [[7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0]', [[7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0], 'sunlit')], [('cylindrical earth shadow test [[5000.0, 5000.0, 0.0], [-3.0, -4.0, 0.0], 6378.0]', [[5000.0, 5000.0, 0.0], [-3.0, -4.0, 0.0], 6378.0], 'umbra'), ('cylindrical earth shadow test [[-7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0]', [[-7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0], 'umbra'), ('cylindrical earth shadow test [[7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0]', [[7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0], 'sunlit'), ('cylindrical earth shadow test [[-7000.0, 6378.0, 0.0], [1.0, 0.0, 0.0], 6378.0]', [[-7000.0, 6378.0, 0.0], [1.0, 0.0, 0.0], 6378.0], 'umbra'), ('cylindrical earth shadow test [[-7000.0, 6400.0, 0.0], [1.0, 0.0, 0.0], 6378.0]', [[-7000.0, 6400.0, 0.0], [1.0, 0.0, 0.0], 6378.0], 'sunlit'), ('cylindrical earth shadow test [[0.0, -8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0]', [[0.0, -8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0], 'umbra'), ('cylindrical earth shadow test [[0.0, 8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0]', [[0.0, 8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0], 'sunlit')]]\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":"14ab844d2f98a82614abf669ca88c417eb37fab0224f92199a8bf447349e4af3","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(x):\n    r,s,R=x\n    sn=math.sqrt(sum(c*c for c in s))\n    u=[c/sn for c in s]\n    d=sum(a*b for a,b in zip(r,u))\n    if d>=0: return 'sunlit'\n    perp=[a-d*b for a,b in zip(r,u)]\n    return 'umbra' if math.sqrt(sum(c*c for c in perp))<=R else 'sunlit'\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('cylindrical earth shadow test [[0.0, -8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0]', [[0.0, -8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0], 'umbra'), ('cylindrical earth shadow test [[5000.0, 5000.0, 0.0], [-3.0, -4.0, 0.0], 6378.0]', [[5000.0, 5000.0, 0.0], [-3.0, -4.0, 0.0], 6378.0], 'umbra'), ('cylindrical earth shadow test [[-7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0]', [[-7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0], 'umbra'), ('cylindrical earth shadow test [[7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0]', [[7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0], 'sunlit'), ('cylindrical earth shadow test [[-7000.0, 6378.0, 0.0], [1.0, 0.0, 0.0], 6378.0]', [[-7000.0, 6378.0, 0.0], [1.0, 0.0, 0.0], 6378.0], 'umbra'), ('cylindrical earth shadow test [[-7000.0, 6400.0, 0.0], [1.0, 0.0, 0.0], 6378.0]', [[-7000.0, 6400.0, 0.0], [1.0, 0.0, 0.0], 6378.0], 'sunlit'), ('cylindrical earth shadow test [[0.0, 8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0]', [[0.0, 8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0], 'sunlit')], [('cylindrical earth shadow test [[5000.0, 5000.0, 0.0], [-3.0, -4.0, 0.0], 6378.0]', [[5000.0, 5000.0, 0.0], [-3.0, -4.0, 0.0], 6378.0], 'umbra'), ('cylindrical earth shadow test [[-7000.0, 6400.0, 0.0], [1.0, 0.0, 0.0], 6378.0]', [[-7000.0, 6400.0, 0.0], [1.0, 0.0, 0.0], 6378.0], 'sunlit'), ('cylindrical earth shadow test [[0.0, -8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0]', [[0.0, -8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0], 'umbra'), ('cylindrical earth shadow test [[0.0, 8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0]', [[0.0, 8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0], 'sunlit'), ('cylindrical earth shadow test [[-5000.0, -5000.0, 1000.0], [3.0, 4.0, 0.0], 6378.0]', [[-5000.0, -5000.0, 1000.0], [3.0, 4.0, 0.0], 6378.0], 'umbra'), ('cylindrical earth shadow test [[100.0, 7000.0, 0.0], [1.0, 0.0, 0.0], 6378.0]', [[100.0, 7000.0, 0.0], [1.0, 0.0, 0.0], 6378.0], 'sunlit'), ('cylindrical earth shadow test [[-100.0, 7000.0, 0.0], [1.0, 0.0, 0.0], 6378.0]', [[-100.0, 7000.0, 0.0], [1.0, 0.0, 0.0], 6378.0], 'sunlit')], [('cylindrical earth shadow test [[-5000.0, -5000.0, 1000.0], [3.0, 4.0, 0.0], 6378.0]', [[-5000.0, -5000.0, 1000.0], [3.0, 4.0, 0.0], 6378.0], 'umbra'), ('cylindrical earth shadow test [[5000.0, 5000.0, 0.0], [-3.0, -4.0, 0.0], 6378.0]', [[5000.0, 5000.0, 0.0], [-3.0, -4.0, 0.0], 6378.0], 'umbra'), ('cylindrical earth shadow test [[100.0, 7000.0, 0.0], [1.0, 0.0, 0.0], 6378.0]', [[100.0, 7000.0, 0.0], [1.0, 0.0, 0.0], 6378.0], 'sunlit'), ('cylindrical earth shadow test [[-100.0, 7000.0, 0.0], [1.0, 0.0, 0.0], 6378.0]', [[-100.0, 7000.0, 0.0], [1.0, 0.0, 0.0], 6378.0], 'sunlit'), ('cylindrical earth shadow test [[-42164.0, 0.0, 6000.0], [0.0, 0.0, 0.0001], 6378.0]', [[-42164.0, 0.0, 6000.0], [0.0, 0.0, 0.0001], 6378.0], 'sunlit'), ('cylindrical earth shadow test [[3000.0, -7000.0, 0.0], [0.0, 0.5, 0.5], 6378.0]', [[3000.0, -7000.0, 0.0], [0.0, 0.5, 0.5], 6378.0], 'umbra'), ('cylindrical earth shadow test [[-7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0]', [[-7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0], 'umbra')], [('cylindrical earth shadow test [[0.0, -8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0]', [[0.0, -8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0], 'umbra'), ('cylindrical earth shadow test [[5000.0, 5000.0, 0.0], [-3.0, -4.0, 0.0], 6378.0]', [[5000.0, 5000.0, 0.0], [-3.0, -4.0, 0.0], 6378.0], 'umbra'), ('cylindrical earth shadow test [[-100.0, 7000.0, 0.0], [1.0, 0.0, 0.0], 6378.0]', [[-100.0, 7000.0, 0.0], [1.0, 0.0, 0.0], 6378.0], 'sunlit'), ('cylindrical earth shadow test [[-42164.0, 0.0, 6000.0], [0.0, 0.0, 0.0001], 6378.0]', [[-42164.0, 0.0, 6000.0], [0.0, 0.0, 0.0001], 6378.0], 'sunlit'), ('cylindrical earth shadow test [[3000.0, -7000.0, 0.0], [0.0, 0.5, 0.5], 6378.0]', [[3000.0, -7000.0, 0.0], [0.0, 0.5, 0.5], 6378.0], 'umbra'), ('cylindrical earth shadow test [[-7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0]', [[-7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0], 'umbra'), ('cylindrical earth shadow test [[7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0]', [[7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0], 'sunlit')], [('cylindrical earth shadow test [[5000.0, 5000.0, 0.0], [-3.0, -4.0, 0.0], 6378.0]', [[5000.0, 5000.0, 0.0], [-3.0, -4.0, 0.0], 6378.0], 'umbra'), ('cylindrical earth shadow test [[-7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0]', [[-7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0], 'umbra'), ('cylindrical earth shadow test [[7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0]', [[7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0], 'sunlit'), ('cylindrical earth shadow test [[-7000.0, 6378.0, 0.0], [1.0, 0.0, 0.0], 6378.0]', [[-7000.0, 6378.0, 0.0], [1.0, 0.0, 0.0], 6378.0], 'umbra'), ('cylindrical earth shadow test [[-7000.0, 6400.0, 0.0], [1.0, 0.0, 0.0], 6378.0]', [[-7000.0, 6400.0, 0.0], [1.0, 0.0, 0.0], 6378.0], 'sunlit'), ('cylindrical earth shadow test [[0.0, -8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0]', [[0.0, -8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0], 'umbra'), ('cylindrical earth shadow test [[0.0, 8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0]', [[0.0, 8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0], 'sunlit')]]\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-shadow_cylinder-sun-unit-vector","generated_at":"2026-09-29T14:48:13.831237+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":"Normalize the sun vector.","root_cause":"The sun vector is used directly as the shadow axis.","sha256":"f4ca937019763daec207a6625e6adf1e1fbd23971897c258d4ef3417bbd99ec9","title":"Cylindrical Earth shadow test: Sun direction is not normalized · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":39.631,"exit_code":1,"observations":[{"actual":"umbra","check":"cylindrical earth shadow test [[0.0, -8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0]","expected":"umbra","passed":true},{"actual":"sunlit","check":"cylindrical earth shadow test [[5000.0, 5000.0, 0.0], [-3.0, -4.0, 0.0], 6378.0]","expected":"umbra","passed":false},{"actual":"umbra","check":"cylindrical earth shadow test [[-7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0]","expected":"umbra","passed":true},{"actual":"sunlit","check":"cylindrical earth shadow test [[7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0]","expected":"sunlit","passed":true},{"actual":"umbra","check":"cylindrical earth shadow test [[-7000.0, 6378.0, 0.0], [1.0, 0.0, 0.0], 6378.0]","expected":"umbra","passed":true},{"actual":"sunlit","check":"cylindrical earth shadow test [[-7000.0, 6400.0, 0.0], [1.0, 0.0, 0.0], 6378.0]","expected":"sunlit","passed":true},{"actual":"sunlit","check":"cylindrical earth shadow test [[0.0, 8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0]","expected":"sunlit","passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"cylindrical earth shadow test [[0.0, -8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0]\", \"actual\": \"umbra\", \"expected\": \"umbra\", \"passed\": true}, {\"check\": \"cylindrical earth shadow test [[5000.0, 5000.0, 0.0], [-3.0, -4.0, 0.0], 6378.0]\", \"actual\": \"sunlit\", \"expected\": \"umbra\", \"passed\": false}, {\"check\": \"cylindrical earth shadow test [[-7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0]\", \"actual\": \"umbra\", \"expected\": \"umbra\", \"passed\": true}, {\"check\": \"cylindrical earth shadow test [[7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0]\", \"actual\": \"sunlit\", \"expected\": \"sunlit\", \"passed\": true}, {\"check\": \"cylindrical earth shadow test [[-7000.0, 6378.0, 0.0], [1.0, 0.0, 0.0], 6378.0]\", \"actual\": \"umbra\", \"expected\": \"umbra\", \"passed\": true}, {\"check\": \"cylindrical earth shadow test [[-7000.0, 6400.0, 0.0], [1.0, 0.0, 0.0], 6378.0]\", \"actual\": \"sunlit\", \"expected\": \"sunlit\", \"passed\": true}, {\"check\": \"cylindrical earth shadow test [[0.0, 8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0]\", \"actual\": \"sunlit\", \"expected\": \"sunlit\", \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.554,"exit_code":1,"observations":[{"actual":"sunlit","check":"cylindrical earth shadow test [[0.0, -8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0]","expected":"umbra","passed":false},{"actual":"sunlit","check":"cylindrical earth shadow test [[5000.0, 5000.0, 0.0], [-3.0, -4.0, 0.0], 6378.0]","expected":"umbra","passed":false},{"actual":"umbra","check":"cylindrical earth shadow test [[-7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0]","expected":"umbra","passed":true},{"actual":"sunlit","check":"cylindrical earth shadow test [[7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0]","expected":"sunlit","passed":true},{"actual":"umbra","check":"cylindrical earth shadow test [[-7000.0, 6378.0, 0.0], [1.0, 0.0, 0.0], 6378.0]","expected":"umbra","passed":true},{"actual":"sunlit","check":"cylindrical earth shadow test [[-7000.0, 6400.0, 0.0], [1.0, 0.0, 0.0], 6378.0]","expected":"sunlit","passed":true},{"actual":"sunlit","check":"cylindrical earth shadow test [[0.0, 8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0]","expected":"sunlit","passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"cylindrical earth shadow test [[0.0, -8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0]\", \"actual\": \"sunlit\", \"expected\": \"umbra\", \"passed\": false}, {\"check\": \"cylindrical earth shadow test [[5000.0, 5000.0, 0.0], [-3.0, -4.0, 0.0], 6378.0]\", \"actual\": \"sunlit\", \"expected\": \"umbra\", \"passed\": false}, {\"check\": \"cylindrical earth shadow test [[-7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0]\", \"actual\": \"umbra\", \"expected\": \"umbra\", \"passed\": true}, {\"check\": \"cylindrical earth shadow test [[7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0]\", \"actual\": \"sunlit\", \"expected\": \"sunlit\", \"passed\": true}, {\"check\": \"cylindrical earth shadow test [[-7000.0, 6378.0, 0.0], [1.0, 0.0, 0.0], 6378.0]\", \"actual\": \"umbra\", \"expected\": \"umbra\", \"passed\": true}, {\"check\": \"cylindrical earth shadow test [[-7000.0, 6400.0, 0.0], [1.0, 0.0, 0.0], 6378.0]\", \"actual\": \"sunlit\", \"expected\": \"sunlit\", \"passed\": true}, {\"check\": \"cylindrical earth shadow test [[0.0, 8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0]\", \"actual\": \"sunlit\", \"expected\": \"sunlit\", \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":39.315,"exit_code":0,"observations":[{"actual":"umbra","check":"cylindrical earth shadow test [[0.0, -8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0]","expected":"umbra","passed":true},{"actual":"umbra","check":"cylindrical earth shadow test [[5000.0, 5000.0, 0.0], [-3.0, -4.0, 0.0], 6378.0]","expected":"umbra","passed":true},{"actual":"umbra","check":"cylindrical earth shadow test [[-7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0]","expected":"umbra","passed":true},{"actual":"sunlit","check":"cylindrical earth shadow test [[7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0]","expected":"sunlit","passed":true},{"actual":"umbra","check":"cylindrical earth shadow test [[-7000.0, 6378.0, 0.0], [1.0, 0.0, 0.0], 6378.0]","expected":"umbra","passed":true},{"actual":"sunlit","check":"cylindrical earth shadow test [[-7000.0, 6400.0, 0.0], [1.0, 0.0, 0.0], 6378.0]","expected":"sunlit","passed":true},{"actual":"sunlit","check":"cylindrical earth shadow test [[0.0, 8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0]","expected":"sunlit","passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"cylindrical earth shadow test [[0.0, -8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0]\", \"actual\": \"umbra\", \"expected\": \"umbra\", \"passed\": true}, {\"check\": \"cylindrical earth shadow test [[5000.0, 5000.0, 0.0], [-3.0, -4.0, 0.0], 6378.0]\", \"actual\": \"umbra\", \"expected\": \"umbra\", \"passed\": true}, {\"check\": \"cylindrical earth shadow test [[-7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0]\", \"actual\": \"umbra\", \"expected\": \"umbra\", \"passed\": true}, {\"check\": \"cylindrical earth shadow test [[7000.0, 100.0, 0.0], [1.0, 0.0, 0.0], 6378.0]\", \"actual\": \"sunlit\", \"expected\": \"sunlit\", \"passed\": true}, {\"check\": \"cylindrical earth shadow test [[-7000.0, 6378.0, 0.0], [1.0, 0.0, 0.0], 6378.0]\", \"actual\": \"umbra\", \"expected\": \"umbra\", \"passed\": true}, {\"check\": \"cylindrical earth shadow test [[-7000.0, 6400.0, 0.0], [1.0, 0.0, 0.0], 6378.0]\", \"actual\": \"sunlit\", \"expected\": \"sunlit\", \"passed\": true}, {\"check\": \"cylindrical earth shadow test [[0.0, 8000.0, 500.0], [0.0, 2.0, 0.0], 6378.0]\", \"actual\": \"sunlit\", \"expected\": \"sunlit\", \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}