FAILURE MAP
← Case archive

FA-32416 / Menu interactions / Open access

Context menu retains revoked command capabilities · case 01

Context menu retains revoked command capabilities.

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

ROOT CAUSE

The context-capture model applies `p['captured']` at its capabilities operation instead of the stipulated transformation.

VERIFIED REPAIR

Apply `sorted(set(p['captured']) & set(p['current']))` at capabilities.

Unsuccessful approach: The attempted repair `sorted(set(p['captured']) | set(p['current']))` still violates the capabilities oracle.

Case contract

A context-menu invocation snapshots target, document coordinates, revision, capabilities, document objects and parsing locale.

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 == 'target':
        return p['captured']
    if action == 'point':
        return [p['client'][0]+p['scroll'][0],p['client'][1]+p['scroll'][1]]
    if action == 'revision':
        return p['snapshot']==p['current']
    if action == 'capabilities':
        return p['captured']
    if action == 'objects':
        return list(p['captured'])
    if action == 'locale':
        return p['opened']
    return {'error': 'unsupported menu operation'}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('target contract', solve('target', {'captured':'doc'+str(N),'hover':'other','active':'third'}), 'doc'+str(N))
check('point contract', solve('point', {'client':[N,2*N],'scroll':[3*N,4*N]}), [4*N,6*N])
check('revision contract', solve('revision', {'snapshot':N,'current':N+1}), False)
check('capabilities contract', solve('capabilities', {'captured':['read','delete'+str(N)],'current':['read','share']}), ['read'])
check('objects contract', solve('objects', {'captured':['a'+str(N),'b'],'current':['c']}), ['a'+str(N),'b'])
check('locale contract', solve('locale', {'opened':'locale'+str(N),'ambient':'other','default':'default'}), 'locale'+str(N))
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
target contractdoc1doc1Passed
point contract[4, 6][4, 6]Passed
revision contractFalseFalsePassed
capabilities contract['read', 'delete1']['read']Failed
objects contract['a1', 'b']['a1', 'b']Passed
locale contractlocale1locale1Passed
unknown operation{'error': 'unsupported menu operation'}{'error': 'unsupported menu operation'}Passed

SHA-256 / f9233cba48014feeaacdebed22053c4952ae7ba0016adb7c1b1725d960cb7dda

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 == 'target':
        return p['captured']
    if action == 'point':
        return [p['client'][0]+p['scroll'][0],p['client'][1]+p['scroll'][1]]
    if action == 'revision':
        return p['snapshot']==p['current']
    if action == 'capabilities':
        return sorted(set(p['captured']) | set(p['current']))
    if action == 'objects':
        return list(p['captured'])
    if action == 'locale':
        return p['opened']
    return {'error': 'unsupported menu operation'}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('target contract', solve('target', {'captured':'doc'+str(N),'hover':'other','active':'third'}), 'doc'+str(N))
check('point contract', solve('point', {'client':[N,2*N],'scroll':[3*N,4*N]}), [4*N,6*N])
check('revision contract', solve('revision', {'snapshot':N,'current':N+1}), False)
check('capabilities contract', solve('capabilities', {'captured':['read','delete'+str(N)],'current':['read','share']}), ['read'])
check('objects contract', solve('objects', {'captured':['a'+str(N),'b'],'current':['c']}), ['a'+str(N),'b'])
check('locale contract', solve('locale', {'opened':'locale'+str(N),'ambient':'other','default':'default'}), 'locale'+str(N))
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
target contractdoc1doc1Passed
point contract[4, 6][4, 6]Passed
revision contractFalseFalsePassed
capabilities contract['delete1', 'read', 'share']['read']Failed
objects contract['a1', 'b']['a1', 'b']Passed
locale contractlocale1locale1Passed
unknown operation{'error': 'unsupported menu operation'}{'error': 'unsupported menu operation'}Passed

SHA-256 / 17e78a908a71ed0bac678c5f34253f4bbd096dcd30222d60c80cdd3f8de31a21

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 == 'target':
        return p['captured']
    if action == 'point':
        return [p['client'][0]+p['scroll'][0],p['client'][1]+p['scroll'][1]]
    if action == 'revision':
        return p['snapshot']==p['current']
    if action == 'capabilities':
        return sorted(set(p['captured']) & set(p['current']))
    if action == 'objects':
        return list(p['captured'])
    if action == 'locale':
        return p['opened']
    return {'error': 'unsupported menu operation'}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('target contract', solve('target', {'captured':'doc'+str(N),'hover':'other','active':'third'}), 'doc'+str(N))
check('point contract', solve('point', {'client':[N,2*N],'scroll':[3*N,4*N]}), [4*N,6*N])
check('revision contract', solve('revision', {'snapshot':N,'current':N+1}), False)
check('capabilities contract', solve('capabilities', {'captured':['read','delete'+str(N)],'current':['read','share']}), ['read'])
check('objects contract', solve('objects', {'captured':['a'+str(N),'b'],'current':['c']}), ['a'+str(N),'b'])
check('locale contract', solve('locale', {'opened':'locale'+str(N),'ambient':'other','default':'default'}), 'locale'+str(N))
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
target contractdoc1doc1Passed
point contract[4, 6][4, 6]Passed
revision contractFalseFalsePassed
capabilities contract['read']['read']Passed
objects contract['a1', 'b']['a1', 'b']Passed
locale contractlocale1locale1Passed
unknown operation{'error': 'unsupported menu operation'}{'error': 'unsupported menu operation'}Passed

SHA-256 / b98ea463260ecfb2baf7ddd73f53d181d77b923525acb533763c496c6e61d1d9

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

Case digest / 82500804bf2a6876088ba357ab3a623ac27132216c57cbe2871de3c5204e5d47