{"abstract":"Keyboard activation is not equivalent to clicking.","category":"Menu interactions","checks":9,"contract":"Disabled items and nonactivation keys do nothing; click, Enter and Space activate; submenu transfers focus; checks toggle; radios select; leaf commands close.","contract_signature":"item, opened, checked, event","evaluation_group":"xi-menu-activation","failed_approach":"Adding Enter alone still omits Space activation.","family":"xi-menu-activation-keyboard","id":"FA-8111","implementations":{"attempt":{"sha256":"2979a7fa31ca10c9cfcff818af6be8d091f77527093a10692dfcdbeb33c9f0d7","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(item, opened, checked, event):\n    if item['disabled']: return (opened, checked, None)\n    if event not in ('click', 'Enter'): return (opened, checked, None)\n    if item['kind'] == 'submenu': return (True, checked, 'focus-child')\n    if item['kind'] == 'checkbox': return (opened, not checked, 'change')\n    if item['kind'] == 'radio': return (opened, True, 'change')\n    return (False, checked, 'invoke')\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('disabled', solve(dict(disabled=True,kind='command'), True, False, 'click'), (True, False, None))\ncheck('enter', solve(dict(disabled=False,kind='command'), True, False, 'Enter'), (False, False, 'invoke'))\ncheck('space', solve(dict(disabled=False,kind='command'), True, False, 'Space'), (False, False, 'invoke'))\ncheck('submenu', solve(dict(disabled=False,kind='submenu'), False, False, 'click'), (True, False, 'focus-child'))\ncheck('checkbox off', solve(dict(disabled=False,kind='checkbox'), True, True, 'click'), (True, False, 'change'))\ncheck('radio stays', solve(dict(disabled=False,kind='radio'), True, True, 'click'), (True, True, 'change'))\ncheck('ignore arrow', solve(dict(disabled=False,kind='command'), True, False, 'Left'), (True, False, None))\ncheck('parameterized checked state', solve(dict(disabled=False,kind='checkbox'), True, bool(N%2), 'Space'), (True, not bool(N%2), 'change'))\nfor repetition in range(N):\n    check('repeat ignore arrow', solve(dict(disabled=False,kind='command'), True, False, 'Left'), (True, False, None))\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":"433b0e3b178d0aed62edfa34c3e2795b241f1dfe45db54ffefc2742b0803fd71","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(item, opened, checked, event):\n    if item['disabled']: return (opened, checked, None)\n    if event not in ('click',): return (opened, checked, None)\n    if item['kind'] == 'submenu': return (True, checked, 'focus-child')\n    if item['kind'] == 'checkbox': return (opened, not checked, 'change')\n    if item['kind'] == 'radio': return (opened, True, 'change')\n    return (False, checked, 'invoke')\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('disabled', solve(dict(disabled=True,kind='command'), True, False, 'click'), (True, False, None))\ncheck('enter', solve(dict(disabled=False,kind='command'), True, False, 'Enter'), (False, False, 'invoke'))\ncheck('space', solve(dict(disabled=False,kind='command'), True, False, 'Space'), (False, False, 'invoke'))\ncheck('submenu', solve(dict(disabled=False,kind='submenu'), False, False, 'click'), (True, False, 'focus-child'))\ncheck('checkbox off', solve(dict(disabled=False,kind='checkbox'), True, True, 'click'), (True, False, 'change'))\ncheck('radio stays', solve(dict(disabled=False,kind='radio'), True, True, 'click'), (True, True, 'change'))\ncheck('ignore arrow', solve(dict(disabled=False,kind='command'), True, False, 'Left'), (True, False, None))\ncheck('parameterized checked state', solve(dict(disabled=False,kind='checkbox'), True, bool(N%2), 'Space'), (True, not bool(N%2), 'change'))\nfor repetition in range(N):\n    check('repeat ignore arrow', solve(dict(disabled=False,kind='command'), True, False, 'Left'), (True, False, None))\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-menu-activation-keyboard","generated_at":"2026-09-29T14:38:18.583747+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"A deterministic model of menu item activation; this isolates one interface invariant without requiring a browser.","root_cause":"The keyboard operation uses `('click',)` where the contract requires `('click', 'Enter', 'Space')`.","sha256":"88d5d0e9269f94da22066c4b1f0201dab2c552112b6491b6553d435a1a9acd5c","title":"Menu item activation: Keyboard activation is not equivalent to clicking · 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":39.064,"exit_code":1,"observations":[{"actual":[true,false,null],"check":"disabled","expected":[true,false,null],"passed":true},{"actual":[false,false,"invoke"],"check":"enter","expected":[false,false,"invoke"],"passed":true},{"actual":[true,false,null],"check":"space","expected":[false,false,"invoke"],"passed":false},{"actual":[true,false,"focus-child"],"check":"submenu","expected":[true,false,"focus-child"],"passed":true},{"actual":[true,false,"change"],"check":"checkbox off","expected":[true,false,"change"],"passed":true},{"actual":[true,true,"change"],"check":"radio stays","expected":[true,true,"change"],"passed":true},{"actual":[true,false,null],"check":"ignore arrow","expected":[true,false,null],"passed":true},{"actual":[true,true,null],"check":"parameterized checked state","expected":[true,false,"change"],"passed":false},{"actual":[true,false,null],"check":"repeat ignore arrow","expected":[true,false,null],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"disabled\", \"actual\": [true, false, null], \"expected\": [true, false, null], \"passed\": true}, {\"check\": \"enter\", \"actual\": [false, false, \"invoke\"], \"expected\": [false, false, \"invoke\"], \"passed\": true}, {\"check\": \"space\", \"actual\": [true, false, null], \"expected\": [false, false, \"invoke\"], \"passed\": false}, {\"check\": \"submenu\", \"actual\": [true, false, \"focus-child\"], \"expected\": [true, false, \"focus-child\"], \"passed\": true}, {\"check\": \"checkbox off\", \"actual\": [true, false, \"change\"], \"expected\": [true, false, \"change\"], \"passed\": true}, {\"check\": \"radio stays\", \"actual\": [true, true, \"change\"], \"expected\": [true, true, \"change\"], \"passed\": true}, {\"check\": \"ignore arrow\", \"actual\": [true, false, null], \"expected\": [true, false, null], \"passed\": true}, {\"check\": \"parameterized checked state\", \"actual\": [true, true, null], \"expected\": [true, false, \"change\"], \"passed\": false}, {\"check\": \"repeat ignore arrow\", \"actual\": [true, false, null], \"expected\": [true, false, null], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.478,"exit_code":1,"observations":[{"actual":[true,false,null],"check":"disabled","expected":[true,false,null],"passed":true},{"actual":[true,false,null],"check":"enter","expected":[false,false,"invoke"],"passed":false},{"actual":[true,false,null],"check":"space","expected":[false,false,"invoke"],"passed":false},{"actual":[true,false,"focus-child"],"check":"submenu","expected":[true,false,"focus-child"],"passed":true},{"actual":[true,false,"change"],"check":"checkbox off","expected":[true,false,"change"],"passed":true},{"actual":[true,true,"change"],"check":"radio stays","expected":[true,true,"change"],"passed":true},{"actual":[true,false,null],"check":"ignore arrow","expected":[true,false,null],"passed":true},{"actual":[true,true,null],"check":"parameterized checked state","expected":[true,false,"change"],"passed":false},{"actual":[true,false,null],"check":"repeat ignore arrow","expected":[true,false,null],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"disabled\", \"actual\": [true, false, null], \"expected\": [true, false, null], \"passed\": true}, {\"check\": \"enter\", \"actual\": [true, false, null], \"expected\": [false, false, \"invoke\"], \"passed\": false}, {\"check\": \"space\", \"actual\": [true, false, null], \"expected\": [false, false, \"invoke\"], \"passed\": false}, {\"check\": \"submenu\", \"actual\": [true, false, \"focus-child\"], \"expected\": [true, false, \"focus-child\"], \"passed\": true}, {\"check\": \"checkbox off\", \"actual\": [true, false, \"change\"], \"expected\": [true, false, \"change\"], \"passed\": true}, {\"check\": \"radio stays\", \"actual\": [true, true, \"change\"], \"expected\": [true, true, \"change\"], \"passed\": true}, {\"check\": \"ignore arrow\", \"actual\": [true, false, null], \"expected\": [true, false, null], \"passed\": true}, {\"check\": \"parameterized checked state\", \"actual\": [true, true, null], \"expected\": [true, false, \"change\"], \"passed\": false}, {\"check\": \"repeat ignore arrow\", \"actual\": [true, false, null], \"expected\": [true, false, null], \"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."}}