{"abstract":"Millisecond values are assigned as seconds.","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.","evaluation_group":"xt-schema-migration","failed_approach":"The attempted repair substitutes result['timeout_ms'] // 1000. Fixture 2 still yields {'timeout': 1, 'schema': 2} instead of {'timeout': 1.5, 'schema': 2}.","family":"xt-schema-migration-unit-conversion","id":"FA-9816","implementations":{"attempt":{"sha256":"c1340b44d6ca9327658a8fb44a3edc9f8d1db886726a0ae1580b029302bc3e9b","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' not 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":"2dec0c7b13f513fdd0900865f88b8c5a05b043a85959cedfe8819ddc57a7d2a5","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' not in result and 'timeout_ms' in result:\n        result['timeout'] = result['timeout_ms']\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"},"fixed":{"sha256":"b93781a57f210205aec15a5a5b156f6439925765d0b02c1bbd2455707a45094a","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' not 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"}},"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-unit-conversion","generated_at":"2026-09-29T14:38:33.366398+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.","repair":"Convert units with fractional seconds preserved.","root_cause":"The implementation substitutes result['timeout_ms'] for result['timeout_ms'] / 1000, so millisecond values are assigned as seconds.","sha256":"c66c8b0ea96e53ef8ceb89ddd13192b860ddcae0be88bc1754a50acfce28b4ed","title":"Configuration schema upgrade: Millisecond values are assigned as seconds · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":41.509,"exit_code":1,"observations":[{"actual":{"schema":2},"check":"fixture 1","expected":{"schema":2},"passed":true},{"actual":{"schema":2,"timeout":1},"check":"fixture 2","expected":{"schema":2,"timeout":1.5},"passed":false},{"actual":{"schema":2,"timeout":0},"check":"fixture 3","expected":{"schema":2,"timeout":0.0},"passed":true},{"actual":{"schema":2,"timeout":9},"check":"fixture 4","expected":{"schema":2,"timeout":9},"passed":true},{"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, \"schema\": 2}, \"expected\": {\"timeout\": 1.5, \"schema\": 2}, \"passed\": false}, {\"check\": \"fixture 3\", \"actual\": {\"timeout\": 0, \"schema\": 2}, \"expected\": {\"timeout\": 0.0, \"schema\": 2}, \"passed\": true}, {\"check\": \"fixture 4\", \"actual\": {\"timeout\": 9, \"schema\": 2}, \"expected\": {\"timeout\": 9, \"schema\": 2}, \"passed\": true}, {\"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.823,"exit_code":1,"observations":[{"actual":{"schema":2},"check":"fixture 1","expected":{"schema":2},"passed":true},{"actual":{"schema":2,"timeout":1500},"check":"fixture 2","expected":{"schema":2,"timeout":1.5},"passed":false},{"actual":{"schema":2,"timeout":0},"check":"fixture 3","expected":{"schema":2,"timeout":0.0},"passed":true},{"actual":{"schema":2,"timeout":9},"check":"fixture 4","expected":{"schema":2,"timeout":9},"passed":true},{"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\": 1500, \"schema\": 2}, \"expected\": {\"timeout\": 1.5, \"schema\": 2}, \"passed\": false}, {\"check\": \"fixture 3\", \"actual\": {\"timeout\": 0, \"schema\": 2}, \"expected\": {\"timeout\": 0.0, \"schema\": 2}, \"passed\": true}, {\"check\": \"fixture 4\", \"actual\": {\"timeout\": 9, \"schema\": 2}, \"expected\": {\"timeout\": 9, \"schema\": 2}, \"passed\": true}, {\"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"},"fixed":{"elapsed_ms":39.862,"exit_code":0,"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":9},"check":"fixture 4","expected":{"schema":2,"timeout":9},"passed":true},{"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":true,"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\": 9, \"schema\": 2}, \"expected\": {\"timeout\": 9, \"schema\": 2}, \"passed\": true}, {\"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\": true}\n"}},"verified":true,"visibility":"public"}