{"abstract":"Closing one popup cancels another popup provider.","category":"Menu interactions","checks":7,"contract":"Deferred menu work belongs to an open popup generation and its parent generation.","contract_signature":"action, p","evaluation_group":"s3-menu-interactions-session-generation","failed_approach":"The attempted repair `[x for x in p['requests'] if x['session']==p['closed']]` still violates the cancel oracle.","family":"s3-menu-interactions-session-generation-cancel","id":"FA-32451","implementations":{"attempt":{"sha256":"28c54d8516343e11fb67784d97e19d6d023a1db3c98385b209cb4de18d866491","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 == 'response':\n        return p['request']==p['live'] and p['open']\n    if action == 'closed':\n        return p['open'] and p['request']==p['live']\n    if action == 'reopen':\n        return p['generation']+1\n    if action == 'parent':\n        return p['parent']==p['live_parent'] and p['child']==p['live_child']\n    if action == 'cancel':\n        return [x for x in p['requests'] if x['session']==p['closed']]\n    if action == 'transfer':\n        return {'generation':p['generation']+1,'anchor':p['anchor'],'requests':[]}\n    return {'error': 'unsupported menu operation'}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('response contract', solve('response', {'request':N,'live':N+1,'open':True}), False)\ncheck('closed contract', solve('closed', {'request':N,'live':N,'open':False}), False)\ncheck('reopen contract', solve('reopen', {'generation':N}), N+1)\ncheck('parent contract', solve('parent', {'parent':N,'live_parent':N+1,'child':3,'live_child':3}), False)\ncheck('cancel contract', solve('cancel', {'requests':[{'session':N,'id':'a'},{'session':N+1,'id':'b'}],'closed':N}), [{'session':N+1,'id':'b'}])\ncheck('transfer contract', solve('transfer', {'generation':N,'anchor':'next','requests':['old']}), {'generation':N+1,'anchor':'next','requests':[]})\ncheck('unknown operation', solve('unknown', {}), {'error': 'unsupported menu operation'})\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":"70cee152f1e10f56d18a1ae96e8995f2896c512464d9825a24acfa21e54bcf9a","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 == 'response':\n        return p['request']==p['live'] and p['open']\n    if action == 'closed':\n        return p['open'] and p['request']==p['live']\n    if action == 'reopen':\n        return p['generation']+1\n    if action == 'parent':\n        return p['parent']==p['live_parent'] and p['child']==p['live_child']\n    if action == 'cancel':\n        return []\n    if action == 'transfer':\n        return {'generation':p['generation']+1,'anchor':p['anchor'],'requests':[]}\n    return {'error': 'unsupported menu operation'}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('response contract', solve('response', {'request':N,'live':N+1,'open':True}), False)\ncheck('closed contract', solve('closed', {'request':N,'live':N,'open':False}), False)\ncheck('reopen contract', solve('reopen', {'generation':N}), N+1)\ncheck('parent contract', solve('parent', {'parent':N,'live_parent':N+1,'child':3,'live_child':3}), False)\ncheck('cancel contract', solve('cancel', {'requests':[{'session':N,'id':'a'},{'session':N+1,'id':'b'}],'closed':N}), [{'session':N+1,'id':'b'}])\ncheck('transfer contract', solve('transfer', {'generation':N,'anchor':'next','requests':['old']}), {'generation':N+1,'anchor':'next','requests':[]})\ncheck('unknown operation', solve('unknown', {}), {'error': 'unsupported menu operation'})\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-session-generation-cancel","generated_at":"2026-09-29T14:42:12.450889+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.","root_cause":"The session-generation model applies `[]` at its cancel operation instead of the stipulated transformation.","sha256":"d69d49be66630d16138b0482aeab3a027d0a49c90d2134146f14a3d6a7a5eb1c","title":"Closing one popup cancels another popup provider · 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":41.236,"exit_code":1,"observations":[{"actual":false,"check":"response contract","expected":false,"passed":true},{"actual":false,"check":"closed contract","expected":false,"passed":true},{"actual":2,"check":"reopen contract","expected":2,"passed":true},{"actual":false,"check":"parent contract","expected":false,"passed":true},{"actual":[{"id":"a","session":1}],"check":"cancel contract","expected":[{"id":"b","session":2}],"passed":false},{"actual":{"anchor":"next","generation":2,"requests":[]},"check":"transfer contract","expected":{"anchor":"next","generation":2,"requests":[]},"passed":true},{"actual":{"error":"unsupported menu operation"},"check":"unknown operation","expected":{"error":"unsupported menu operation"},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"response contract\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"closed contract\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"reopen contract\", \"actual\": 2, \"expected\": 2, \"passed\": true}, {\"check\": \"parent contract\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"cancel contract\", \"actual\": [{\"session\": 1, \"id\": \"a\"}], \"expected\": [{\"session\": 2, \"id\": \"b\"}], \"passed\": false}, {\"check\": \"transfer contract\", \"actual\": {\"generation\": 2, \"anchor\": \"next\", \"requests\": []}, \"expected\": {\"generation\": 2, \"anchor\": \"next\", \"requests\": []}, \"passed\": true}, {\"check\": \"unknown operation\", \"actual\": {\"error\": \"unsupported menu operation\"}, \"expected\": {\"error\": \"unsupported menu operation\"}, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":42.493,"exit_code":1,"observations":[{"actual":false,"check":"response contract","expected":false,"passed":true},{"actual":false,"check":"closed contract","expected":false,"passed":true},{"actual":2,"check":"reopen contract","expected":2,"passed":true},{"actual":false,"check":"parent contract","expected":false,"passed":true},{"actual":[],"check":"cancel contract","expected":[{"id":"b","session":2}],"passed":false},{"actual":{"anchor":"next","generation":2,"requests":[]},"check":"transfer contract","expected":{"anchor":"next","generation":2,"requests":[]},"passed":true},{"actual":{"error":"unsupported menu operation"},"check":"unknown operation","expected":{"error":"unsupported menu operation"},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"response contract\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"closed contract\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"reopen contract\", \"actual\": 2, \"expected\": 2, \"passed\": true}, {\"check\": \"parent contract\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"cancel contract\", \"actual\": [], \"expected\": [{\"session\": 2, \"id\": \"b\"}], \"passed\": false}, {\"check\": \"transfer contract\", \"actual\": {\"generation\": 2, \"anchor\": \"next\", \"requests\": []}, \"expected\": {\"generation\": 2, \"anchor\": \"next\", \"requests\": []}, \"passed\": true}, {\"check\": \"unknown operation\", \"actual\": {\"error\": \"unsupported menu operation\"}, \"expected\": {\"error\": \"unsupported menu operation\"}, \"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."}}