{"abstract":"Requires unpacked keyword names to be lexical identifiers 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 merges mappings before call binding and overwrites duplicate keywords.","family":"xl-keyword-unpacking-collisions-identifier-only-names","id":"FA-4951","implementations":{"attempt":{"sha256":"3c6f1bbe33534527c1217e5ec2a1a3e455c827cca6ba42534d2fb4ad31f7457a","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"},"broken":{"sha256":"d00eda7241bd760beded30ad7990810db02e0eecd0ebc2fe6237a14730c0896a","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(left, right):\n    if any(not isinstance(k,str) or not k.isidentifier() for k in list(left)+list(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"},"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-identifier-only-names","generated_at":"2026-09-29T14:37:44.451484+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":"Requires unpacked keyword names to be lexical identifiers. The executable reproducer isolates this operation from the rest of the contract.","sha256":"a0ea9ff9690173ac9471cce8dc47a032aac8fdde0a8b0af5a25094681b8e957b","title":"Keyword unpacking collisions: Requires unpacked keyword names to be lexical identifiers · 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":42.321,"exit_code":1,"observations":[{"actual":[["a",1]],"check":"duplicate equal rejected","expected":"TypeError","passed":false},{"actual":[["a",2]],"check":"duplicate different rejected","expected":"TypeError","passed":false},{"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":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"duplicate equal rejected\", \"actual\": [[\"a\", 1]], \"expected\": \"TypeError\", \"passed\": false}, {\"check\": \"duplicate different rejected\", \"actual\": [[\"a\", 2]], \"expected\": \"TypeError\", \"passed\": false}, {\"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\": false}\n"},"broken":{"elapsed_ms":38.112,"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":"TypeError","check":"hyphenated name legal","expected":[["a-b",3]],"passed":false},{"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\": \"TypeError\", \"expected\": [[\"a-b\", 3]], \"passed\": false}, {\"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":124.24,"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"}