FA-33486 / Menu interactions / Open access
Vetoed menu dismissal still removes the popup · case 01
Vetoed menu dismissal still removes the popup.
ROOT CAUSE
The menu-dismissal-policy model applies `p['requested']` at its veto operation instead of the stipulated transformation.
VERIFIED REPAIR
Apply `p['requested'] and not p['vetoed']` at veto.
Unsuccessful approach: The attempted repair `p['requested'] or not p['vetoed']` still violates the veto oracle.
Case contract
Menu dismissal reasons map to explicit close scopes; command completion, owner removal and outside dismissal do not share a universal policy.
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 == 'leaf-scope':
return p['chain'][:p['depth']] if p['scope']=='branch' else []
if action == 'veto':
return p['requested']
if action == 'mandatory-teardown':
return p['owner_removed'] or not p['vetoed']
if action == 'reason-priority':
return next(x for x in ['owner-removed','command','outside'] if x in p)
if action == 'pending-command':
return p['pending'] if p['reason']=='transfer' else []
if action == 'nested-boundary':
return p['chain'][:p['boundary']]
return {'error': 'unsupported menu operation'}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('leaf-scope contract', solve('leaf-scope', {'chain':['root','sub',str(N)],'depth':1,'scope':'branch'}), ['root'])
check('veto contract', solve('veto', {'requested':True,'vetoed':True,'owner':N}), False)
check('mandatory-teardown contract', solve('mandatory-teardown', {'owner_removed':True,'vetoed':True,'id':N}), True)
check('reason-priority contract', solve('reason-priority', ['outside','owner-removed','command']), 'owner-removed')
check('pending-command contract', solve('pending-command', {'pending':[N],'reason':'transfer'}), [N])
check('nested-boundary contract', solve('nested-boundary', {'chain':['outer','local','child'+str(N)],'boundary':1}), ['outer'])
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| leaf-scope contract | ['root'] | ['root'] | Passed |
| veto contract | True | False | Failed |
| mandatory-teardown contract | True | True | Passed |
| reason-priority contract | owner-removed | owner-removed | Passed |
| pending-command contract | [1] | [1] | Passed |
| nested-boundary contract | ['outer'] | ['outer'] | Passed |
| unknown operation | {'error': 'unsupported menu operation'} | {'error': 'unsupported menu operation'} | Passed |
SHA-256 / 318668decbacf6546b40c8a6b13fef07c81a2aedae396bc87a1b449e6dbe178d
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 == 'leaf-scope':
return p['chain'][:p['depth']] if p['scope']=='branch' else []
if action == 'veto':
return p['requested'] or not p['vetoed']
if action == 'mandatory-teardown':
return p['owner_removed'] or not p['vetoed']
if action == 'reason-priority':
return next(x for x in ['owner-removed','command','outside'] if x in p)
if action == 'pending-command':
return p['pending'] if p['reason']=='transfer' else []
if action == 'nested-boundary':
return p['chain'][:p['boundary']]
return {'error': 'unsupported menu operation'}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('leaf-scope contract', solve('leaf-scope', {'chain':['root','sub',str(N)],'depth':1,'scope':'branch'}), ['root'])
check('veto contract', solve('veto', {'requested':True,'vetoed':True,'owner':N}), False)
check('mandatory-teardown contract', solve('mandatory-teardown', {'owner_removed':True,'vetoed':True,'id':N}), True)
check('reason-priority contract', solve('reason-priority', ['outside','owner-removed','command']), 'owner-removed')
check('pending-command contract', solve('pending-command', {'pending':[N],'reason':'transfer'}), [N])
check('nested-boundary contract', solve('nested-boundary', {'chain':['outer','local','child'+str(N)],'boundary':1}), ['outer'])
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| leaf-scope contract | ['root'] | ['root'] | Passed |
| veto contract | True | False | Failed |
| mandatory-teardown contract | True | True | Passed |
| reason-priority contract | owner-removed | owner-removed | Passed |
| pending-command contract | [1] | [1] | Passed |
| nested-boundary contract | ['outer'] | ['outer'] | Passed |
| unknown operation | {'error': 'unsupported menu operation'} | {'error': 'unsupported menu operation'} | Passed |
SHA-256 / 0103db0a61e0ba2ef355f5e7b589d1e52c9101404286d20d88ddbed8b9c6dc30
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 == 'leaf-scope':
return p['chain'][:p['depth']] if p['scope']=='branch' else []
if action == 'veto':
return p['requested'] and not p['vetoed']
if action == 'mandatory-teardown':
return p['owner_removed'] or not p['vetoed']
if action == 'reason-priority':
return next(x for x in ['owner-removed','command','outside'] if x in p)
if action == 'pending-command':
return p['pending'] if p['reason']=='transfer' else []
if action == 'nested-boundary':
return p['chain'][:p['boundary']]
return {'error': 'unsupported menu operation'}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('leaf-scope contract', solve('leaf-scope', {'chain':['root','sub',str(N)],'depth':1,'scope':'branch'}), ['root'])
check('veto contract', solve('veto', {'requested':True,'vetoed':True,'owner':N}), False)
check('mandatory-teardown contract', solve('mandatory-teardown', {'owner_removed':True,'vetoed':True,'id':N}), True)
check('reason-priority contract', solve('reason-priority', ['outside','owner-removed','command']), 'owner-removed')
check('pending-command contract', solve('pending-command', {'pending':[N],'reason':'transfer'}), [N])
check('nested-boundary contract', solve('nested-boundary', {'chain':['outer','local','child'+str(N)],'boundary':1}), ['outer'])
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| leaf-scope contract | ['root'] | ['root'] | Passed |
| veto contract | False | False | Passed |
| mandatory-teardown contract | True | True | Passed |
| reason-priority contract | owner-removed | owner-removed | Passed |
| pending-command contract | [1] | [1] | Passed |
| nested-boundary contract | ['outer'] | ['outer'] | Passed |
| unknown operation | {'error': 'unsupported menu operation'} | {'error': 'unsupported menu operation'} | Passed |
SHA-256 / 8ff895ce62b2a56a133c23051c0c1e7bd551080975c15f5cb8d3cd0859557719
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:22.829357+00:00.
Case digest / a2d6c19138b3cf94204fc563554b08dd088872ae07fc887d8eb78957dea28fb0