FA-32546 / Menu interactions / Open access
Contribution revision is borrowed from another provider · case 01
Contribution revision is borrowed from another provider.
ROOT CAUSE
The contributor-merge model applies `max(p['revision'].values())` at its revision-owner operation instead of the stipulated transformation.
VERIFIED REPAIR
Apply `p['revision'].get(p['provider'],0)` at revision-owner.
Unsuccessful approach: The attempted repair `sum(p['revision'].values())` still violates the revision-owner oracle.
Case contract
Contributed menu commands are namespaced, rank-stable, and replaceable only by their provider; removals retain unrelated content.
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 == 'namespace':
return p['provider']+':'+p['id']
if action == 'rank':
return sorted(p,key=lambda x:x['rank'])
if action == 'unload':
return [x for x in p['rows'] if x['provider']!=p['provider']]
if action == 'replace':
return [p['new'] if x['provider']==p['new']['provider'] and x['id']==p['new']['id'] else x for x in p['rows']]
if action == 'disabled-provider':
return [x for x in p['rows'] if x['provider'] not in p['disabled']]
if action == 'revision-owner':
return max(p['revision'].values())
return {'error': 'unsupported menu operation'}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('namespace contract', solve('namespace', {'provider':'ext'+str(N),'id':'open'}), 'ext'+str(N)+':open')
check('rank contract', solve('rank', [{'id':'z','rank':N},{'id':'a','rank':N+1}]), [{'id':'z','rank':N},{'id':'a','rank':N+1}])
check('unload contract', solve('unload', {'rows':[{'provider':'a','id':N},{'provider':'b','id':N+1}],'provider':'a'}), [{'provider':'b','id':N+1}])
check('replace contract', solve('replace', {'rows':[{'provider':'a','id':N,'v':0},{'provider':'b','id':N,'v':0}],'new':{'provider':'b','id':N,'v':1}}), [{'provider':'a','id':N,'v':0},{'provider':'b','id':N,'v':1}])
check('disabled-provider contract', solve('disabled-provider', {'rows':[{'provider':'off','id':N},{'provider':'on','id':N+1}],'disabled':['off']}), [{'provider':'on','id':N+1}])
check('revision-owner contract', solve('revision-owner', {'provider':'a','revision':{'a':N,'b':N+10}}), 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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| namespace contract | ext1:open | ext1:open | Passed |
| rank contract | [{'id': 'z', 'rank': 1}, {'id': 'a', 'rank': 2}] | [{'id': 'z', 'rank': 1}, {'id': 'a', 'rank': 2}] | Passed |
| unload contract | [{'id': 2, 'provider': 'b'}] | [{'id': 2, 'provider': 'b'}] | Passed |
| replace contract | [{'id': 1, 'provider': 'a', 'v': 0}, {'id': 1, 'provider': 'b', 'v': 1}] | [{'id': 1, 'provider': 'a', 'v': 0}, {'id': 1, 'provider': 'b', 'v': 1}] | Passed |
| disabled-provider contract | [{'id': 2, 'provider': 'on'}] | [{'id': 2, 'provider': 'on'}] | Passed |
| revision-owner contract | 11 | 1 | Failed |
| unknown operation | {'error': 'unsupported menu operation'} | {'error': 'unsupported menu operation'} | Passed |
SHA-256 / 2d77e66322d9fbbfebdce22f26a6d500564c8d77b3c00e65d602d0ae3c22eb20
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 == 'namespace':
return p['provider']+':'+p['id']
if action == 'rank':
return sorted(p,key=lambda x:x['rank'])
if action == 'unload':
return [x for x in p['rows'] if x['provider']!=p['provider']]
if action == 'replace':
return [p['new'] if x['provider']==p['new']['provider'] and x['id']==p['new']['id'] else x for x in p['rows']]
if action == 'disabled-provider':
return [x for x in p['rows'] if x['provider'] not in p['disabled']]
if action == 'revision-owner':
return sum(p['revision'].values())
return {'error': 'unsupported menu operation'}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('namespace contract', solve('namespace', {'provider':'ext'+str(N),'id':'open'}), 'ext'+str(N)+':open')
check('rank contract', solve('rank', [{'id':'z','rank':N},{'id':'a','rank':N+1}]), [{'id':'z','rank':N},{'id':'a','rank':N+1}])
check('unload contract', solve('unload', {'rows':[{'provider':'a','id':N},{'provider':'b','id':N+1}],'provider':'a'}), [{'provider':'b','id':N+1}])
check('replace contract', solve('replace', {'rows':[{'provider':'a','id':N,'v':0},{'provider':'b','id':N,'v':0}],'new':{'provider':'b','id':N,'v':1}}), [{'provider':'a','id':N,'v':0},{'provider':'b','id':N,'v':1}])
check('disabled-provider contract', solve('disabled-provider', {'rows':[{'provider':'off','id':N},{'provider':'on','id':N+1}],'disabled':['off']}), [{'provider':'on','id':N+1}])
check('revision-owner contract', solve('revision-owner', {'provider':'a','revision':{'a':N,'b':N+10}}), 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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| namespace contract | ext1:open | ext1:open | Passed |
| rank contract | [{'id': 'z', 'rank': 1}, {'id': 'a', 'rank': 2}] | [{'id': 'z', 'rank': 1}, {'id': 'a', 'rank': 2}] | Passed |
| unload contract | [{'id': 2, 'provider': 'b'}] | [{'id': 2, 'provider': 'b'}] | Passed |
| replace contract | [{'id': 1, 'provider': 'a', 'v': 0}, {'id': 1, 'provider': 'b', 'v': 1}] | [{'id': 1, 'provider': 'a', 'v': 0}, {'id': 1, 'provider': 'b', 'v': 1}] | Passed |
| disabled-provider contract | [{'id': 2, 'provider': 'on'}] | [{'id': 2, 'provider': 'on'}] | Passed |
| revision-owner contract | 12 | 1 | Failed |
| unknown operation | {'error': 'unsupported menu operation'} | {'error': 'unsupported menu operation'} | Passed |
SHA-256 / d1801fbb77a7c014d7b59fd0068c06d3d2c06d0acd417dd9fde791b1988bea01
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 == 'namespace':
return p['provider']+':'+p['id']
if action == 'rank':
return sorted(p,key=lambda x:x['rank'])
if action == 'unload':
return [x for x in p['rows'] if x['provider']!=p['provider']]
if action == 'replace':
return [p['new'] if x['provider']==p['new']['provider'] and x['id']==p['new']['id'] else x for x in p['rows']]
if action == 'disabled-provider':
return [x for x in p['rows'] if x['provider'] not in p['disabled']]
if action == 'revision-owner':
return p['revision'].get(p['provider'],0)
return {'error': 'unsupported menu operation'}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('namespace contract', solve('namespace', {'provider':'ext'+str(N),'id':'open'}), 'ext'+str(N)+':open')
check('rank contract', solve('rank', [{'id':'z','rank':N},{'id':'a','rank':N+1}]), [{'id':'z','rank':N},{'id':'a','rank':N+1}])
check('unload contract', solve('unload', {'rows':[{'provider':'a','id':N},{'provider':'b','id':N+1}],'provider':'a'}), [{'provider':'b','id':N+1}])
check('replace contract', solve('replace', {'rows':[{'provider':'a','id':N,'v':0},{'provider':'b','id':N,'v':0}],'new':{'provider':'b','id':N,'v':1}}), [{'provider':'a','id':N,'v':0},{'provider':'b','id':N,'v':1}])
check('disabled-provider contract', solve('disabled-provider', {'rows':[{'provider':'off','id':N},{'provider':'on','id':N+1}],'disabled':['off']}), [{'provider':'on','id':N+1}])
check('revision-owner contract', solve('revision-owner', {'provider':'a','revision':{'a':N,'b':N+10}}), 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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| namespace contract | ext1:open | ext1:open | Passed |
| rank contract | [{'id': 'z', 'rank': 1}, {'id': 'a', 'rank': 2}] | [{'id': 'z', 'rank': 1}, {'id': 'a', 'rank': 2}] | Passed |
| unload contract | [{'id': 2, 'provider': 'b'}] | [{'id': 2, 'provider': 'b'}] | Passed |
| replace contract | [{'id': 1, 'provider': 'a', 'v': 0}, {'id': 1, 'provider': 'b', 'v': 1}] | [{'id': 1, 'provider': 'a', 'v': 0}, {'id': 1, 'provider': 'b', 'v': 1}] | Passed |
| disabled-provider contract | [{'id': 2, 'provider': 'on'}] | [{'id': 2, 'provider': 'on'}] | Passed |
| revision-owner contract | 1 | 1 | Passed |
| unknown operation | {'error': 'unsupported menu operation'} | {'error': 'unsupported menu operation'} | Passed |
SHA-256 / 84e36f3efd0f4e52e8bb14088bace565ea69dec4949863c08758c8a21ef5fb79
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:13.260095+00:00.
Case digest / fc0695454b51479dd4858175347c7949cef99167b1e75ea749d97a96601774d0