{"abstract":"Reentering an existing submenu destroys deeper open state.","category":"Menu interactions","checks":7,"contract":"An opened cascade is an ordered branch; replacing a depth discards deeper descendants.","evaluation_group":"s3-menu-interactions-cascade-ownership","failed_approach":"The attempted repair `p['chain'][:p['depth']+1]` still violates the same-owner oracle.","family":"s3-menu-interactions-cascade-ownership-same-owner","id":"FA-32386","implementations":{"attempt":{"sha256":"7db5de78185948223a20d7731f69d716c2146a22e94f4a329f9385dbd31a247e","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nimport unicodedata\nN = 1\nobservations = []\ndef solve(action, p):\n    if action == 'replace':\n        return p['chain'][:p['depth']]+[p['item']]\n    if action == 'close':\n        return p['chain'][:p['depth']]\n    if action == 'remove-owner':\n        return p['chain'][:p['chain'].index(p['owner'])] if p['owner'] in p['chain'] else p['chain']\n    if action == 'same-owner':\n        return p['chain'][:p['depth']+1]\n    if action == 'parent-token':\n        return p['tokens'][p['depth']-1]\n    if action == 'owner-depth':\n        return p['chain'].index(p['owner']) if p['owner'] in p['chain'] else None\n    return {'error': 'unsupported menu operation'}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('replace contract', solve('replace', {'chain':['r','a','old'],'depth':1,'item':'b'+str(N)}), ['r','b'+str(N)])\ncheck('close contract', solve('close', {'chain':['r','a',str(N)],'depth':2}), ['r','a'])\ncheck('remove-owner contract', solve('remove-owner', {'chain':['r','a','b',str(N)],'owner':'a'}), ['r'])\ncheck('same-owner contract', solve('same-owner', {'chain':['r','a',str(N)],'depth':1,'item':'a'}), ['r','a',str(N)])\ncheck('parent-token contract', solve('parent-token', {'tokens':['root','parent'+str(N),'child'],'depth':2}), 'parent'+str(N))\ncheck('owner-depth contract', solve('owner-depth', {'chain':['r','a'+str(N),'b','c'],'owner':'a'+str(N)}), 1)\ncheck('unknown operation', solve('unknown', {}), {'error': 'unsupported menu operation'})\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"0b5796308bec6c47fd4a2163395a3c3846d1e1a36839b170ea6228fccf8e7684","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nimport unicodedata\nN = 1\nobservations = []\ndef solve(action, p):\n    if action == 'replace':\n        return p['chain'][:p['depth']]+[p['item']]\n    if action == 'close':\n        return p['chain'][:p['depth']]\n    if action == 'remove-owner':\n        return p['chain'][:p['chain'].index(p['owner'])] if p['owner'] in p['chain'] else p['chain']\n    if action == 'same-owner':\n        return p['chain'][:p['depth']]+[p['item']]\n    if action == 'parent-token':\n        return p['tokens'][p['depth']-1]\n    if action == 'owner-depth':\n        return p['chain'].index(p['owner']) if p['owner'] in p['chain'] else None\n    return {'error': 'unsupported menu operation'}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('replace contract', solve('replace', {'chain':['r','a','old'],'depth':1,'item':'b'+str(N)}), ['r','b'+str(N)])\ncheck('close contract', solve('close', {'chain':['r','a',str(N)],'depth':2}), ['r','a'])\ncheck('remove-owner contract', solve('remove-owner', {'chain':['r','a','b',str(N)],'owner':'a'}), ['r'])\ncheck('same-owner contract', solve('same-owner', {'chain':['r','a',str(N)],'depth':1,'item':'a'}), ['r','a',str(N)])\ncheck('parent-token contract', solve('parent-token', {'tokens':['root','parent'+str(N),'child'],'depth':2}), 'parent'+str(N))\ncheck('owner-depth contract', solve('owner-depth', {'chain':['r','a'+str(N),'b','c'],'owner':'a'+str(N)}), 1)\ncheck('unknown operation', solve('unknown', {}), {'error': 'unsupported menu operation'})\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"fixed":{"sha256":"4ec9dcbbc6a11be2ec545b65542eeefb30422f0e74773f5ef99ec12ab55daa1e","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nimport unicodedata\nN = 1\nobservations = []\ndef solve(action, p):\n    if action == 'replace':\n        return p['chain'][:p['depth']]+[p['item']]\n    if action == 'close':\n        return p['chain'][:p['depth']]\n    if action == 'remove-owner':\n        return p['chain'][:p['chain'].index(p['owner'])] if p['owner'] in p['chain'] else p['chain']\n    if action == 'same-owner':\n        return p['chain'] if p['chain'][p['depth']]==p['item'] else p['chain'][:p['depth']]+[p['item']]\n    if action == 'parent-token':\n        return p['tokens'][p['depth']-1]\n    if action == 'owner-depth':\n        return p['chain'].index(p['owner']) if p['owner'] in p['chain'] else None\n    return {'error': 'unsupported menu operation'}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('replace contract', solve('replace', {'chain':['r','a','old'],'depth':1,'item':'b'+str(N)}), ['r','b'+str(N)])\ncheck('close contract', solve('close', {'chain':['r','a',str(N)],'depth':2}), ['r','a'])\ncheck('remove-owner contract', solve('remove-owner', {'chain':['r','a','b',str(N)],'owner':'a'}), ['r'])\ncheck('same-owner contract', solve('same-owner', {'chain':['r','a',str(N)],'depth':1,'item':'a'}), ['r','a',str(N)])\ncheck('parent-token contract', solve('parent-token', {'tokens':['root','parent'+str(N),'child'],'depth':2}), 'parent'+str(N))\ncheck('owner-depth contract', solve('owner-depth', {'chain':['r','a'+str(N),'b','c'],'owner':'a'+str(N)}), 1)\ncheck('unknown operation', solve('unknown', {}), {'error': 'unsupported menu operation'})\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"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.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"s3-menu-interactions-cascade-ownership-same-owner","generated_at":"2026-09-29T14:42:11.754602+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Cascading and context menus require coherent command and session state as content changes.","repair":"Apply `p['chain'] if p['chain'][p['depth']]==p['item'] else p['chain'][:p['depth']]+[p['item']]` at same-owner.","root_cause":"The cascade-ownership model applies `p['chain'][:p['depth']]+[p['item']]` at its same-owner operation instead of the stipulated transformation.","sha256":"d0b399b43959dbb14b346a04773029d3ea18746278e1dc9b733ac1670cd22137","title":"Reentering an existing submenu destroys deeper open state · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":44.109,"exit_code":1,"observations":[{"actual":["r","b1"],"check":"replace contract","expected":["r","b1"],"passed":true},{"actual":["r","a"],"check":"close contract","expected":["r","a"],"passed":true},{"actual":["r"],"check":"remove-owner contract","expected":["r"],"passed":true},{"actual":["r","a"],"check":"same-owner contract","expected":["r","a","1"],"passed":false},{"actual":"parent1","check":"parent-token contract","expected":"parent1","passed":true},{"actual":1,"check":"owner-depth contract","expected":1,"passed":true},{"actual":{"error":"unsupported menu operation"},"check":"unknown operation","expected":{"error":"unsupported menu operation"},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"replace contract\", \"actual\": [\"r\", \"b1\"], \"expected\": [\"r\", \"b1\"], \"passed\": true}, {\"check\": \"close contract\", \"actual\": [\"r\", \"a\"], \"expected\": [\"r\", \"a\"], \"passed\": true}, {\"check\": \"remove-owner contract\", \"actual\": [\"r\"], \"expected\": [\"r\"], \"passed\": true}, {\"check\": \"same-owner contract\", \"actual\": [\"r\", \"a\"], \"expected\": [\"r\", \"a\", \"1\"], \"passed\": false}, {\"check\": \"parent-token contract\", \"actual\": \"parent1\", \"expected\": \"parent1\", \"passed\": true}, {\"check\": \"owner-depth contract\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"unknown operation\", \"actual\": {\"error\": \"unsupported menu operation\"}, \"expected\": {\"error\": \"unsupported menu operation\"}, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":42.275,"exit_code":1,"observations":[{"actual":["r","b1"],"check":"replace contract","expected":["r","b1"],"passed":true},{"actual":["r","a"],"check":"close contract","expected":["r","a"],"passed":true},{"actual":["r"],"check":"remove-owner contract","expected":["r"],"passed":true},{"actual":["r","a"],"check":"same-owner contract","expected":["r","a","1"],"passed":false},{"actual":"parent1","check":"parent-token contract","expected":"parent1","passed":true},{"actual":1,"check":"owner-depth contract","expected":1,"passed":true},{"actual":{"error":"unsupported menu operation"},"check":"unknown operation","expected":{"error":"unsupported menu operation"},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"replace contract\", \"actual\": [\"r\", \"b1\"], \"expected\": [\"r\", \"b1\"], \"passed\": true}, {\"check\": \"close contract\", \"actual\": [\"r\", \"a\"], \"expected\": [\"r\", \"a\"], \"passed\": true}, {\"check\": \"remove-owner contract\", \"actual\": [\"r\"], \"expected\": [\"r\"], \"passed\": true}, {\"check\": \"same-owner contract\", \"actual\": [\"r\", \"a\"], \"expected\": [\"r\", \"a\", \"1\"], \"passed\": false}, {\"check\": \"parent-token contract\", \"actual\": \"parent1\", \"expected\": \"parent1\", \"passed\": true}, {\"check\": \"owner-depth contract\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"unknown operation\", \"actual\": {\"error\": \"unsupported menu operation\"}, \"expected\": {\"error\": \"unsupported menu operation\"}, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":47.051,"exit_code":0,"observations":[{"actual":["r","b1"],"check":"replace contract","expected":["r","b1"],"passed":true},{"actual":["r","a"],"check":"close contract","expected":["r","a"],"passed":true},{"actual":["r"],"check":"remove-owner contract","expected":["r"],"passed":true},{"actual":["r","a","1"],"check":"same-owner contract","expected":["r","a","1"],"passed":true},{"actual":"parent1","check":"parent-token contract","expected":"parent1","passed":true},{"actual":1,"check":"owner-depth contract","expected":1,"passed":true},{"actual":{"error":"unsupported menu operation"},"check":"unknown operation","expected":{"error":"unsupported menu operation"},"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"replace contract\", \"actual\": [\"r\", \"b1\"], \"expected\": [\"r\", \"b1\"], \"passed\": true}, {\"check\": \"close contract\", \"actual\": [\"r\", \"a\"], \"expected\": [\"r\", \"a\"], \"passed\": true}, {\"check\": \"remove-owner contract\", \"actual\": [\"r\"], \"expected\": [\"r\"], \"passed\": true}, {\"check\": \"same-owner contract\", \"actual\": [\"r\", \"a\", \"1\"], \"expected\": [\"r\", \"a\", \"1\"], \"passed\": true}, {\"check\": \"parent-token contract\", \"actual\": \"parent1\", \"expected\": \"parent1\", \"passed\": true}, {\"check\": \"owner-depth contract\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"unknown operation\", \"actual\": {\"error\": \"unsupported menu operation\"}, \"expected\": {\"error\": \"unsupported menu operation\"}, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}