{"abstract":"Returning to a submenu fails to cancel its pending close.","category":"Menu interactions","checks":8,"contract":"Menu hover work is keyed by owner and pointer incarnation; scheduling honors open delays and close grace without retaining superseded jobs.","evaluation_group":"s3-menu-interactions-hover-scheduler","failed_approach":"The attempted repair `[]` still violates the entry-cancel oracle.","family":"s3-menu-interactions-hover-scheduler-entry-cancel","id":"FA-32711","implementations":{"attempt":{"sha256":"b3ae234ce459272ef8b543b086f21707f840b6c8bc516697ed5bda871b06c3e9","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 == 'open-at':\n        return p['entered']+p['delay']\n    if action == 'replace-job':\n        return [x for x in p['jobs'] if x['owner']!=p['new']['owner']]+[p['new']]\n    if action == 'entry-cancel':\n        return []\n    if action == 'due':\n        return [x for x in p['jobs'] if x['at']<=p['now']]\n    if action == 'leave-grace':\n        return max(p['base'],p['intent'])\n    if action == 'late-fire':\n        return p['owner']==p['current'] and p['inside']\n    return {'error': 'unsupported menu operation'}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('open-at contract', solve('open-at', {'entered':N,'now':N+3,'delay':10}), N+10)\ncheck('replace-job contract', solve('replace-job', {'jobs':[{'owner':'a','at':N},{'owner':'b','at':N}],'new':{'owner':'a','at':N+1}}), [{'owner':'b','at':N},{'owner':'a','at':N+1}])\ncheck('entry-cancel contract', solve('entry-cancel', {'owner':'a','jobs':[{'owner':'a','kind':'close','at':N},{'owner':'b','kind':'open','at':N}]}), [{'owner':'b','kind':'open','at':N}])\ncheck('due contract', solve('due', {'jobs':[{'at':N},{'at':N+1}],'now':N}), [{'at':N}])\ncheck('leave-grace contract', solve('leave-grace', {'base':N+1,'intent':N+5}), N+5)\ncheck('late-fire contract', solve('late-fire', {'owner':'a'+str(N),'current':'a'+str(N),'inside':False}), False)\ncheck('unknown operation', solve('unknown', {}), {'error': 'unsupported menu operation'})\ncheck('inside different owner',solve('late-fire',{'owner':N,'current':N+1,'inside':True}),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":"095eec6bc4858113de7ec36c5cf085729252e68f5f593cb1ccd6fc7d49991854","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 == 'open-at':\n        return p['entered']+p['delay']\n    if action == 'replace-job':\n        return [x for x in p['jobs'] if x['owner']!=p['new']['owner']]+[p['new']]\n    if action == 'entry-cancel':\n        return p['jobs']\n    if action == 'due':\n        return [x for x in p['jobs'] if x['at']<=p['now']]\n    if action == 'leave-grace':\n        return max(p['base'],p['intent'])\n    if action == 'late-fire':\n        return p['owner']==p['current'] and p['inside']\n    return {'error': 'unsupported menu operation'}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('open-at contract', solve('open-at', {'entered':N,'now':N+3,'delay':10}), N+10)\ncheck('replace-job contract', solve('replace-job', {'jobs':[{'owner':'a','at':N},{'owner':'b','at':N}],'new':{'owner':'a','at':N+1}}), [{'owner':'b','at':N},{'owner':'a','at':N+1}])\ncheck('entry-cancel contract', solve('entry-cancel', {'owner':'a','jobs':[{'owner':'a','kind':'close','at':N},{'owner':'b','kind':'open','at':N}]}), [{'owner':'b','kind':'open','at':N}])\ncheck('due contract', solve('due', {'jobs':[{'at':N},{'at':N+1}],'now':N}), [{'at':N}])\ncheck('leave-grace contract', solve('leave-grace', {'base':N+1,'intent':N+5}), N+5)\ncheck('late-fire contract', solve('late-fire', {'owner':'a'+str(N),'current':'a'+str(N),'inside':False}), False)\ncheck('unknown operation', solve('unknown', {}), {'error': 'unsupported menu operation'})\ncheck('inside different owner',solve('late-fire',{'owner':N,'current':N+1,'inside':True}),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":"77b88f545e536dcf57efd8075e750025f721ce2b3851ce6fe32eef0d9f8e6c0f","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 == 'open-at':\n        return p['entered']+p['delay']\n    if action == 'replace-job':\n        return [x for x in p['jobs'] if x['owner']!=p['new']['owner']]+[p['new']]\n    if action == 'entry-cancel':\n        return [x for x in p['jobs'] if not (x['owner']==p['owner'] and x['kind']=='close')]\n    if action == 'due':\n        return [x for x in p['jobs'] if x['at']<=p['now']]\n    if action == 'leave-grace':\n        return max(p['base'],p['intent'])\n    if action == 'late-fire':\n        return p['owner']==p['current'] and p['inside']\n    return {'error': 'unsupported menu operation'}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('open-at contract', solve('open-at', {'entered':N,'now':N+3,'delay':10}), N+10)\ncheck('replace-job contract', solve('replace-job', {'jobs':[{'owner':'a','at':N},{'owner':'b','at':N}],'new':{'owner':'a','at':N+1}}), [{'owner':'b','at':N},{'owner':'a','at':N+1}])\ncheck('entry-cancel contract', solve('entry-cancel', {'owner':'a','jobs':[{'owner':'a','kind':'close','at':N},{'owner':'b','kind':'open','at':N}]}), [{'owner':'b','kind':'open','at':N}])\ncheck('due contract', solve('due', {'jobs':[{'at':N},{'at':N+1}],'now':N}), [{'at':N}])\ncheck('leave-grace contract', solve('leave-grace', {'base':N+1,'intent':N+5}), N+5)\ncheck('late-fire contract', solve('late-fire', {'owner':'a'+str(N),'current':'a'+str(N),'inside':False}), False)\ncheck('unknown operation', solve('unknown', {}), {'error': 'unsupported menu operation'})\ncheck('inside different owner',solve('late-fire',{'owner':N,'current':N+1,'inside':True}),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-hover-scheduler-entry-cancel","generated_at":"2026-09-29T14:42:14.957927+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 `[x for x in p['jobs'] if not (x['owner']==p['owner'] and x['kind']=='close')]` at entry-cancel.","root_cause":"The hover-scheduler model applies `p['jobs']` at its entry-cancel operation instead of the stipulated transformation.","sha256":"e4b2054bab7b24fe06a9b96b90d18fedb4df5a7f36efec502b19a18171f7a96c","title":"Returning to a submenu fails to cancel its pending close · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":46.313,"exit_code":1,"observations":[{"actual":11,"check":"open-at contract","expected":11,"passed":true},{"actual":[{"at":1,"owner":"b"},{"at":2,"owner":"a"}],"check":"replace-job contract","expected":[{"at":1,"owner":"b"},{"at":2,"owner":"a"}],"passed":true},{"actual":[],"check":"entry-cancel contract","expected":[{"at":1,"kind":"open","owner":"b"}],"passed":false},{"actual":[{"at":1}],"check":"due contract","expected":[{"at":1}],"passed":true},{"actual":6,"check":"leave-grace contract","expected":6,"passed":true},{"actual":false,"check":"late-fire contract","expected":false,"passed":true},{"actual":{"error":"unsupported menu operation"},"check":"unknown operation","expected":{"error":"unsupported menu operation"},"passed":true},{"actual":false,"check":"inside different owner","expected":false,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"open-at contract\", \"actual\": 11, \"expected\": 11, \"passed\": true}, {\"check\": \"replace-job contract\", \"actual\": [{\"owner\": \"b\", \"at\": 1}, {\"owner\": \"a\", \"at\": 2}], \"expected\": [{\"owner\": \"b\", \"at\": 1}, {\"owner\": \"a\", \"at\": 2}], \"passed\": true}, {\"check\": \"entry-cancel contract\", \"actual\": [], \"expected\": [{\"owner\": \"b\", \"kind\": \"open\", \"at\": 1}], \"passed\": false}, {\"check\": \"due contract\", \"actual\": [{\"at\": 1}], \"expected\": [{\"at\": 1}], \"passed\": true}, {\"check\": \"leave-grace contract\", \"actual\": 6, \"expected\": 6, \"passed\": true}, {\"check\": \"late-fire contract\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"unknown operation\", \"actual\": {\"error\": \"unsupported menu operation\"}, \"expected\": {\"error\": \"unsupported menu operation\"}, \"passed\": true}, {\"check\": \"inside different owner\", \"actual\": false, \"expected\": false, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":47.663,"exit_code":1,"observations":[{"actual":11,"check":"open-at contract","expected":11,"passed":true},{"actual":[{"at":1,"owner":"b"},{"at":2,"owner":"a"}],"check":"replace-job contract","expected":[{"at":1,"owner":"b"},{"at":2,"owner":"a"}],"passed":true},{"actual":[{"at":1,"kind":"close","owner":"a"},{"at":1,"kind":"open","owner":"b"}],"check":"entry-cancel contract","expected":[{"at":1,"kind":"open","owner":"b"}],"passed":false},{"actual":[{"at":1}],"check":"due contract","expected":[{"at":1}],"passed":true},{"actual":6,"check":"leave-grace contract","expected":6,"passed":true},{"actual":false,"check":"late-fire contract","expected":false,"passed":true},{"actual":{"error":"unsupported menu operation"},"check":"unknown operation","expected":{"error":"unsupported menu operation"},"passed":true},{"actual":false,"check":"inside different owner","expected":false,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"open-at contract\", \"actual\": 11, \"expected\": 11, \"passed\": true}, {\"check\": \"replace-job contract\", \"actual\": [{\"owner\": \"b\", \"at\": 1}, {\"owner\": \"a\", \"at\": 2}], \"expected\": [{\"owner\": \"b\", \"at\": 1}, {\"owner\": \"a\", \"at\": 2}], \"passed\": true}, {\"check\": \"entry-cancel contract\", \"actual\": [{\"owner\": \"a\", \"kind\": \"close\", \"at\": 1}, {\"owner\": \"b\", \"kind\": \"open\", \"at\": 1}], \"expected\": [{\"owner\": \"b\", \"kind\": \"open\", \"at\": 1}], \"passed\": false}, {\"check\": \"due contract\", \"actual\": [{\"at\": 1}], \"expected\": [{\"at\": 1}], \"passed\": true}, {\"check\": \"leave-grace contract\", \"actual\": 6, \"expected\": 6, \"passed\": true}, {\"check\": \"late-fire contract\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"unknown operation\", \"actual\": {\"error\": \"unsupported menu operation\"}, \"expected\": {\"error\": \"unsupported menu operation\"}, \"passed\": true}, {\"check\": \"inside different owner\", \"actual\": false, \"expected\": false, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":45.225,"exit_code":0,"observations":[{"actual":11,"check":"open-at contract","expected":11,"passed":true},{"actual":[{"at":1,"owner":"b"},{"at":2,"owner":"a"}],"check":"replace-job contract","expected":[{"at":1,"owner":"b"},{"at":2,"owner":"a"}],"passed":true},{"actual":[{"at":1,"kind":"open","owner":"b"}],"check":"entry-cancel contract","expected":[{"at":1,"kind":"open","owner":"b"}],"passed":true},{"actual":[{"at":1}],"check":"due contract","expected":[{"at":1}],"passed":true},{"actual":6,"check":"leave-grace contract","expected":6,"passed":true},{"actual":false,"check":"late-fire contract","expected":false,"passed":true},{"actual":{"error":"unsupported menu operation"},"check":"unknown operation","expected":{"error":"unsupported menu operation"},"passed":true},{"actual":false,"check":"inside different owner","expected":false,"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"open-at contract\", \"actual\": 11, \"expected\": 11, \"passed\": true}, {\"check\": \"replace-job contract\", \"actual\": [{\"owner\": \"b\", \"at\": 1}, {\"owner\": \"a\", \"at\": 2}], \"expected\": [{\"owner\": \"b\", \"at\": 1}, {\"owner\": \"a\", \"at\": 2}], \"passed\": true}, {\"check\": \"entry-cancel contract\", \"actual\": [{\"owner\": \"b\", \"kind\": \"open\", \"at\": 1}], \"expected\": [{\"owner\": \"b\", \"kind\": \"open\", \"at\": 1}], \"passed\": true}, {\"check\": \"due contract\", \"actual\": [{\"at\": 1}], \"expected\": [{\"at\": 1}], \"passed\": true}, {\"check\": \"leave-grace contract\", \"actual\": 6, \"expected\": 6, \"passed\": true}, {\"check\": \"late-fire contract\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"unknown operation\", \"actual\": {\"error\": \"unsupported menu operation\"}, \"expected\": {\"error\": \"unsupported menu operation\"}, \"passed\": true}, {\"check\": \"inside different owner\", \"actual\": false, \"expected\": false, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}