{"abstract":"A projected catalog motion is propagated as raw coordinate motion.","category":"Astronomical coordinate conventions","checks":6,"contract":"Stipulated linear RA adapter: raw rate is p/c for projected convention and p for raw convention. c=0 with projected rate yields None. No spherical integration claimed.","evaluation_group":"model-7d988d4ecdecf4f0","failed_approach":"Multiplying by the projection factor applies the projection twice.","family":"z-astronomy-motion-component","id":"FA-12156","implementations":{"attempt":{"sha256":"16173ef3f20282e59117a0515aa8bf077cebee77bb9fbf5ab2c18537d62a6261","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(ra, p, c, dt, convention):\n    return None if convention == 'projected' and c == 0 else ra+p*(c if convention == 'projected' else 1)*dt\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('projected motion', solve(N, 6, 0.5, 2, \"projected\"), N+24)\ncheck('raw motion', solve(N, 6, 0.5, 2, \"raw\"), N+12)\ncheck('singularity', solve(N, 6, 0, 2, \"projected\"), None)\ncheck('equatorial factor', solve(N, 6, 1, 2, \"projected\"), N+12)\ncheck('back propagation', solve(N, 6, 0.5, -1, \"projected\"), N-12)\ncheck('stationary', solve(N, 0, 0.5, 2, \"projected\"), N)\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":"dfff709c12b5a665286260108b1ca1995ff598b4e17b79e60339b5c6eff49439","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(ra, p, c, dt, convention):\n    return ra+p*dt\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('projected motion', solve(N, 6, 0.5, 2, \"projected\"), N+24)\ncheck('raw motion', solve(N, 6, 0.5, 2, \"raw\"), N+12)\ncheck('singularity', solve(N, 6, 0, 2, \"projected\"), None)\ncheck('equatorial factor', solve(N, 6, 1, 2, \"projected\"), N+12)\ncheck('back propagation', solve(N, 6, 0.5, -1, \"projected\"), N-12)\ncheck('stationary', solve(N, 0, 0.5, 2, \"projected\"), N)\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":"f7ce006681a77043b383977784d6e872869e353e1d23b82cb94f57c123a2dc77","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(ra, p, c, dt, convention):\n    return None if convention == 'projected' and c == 0 else ra+(p/c if convention == 'projected' else p)*dt\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('projected motion', solve(N, 6, 0.5, 2, \"projected\"), N+24)\ncheck('raw motion', solve(N, 6, 0.5, 2, \"raw\"), N+12)\ncheck('singularity', solve(N, 6, 0, 2, \"projected\"), None)\ncheck('equatorial factor', solve(N, 6, 1, 2, \"projected\"), N+12)\ncheck('back propagation', solve(N, 6, 0.5, -1, \"projected\"), N-12)\ncheck('stationary', solve(N, 0, 0.5, 2, \"projected\"), N)\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":"Deterministic stipulated adapter model; no ephemeris, physical accuracy, or production astronomy library claims. 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":"z-astronomy-motion-component","generated_at":"2026-09-29T14:38:54.321742+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Astronomical catalog and observation adapters must preserve the declared coordinate convention across software boundaries.","repair":"Divide projected motion by the supplied projection factor and reject its singular zero.","root_cause":"A projected tangential component is mistaken for a coordinate derivative.","sha256":"8222d55a6b2b1b7b5cfac7aafb8ac911e1bf225567411f7980e5211b552cb06e","title":"A projected catalog motion is propagated as raw coordinate motion · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":39.673,"exit_code":1,"observations":[{"actual":7.0,"check":"projected motion","expected":25,"passed":false},{"actual":13,"check":"raw motion","expected":13,"passed":true},{"actual":null,"check":"singularity","expected":null,"passed":true},{"actual":13,"check":"equatorial factor","expected":13,"passed":true},{"actual":-2.0,"check":"back propagation","expected":-11,"passed":false},{"actual":1.0,"check":"stationary","expected":1,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"projected motion\", \"actual\": 7.0, \"expected\": 25, \"passed\": false}, {\"check\": \"raw motion\", \"actual\": 13, \"expected\": 13, \"passed\": true}, {\"check\": \"singularity\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"equatorial factor\", \"actual\": 13, \"expected\": 13, \"passed\": true}, {\"check\": \"back propagation\", \"actual\": -2.0, \"expected\": -11, \"passed\": false}, {\"check\": \"stationary\", \"actual\": 1.0, \"expected\": 1, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.452,"exit_code":1,"observations":[{"actual":13,"check":"projected motion","expected":25,"passed":false},{"actual":13,"check":"raw motion","expected":13,"passed":true},{"actual":13,"check":"singularity","expected":null,"passed":false},{"actual":13,"check":"equatorial factor","expected":13,"passed":true},{"actual":-5,"check":"back propagation","expected":-11,"passed":false},{"actual":1,"check":"stationary","expected":1,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"projected motion\", \"actual\": 13, \"expected\": 25, \"passed\": false}, {\"check\": \"raw motion\", \"actual\": 13, \"expected\": 13, \"passed\": true}, {\"check\": \"singularity\", \"actual\": 13, \"expected\": null, \"passed\": false}, {\"check\": \"equatorial factor\", \"actual\": 13, \"expected\": 13, \"passed\": true}, {\"check\": \"back propagation\", \"actual\": -5, \"expected\": -11, \"passed\": false}, {\"check\": \"stationary\", \"actual\": 1, \"expected\": 1, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":43.25,"exit_code":0,"observations":[{"actual":25.0,"check":"projected motion","expected":25,"passed":true},{"actual":13,"check":"raw motion","expected":13,"passed":true},{"actual":null,"check":"singularity","expected":null,"passed":true},{"actual":13.0,"check":"equatorial factor","expected":13,"passed":true},{"actual":-11.0,"check":"back propagation","expected":-11,"passed":true},{"actual":1.0,"check":"stationary","expected":1,"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"projected motion\", \"actual\": 25.0, \"expected\": 25, \"passed\": true}, {\"check\": \"raw motion\", \"actual\": 13, \"expected\": 13, \"passed\": true}, {\"check\": \"singularity\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"equatorial factor\", \"actual\": 13.0, \"expected\": 13, \"passed\": true}, {\"check\": \"back propagation\", \"actual\": -11.0, \"expected\": -11, \"passed\": true}, {\"check\": \"stationary\", \"actual\": 1.0, \"expected\": 1, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}