FAILURE MAP
← Case archive

FA-33631 / Menu interactions / Open access

Queued menu invocation rebinds its context at enqueue time · case 01

Queued menu invocation rebinds its context at enqueue time.

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

ROOT CAUSE

The menu-command-queue model applies `p['queue']+[{'id':p['id'],'context':p['ambient']}]` at its enqueue-snapshot operation instead of the stipulated transformation.

VERIFIED REPAIR

Apply `p['queue']+[{'id':p['id'],'context':p['captured']}]` at enqueue-snapshot.

Unsuccessful approach: The attempted repair `[{'id':p['id'],'context':p['captured']}]` still violates the enqueue-snapshot oracle.

Case contract

Queued menu commands preserve invocation snapshots and FIFO order; cancellation and completion act on transaction identity without blocking unrelated command lanes.

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 == 'enqueue-snapshot':
        return p['queue']+[{'id':p['id'],'context':p['ambient']}]
    if action == 'dequeue':
        return (p[0],p[1:])
    if action == 'cancel-id':
        return [x for x in p['queue'] if x['id']!=p['id']]
    if action == 'lane':
        return [x for x in p['queue'] if x['lane'] not in p['busy']]
    if action == 'failure-next':
        return p['remaining'] if p['continue_on_error'] else []
    if action == 'close-policy':
        return p['queue'] if p['survive_close'] else []
    return {'error': 'unsupported menu operation'}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('enqueue-snapshot contract', solve('enqueue-snapshot', {'queue':[{'id':0,'context':'old'}],'id':N,'captured':'doc','ambient':'other'}), [{'id':0,'context':'old'},{'id':N,'context':'doc'}])
check('dequeue contract', solve('dequeue', [N,N+1,N+2]), (N,[N+1,N+2]))
check('cancel-id contract', solve('cancel-id', {'queue':[{'id':N,'command':'copy'},{'id':N+1,'command':'copy'}],'id':N,'command':'copy'}), [{'id':N+1,'command':'copy'}])
check('lane contract', solve('lane', {'queue':[{'lane':'a','id':N},{'lane':'b','id':N+1}],'busy':['a']}), [{'lane':'b','id':N+1}])
check('failure-next contract', solve('failure-next', {'remaining':[N+1],'failed':[N],'continue_on_error':True}), [N+1])
check('close-policy contract', solve('close-policy', {'queue':[N,N+1],'survive_close':True}), [N,N+1])
check('unknown operation', solve('unknown', {}), {'error': 'unsupported menu operation'})
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
enqueue-snapshot contract[{'context': 'old', 'id': 0}, {'context': 'other', 'id': 1}][{'context': 'old', 'id': 0}, {'context': 'doc', 'id': 1}]Failed
dequeue contract[1, [2, 3]][1, [2, 3]]Passed
cancel-id contract[{'command': 'copy', 'id': 2}][{'command': 'copy', 'id': 2}]Passed
lane contract[{'id': 2, 'lane': 'b'}][{'id': 2, 'lane': 'b'}]Passed
failure-next contract[2][2]Passed
close-policy contract[1, 2][1, 2]Passed
unknown operation{'error': 'unsupported menu operation'}{'error': 'unsupported menu operation'}Passed

SHA-256 / 2697d3ca6426acecb9a82f96fe70f762c07fd0423b7573e9bb6ea235c1d446a7

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 == 'enqueue-snapshot':
        return [{'id':p['id'],'context':p['captured']}]
    if action == 'dequeue':
        return (p[0],p[1:])
    if action == 'cancel-id':
        return [x for x in p['queue'] if x['id']!=p['id']]
    if action == 'lane':
        return [x for x in p['queue'] if x['lane'] not in p['busy']]
    if action == 'failure-next':
        return p['remaining'] if p['continue_on_error'] else []
    if action == 'close-policy':
        return p['queue'] if p['survive_close'] else []
    return {'error': 'unsupported menu operation'}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('enqueue-snapshot contract', solve('enqueue-snapshot', {'queue':[{'id':0,'context':'old'}],'id':N,'captured':'doc','ambient':'other'}), [{'id':0,'context':'old'},{'id':N,'context':'doc'}])
check('dequeue contract', solve('dequeue', [N,N+1,N+2]), (N,[N+1,N+2]))
check('cancel-id contract', solve('cancel-id', {'queue':[{'id':N,'command':'copy'},{'id':N+1,'command':'copy'}],'id':N,'command':'copy'}), [{'id':N+1,'command':'copy'}])
check('lane contract', solve('lane', {'queue':[{'lane':'a','id':N},{'lane':'b','id':N+1}],'busy':['a']}), [{'lane':'b','id':N+1}])
check('failure-next contract', solve('failure-next', {'remaining':[N+1],'failed':[N],'continue_on_error':True}), [N+1])
check('close-policy contract', solve('close-policy', {'queue':[N,N+1],'survive_close':True}), [N,N+1])
check('unknown operation', solve('unknown', {}), {'error': 'unsupported menu operation'})
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
enqueue-snapshot contract[{'context': 'doc', 'id': 1}][{'context': 'old', 'id': 0}, {'context': 'doc', 'id': 1}]Failed
dequeue contract[1, [2, 3]][1, [2, 3]]Passed
cancel-id contract[{'command': 'copy', 'id': 2}][{'command': 'copy', 'id': 2}]Passed
lane contract[{'id': 2, 'lane': 'b'}][{'id': 2, 'lane': 'b'}]Passed
failure-next contract[2][2]Passed
close-policy contract[1, 2][1, 2]Passed
unknown operation{'error': 'unsupported menu operation'}{'error': 'unsupported menu operation'}Passed

SHA-256 / 2e33b5d588577e4999951d89a36c37f0611fac291c1dd6c0e4f5e732db23d96a

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 == 'enqueue-snapshot':
        return p['queue']+[{'id':p['id'],'context':p['captured']}]
    if action == 'dequeue':
        return (p[0],p[1:])
    if action == 'cancel-id':
        return [x for x in p['queue'] if x['id']!=p['id']]
    if action == 'lane':
        return [x for x in p['queue'] if x['lane'] not in p['busy']]
    if action == 'failure-next':
        return p['remaining'] if p['continue_on_error'] else []
    if action == 'close-policy':
        return p['queue'] if p['survive_close'] else []
    return {'error': 'unsupported menu operation'}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('enqueue-snapshot contract', solve('enqueue-snapshot', {'queue':[{'id':0,'context':'old'}],'id':N,'captured':'doc','ambient':'other'}), [{'id':0,'context':'old'},{'id':N,'context':'doc'}])
check('dequeue contract', solve('dequeue', [N,N+1,N+2]), (N,[N+1,N+2]))
check('cancel-id contract', solve('cancel-id', {'queue':[{'id':N,'command':'copy'},{'id':N+1,'command':'copy'}],'id':N,'command':'copy'}), [{'id':N+1,'command':'copy'}])
check('lane contract', solve('lane', {'queue':[{'lane':'a','id':N},{'lane':'b','id':N+1}],'busy':['a']}), [{'lane':'b','id':N+1}])
check('failure-next contract', solve('failure-next', {'remaining':[N+1],'failed':[N],'continue_on_error':True}), [N+1])
check('close-policy contract', solve('close-policy', {'queue':[N,N+1],'survive_close':True}), [N,N+1])
check('unknown operation', solve('unknown', {}), {'error': 'unsupported menu operation'})
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
enqueue-snapshot contract[{'context': 'old', 'id': 0}, {'context': 'doc', 'id': 1}][{'context': 'old', 'id': 0}, {'context': 'doc', 'id': 1}]Passed
dequeue contract[1, [2, 3]][1, [2, 3]]Passed
cancel-id contract[{'command': 'copy', 'id': 2}][{'command': 'copy', 'id': 2}]Passed
lane contract[{'id': 2, 'lane': 'b'}][{'id': 2, 'lane': 'b'}]Passed
failure-next contract[2][2]Passed
close-policy contract[1, 2][1, 2]Passed
unknown operation{'error': 'unsupported menu operation'}{'error': 'unsupported menu operation'}Passed

SHA-256 / 6859c24cf8fd36a7d1ce9f4be3cbab464829480ba910368736e5b967a0bca86d

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:24.246898+00:00.

Case digest / d6916921390feda12d9ad1d296673ac7ec2ed79e2b5b52fbf2fa0348d1c6be50