FAILURE MAP
← Case archive

FA-33646 / Menu interactions / Open access

Busy document menu lane blocks unrelated document commands · case 01

Busy document menu lane blocks unrelated document commands.

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

ROOT CAUSE

The menu-command-queue model applies `[] if p['busy'] else p['queue']` at its lane operation instead of the stipulated transformation.

VERIFIED REPAIR

Apply `[x for x in p['queue'] if x['lane'] not in p['busy']]` at lane.

Unsuccessful approach: The attempted repair `p['queue']` still violates the lane 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['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 [] if p['busy'] else p['queue']
    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'}]Failed
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 / d6cca2c3f7d82a84a7562fcb90445dfdd0bc7145d52975b674d3ac0d9ac43bb6

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 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 p['queue']
    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': 1, 'lane': 'a'}, {'id': 2, 'lane': 'b'}][{'id': 2, 'lane': 'b'}]Failed
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 / a774ebbb54672637efd3c90902e8635a5424a2b91f832868997a778e2d3dd2be

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

Case digest / c8311d7fb3b3c58530283a03b654b51883b39b754f2d906a51a75da77aa0a9e1