{"abstract":"Hover-open deadline is recalculated after delayed event delivery.","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.","contract_signature":"action, p","evaluation_group":"s3-menu-interactions-hover-scheduler","failed_approach":"The attempted repair `p['now']+p['delay']` still violates the open-at oracle.","family":"s3-menu-interactions-hover-scheduler-open-at","id":"FA-32701","implementations":{"attempt":{"sha256":"3074d1eb14b2b00d41c70eb16b36548dadd03fe8e24c86a63bdda3c78987ceb6","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['now']+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"},"broken":{"sha256":"f5620181897f62cac4b69737149bf5eedcc39b9619dbbb7611f50e00ee23c141","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['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-open-at","generated_at":"2026-09-29T14:42:15.073828+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 hover-scheduler model applies `p['delay']` at its open-at operation instead of the stipulated transformation.","sha256":"1f71950dd83b90b0e67551d143ba5183fecb11b2fa894b080e1722ff3f3fa0f0","title":"Hover-open deadline is recalculated after delayed event delivery · 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":47.817,"exit_code":1,"observations":[{"actual":14,"check":"open-at contract","expected":11,"passed":false},{"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":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"open-at contract\", \"actual\": 14, \"expected\": 11, \"passed\": false}, {\"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\": false}\n"},"broken":{"elapsed_ms":47.55,"exit_code":1,"observations":[{"actual":10,"check":"open-at contract","expected":11,"passed":false},{"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":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"open-at contract\", \"actual\": 10, \"expected\": 11, \"passed\": false}, {\"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\": 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."}}