{"abstract":"Legacy fields override canonical values.","category":"Configuration","checks":6,"contract":"Rename timeout_ms to timeout only when new key is absent, remove deprecated timeout_ms, add schema version, preserve unknown settings, and scale legacy milliseconds to seconds.","contract_signature":"config","evaluation_group":"xt-schema-migration","failed_approach":"The attempted repair substitutes 'timeout' in result and 'timeout_ms' in result. Fixture 2 still yields {'schema': 2} instead of {'timeout': 1.5, 'schema': 2}.","family":"xt-schema-migration-new-name-priority","id":"FA-9811","implementations":{"attempt":{"sha256":"255975a2c48f9567546208a68d3837babfc1e044d8eeca473e7c9328dcadb044","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(config):\n    result = dict(config)\n    if 'timeout' in result and 'timeout_ms' in result:\n        result['timeout'] = result['timeout_ms'] / 1000\n    result.pop('timeout_ms', None)\n    result['schema'] = 2\n    return result\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('fixture 1', solve({}), {'schema': 2})\ncheck('fixture 2', solve({'timeout_ms': 1500}), {'timeout': 1.5, 'schema': 2})\ncheck('fixture 3', solve({'timeout_ms': 0}), {'timeout': 0.0, 'schema': 2})\ncheck('fixture 4', solve({'timeout_ms': 1500, 'timeout': 9}), {'timeout': 9, 'schema': 2})\ncheck('fixture 5', solve({'other': 3}), {'other': 3, 'schema': 2})\ncheck('fixture 6', solve({'schema': 1, 'timeout': 2}), {'schema': 2, 'timeout': 2})\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":"e59815d432b03303bd7c3966dc133004d6ada4ff9539db812c815759b966170c","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(config):\n    result = dict(config)\n    if 'timeout_ms' in result:\n        result['timeout'] = result['timeout_ms'] / 1000\n    result.pop('timeout_ms', None)\n    result['schema'] = 2\n    return result\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('fixture 1', solve({}), {'schema': 2})\ncheck('fixture 2', solve({'timeout_ms': 1500}), {'timeout': 1.5, 'schema': 2})\ncheck('fixture 3', solve({'timeout_ms': 0}), {'timeout': 0.0, 'schema': 2})\ncheck('fixture 4', solve({'timeout_ms': 1500, 'timeout': 9}), {'timeout': 9, 'schema': 2})\ncheck('fixture 5', solve({'other': 3}), {'other': 3, 'schema': 2})\ncheck('fixture 6', solve({'schema': 1, 'timeout': 2}), {'schema': 2, 'timeout': 2})\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":" 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":"xt-schema-migration-new-name-priority","generated_at":"2026-09-29T14:38:33.500618+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"An offline model of configuration schema upgrade, suitable for testing build and release tooling without external services.","root_cause":"The implementation substitutes 'timeout_ms' in result for 'timeout' not in result and 'timeout_ms' in result, so legacy fields override canonical values.","sha256":"f6c722f5de1fc31eb33868372f710fcd3fc2237d2e42892ee66f583e54ce41c3","title":"Configuration schema upgrade: Legacy fields override canonical values · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":40.451,"exit_code":1,"observations":[{"actual":{"schema":2},"check":"fixture 1","expected":{"schema":2},"passed":true},{"actual":{"schema":2},"check":"fixture 2","expected":{"schema":2,"timeout":1.5},"passed":false},{"actual":{"schema":2},"check":"fixture 3","expected":{"schema":2,"timeout":0.0},"passed":false},{"actual":{"schema":2,"timeout":1.5},"check":"fixture 4","expected":{"schema":2,"timeout":9},"passed":false},{"actual":{"other":3,"schema":2},"check":"fixture 5","expected":{"other":3,"schema":2},"passed":true},{"actual":{"schema":2,"timeout":2},"check":"fixture 6","expected":{"schema":2,"timeout":2},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"fixture 1\", \"actual\": {\"schema\": 2}, \"expected\": {\"schema\": 2}, \"passed\": true}, {\"check\": \"fixture 2\", \"actual\": {\"schema\": 2}, \"expected\": {\"timeout\": 1.5, \"schema\": 2}, \"passed\": false}, {\"check\": \"fixture 3\", \"actual\": {\"schema\": 2}, \"expected\": {\"timeout\": 0.0, \"schema\": 2}, \"passed\": false}, {\"check\": \"fixture 4\", \"actual\": {\"timeout\": 1.5, \"schema\": 2}, \"expected\": {\"timeout\": 9, \"schema\": 2}, \"passed\": false}, {\"check\": \"fixture 5\", \"actual\": {\"other\": 3, \"schema\": 2}, \"expected\": {\"other\": 3, \"schema\": 2}, \"passed\": true}, {\"check\": \"fixture 6\", \"actual\": {\"schema\": 2, \"timeout\": 2}, \"expected\": {\"schema\": 2, \"timeout\": 2}, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":37.934,"exit_code":1,"observations":[{"actual":{"schema":2},"check":"fixture 1","expected":{"schema":2},"passed":true},{"actual":{"schema":2,"timeout":1.5},"check":"fixture 2","expected":{"schema":2,"timeout":1.5},"passed":true},{"actual":{"schema":2,"timeout":0.0},"check":"fixture 3","expected":{"schema":2,"timeout":0.0},"passed":true},{"actual":{"schema":2,"timeout":1.5},"check":"fixture 4","expected":{"schema":2,"timeout":9},"passed":false},{"actual":{"other":3,"schema":2},"check":"fixture 5","expected":{"other":3,"schema":2},"passed":true},{"actual":{"schema":2,"timeout":2},"check":"fixture 6","expected":{"schema":2,"timeout":2},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"fixture 1\", \"actual\": {\"schema\": 2}, \"expected\": {\"schema\": 2}, \"passed\": true}, {\"check\": \"fixture 2\", \"actual\": {\"timeout\": 1.5, \"schema\": 2}, \"expected\": {\"timeout\": 1.5, \"schema\": 2}, \"passed\": true}, {\"check\": \"fixture 3\", \"actual\": {\"timeout\": 0.0, \"schema\": 2}, \"expected\": {\"timeout\": 0.0, \"schema\": 2}, \"passed\": true}, {\"check\": \"fixture 4\", \"actual\": {\"timeout\": 1.5, \"schema\": 2}, \"expected\": {\"timeout\": 9, \"schema\": 2}, \"passed\": false}, {\"check\": \"fixture 5\", \"actual\": {\"other\": 3, \"schema\": 2}, \"expected\": {\"other\": 3, \"schema\": 2}, \"passed\": true}, {\"check\": \"fixture 6\", \"actual\": {\"schema\": 2, \"timeout\": 2}, \"expected\": {\"schema\": 2, \"timeout\": 2}, \"passed\": true}], \"passed\": false}\n"}},"member_only":{"stages":["fixed"],"fields":["implementations.fixed","verification.fixed","harness","repair"],"note":"The verified repair, its recorded checks, the repair description, and the scoring harness are available to members."}}