{"abstract":"Calls object.__getattribute__ directly and bypasses __getattr__ fallback and changes the required Python-language result.","category":"Descriptor lookup","checks":4,"contract":"Read attributes normally: instance attributes override plain class values; __getattr__ supplies missing:name only after AttributeError, including AttributeError from a property getter. 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-getattr-fallback","failed_approach":"The alternative still fails because it looks only in the instance dictionary and skips class descriptors.","family":"xl-getattr-fallback-object-lookup-skips-fallback","id":"FA-5011","implementations":{"attempt":{"sha256":"bfdd0b2d3dd326d09990a074b7d9da76e6d866141fd4b4a72274ec7c92d37dc7","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(values, names):\n    class C:\n        present='class-value'\n        @property\n        def trouble(self):\n            raise AttributeError('getter failed')\n        def __getattr__(self,name):\n            return 'missing:'+name\n    c=C(); c.__dict__.update(values)\n    out=[]\n    for name in names:\n        try: out.append(c.__dict__.get(name,'missing:'+name))\n        except Exception as exc: out.append(type(exc).__name__)\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('existing class and missing', solve({}, ['present', 'other']), ['class-value', 'missing:other'])\ncheck('instance override', solve({'present': 0}, ['present']), [0])\ncheck('property AttributeError falls back', solve({}, ['trouble']), ['missing:trouble'])\ncheck('stored None is present', solve({'other': None}, ['other', 'absent']), [None, 'missing:absent'])\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":"02267a5c112d5a23a2d53753858141abe36f09a8992ef3f45aee425fd558c610","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(values, names):\n    class C:\n        present='class-value'\n        @property\n        def trouble(self):\n            raise AttributeError('getter failed')\n        def __getattr__(self,name):\n            return 'missing:'+name\n    c=C(); c.__dict__.update(values)\n    out=[]\n    for name in names:\n        try: out.append(object.__getattribute__(c,name))\n        except Exception as exc: out.append(type(exc).__name__)\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('existing class and missing', solve({}, ['present', 'other']), ['class-value', 'missing:other'])\ncheck('instance override', solve({'present': 0}, ['present']), [0])\ncheck('property AttributeError falls back', solve({}, ['trouble']), ['missing:trouble'])\ncheck('stored None is present', solve({'other': None}, ['other', 'absent']), [None, 'missing:absent'])\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":"daf8bbfad47d494e507e263e1c2c755301ceb7f00533587abcc6861b0942c8a2","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(values, names):\n    class C:\n        present='class-value'\n        @property\n        def trouble(self):\n            raise AttributeError('getter failed')\n        def __getattr__(self,name):\n            return 'missing:'+name\n    c=C(); c.__dict__.update(values)\n    out=[]\n    for name in names:\n        try: out.append(getattr(c,name))\n        except Exception as exc: out.append(type(exc).__name__)\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('existing class and missing', solve({}, ['present', 'other']), ['class-value', 'missing:other'])\ncheck('instance override', solve({'present': 0}, ['present']), [0])\ncheck('property AttributeError falls back', solve({}, ['trouble']), ['missing:trouble'])\ncheck('stored None is present', solve({'other': None}, ['other', 'absent']), [None, 'missing:absent'])\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-getattr-fallback-object-lookup-skips-fallback","generated_at":"2026-09-29T14:37:45.181086+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":"Read attributes normally: instance attributes override plain class values; __getattr__ supplies missing:name only after AttributeError, including AttributeError from a property getter.","root_cause":"Calls object.__getattribute__ directly and bypasses __getattr__ fallback. The executable reproducer isolates this operation from the rest of the contract.","sha256":"e7c28c94e0cd7d093a239c2f14632cc19e6d0e678d570692a799890cda1075e5","title":"Getattr fallback: Calls object.__getattribute__ directly and bypasses __getattr__ fallback · 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":40.839,"exit_code":1,"observations":[{"actual":["missing:present","missing:other"],"check":"existing class and missing","expected":["class-value","missing:other"],"passed":false},{"actual":[0],"check":"instance override","expected":[0],"passed":true},{"actual":["missing:trouble"],"check":"property AttributeError falls back","expected":["missing:trouble"],"passed":true},{"actual":[null,"missing:absent"],"check":"stored None is present","expected":[null,"missing:absent"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"existing class and missing\", \"actual\": [\"missing:present\", \"missing:other\"], \"expected\": [\"class-value\", \"missing:other\"], \"passed\": false}, {\"check\": \"instance override\", \"actual\": [0], \"expected\": [0], \"passed\": true}, {\"check\": \"property AttributeError falls back\", \"actual\": [\"missing:trouble\"], \"expected\": [\"missing:trouble\"], \"passed\": true}, {\"check\": \"stored None is present\", \"actual\": [null, \"missing:absent\"], \"expected\": [null, \"missing:absent\"], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":34.927,"exit_code":1,"observations":[{"actual":["class-value","AttributeError"],"check":"existing class and missing","expected":["class-value","missing:other"],"passed":false},{"actual":[0],"check":"instance override","expected":[0],"passed":true},{"actual":["AttributeError"],"check":"property AttributeError falls back","expected":["missing:trouble"],"passed":false},{"actual":[null,"AttributeError"],"check":"stored None is present","expected":[null,"missing:absent"],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"existing class and missing\", \"actual\": [\"class-value\", \"AttributeError\"], \"expected\": [\"class-value\", \"missing:other\"], \"passed\": false}, {\"check\": \"instance override\", \"actual\": [0], \"expected\": [0], \"passed\": true}, {\"check\": \"property AttributeError falls back\", \"actual\": [\"AttributeError\"], \"expected\": [\"missing:trouble\"], \"passed\": false}, {\"check\": \"stored None is present\", \"actual\": [null, \"AttributeError\"], \"expected\": [null, \"missing:absent\"], \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":114.801,"exit_code":0,"observations":[{"actual":["class-value","missing:other"],"check":"existing class and missing","expected":["class-value","missing:other"],"passed":true},{"actual":[0],"check":"instance override","expected":[0],"passed":true},{"actual":["missing:trouble"],"check":"property AttributeError falls back","expected":["missing:trouble"],"passed":true},{"actual":[null,"missing:absent"],"check":"stored None is present","expected":[null,"missing:absent"],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"existing class and missing\", \"actual\": [\"class-value\", \"missing:other\"], \"expected\": [\"class-value\", \"missing:other\"], \"passed\": true}, {\"check\": \"instance override\", \"actual\": [0], \"expected\": [0], \"passed\": true}, {\"check\": \"property AttributeError falls back\", \"actual\": [\"missing:trouble\"], \"expected\": [\"missing:trouble\"], \"passed\": true}, {\"check\": \"stored None is present\", \"actual\": [null, \"missing:absent\"], \"expected\": [null, \"missing:absent\"], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}