{"abstract":"Submenu leave timer ignores a longer active intent corridor.","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 `min(p['base'],p['intent'])` still violates the leave-grace oracle.","family":"s3-menu-interactions-hover-scheduler-leave-grace","id":"FA-32721","implementations":{"attempt":{"sha256":"d858bf414e8ae63145e63cf610afe775b83207407abf4bccb17d6418045a1796","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 min(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":"2218ae0b4f11a8fe68b56d3345c3b0b59af9df8d6b08fa7a39cddee3b89295b8","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 p['base']\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-leave-grace","generated_at":"2026-09-29T14:42:15.027686+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 `max(p['base'],p['intent'])` at leave-grace.","root_cause":"The hover-scheduler model applies `p['base']` at its leave-grace operation instead of the stipulated transformation.","sha256":"3522f227f2a21100751e980836c33a6630d3888735a191062a2931c0a216dec8","title":"Submenu leave timer ignores a longer active intent corridor · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":44.726,"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":"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":2,"check":"leave-grace contract","expected":6,"passed":false},{"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\": \"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\": 2, \"expected\": 6, \"passed\": false}, {\"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":52.6,"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":"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":2,"check":"leave-grace contract","expected":6,"passed":false},{"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\": \"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\": 2, \"expected\": 6, \"passed\": false}, {\"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":40.95,"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"}