{"abstract":"Menu bridge hit region ignores its horizontal bounds.","category":"Menu interactions","checks":9,"contract":"Submenu placement uses owner edges, overlap compensation, available side space and root-relative coordinates under a stipulated rectangular layout.","evaluation_group":"s3-menu-interactions-submenu-edge-placement","failed_approach":"The attempted repair `p['top']<=p['y']<=p['bottom']` still violates the gap-hit oracle.","family":"s3-menu-interactions-submenu-edge-placement-gap-hit","id":"FA-32786","implementations":{"attempt":{"sha256":"5944e26117b2e58af3c462d4751df95b8f230a5ca58278ab0e8353884b87637a","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nimport unicodedata\nN = 1\nobservations = []\ndef solve(action, p):\n    if action == 'right':\n        return p['x']+p['width']-p['overlap']\n    if action == 'left':\n        return p['x']-p['submenu']+p['overlap']\n    if action == 'side':\n        return 'right' if p['right']>=p['width'] else ('left' if p['left']>=p['width'] else ('right' if p['right']>=p['left'] else 'left'))\n    if action == 'row-align':\n        return p['row_y']-p['padding']\n    if action == 'root-relative':\n        return [p['screen'][0]-p['root'][0],p['screen'][1]-p['root'][1]]\n    if action == 'gap-hit':\n        return p['top']<=p['y']<=p['bottom']\n    return {'error': 'unsupported menu operation'}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('right contract', solve('right', {'x':N,'width':20,'overlap':2}), N+18)\ncheck('left contract', solve('left', {'x':N+30,'submenu':10,'overlap':2}), N+22)\ncheck('side contract', solve('side', {'right':N+5,'left':N+2,'width':N+10}), 'right')\ncheck('row-align contract', solve('row-align', {'row_y':N+20,'padding':3}), N+17)\ncheck('root-relative contract', solve('root-relative', {'screen':[10*N,20*N],'root':[N,2*N]}), [9*N,18*N])\ncheck('gap-hit contract', solve('gap-hit', {'owner_right':N+5,'menu_left':N+8,'x':N,'top':0,'bottom':10,'y':5}), False)\ncheck('unknown operation', solve('unknown', {}), {'error': 'unsupported menu operation'})\ncheck('only left fits',solve('side',{'right':N,'left':N+10,'width':N+5}),'left')\ncheck('bridge vertical miss',solve('gap-hit',{'owner_right':N,'menu_left':N+4,'x':N+2,'top':3,'bottom':8,'y':10}),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":"38edae39d0e33d943ff463ee4a669d7a35d4f64b23afc4f5386e36fe7503e45a","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nimport unicodedata\nN = 1\nobservations = []\ndef solve(action, p):\n    if action == 'right':\n        return p['x']+p['width']-p['overlap']\n    if action == 'left':\n        return p['x']-p['submenu']+p['overlap']\n    if action == 'side':\n        return 'right' if p['right']>=p['width'] else ('left' if p['left']>=p['width'] else ('right' if p['right']>=p['left'] else 'left'))\n    if action == 'row-align':\n        return p['row_y']-p['padding']\n    if action == 'root-relative':\n        return [p['screen'][0]-p['root'][0],p['screen'][1]-p['root'][1]]\n    if action == 'gap-hit':\n        return p['owner_right']<=p['x']<=p['menu_left']\n    return {'error': 'unsupported menu operation'}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('right contract', solve('right', {'x':N,'width':20,'overlap':2}), N+18)\ncheck('left contract', solve('left', {'x':N+30,'submenu':10,'overlap':2}), N+22)\ncheck('side contract', solve('side', {'right':N+5,'left':N+2,'width':N+10}), 'right')\ncheck('row-align contract', solve('row-align', {'row_y':N+20,'padding':3}), N+17)\ncheck('root-relative contract', solve('root-relative', {'screen':[10*N,20*N],'root':[N,2*N]}), [9*N,18*N])\ncheck('gap-hit contract', solve('gap-hit', {'owner_right':N+5,'menu_left':N+8,'x':N,'top':0,'bottom':10,'y':5}), False)\ncheck('unknown operation', solve('unknown', {}), {'error': 'unsupported menu operation'})\ncheck('only left fits',solve('side',{'right':N,'left':N+10,'width':N+5}),'left')\ncheck('bridge vertical miss',solve('gap-hit',{'owner_right':N,'menu_left':N+4,'x':N+2,'top':3,'bottom':8,'y':10}),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":"0c2c7adbabf248ae3417d771a851c5edfe915ae1add416989ed61ce892bc8e2c","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nimport unicodedata\nN = 1\nobservations = []\ndef solve(action, p):\n    if action == 'right':\n        return p['x']+p['width']-p['overlap']\n    if action == 'left':\n        return p['x']-p['submenu']+p['overlap']\n    if action == 'side':\n        return 'right' if p['right']>=p['width'] else ('left' if p['left']>=p['width'] else ('right' if p['right']>=p['left'] else 'left'))\n    if action == 'row-align':\n        return p['row_y']-p['padding']\n    if action == 'root-relative':\n        return [p['screen'][0]-p['root'][0],p['screen'][1]-p['root'][1]]\n    if action == 'gap-hit':\n        return p['owner_right']<=p['x']<=p['menu_left'] and p['top']<=p['y']<=p['bottom']\n    return {'error': 'unsupported menu operation'}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('right contract', solve('right', {'x':N,'width':20,'overlap':2}), N+18)\ncheck('left contract', solve('left', {'x':N+30,'submenu':10,'overlap':2}), N+22)\ncheck('side contract', solve('side', {'right':N+5,'left':N+2,'width':N+10}), 'right')\ncheck('row-align contract', solve('row-align', {'row_y':N+20,'padding':3}), N+17)\ncheck('root-relative contract', solve('root-relative', {'screen':[10*N,20*N],'root':[N,2*N]}), [9*N,18*N])\ncheck('gap-hit contract', solve('gap-hit', {'owner_right':N+5,'menu_left':N+8,'x':N,'top':0,'bottom':10,'y':5}), False)\ncheck('unknown operation', solve('unknown', {}), {'error': 'unsupported menu operation'})\ncheck('only left fits',solve('side',{'right':N,'left':N+10,'width':N+5}),'left')\ncheck('bridge vertical miss',solve('gap-hit',{'owner_right':N,'menu_left':N+4,'x':N+2,'top':3,'bottom':8,'y':10}),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":"Offline supplied-valid-payload model; excludes DOM, keyboard, focus, selection, announcements and browser 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-menu-interactions-submenu-edge-placement-gap-hit","generated_at":"2026-09-29T14:42:15.683367+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Cascading and context menus require coherent command and session state as content changes.","repair":"Apply `p['owner_right']<=p['x']<=p['menu_left'] and p['top']<=p['y']<=p['bottom']` at gap-hit.","root_cause":"The submenu-edge-placement model applies `p['owner_right']<=p['x']<=p['menu_left']` at its gap-hit operation instead of the stipulated transformation.","sha256":"495d49f5e9a376f1ac45b22d872839948b193cfc19c04fd3882629ca2fb9cf83","title":"Menu bridge hit region ignores its horizontal bounds · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":47.548,"exit_code":1,"observations":[{"actual":19,"check":"right contract","expected":19,"passed":true},{"actual":23,"check":"left contract","expected":23,"passed":true},{"actual":"right","check":"side contract","expected":"right","passed":true},{"actual":18,"check":"row-align contract","expected":18,"passed":true},{"actual":[9,18],"check":"root-relative contract","expected":[9,18],"passed":true},{"actual":true,"check":"gap-hit contract","expected":false,"passed":false},{"actual":{"error":"unsupported menu operation"},"check":"unknown operation","expected":{"error":"unsupported menu operation"},"passed":true},{"actual":"left","check":"only left fits","expected":"left","passed":true},{"actual":false,"check":"bridge vertical miss","expected":false,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"right contract\", \"actual\": 19, \"expected\": 19, \"passed\": true}, {\"check\": \"left contract\", \"actual\": 23, \"expected\": 23, \"passed\": true}, {\"check\": \"side contract\", \"actual\": \"right\", \"expected\": \"right\", \"passed\": true}, {\"check\": \"row-align contract\", \"actual\": 18, \"expected\": 18, \"passed\": true}, {\"check\": \"root-relative contract\", \"actual\": [9, 18], \"expected\": [9, 18], \"passed\": true}, {\"check\": \"gap-hit contract\", \"actual\": true, \"expected\": false, \"passed\": false}, {\"check\": \"unknown operation\", \"actual\": {\"error\": \"unsupported menu operation\"}, \"expected\": {\"error\": \"unsupported menu operation\"}, \"passed\": true}, {\"check\": \"only left fits\", \"actual\": \"left\", \"expected\": \"left\", \"passed\": true}, {\"check\": \"bridge vertical miss\", \"actual\": false, \"expected\": false, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":48.658,"exit_code":1,"observations":[{"actual":19,"check":"right contract","expected":19,"passed":true},{"actual":23,"check":"left contract","expected":23,"passed":true},{"actual":"right","check":"side contract","expected":"right","passed":true},{"actual":18,"check":"row-align contract","expected":18,"passed":true},{"actual":[9,18],"check":"root-relative contract","expected":[9,18],"passed":true},{"actual":false,"check":"gap-hit contract","expected":false,"passed":true},{"actual":{"error":"unsupported menu operation"},"check":"unknown operation","expected":{"error":"unsupported menu operation"},"passed":true},{"actual":"left","check":"only left fits","expected":"left","passed":true},{"actual":true,"check":"bridge vertical miss","expected":false,"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"right contract\", \"actual\": 19, \"expected\": 19, \"passed\": true}, {\"check\": \"left contract\", \"actual\": 23, \"expected\": 23, \"passed\": true}, {\"check\": \"side contract\", \"actual\": \"right\", \"expected\": \"right\", \"passed\": true}, {\"check\": \"row-align contract\", \"actual\": 18, \"expected\": 18, \"passed\": true}, {\"check\": \"root-relative contract\", \"actual\": [9, 18], \"expected\": [9, 18], \"passed\": true}, {\"check\": \"gap-hit contract\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"unknown operation\", \"actual\": {\"error\": \"unsupported menu operation\"}, \"expected\": {\"error\": \"unsupported menu operation\"}, \"passed\": true}, {\"check\": \"only left fits\", \"actual\": \"left\", \"expected\": \"left\", \"passed\": true}, {\"check\": \"bridge vertical miss\", \"actual\": true, \"expected\": false, \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":47.436,"exit_code":0,"observations":[{"actual":19,"check":"right contract","expected":19,"passed":true},{"actual":23,"check":"left contract","expected":23,"passed":true},{"actual":"right","check":"side contract","expected":"right","passed":true},{"actual":18,"check":"row-align contract","expected":18,"passed":true},{"actual":[9,18],"check":"root-relative contract","expected":[9,18],"passed":true},{"actual":false,"check":"gap-hit contract","expected":false,"passed":true},{"actual":{"error":"unsupported menu operation"},"check":"unknown operation","expected":{"error":"unsupported menu operation"},"passed":true},{"actual":"left","check":"only left fits","expected":"left","passed":true},{"actual":false,"check":"bridge vertical miss","expected":false,"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"right contract\", \"actual\": 19, \"expected\": 19, \"passed\": true}, {\"check\": \"left contract\", \"actual\": 23, \"expected\": 23, \"passed\": true}, {\"check\": \"side contract\", \"actual\": \"right\", \"expected\": \"right\", \"passed\": true}, {\"check\": \"row-align contract\", \"actual\": 18, \"expected\": 18, \"passed\": true}, {\"check\": \"root-relative contract\", \"actual\": [9, 18], \"expected\": [9, 18], \"passed\": true}, {\"check\": \"gap-hit contract\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"unknown operation\", \"actual\": {\"error\": \"unsupported menu operation\"}, \"expected\": {\"error\": \"unsupported menu operation\"}, \"passed\": true}, {\"check\": \"only left fits\", \"actual\": \"left\", \"expected\": \"left\", \"passed\": true}, {\"check\": \"bridge vertical miss\", \"actual\": false, \"expected\": false, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}