{"abstract":"Native roles are incorrectly marked as author overrides.","category":"Accessibility interaction semantics","checks":9,"contract":"Resolve an adapter role from ordered author tokens, native role, interactivity, required-role constraint and platform support. Supported abstract roles are group, link, image, button, article, generic and presentation. Skip unknown and abstract tokens (command, structure). Only first usable explicit token wins. Presentation is ignored on interactive objects; required native role (when required true) rejects incompatible overrides except native itself. Unsupported platform roles fall back to native if supported, otherwise generic. Generic yields no interface; link and button yield action, image yields image, article/group yield container. Return [role,interface,source] where source is explicit, native, or fallback.","evaluation_group":"s3-accessibility-role-negotiation","failed_approach":"The local repair substitutes source = 'native' if interactive else 'explicit' but still mishandles the regression fixtures.","family":"s3-accessibility-role-negotiation-source-provenance","id":"FA-53381","implementations":{"attempt":{"sha256":"d9f984ad09e22aeed28366afad9288a7605521da880f0b3fd6fd7f7f117f337c","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(data):\n    tokens,native,interactive,required,supported = data\n    known = {'group','link','image','button','article','generic','presentation'}\n    chosen = None\n    source = 'native' if interactive else 'explicit'\n    for token in tokens.split():\n        if token not in known: continue\n        if token == 'presentation' and interactive: continue\n        if required and token != native: continue\n        chosen = token\n        source = 'explicit'\n        break\n    if chosen is None: chosen = native\n    if chosen not in supported:\n        chosen = native if native in supported else 'generic'\n        source = 'fallback'\n    interface = {'link':'action','button':'action','image':'image','article':'container','group':'container'}.get(chosen)\n    return [chosen,interface,source]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('ordered fallback', solve(['unknown command group link','image',False,False,['group','link','image']],), ['group','container','explicit'])\ncheck('interactive presentation', solve(['presentation link','button',True,False,['presentation','link','button']],), ['link','action','explicit'])\ncheck('required role', solve(['link image','image',False,True,['image','link']],), ['image','image','explicit'])\ncheck('native fallback', solve(['article','image',False,False,['image']],), ['image','image','fallback'])\ncheck('no supported native', solve(['group','image',False,False,[]],), ['generic',None,'fallback'])\ncheck('empty uses native', solve([' '*N,'button',True,False,['button']],), ['button','action','native'])\ncheck('unknown only', solve(['unknown'+str(N),['article','image','button','group','link'][N-1],False,False,['article','image','button','group','link']],), [['article','image','button','group','link'][N-1],['container','image','action','container','action'][N-1],'native'])\ncheck('presentation retained', solve(['presentation','image',False,False,['presentation']],), ['presentation',None,'explicit'])\ncheck('tab separated', solve(['unknown\\timage','group',False,False,['image','group']],), ['image','image','explicit'])\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":"191145cceff02aa0245ed2941ef2cd27e6d558749a23d087ddf0865cc91d20b4","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(data):\n    tokens,native,interactive,required,supported = data\n    known = {'group','link','image','button','article','generic','presentation'}\n    chosen = None\n    source = 'explicit'\n    for token in tokens.split():\n        if token not in known: continue\n        if token == 'presentation' and interactive: continue\n        if required and token != native: continue\n        chosen = token\n        source = 'explicit'\n        break\n    if chosen is None: chosen = native\n    if chosen not in supported:\n        chosen = native if native in supported else 'generic'\n        source = 'fallback'\n    interface = {'link':'action','button':'action','image':'image','article':'container','group':'container'}.get(chosen)\n    return [chosen,interface,source]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('ordered fallback', solve(['unknown command group link','image',False,False,['group','link','image']],), ['group','container','explicit'])\ncheck('interactive presentation', solve(['presentation link','button',True,False,['presentation','link','button']],), ['link','action','explicit'])\ncheck('required role', solve(['link image','image',False,True,['image','link']],), ['image','image','explicit'])\ncheck('native fallback', solve(['article','image',False,False,['image']],), ['image','image','fallback'])\ncheck('no supported native', solve(['group','image',False,False,[]],), ['generic',None,'fallback'])\ncheck('empty uses native', solve([' '*N,'button',True,False,['button']],), ['button','action','native'])\ncheck('unknown only', solve(['unknown'+str(N),['article','image','button','group','link'][N-1],False,False,['article','image','button','group','link']],), [['article','image','button','group','link'][N-1],['container','image','action','container','action'][N-1],'native'])\ncheck('presentation retained', solve(['presentation','image',False,False,['presentation']],), ['presentation',None,'explicit'])\ncheck('tab separated', solve(['unknown\\timage','group',False,False,['image','group']],), ['image','image','explicit'])\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":"62dbfd865dd63edc6672be20e6f9f324928668fb6ad07de4b88d9517f3febb01","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(data):\n    tokens,native,interactive,required,supported = data\n    known = {'group','link','image','button','article','generic','presentation'}\n    chosen = None\n    source = 'native'\n    for token in tokens.split():\n        if token not in known: continue\n        if token == 'presentation' and interactive: continue\n        if required and token != native: continue\n        chosen = token\n        source = 'explicit'\n        break\n    if chosen is None: chosen = native\n    if chosen not in supported:\n        chosen = native if native in supported else 'generic'\n        source = 'fallback'\n    interface = {'link':'action','button':'action','image':'image','article':'container','group':'container'}.get(chosen)\n    return [chosen,interface,source]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('ordered fallback', solve(['unknown command group link','image',False,False,['group','link','image']],), ['group','container','explicit'])\ncheck('interactive presentation', solve(['presentation link','button',True,False,['presentation','link','button']],), ['link','action','explicit'])\ncheck('required role', solve(['link image','image',False,True,['image','link']],), ['image','image','explicit'])\ncheck('native fallback', solve(['article','image',False,False,['image']],), ['image','image','fallback'])\ncheck('no supported native', solve(['group','image',False,False,[]],), ['generic',None,'fallback'])\ncheck('empty uses native', solve([' '*N,'button',True,False,['button']],), ['button','action','native'])\ncheck('unknown only', solve(['unknown'+str(N),['article','image','button','group','link'][N-1],False,False,['article','image','button','group','link']],), [['article','image','button','group','link'][N-1],['container','image','action','container','action'][N-1],'native'])\ncheck('presentation retained', solve(['presentation','image',False,False,['presentation']],), ['presentation',None,'explicit'])\ncheck('tab separated', solve(['unknown\\timage','group',False,False,['image','group']],), ['image','image','explicit'])\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":"Stipulated finite adapter contract, not a claim of platform accessibility or ARIA conformance. 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":"s3-accessibility-role-negotiation-source-provenance","generated_at":"2026-09-29T14:45:38.529555+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Offline accessibility bridge model with explicit policy; useful for testing semantic API adapters independently of browser implementations.","repair":"Apply the exact contract at the source provenance decision: source = 'native'","root_cause":"The source provenance decision in the role negotiation adapter violates its declared contract.","sha256":"861e0a3ef8c6eade48ae8b4fc4ee3ab41cb4d9781f063f687e3d898689464448","title":"Native roles are incorrectly marked as author overrides · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":40.833,"exit_code":1,"observations":[{"actual":["group","container","explicit"],"check":"ordered fallback","expected":["group","container","explicit"],"passed":true},{"actual":["link","action","explicit"],"check":"interactive presentation","expected":["link","action","explicit"],"passed":true},{"actual":["image","image","explicit"],"check":"required role","expected":["image","image","explicit"],"passed":true},{"actual":["image","image","fallback"],"check":"native fallback","expected":["image","image","fallback"],"passed":true},{"actual":["generic",null,"fallback"],"check":"no supported native","expected":["generic",null,"fallback"],"passed":true},{"actual":["button","action","native"],"check":"empty uses native","expected":["button","action","native"],"passed":true},{"actual":["article","container","explicit"],"check":"unknown only","expected":["article","container","native"],"passed":false},{"actual":["presentation",null,"explicit"],"check":"presentation retained","expected":["presentation",null,"explicit"],"passed":true},{"actual":["image","image","explicit"],"check":"tab separated","expected":["image","image","explicit"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"ordered fallback\", \"actual\": [\"group\", \"container\", \"explicit\"], \"expected\": [\"group\", \"container\", \"explicit\"], \"passed\": true}, {\"check\": \"interactive presentation\", \"actual\": [\"link\", \"action\", \"explicit\"], \"expected\": [\"link\", \"action\", \"explicit\"], \"passed\": true}, {\"check\": \"required role\", \"actual\": [\"image\", \"image\", \"explicit\"], \"expected\": [\"image\", \"image\", \"explicit\"], \"passed\": true}, {\"check\": \"native fallback\", \"actual\": [\"image\", \"image\", \"fallback\"], \"expected\": [\"image\", \"image\", \"fallback\"], \"passed\": true}, {\"check\": \"no supported native\", \"actual\": [\"generic\", null, \"fallback\"], \"expected\": [\"generic\", null, \"fallback\"], \"passed\": true}, {\"check\": \"empty uses native\", \"actual\": [\"button\", \"action\", \"native\"], \"expected\": [\"button\", \"action\", \"native\"], \"passed\": true}, {\"check\": \"unknown only\", \"actual\": [\"article\", \"container\", \"explicit\"], \"expected\": [\"article\", \"container\", \"native\"], \"passed\": false}, {\"check\": \"presentation retained\", \"actual\": [\"presentation\", null, \"explicit\"], \"expected\": [\"presentation\", null, \"explicit\"], \"passed\": true}, {\"check\": \"tab separated\", \"actual\": [\"image\", \"image\", \"explicit\"], \"expected\": [\"image\", \"image\", \"explicit\"], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":45.71,"exit_code":1,"observations":[{"actual":["group","container","explicit"],"check":"ordered fallback","expected":["group","container","explicit"],"passed":true},{"actual":["link","action","explicit"],"check":"interactive presentation","expected":["link","action","explicit"],"passed":true},{"actual":["image","image","explicit"],"check":"required role","expected":["image","image","explicit"],"passed":true},{"actual":["image","image","fallback"],"check":"native fallback","expected":["image","image","fallback"],"passed":true},{"actual":["generic",null,"fallback"],"check":"no supported native","expected":["generic",null,"fallback"],"passed":true},{"actual":["button","action","explicit"],"check":"empty uses native","expected":["button","action","native"],"passed":false},{"actual":["article","container","explicit"],"check":"unknown only","expected":["article","container","native"],"passed":false},{"actual":["presentation",null,"explicit"],"check":"presentation retained","expected":["presentation",null,"explicit"],"passed":true},{"actual":["image","image","explicit"],"check":"tab separated","expected":["image","image","explicit"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"ordered fallback\", \"actual\": [\"group\", \"container\", \"explicit\"], \"expected\": [\"group\", \"container\", \"explicit\"], \"passed\": true}, {\"check\": \"interactive presentation\", \"actual\": [\"link\", \"action\", \"explicit\"], \"expected\": [\"link\", \"action\", \"explicit\"], \"passed\": true}, {\"check\": \"required role\", \"actual\": [\"image\", \"image\", \"explicit\"], \"expected\": [\"image\", \"image\", \"explicit\"], \"passed\": true}, {\"check\": \"native fallback\", \"actual\": [\"image\", \"image\", \"fallback\"], \"expected\": [\"image\", \"image\", \"fallback\"], \"passed\": true}, {\"check\": \"no supported native\", \"actual\": [\"generic\", null, \"fallback\"], \"expected\": [\"generic\", null, \"fallback\"], \"passed\": true}, {\"check\": \"empty uses native\", \"actual\": [\"button\", \"action\", \"explicit\"], \"expected\": [\"button\", \"action\", \"native\"], \"passed\": false}, {\"check\": \"unknown only\", \"actual\": [\"article\", \"container\", \"explicit\"], \"expected\": [\"article\", \"container\", \"native\"], \"passed\": false}, {\"check\": \"presentation retained\", \"actual\": [\"presentation\", null, \"explicit\"], \"expected\": [\"presentation\", null, \"explicit\"], \"passed\": true}, {\"check\": \"tab separated\", \"actual\": [\"image\", \"image\", \"explicit\"], \"expected\": [\"image\", \"image\", \"explicit\"], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":41.324,"exit_code":0,"observations":[{"actual":["group","container","explicit"],"check":"ordered fallback","expected":["group","container","explicit"],"passed":true},{"actual":["link","action","explicit"],"check":"interactive presentation","expected":["link","action","explicit"],"passed":true},{"actual":["image","image","explicit"],"check":"required role","expected":["image","image","explicit"],"passed":true},{"actual":["image","image","fallback"],"check":"native fallback","expected":["image","image","fallback"],"passed":true},{"actual":["generic",null,"fallback"],"check":"no supported native","expected":["generic",null,"fallback"],"passed":true},{"actual":["button","action","native"],"check":"empty uses native","expected":["button","action","native"],"passed":true},{"actual":["article","container","native"],"check":"unknown only","expected":["article","container","native"],"passed":true},{"actual":["presentation",null,"explicit"],"check":"presentation retained","expected":["presentation",null,"explicit"],"passed":true},{"actual":["image","image","explicit"],"check":"tab separated","expected":["image","image","explicit"],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"ordered fallback\", \"actual\": [\"group\", \"container\", \"explicit\"], \"expected\": [\"group\", \"container\", \"explicit\"], \"passed\": true}, {\"check\": \"interactive presentation\", \"actual\": [\"link\", \"action\", \"explicit\"], \"expected\": [\"link\", \"action\", \"explicit\"], \"passed\": true}, {\"check\": \"required role\", \"actual\": [\"image\", \"image\", \"explicit\"], \"expected\": [\"image\", \"image\", \"explicit\"], \"passed\": true}, {\"check\": \"native fallback\", \"actual\": [\"image\", \"image\", \"fallback\"], \"expected\": [\"image\", \"image\", \"fallback\"], \"passed\": true}, {\"check\": \"no supported native\", \"actual\": [\"generic\", null, \"fallback\"], \"expected\": [\"generic\", null, \"fallback\"], \"passed\": true}, {\"check\": \"empty uses native\", \"actual\": [\"button\", \"action\", \"native\"], \"expected\": [\"button\", \"action\", \"native\"], \"passed\": true}, {\"check\": \"unknown only\", \"actual\": [\"article\", \"container\", \"native\"], \"expected\": [\"article\", \"container\", \"native\"], \"passed\": true}, {\"check\": \"presentation retained\", \"actual\": [\"presentation\", null, \"explicit\"], \"expected\": [\"presentation\", null, \"explicit\"], \"passed\": true}, {\"check\": \"tab separated\", \"actual\": [\"image\", \"image\", \"explicit\"], \"expected\": [\"image\", \"image\", \"explicit\"], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}