{"abstract":"Coerces non-string unpacked keyword names into strings and changes the required Python-language result.","category":"Call argument binding","checks":7,"contract":"Invoke f(**left, **right), returning ordered keyword pairs. Reject any duplicate keyword across mappings even when values agree; keys must be strings. Inputs use the finite Python types shown in the fixtures. An error string denotes the specified caught exception, not an unhandled process failure.","evaluation_group":"xl-keyword-unpacking-collisions","failed_approach":"The alternative still fails because it rejects an empty string although variadic keywords accept it.","family":"xl-keyword-unpacking-collisions-coerced-keyword-names","id":"FA-4941","implementations":{"attempt":{"sha256":"dc992ef595b60c3352429bc24dd0826127c6cc19567fb1bada5cd71e0a2f154a","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(left, right):\n    if \"\" in left or \"\" in right: return \"TypeError\"\n    def f(**kw): return [[k,v] for k,v in kw.items()]\n    try: return f(**left, **right)\n    except TypeError: return \"TypeError\"\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('duplicate equal rejected', solve({'a': 1}, {'a': 1}), 'TypeError')\ncheck('duplicate different rejected', solve({'a': 1}, {'a': 2}), 'TypeError')\ncheck('integer key rejected', solve({1: 'v'}, {}), 'TypeError')\ncheck('empty name legal', solve({'': 2}, {}), [['', 2]])\ncheck('hyphenated name legal', solve({'a-b': 3}, {}), [['a-b', 3]])\ncheck('left then right order', solve({'z': 1}, {'a': 2}), [['z', 1], ['a', 2]])\ncheck('empty expansions', solve({}, {}), [])\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":"14175c64efb5eef1c840ffde8488b61656bc884a55c3a8408144030d2a487878","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(left, right):\n    def f(**kw): return [[k,v] for k,v in kw.items()]\n    try: return f(**{str(k):v for k,v in left.items()},**{str(k):v for k,v in right.items()})\n    except TypeError: return \"TypeError\"\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('duplicate equal rejected', solve({'a': 1}, {'a': 1}), 'TypeError')\ncheck('duplicate different rejected', solve({'a': 1}, {'a': 2}), 'TypeError')\ncheck('integer key rejected', solve({1: 'v'}, {}), 'TypeError')\ncheck('empty name legal', solve({'': 2}, {}), [['', 2]])\ncheck('hyphenated name legal', solve({'a-b': 3}, {}), [['a-b', 3]])\ncheck('left then right order', solve({'z': 1}, {'a': 2}), [['z', 1], ['a', 2]])\ncheck('empty expansions', solve({}, {}), [])\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":"66403a424f3d7bcbea36c1325f0130ea8ab28a2ffb7d260e9291010cf9b47f8a","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(left, right):\n    def f(**kw): return [[k,v] for k,v in kw.items()]\n    try: return f(**left, **right)\n    except TypeError: return \"TypeError\"\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('duplicate equal rejected', solve({'a': 1}, {'a': 1}), 'TypeError')\ncheck('duplicate different rejected', solve({'a': 1}, {'a': 2}), 'TypeError')\ncheck('integer key rejected', solve({1: 'v'}, {}), 'TypeError')\ncheck('empty name legal', solve({'': 2}, {}), [['', 2]])\ncheck('hyphenated name legal', solve({'a-b': 3}, {}), [['a-b', 3]])\ncheck('left then right order', solve({'z': 1}, {'a': 2}), [['z', 1], ['a', 2]])\ncheck('empty expansions', solve({}, {}), [])\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":"xl-keyword-unpacking-collisions-coerced-keyword-names","generated_at":"2026-09-29T14:37:44.322520+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Runs Python standard-library language operations in a deterministic local reproducer. Literal expected answers are authored independently. Related defects share an evaluation group to avoid benchmark split leakage.","repair":"Invoke f(**left, **right), returning ordered keyword pairs. Reject any duplicate keyword across mappings even when values agree; keys must be strings.","root_cause":"Coerces non-string unpacked keyword names into strings. The executable reproducer isolates this operation from the rest of the contract.","sha256":"f1d4944c2a5ad0ffd67d8008d572610dff476a07735d11a8bd7905b538241a69","title":"Keyword unpacking collisions: Coerces non-string unpacked keyword names into strings · case 01","variant":1,"variant_policy":"The five numbered cases rerun the same authored boundary fixtures; they are reproducibility runs, not independent input variants.","verification":{"attempt":{"elapsed_ms":38.797,"exit_code":1,"observations":[{"actual":"TypeError","check":"duplicate equal rejected","expected":"TypeError","passed":true},{"actual":"TypeError","check":"duplicate different rejected","expected":"TypeError","passed":true},{"actual":"TypeError","check":"integer key rejected","expected":"TypeError","passed":true},{"actual":"TypeError","check":"empty name legal","expected":[["",2]],"passed":false},{"actual":[["a-b",3]],"check":"hyphenated name legal","expected":[["a-b",3]],"passed":true},{"actual":[["z",1],["a",2]],"check":"left then right order","expected":[["z",1],["a",2]],"passed":true},{"actual":[],"check":"empty expansions","expected":[],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"duplicate equal rejected\", \"actual\": \"TypeError\", \"expected\": \"TypeError\", \"passed\": true}, {\"check\": \"duplicate different rejected\", \"actual\": \"TypeError\", \"expected\": \"TypeError\", \"passed\": true}, {\"check\": \"integer key rejected\", \"actual\": \"TypeError\", \"expected\": \"TypeError\", \"passed\": true}, {\"check\": \"empty name legal\", \"actual\": \"TypeError\", \"expected\": [[\"\", 2]], \"passed\": false}, {\"check\": \"hyphenated name legal\", \"actual\": [[\"a-b\", 3]], \"expected\": [[\"a-b\", 3]], \"passed\": true}, {\"check\": \"left then right order\", \"actual\": [[\"z\", 1], [\"a\", 2]], \"expected\": [[\"z\", 1], [\"a\", 2]], \"passed\": true}, {\"check\": \"empty expansions\", \"actual\": [], \"expected\": [], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":38.272,"exit_code":1,"observations":[{"actual":"TypeError","check":"duplicate equal rejected","expected":"TypeError","passed":true},{"actual":"TypeError","check":"duplicate different rejected","expected":"TypeError","passed":true},{"actual":[["1","v"]],"check":"integer key rejected","expected":"TypeError","passed":false},{"actual":[["",2]],"check":"empty name legal","expected":[["",2]],"passed":true},{"actual":[["a-b",3]],"check":"hyphenated name legal","expected":[["a-b",3]],"passed":true},{"actual":[["z",1],["a",2]],"check":"left then right order","expected":[["z",1],["a",2]],"passed":true},{"actual":[],"check":"empty expansions","expected":[],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"duplicate equal rejected\", \"actual\": \"TypeError\", \"expected\": \"TypeError\", \"passed\": true}, {\"check\": \"duplicate different rejected\", \"actual\": \"TypeError\", \"expected\": \"TypeError\", \"passed\": true}, {\"check\": \"integer key rejected\", \"actual\": [[\"1\", \"v\"]], \"expected\": \"TypeError\", \"passed\": false}, {\"check\": \"empty name legal\", \"actual\": [[\"\", 2]], \"expected\": [[\"\", 2]], \"passed\": true}, {\"check\": \"hyphenated name legal\", \"actual\": [[\"a-b\", 3]], \"expected\": [[\"a-b\", 3]], \"passed\": true}, {\"check\": \"left then right order\", \"actual\": [[\"z\", 1], [\"a\", 2]], \"expected\": [[\"z\", 1], [\"a\", 2]], \"passed\": true}, {\"check\": \"empty expansions\", \"actual\": [], \"expected\": [], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":40.416,"exit_code":0,"observations":[{"actual":"TypeError","check":"duplicate equal rejected","expected":"TypeError","passed":true},{"actual":"TypeError","check":"duplicate different rejected","expected":"TypeError","passed":true},{"actual":"TypeError","check":"integer key rejected","expected":"TypeError","passed":true},{"actual":[["",2]],"check":"empty name legal","expected":[["",2]],"passed":true},{"actual":[["a-b",3]],"check":"hyphenated name legal","expected":[["a-b",3]],"passed":true},{"actual":[["z",1],["a",2]],"check":"left then right order","expected":[["z",1],["a",2]],"passed":true},{"actual":[],"check":"empty expansions","expected":[],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"duplicate equal rejected\", \"actual\": \"TypeError\", \"expected\": \"TypeError\", \"passed\": true}, {\"check\": \"duplicate different rejected\", \"actual\": \"TypeError\", \"expected\": \"TypeError\", \"passed\": true}, {\"check\": \"integer key rejected\", \"actual\": \"TypeError\", \"expected\": \"TypeError\", \"passed\": true}, {\"check\": \"empty name legal\", \"actual\": [[\"\", 2]], \"expected\": [[\"\", 2]], \"passed\": true}, {\"check\": \"hyphenated name legal\", \"actual\": [[\"a-b\", 3]], \"expected\": [[\"a-b\", 3]], \"passed\": true}, {\"check\": \"left then right order\", \"actual\": [[\"z\", 1], [\"a\", 2]], \"expected\": [[\"z\", 1], [\"a\", 2]], \"passed\": true}, {\"check\": \"empty expansions\", \"actual\": [], \"expected\": [], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}