FAILURE MAP
← Case archive

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.

Verified by executionVariant 1 · 8 checks per implementationDownload source bundle ↓JSON ↗

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 fixtureActualExpectedOutcome
open-at contract1111Passed
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 contract66Passed
late-fire contractFalseFalsePassed
unknown operation{'error': 'unsupported menu operation'}{'error': 'unsupported menu operation'}Passed
inside different ownerFalseFalsePassed

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 fixtureActualExpectedOutcome
open-at contract1111Passed
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 contract66Passed
late-fire contractFalseFalsePassed
unknown operation{'error': 'unsupported menu operation'}{'error': 'unsupported menu operation'}Passed
inside different ownerFalseFalsePassed

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 fixtureActualExpectedOutcome
open-at contract1111Passed
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 contract66Passed
late-fire contractFalseFalsePassed
unknown operation{'error': 'unsupported menu operation'}{'error': 'unsupported menu operation'}Passed
inside different ownerFalseFalsePassed

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