FA-32716 / Menu interactions / Open access
Menu hover scheduler skips jobs exactly at the deadline · case 01
Menu hover scheduler skips jobs exactly at the deadline.
ROOT CAUSE
The hover-scheduler model applies `p['jobs']` at its due operation instead of the stipulated transformation.
VERIFIED REPAIR
Apply `[x for x in p['jobs'] if x['at']<=p['now']]` at due.
Unsuccessful approach: The attempted repair `[x for x in p['jobs'] if x['at']<p['now']]` still violates the due oracle.
Case contract
Menu hover work is keyed by owner and pointer incarnation; scheduling honors open delays and close grace without retaining superseded jobs.
Why this case matters
Cascading and context menus require coherent command and session state as content changes.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
import math
import unicodedata
N = 1
observations = []
def solve(action, p):
if action == 'open-at':
return p['entered']+p['delay']
if action == 'replace-job':
return [x for x in p['jobs'] if x['owner']!=p['new']['owner']]+[p['new']]
if action == 'entry-cancel':
return [x for x in p['jobs'] if not (x['owner']==p['owner'] and x['kind']=='close')]
if action == 'due':
return p['jobs']
if action == 'leave-grace':
return max(p['base'],p['intent'])
if action == 'late-fire':
return p['owner']==p['current'] and p['inside']
return {'error': 'unsupported menu operation'}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('open-at contract', solve('open-at', {'entered':N,'now':N+3,'delay':10}), N+10)
check('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}])
check('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}])
check('due contract', solve('due', {'jobs':[{'at':N},{'at':N+1}],'now':N}), [{'at':N}])
check('leave-grace contract', solve('leave-grace', {'base':N+1,'intent':N+5}), N+5)
check('late-fire contract', solve('late-fire', {'owner':'a'+str(N),'current':'a'+str(N),'inside':False}), False)
check('unknown operation', solve('unknown', {}), {'error': 'unsupported menu operation'})
check('inside different owner',solve('late-fire',{'owner':N,'current':N+1,'inside':True}),False)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| open-at contract | 11 | 11 | Passed |
| replace-job contract | [{'at': 1, 'owner': 'b'}, {'at': 2, 'owner': 'a'}] | [{'at': 1, 'owner': 'b'}, {'at': 2, 'owner': 'a'}] | Passed |
| entry-cancel contract | [{'at': 1, 'kind': 'open', 'owner': 'b'}] | [{'at': 1, 'kind': 'open', 'owner': 'b'}] | Passed |
| due contract | [{'at': 1}, {'at': 2}] | [{'at': 1}] | Failed |
| leave-grace contract | 6 | 6 | Passed |
| late-fire contract | False | False | Passed |
| unknown operation | {'error': 'unsupported menu operation'} | {'error': 'unsupported menu operation'} | Passed |
| inside different owner | False | False | Passed |
SHA-256 / 441f85f8219e9dfa89a0b4b1024257a10972b77914f434667807c503efda72bd
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
import math
import unicodedata
N = 1
observations = []
def solve(action, p):
if action == 'open-at':
return p['entered']+p['delay']
if action == 'replace-job':
return [x for x in p['jobs'] if x['owner']!=p['new']['owner']]+[p['new']]
if action == 'entry-cancel':
return [x for x in p['jobs'] if not (x['owner']==p['owner'] and x['kind']=='close')]
if action == 'due':
return [x for x in p['jobs'] if x['at']<p['now']]
if action == 'leave-grace':
return max(p['base'],p['intent'])
if action == 'late-fire':
return p['owner']==p['current'] and p['inside']
return {'error': 'unsupported menu operation'}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('open-at contract', solve('open-at', {'entered':N,'now':N+3,'delay':10}), N+10)
check('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}])
check('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}])
check('due contract', solve('due', {'jobs':[{'at':N},{'at':N+1}],'now':N}), [{'at':N}])
check('leave-grace contract', solve('leave-grace', {'base':N+1,'intent':N+5}), N+5)
check('late-fire contract', solve('late-fire', {'owner':'a'+str(N),'current':'a'+str(N),'inside':False}), False)
check('unknown operation', solve('unknown', {}), {'error': 'unsupported menu operation'})
check('inside different owner',solve('late-fire',{'owner':N,'current':N+1,'inside':True}),False)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| open-at contract | 11 | 11 | Passed |
| replace-job contract | [{'at': 1, 'owner': 'b'}, {'at': 2, 'owner': 'a'}] | [{'at': 1, 'owner': 'b'}, {'at': 2, 'owner': 'a'}] | Passed |
| entry-cancel contract | [{'at': 1, 'kind': 'open', 'owner': 'b'}] | [{'at': 1, 'kind': 'open', 'owner': 'b'}] | Passed |
| due contract | [] | [{'at': 1}] | Failed |
| leave-grace contract | 6 | 6 | Passed |
| late-fire contract | False | False | Passed |
| unknown operation | {'error': 'unsupported menu operation'} | {'error': 'unsupported menu operation'} | Passed |
| inside different owner | False | False | Passed |
SHA-256 / 8e2102dc216cb1a6b74e9ca5a667019456f787c3266393a29818630739e0d201
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
import math
import unicodedata
N = 1
observations = []
def solve(action, p):
if action == 'open-at':
return p['entered']+p['delay']
if action == 'replace-job':
return [x for x in p['jobs'] if x['owner']!=p['new']['owner']]+[p['new']]
if action == 'entry-cancel':
return [x for x in p['jobs'] if not (x['owner']==p['owner'] and x['kind']=='close')]
if action == 'due':
return [x for x in p['jobs'] if x['at']<=p['now']]
if action == 'leave-grace':
return max(p['base'],p['intent'])
if action == 'late-fire':
return p['owner']==p['current'] and p['inside']
return {'error': 'unsupported menu operation'}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('open-at contract', solve('open-at', {'entered':N,'now':N+3,'delay':10}), N+10)
check('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}])
check('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}])
check('due contract', solve('due', {'jobs':[{'at':N},{'at':N+1}],'now':N}), [{'at':N}])
check('leave-grace contract', solve('leave-grace', {'base':N+1,'intent':N+5}), N+5)
check('late-fire contract', solve('late-fire', {'owner':'a'+str(N),'current':'a'+str(N),'inside':False}), False)
check('unknown operation', solve('unknown', {}), {'error': 'unsupported menu operation'})
check('inside different owner',solve('late-fire',{'owner':N,'current':N+1,'inside':True}),False)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| open-at contract | 11 | 11 | Passed |
| replace-job contract | [{'at': 1, 'owner': 'b'}, {'at': 2, 'owner': 'a'}] | [{'at': 1, 'owner': 'b'}, {'at': 2, 'owner': 'a'}] | Passed |
| entry-cancel contract | [{'at': 1, 'kind': 'open', 'owner': 'b'}] | [{'at': 1, 'kind': 'open', 'owner': 'b'}] | Passed |
| due contract | [{'at': 1}] | [{'at': 1}] | Passed |
| leave-grace contract | 6 | 6 | Passed |
| late-fire contract | False | False | Passed |
| unknown operation | {'error': 'unsupported menu operation'} | {'error': 'unsupported menu operation'} | Passed |
| inside different owner | False | False | Passed |
SHA-256 / 77b88f545e536dcf57efd8075e750025f721ce2b3851ce6fe32eef0d9f8e6c0f
Verification & scope
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.
Observations recorded using Python 3.12.14 at 2026-09-29T14:42:14.968489+00:00.
Case digest / 381d683c16c970853c4b181ff9c38dfb1d3dcebebf921472b23855ac1dd3bd54