FA-33601 / Menu interactions / Open access
Parameter submenu loses earlier parent command bindings · case 01
Parameter submenu loses earlier parent command bindings.
ROOT CAUSE
The parameter-submenu model applies `{p['name']:p['value']}` at its bind operation instead of the stipulated transformation.
VERIFIED REPAIR
Apply `dict(p['bound'],**{p['name']:p['value']})` at bind.
Unsuccessful approach: The attempted repair `dict({p['name']:p['value']},**p['bound'])` still violates the bind oracle.
Case contract
A parameter submenu binds a chosen parameter to a parent command while preserving other bindings; cancel discards provisional parameters and commit requires all required fields.
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 == 'bind':
return {p['name']:p['value']}
if action == 'parent-command':
return p['parent_command']
if action == 'cancel':
return p['committed']
if action == 'required-fields':
return all(k in p['bound'] for k in p['required'])
if action == 'value-identity':
return p['value']
if action == 'return-path':
return p['path'][:-1]
return {'error': 'unsupported menu operation'}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('bind contract', solve('bind', {'bound':{'format':'old','target':'doc'},'name':'format','value':'new'+str(N)}), {'format':'new'+str(N),'target':'doc'})
check('parent-command contract', solve('parent-command', {'parent_command':'export'+str(N),'row_id':'pdf','submenu_id':'formats'}), 'export'+str(N))
check('cancel contract', solve('cancel', {'committed':{'size':N},'provisional':{'size':N+1}}), {'size':N})
check('required-fields contract', solve('required-fields', {'bound':{'format':'pdf','scale':N},'required':['format','destination']}), False)
check('value-identity contract', solve('value-identity', {'value':N,'label':'Size '+str(N)}), N)
check('return-path contract', solve('return-path', {'path':['root','export','size'+str(N)]}), ['root','export'])
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 |
|---|---|---|---|
| bind contract | {'format': 'new1'} | {'format': 'new1', 'target': 'doc'} | Failed |
| parent-command contract | export1 | export1 | Passed |
| cancel contract | {'size': 1} | {'size': 1} | Passed |
| required-fields contract | False | False | Passed |
| value-identity contract | 1 | 1 | Passed |
| return-path contract | ['root', 'export'] | ['root', 'export'] | Passed |
| unknown operation | {'error': 'unsupported menu operation'} | {'error': 'unsupported menu operation'} | Passed |
SHA-256 / 0e5678aa5a1e844d96ea64a33ccd7faef1fbcef087eebfc427c6025e9db423eb
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 == 'bind':
return dict({p['name']:p['value']},**p['bound'])
if action == 'parent-command':
return p['parent_command']
if action == 'cancel':
return p['committed']
if action == 'required-fields':
return all(k in p['bound'] for k in p['required'])
if action == 'value-identity':
return p['value']
if action == 'return-path':
return p['path'][:-1]
return {'error': 'unsupported menu operation'}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('bind contract', solve('bind', {'bound':{'format':'old','target':'doc'},'name':'format','value':'new'+str(N)}), {'format':'new'+str(N),'target':'doc'})
check('parent-command contract', solve('parent-command', {'parent_command':'export'+str(N),'row_id':'pdf','submenu_id':'formats'}), 'export'+str(N))
check('cancel contract', solve('cancel', {'committed':{'size':N},'provisional':{'size':N+1}}), {'size':N})
check('required-fields contract', solve('required-fields', {'bound':{'format':'pdf','scale':N},'required':['format','destination']}), False)
check('value-identity contract', solve('value-identity', {'value':N,'label':'Size '+str(N)}), N)
check('return-path contract', solve('return-path', {'path':['root','export','size'+str(N)]}), ['root','export'])
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 |
|---|---|---|---|
| bind contract | {'format': 'old', 'target': 'doc'} | {'format': 'new1', 'target': 'doc'} | Failed |
| parent-command contract | export1 | export1 | Passed |
| cancel contract | {'size': 1} | {'size': 1} | Passed |
| required-fields contract | False | False | Passed |
| value-identity contract | 1 | 1 | Passed |
| return-path contract | ['root', 'export'] | ['root', 'export'] | Passed |
| unknown operation | {'error': 'unsupported menu operation'} | {'error': 'unsupported menu operation'} | Passed |
SHA-256 / 28d71271c78204415bd52c9c2096a047d4b14ff40334a03e0e5d60abe7174b37
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 == 'bind':
return dict(p['bound'],**{p['name']:p['value']})
if action == 'parent-command':
return p['parent_command']
if action == 'cancel':
return p['committed']
if action == 'required-fields':
return all(k in p['bound'] for k in p['required'])
if action == 'value-identity':
return p['value']
if action == 'return-path':
return p['path'][:-1]
return {'error': 'unsupported menu operation'}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('bind contract', solve('bind', {'bound':{'format':'old','target':'doc'},'name':'format','value':'new'+str(N)}), {'format':'new'+str(N),'target':'doc'})
check('parent-command contract', solve('parent-command', {'parent_command':'export'+str(N),'row_id':'pdf','submenu_id':'formats'}), 'export'+str(N))
check('cancel contract', solve('cancel', {'committed':{'size':N},'provisional':{'size':N+1}}), {'size':N})
check('required-fields contract', solve('required-fields', {'bound':{'format':'pdf','scale':N},'required':['format','destination']}), False)
check('value-identity contract', solve('value-identity', {'value':N,'label':'Size '+str(N)}), N)
check('return-path contract', solve('return-path', {'path':['root','export','size'+str(N)]}), ['root','export'])
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 |
|---|---|---|---|
| bind contract | {'format': 'new1', 'target': 'doc'} | {'format': 'new1', 'target': 'doc'} | Passed |
| parent-command contract | export1 | export1 | Passed |
| cancel contract | {'size': 1} | {'size': 1} | Passed |
| required-fields contract | False | False | Passed |
| value-identity contract | 1 | 1 | Passed |
| return-path contract | ['root', 'export'] | ['root', 'export'] | Passed |
| unknown operation | {'error': 'unsupported menu operation'} | {'error': 'unsupported menu operation'} | Passed |
SHA-256 / dcb3308f6884fcd590fb8586ba0bfba9d592ca001b19f6fe086b048c58637d82
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:23.959711+00:00.
Case digest / fb97d753b8f3e0f39e02d8f65dbab8d4d366705dc77ecb63edc6e3388b476c64