{"abstract":"An explicit empty aria-label falls back to unrelated text.","category":"Assistive semantics","checks":8,"contract":"Resolve existing labelledby references in order, including explicit empty labels; then aria-label, native label, and visible content; explicit labels take precedence over fallback content.","evaluation_group":"xi-accessible-name","failed_approach":"Checking only absence discards supplied aria-labels.","family":"xi-accessible-name-aria-empty","id":"FA-8436","implementations":{"attempt":{"sha256":"d6f4ce047933d8700c17435f4b187c8f42e308c8913b3094e113d3fb7503f5e4","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(labelledby, nodes, aria_label, native_label, content, hidden):\n    referenced = [nodes[x] for x in labelledby if x in nodes]\n    if referenced: return ' '.join(referenced)\n    if aria_label is None: return aria_label\n    if native_label is not None: return native_label\n    if hidden: return ''\n    return content\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('reference order', solve(['z','a'], {'z':'Zulu','a':'Alpha'}, 'fallback', 'native', 'body', False), 'Zulu Alpha')\ncheck('aria empty', solve([], {}, '', 'native', 'body', False), '')\ncheck('native empty', solve([], {}, None, '', 'body', False), '')\ncheck('hidden', solve([], {}, None, None, 'secret', True), '')\ncheck('visible', solve([], {}, None, None, 'visible', False), 'visible')\ncheck('empty reference', solve(['missing','empty'], {'empty':''}, 'fallback', None, 'body', False), '')\ncheck('parameterized label content', solve([], {}, 'label'+str(N), None, 'body', False), 'label'+str(N))\nfor repetition in range(N):\n    check('repeat empty reference', solve(['missing','empty'], {'empty':''}, 'fallback', None, 'body', False), '')\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":"e953b0693538d6e1d1261a2a6f306585b819aeec1e0fdf26900962875e1b1a93","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(labelledby, nodes, aria_label, native_label, content, hidden):\n    referenced = [nodes[x] for x in labelledby if x in nodes]\n    if referenced: return ' '.join(referenced)\n    if aria_label: return aria_label\n    if native_label is not None: return native_label\n    if hidden: return ''\n    return content\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('reference order', solve(['z','a'], {'z':'Zulu','a':'Alpha'}, 'fallback', 'native', 'body', False), 'Zulu Alpha')\ncheck('aria empty', solve([], {}, '', 'native', 'body', False), '')\ncheck('native empty', solve([], {}, None, '', 'body', False), '')\ncheck('hidden', solve([], {}, None, None, 'secret', True), '')\ncheck('visible', solve([], {}, None, None, 'visible', False), 'visible')\ncheck('empty reference', solve(['missing','empty'], {'empty':''}, 'fallback', None, 'body', False), '')\ncheck('parameterized label content', solve([], {}, 'label'+str(N), None, 'body', False), 'label'+str(N))\nfor repetition in range(N):\n    check('repeat empty reference', solve(['missing','empty'], {'empty':''}, 'fallback', None, 'body', False), '')\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":"4a8117238ad2ac80817d300f0e91664c1ddb47df852ab045ba134c325fc2746f","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(labelledby, nodes, aria_label, native_label, content, hidden):\n    referenced = [nodes[x] for x in labelledby if x in nodes]\n    if referenced: return ' '.join(referenced)\n    if aria_label is not None: return aria_label\n    if native_label is not None: return native_label\n    if hidden: return ''\n    return content\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('reference order', solve(['z','a'], {'z':'Zulu','a':'Alpha'}, 'fallback', 'native', 'body', False), 'Zulu Alpha')\ncheck('aria empty', solve([], {}, '', 'native', 'body', False), '')\ncheck('native empty', solve([], {}, None, '', 'body', False), '')\ncheck('hidden', solve([], {}, None, None, 'secret', True), '')\ncheck('visible', solve([], {}, None, None, 'visible', False), 'visible')\ncheck('empty reference', solve(['missing','empty'], {'empty':''}, 'fallback', None, 'body', False), '')\ncheck('parameterized label content', solve([], {}, 'label'+str(N), None, 'body', False), 'label'+str(N))\nfor repetition in range(N):\n    check('repeat empty reference', solve(['missing','empty'], {'empty':''}, 'fallback', None, 'body', False), '')\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":"xi-accessible-name-aria-empty","generated_at":"2026-09-29T14:38:21.380778+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"A deterministic model of accessible name precedence; this isolates one interface invariant without requiring a browser.","repair":"Implement the aria empty operation as `if aria_label is not None:`.","root_cause":"The aria empty operation uses `if aria_label:` where the contract requires `if aria_label is not None:`.","sha256":"5abccca37931532d544cead80ca57e081c08bffc70b42c0b213d9cf196272d2f","title":"Accessible name precedence: An explicit empty aria-label falls back to unrelated text · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":36.733,"exit_code":1,"observations":[{"actual":"Zulu Alpha","check":"reference order","expected":"Zulu Alpha","passed":true},{"actual":"native","check":"aria empty","expected":"","passed":false},{"actual":null,"check":"native empty","expected":"","passed":false},{"actual":null,"check":"hidden","expected":"","passed":false},{"actual":null,"check":"visible","expected":"visible","passed":false},{"actual":"","check":"empty reference","expected":"","passed":true},{"actual":"body","check":"parameterized label content","expected":"label1","passed":false},{"actual":"","check":"repeat empty reference","expected":"","passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"reference order\", \"actual\": \"Zulu Alpha\", \"expected\": \"Zulu Alpha\", \"passed\": true}, {\"check\": \"aria empty\", \"actual\": \"native\", \"expected\": \"\", \"passed\": false}, {\"check\": \"native empty\", \"actual\": null, \"expected\": \"\", \"passed\": false}, {\"check\": \"hidden\", \"actual\": null, \"expected\": \"\", \"passed\": false}, {\"check\": \"visible\", \"actual\": null, \"expected\": \"visible\", \"passed\": false}, {\"check\": \"empty reference\", \"actual\": \"\", \"expected\": \"\", \"passed\": true}, {\"check\": \"parameterized label content\", \"actual\": \"body\", \"expected\": \"label1\", \"passed\": false}, {\"check\": \"repeat empty reference\", \"actual\": \"\", \"expected\": \"\", \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":35.954,"exit_code":1,"observations":[{"actual":"Zulu Alpha","check":"reference order","expected":"Zulu Alpha","passed":true},{"actual":"native","check":"aria empty","expected":"","passed":false},{"actual":"","check":"native empty","expected":"","passed":true},{"actual":"","check":"hidden","expected":"","passed":true},{"actual":"visible","check":"visible","expected":"visible","passed":true},{"actual":"","check":"empty reference","expected":"","passed":true},{"actual":"label1","check":"parameterized label content","expected":"label1","passed":true},{"actual":"","check":"repeat empty reference","expected":"","passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"reference order\", \"actual\": \"Zulu Alpha\", \"expected\": \"Zulu Alpha\", \"passed\": true}, {\"check\": \"aria empty\", \"actual\": \"native\", \"expected\": \"\", \"passed\": false}, {\"check\": \"native empty\", \"actual\": \"\", \"expected\": \"\", \"passed\": true}, {\"check\": \"hidden\", \"actual\": \"\", \"expected\": \"\", \"passed\": true}, {\"check\": \"visible\", \"actual\": \"visible\", \"expected\": \"visible\", \"passed\": true}, {\"check\": \"empty reference\", \"actual\": \"\", \"expected\": \"\", \"passed\": true}, {\"check\": \"parameterized label content\", \"actual\": \"label1\", \"expected\": \"label1\", \"passed\": true}, {\"check\": \"repeat empty reference\", \"actual\": \"\", \"expected\": \"\", \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":39.822,"exit_code":0,"observations":[{"actual":"Zulu Alpha","check":"reference order","expected":"Zulu Alpha","passed":true},{"actual":"","check":"aria empty","expected":"","passed":true},{"actual":"","check":"native empty","expected":"","passed":true},{"actual":"","check":"hidden","expected":"","passed":true},{"actual":"visible","check":"visible","expected":"visible","passed":true},{"actual":"","check":"empty reference","expected":"","passed":true},{"actual":"label1","check":"parameterized label content","expected":"label1","passed":true},{"actual":"","check":"repeat empty reference","expected":"","passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"reference order\", \"actual\": \"Zulu Alpha\", \"expected\": \"Zulu Alpha\", \"passed\": true}, {\"check\": \"aria empty\", \"actual\": \"\", \"expected\": \"\", \"passed\": true}, {\"check\": \"native empty\", \"actual\": \"\", \"expected\": \"\", \"passed\": true}, {\"check\": \"hidden\", \"actual\": \"\", \"expected\": \"\", \"passed\": true}, {\"check\": \"visible\", \"actual\": \"visible\", \"expected\": \"visible\", \"passed\": true}, {\"check\": \"empty reference\", \"actual\": \"\", \"expected\": \"\", \"passed\": true}, {\"check\": \"parameterized label content\", \"actual\": \"label1\", \"expected\": \"label1\", \"passed\": true}, {\"check\": \"repeat empty reference\", \"actual\": \"\", \"expected\": \"\", \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}