{"abstract":"Binding a texture replaces the complete texture-unit map.","category":"Rendering state","checks":4,"contract":"Texture units are string keys. Bind one texture ID or None to the selected unit while retaining all other bindings.","contract_signature":"bindings, unit, texture","evaluation_group":"xg-texture-unit-binding-isolation","failed_approach":"Broadcasting the new texture changes unrelated units and fails to add a new unit.","family":"xg-texture-unit-binding-isolation","id":"FA-10711","implementations":{"attempt":{"sha256":"e2fa84fd708f38d464f9fbc0ca652fa9c28e6b30a4080d260eac400f601c9376","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(bindings, unit, texture):\n    return {k:texture for k in bindings}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('fixture 1', solve(*({'0': 'a', '1': 'b'}, '0', 'c')), {'0': 'c', '1': 'b'})\ncheck('fixture 2', solve(*({}, '2', 'x')), {'2': 'x'})\ncheck('fixture 3', solve(*({'0': 'a'}, '1', None)), {'0': 'a', '1': None})\ncheck('fixture 4', solve(*({'0': 'a'}, '0', 'a')), {'0': 'a'})\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":"4d45056df8738bc1e947438a3e7d9814fa37845fc2be5415b5068f7b36626abe","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(bindings, unit, texture):\n    return {unit:texture}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('fixture 1', solve(*({'0': 'a', '1': 'b'}, '0', 'c')), {'0': 'c', '1': 'b'})\ncheck('fixture 2', solve(*({}, '2', 'x')), {'2': 'x'})\ncheck('fixture 3', solve(*({'0': 'a'}, '1', None)), {'0': 'a', '1': None})\ncheck('fixture 4', solve(*({'0': 'a'}, '0', 'a')), {'0': 'a'})\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":"xg-texture-unit-binding-isolation","generated_at":"2026-09-29T14:38:41.547983+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"A deterministic software graphics stage with explicit channel and coordinate conventions; no hardware, device profile or API behavior is inferred.","root_cause":"Binding a texture replaces the complete texture-unit map.","sha256":"4e6539823627074c97631dc47ea59236237d50543765a1f1b83e44f0dff807e5","title":"Texture unit binding isolation · 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":43.11,"exit_code":1,"observations":[{"actual":{"0":"c","1":"c"},"check":"fixture 1","expected":{"0":"c","1":"b"},"passed":false},{"actual":{},"check":"fixture 2","expected":{"2":"x"},"passed":false},{"actual":{"0":null},"check":"fixture 3","expected":{"0":"a","1":null},"passed":false},{"actual":{"0":"a"},"check":"fixture 4","expected":{"0":"a"},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"fixture 1\", \"actual\": {\"0\": \"c\", \"1\": \"c\"}, \"expected\": {\"0\": \"c\", \"1\": \"b\"}, \"passed\": false}, {\"check\": \"fixture 2\", \"actual\": {}, \"expected\": {\"2\": \"x\"}, \"passed\": false}, {\"check\": \"fixture 3\", \"actual\": {\"0\": null}, \"expected\": {\"0\": \"a\", \"1\": null}, \"passed\": false}, {\"check\": \"fixture 4\", \"actual\": {\"0\": \"a\"}, \"expected\": {\"0\": \"a\"}, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.811,"exit_code":1,"observations":[{"actual":{"0":"c"},"check":"fixture 1","expected":{"0":"c","1":"b"},"passed":false},{"actual":{"2":"x"},"check":"fixture 2","expected":{"2":"x"},"passed":true},{"actual":{"1":null},"check":"fixture 3","expected":{"0":"a","1":null},"passed":false},{"actual":{"0":"a"},"check":"fixture 4","expected":{"0":"a"},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"fixture 1\", \"actual\": {\"0\": \"c\"}, \"expected\": {\"0\": \"c\", \"1\": \"b\"}, \"passed\": false}, {\"check\": \"fixture 2\", \"actual\": {\"2\": \"x\"}, \"expected\": {\"2\": \"x\"}, \"passed\": true}, {\"check\": \"fixture 3\", \"actual\": {\"1\": null}, \"expected\": {\"0\": \"a\", \"1\": null}, \"passed\": false}, {\"check\": \"fixture 4\", \"actual\": {\"0\": \"a\"}, \"expected\": {\"0\": \"a\"}, \"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."}}