{"abstract":"A frame label is changed without transforming its coordinates.","category":"Astronomical coordinate conventions","checks":6,"contract":"Toy one-axis catalog adapter: transform offset maps source A to B; reverse mapping subtracts it; identical frames preserve x. Frames are A or B.","evaluation_group":"model-3bc6721645b9cc9c","failed_approach":"Applying the transform unconditionally moves coordinates already in the destination frame.","family":"z-astronomy-frame-label","id":"FA-12141","implementations":{"attempt":{"sha256":"c8dde28c42fa0567611180e79c8f54dd67ce25ceae44cb5811ef487f1c162b7a","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x, source, target, offset):\n    return [x + (offset if target == 'B' else -offset), target]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('forward', solve(N, \"A\", \"B\", 10), [N+10,\"B\"])\ncheck('reverse', solve(N, \"B\", \"A\", 10), [N-10,\"A\"])\ncheck('already B', solve(N, \"B\", \"B\", 10), [N,\"B\"])\ncheck('already A', solve(N, \"A\", \"A\", 10), [N,\"A\"])\ncheck('zero calibration', solve(N, \"A\", \"B\", 0), [N,\"B\"])\ncheck('negative calibration', solve(N, \"A\", \"B\", -3), [N-3,\"B\"])\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":"8491370aadf6becd548cb3cd927a178f4145d53410cacbdd3e1b232cd849bf8e","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x, source, target, offset):\n    return [x, target]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('forward', solve(N, \"A\", \"B\", 10), [N+10,\"B\"])\ncheck('reverse', solve(N, \"B\", \"A\", 10), [N-10,\"A\"])\ncheck('already B', solve(N, \"B\", \"B\", 10), [N,\"B\"])\ncheck('already A', solve(N, \"A\", \"A\", 10), [N,\"A\"])\ncheck('zero calibration', solve(N, \"A\", \"B\", 0), [N,\"B\"])\ncheck('negative calibration', solve(N, \"A\", \"B\", -3), [N-3,\"B\"])\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":"0feabb64b9a8e220278eadd44e867c7f68523e2c8489a977073c7a406b523328","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x, source, target, offset):\n    return [x if source == target else x + (offset if target == 'B' else -offset), target]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('forward', solve(N, \"A\", \"B\", 10), [N+10,\"B\"])\ncheck('reverse', solve(N, \"B\", \"A\", 10), [N-10,\"A\"])\ncheck('already B', solve(N, \"B\", \"B\", 10), [N,\"B\"])\ncheck('already A', solve(N, \"A\", \"A\", 10), [N,\"A\"])\ncheck('zero calibration', solve(N, \"A\", \"B\", 0), [N,\"B\"])\ncheck('negative calibration', solve(N, \"A\", \"B\", -3), [N-3,\"B\"])\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-frame-label","generated_at":"2026-09-29T14:38:54.287678+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":"Apply the transform only when the source and destination frame differ.","root_cause":"Relabeling substitutes for applying a supplied frame transform.","sha256":"4770aa6b1d8018766f00f62d0d97b00db2122059e8a967e44013559ec85bca1d","title":"A frame label is changed without transforming its coordinates · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":40.237,"exit_code":1,"observations":[{"actual":[11,"B"],"check":"forward","expected":[11,"B"],"passed":true},{"actual":[-9,"A"],"check":"reverse","expected":[-9,"A"],"passed":true},{"actual":[11,"B"],"check":"already B","expected":[1,"B"],"passed":false},{"actual":[-9,"A"],"check":"already A","expected":[1,"A"],"passed":false},{"actual":[1,"B"],"check":"zero calibration","expected":[1,"B"],"passed":true},{"actual":[-2,"B"],"check":"negative calibration","expected":[-2,"B"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"forward\", \"actual\": [11, \"B\"], \"expected\": [11, \"B\"], \"passed\": true}, {\"check\": \"reverse\", \"actual\": [-9, \"A\"], \"expected\": [-9, \"A\"], \"passed\": true}, {\"check\": \"already B\", \"actual\": [11, \"B\"], \"expected\": [1, \"B\"], \"passed\": false}, {\"check\": \"already A\", \"actual\": [-9, \"A\"], \"expected\": [1, \"A\"], \"passed\": false}, {\"check\": \"zero calibration\", \"actual\": [1, \"B\"], \"expected\": [1, \"B\"], \"passed\": true}, {\"check\": \"negative calibration\", \"actual\": [-2, \"B\"], \"expected\": [-2, \"B\"], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.618,"exit_code":1,"observations":[{"actual":[1,"B"],"check":"forward","expected":[11,"B"],"passed":false},{"actual":[1,"A"],"check":"reverse","expected":[-9,"A"],"passed":false},{"actual":[1,"B"],"check":"already B","expected":[1,"B"],"passed":true},{"actual":[1,"A"],"check":"already A","expected":[1,"A"],"passed":true},{"actual":[1,"B"],"check":"zero calibration","expected":[1,"B"],"passed":true},{"actual":[1,"B"],"check":"negative calibration","expected":[-2,"B"],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"forward\", \"actual\": [1, \"B\"], \"expected\": [11, \"B\"], \"passed\": false}, {\"check\": \"reverse\", \"actual\": [1, \"A\"], \"expected\": [-9, \"A\"], \"passed\": false}, {\"check\": \"already B\", \"actual\": [1, \"B\"], \"expected\": [1, \"B\"], \"passed\": true}, {\"check\": \"already A\", \"actual\": [1, \"A\"], \"expected\": [1, \"A\"], \"passed\": true}, {\"check\": \"zero calibration\", \"actual\": [1, \"B\"], \"expected\": [1, \"B\"], \"passed\": true}, {\"check\": \"negative calibration\", \"actual\": [1, \"B\"], \"expected\": [-2, \"B\"], \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":40.06,"exit_code":0,"observations":[{"actual":[11,"B"],"check":"forward","expected":[11,"B"],"passed":true},{"actual":[-9,"A"],"check":"reverse","expected":[-9,"A"],"passed":true},{"actual":[1,"B"],"check":"already B","expected":[1,"B"],"passed":true},{"actual":[1,"A"],"check":"already A","expected":[1,"A"],"passed":true},{"actual":[1,"B"],"check":"zero calibration","expected":[1,"B"],"passed":true},{"actual":[-2,"B"],"check":"negative calibration","expected":[-2,"B"],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"forward\", \"actual\": [11, \"B\"], \"expected\": [11, \"B\"], \"passed\": true}, {\"check\": \"reverse\", \"actual\": [-9, \"A\"], \"expected\": [-9, \"A\"], \"passed\": true}, {\"check\": \"already B\", \"actual\": [1, \"B\"], \"expected\": [1, \"B\"], \"passed\": true}, {\"check\": \"already A\", \"actual\": [1, \"A\"], \"expected\": [1, \"A\"], \"passed\": true}, {\"check\": \"zero calibration\", \"actual\": [1, \"B\"], \"expected\": [1, \"B\"], \"passed\": true}, {\"check\": \"negative calibration\", \"actual\": [-2, \"B\"], \"expected\": [-2, \"B\"], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}