{"abstract":"Menu macro playback reorders semantically dependent commands.","category":"Menu interactions","checks":7,"contract":"Menu command macros record successful semantic commands, omit private context data, preserve execution order and retain typed parameter bindings.","evaluation_group":"s3-menu-interactions-menu-macro-recording","failed_approach":"The attempted repair `sorted(p['steps'])` still violates the playback-order oracle.","family":"s3-menu-interactions-menu-macro-recording-playback-order","id":"FA-33766","implementations":{"attempt":{"sha256":"b3281afa2e7ecb0ac4375bc43925b03ca20a74befd5475439b7cef44dfda0c01","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 == 'semantic':\n        return {'command':p['command'],'arguments':p['arguments']}\n    if action == 'failed':\n        return p['macro'] if not p['success'] else p['macro']+[p['entry']]\n    if action == 'private-args':\n        return {k:v for k,v in p['args'].items() if k not in p['private']}\n    if action == 'playback-order':\n        return sorted(p['steps'])\n    if action == 'recording-playback':\n        return p['recording'] and not p['replaying']\n    if action == 'typed-parameters':\n        return p['args']\n    return {'error': 'unsupported menu operation'}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('semantic contract', solve('semantic', {'command':'resize','arguments':{'size':N},'row':'row-7','label':'Resize'}), {'command':'resize','arguments':{'size':N}})\ncheck('failed contract', solve('failed', {'macro':[N],'entry':N+1,'success':False}), [N])\ncheck('private-args contract', solve('private-args', {'args':{'size':N,'document_token':'private'},'private':['document_token']}), {'size':N})\ncheck('playback-order contract', solve('playback-order', {'steps':['create','write'+str(N),'close']}), ['create','write'+str(N),'close'])\ncheck('recording-playback contract', solve('recording-playback', {'recording':True,'replaying':True,'step':N}), False)\ncheck('typed-parameters contract', solve('typed-parameters', {'args':{'count':N+1,'enabled':False}}), {'count':N+1,'enabled':False})\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":"fd8b1fed6fae7edaa6e3f85fdca6824a87af2788380f71dcb96000ef2b05ed5e","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 == 'semantic':\n        return {'command':p['command'],'arguments':p['arguments']}\n    if action == 'failed':\n        return p['macro'] if not p['success'] else p['macro']+[p['entry']]\n    if action == 'private-args':\n        return {k:v for k,v in p['args'].items() if k not in p['private']}\n    if action == 'playback-order':\n        return list(reversed(p['steps']))\n    if action == 'recording-playback':\n        return p['recording'] and not p['replaying']\n    if action == 'typed-parameters':\n        return p['args']\n    return {'error': 'unsupported menu operation'}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('semantic contract', solve('semantic', {'command':'resize','arguments':{'size':N},'row':'row-7','label':'Resize'}), {'command':'resize','arguments':{'size':N}})\ncheck('failed contract', solve('failed', {'macro':[N],'entry':N+1,'success':False}), [N])\ncheck('private-args contract', solve('private-args', {'args':{'size':N,'document_token':'private'},'private':['document_token']}), {'size':N})\ncheck('playback-order contract', solve('playback-order', {'steps':['create','write'+str(N),'close']}), ['create','write'+str(N),'close'])\ncheck('recording-playback contract', solve('recording-playback', {'recording':True,'replaying':True,'step':N}), False)\ncheck('typed-parameters contract', solve('typed-parameters', {'args':{'count':N+1,'enabled':False}}), {'count':N+1,'enabled':False})\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":"8ec8c51dfb89b775344110c6b7fc32f03b51438858314d916f76855edbffd8ed","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 == 'semantic':\n        return {'command':p['command'],'arguments':p['arguments']}\n    if action == 'failed':\n        return p['macro'] if not p['success'] else p['macro']+[p['entry']]\n    if action == 'private-args':\n        return {k:v for k,v in p['args'].items() if k not in p['private']}\n    if action == 'playback-order':\n        return p['steps']\n    if action == 'recording-playback':\n        return p['recording'] and not p['replaying']\n    if action == 'typed-parameters':\n        return p['args']\n    return {'error': 'unsupported menu operation'}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('semantic contract', solve('semantic', {'command':'resize','arguments':{'size':N},'row':'row-7','label':'Resize'}), {'command':'resize','arguments':{'size':N}})\ncheck('failed contract', solve('failed', {'macro':[N],'entry':N+1,'success':False}), [N])\ncheck('private-args contract', solve('private-args', {'args':{'size':N,'document_token':'private'},'private':['document_token']}), {'size':N})\ncheck('playback-order contract', solve('playback-order', {'steps':['create','write'+str(N),'close']}), ['create','write'+str(N),'close'])\ncheck('recording-playback contract', solve('recording-playback', {'recording':True,'replaying':True,'step':N}), False)\ncheck('typed-parameters contract', solve('typed-parameters', {'args':{'count':N+1,'enabled':False}}), {'count':N+1,'enabled':False})\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-menu-macro-recording-playback-order","generated_at":"2026-09-29T14:42:25.472638+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['steps']` at playback-order.","root_cause":"The menu-macro-recording model applies `list(reversed(p['steps']))` at its playback-order operation instead of the stipulated transformation.","sha256":"068896ce90974a6325832f30c627bc46752516831330ba1fd89d2a9decddc6f6","title":"Menu macro playback reorders semantically dependent commands · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":42.846,"exit_code":1,"observations":[{"actual":{"arguments":{"size":1},"command":"resize"},"check":"semantic contract","expected":{"arguments":{"size":1},"command":"resize"},"passed":true},{"actual":[1],"check":"failed contract","expected":[1],"passed":true},{"actual":{"size":1},"check":"private-args contract","expected":{"size":1},"passed":true},{"actual":["close","create","write1"],"check":"playback-order contract","expected":["create","write1","close"],"passed":false},{"actual":false,"check":"recording-playback contract","expected":false,"passed":true},{"actual":{"count":2,"enabled":false},"check":"typed-parameters contract","expected":{"count":2,"enabled":false},"passed":true},{"actual":{"error":"unsupported menu operation"},"check":"unknown operation","expected":{"error":"unsupported menu operation"},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"semantic contract\", \"actual\": {\"command\": \"resize\", \"arguments\": {\"size\": 1}}, \"expected\": {\"command\": \"resize\", \"arguments\": {\"size\": 1}}, \"passed\": true}, {\"check\": \"failed contract\", \"actual\": [1], \"expected\": [1], \"passed\": true}, {\"check\": \"private-args contract\", \"actual\": {\"size\": 1}, \"expected\": {\"size\": 1}, \"passed\": true}, {\"check\": \"playback-order contract\", \"actual\": [\"close\", \"create\", \"write1\"], \"expected\": [\"create\", \"write1\", \"close\"], \"passed\": false}, {\"check\": \"recording-playback contract\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"typed-parameters contract\", \"actual\": {\"count\": 2, \"enabled\": false}, \"expected\": {\"count\": 2, \"enabled\": false}, \"passed\": true}, {\"check\": \"unknown operation\", \"actual\": {\"error\": \"unsupported menu operation\"}, \"expected\": {\"error\": \"unsupported menu operation\"}, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":42.594,"exit_code":1,"observations":[{"actual":{"arguments":{"size":1},"command":"resize"},"check":"semantic contract","expected":{"arguments":{"size":1},"command":"resize"},"passed":true},{"actual":[1],"check":"failed contract","expected":[1],"passed":true},{"actual":{"size":1},"check":"private-args contract","expected":{"size":1},"passed":true},{"actual":["close","write1","create"],"check":"playback-order contract","expected":["create","write1","close"],"passed":false},{"actual":false,"check":"recording-playback contract","expected":false,"passed":true},{"actual":{"count":2,"enabled":false},"check":"typed-parameters contract","expected":{"count":2,"enabled":false},"passed":true},{"actual":{"error":"unsupported menu operation"},"check":"unknown operation","expected":{"error":"unsupported menu operation"},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"semantic contract\", \"actual\": {\"command\": \"resize\", \"arguments\": {\"size\": 1}}, \"expected\": {\"command\": \"resize\", \"arguments\": {\"size\": 1}}, \"passed\": true}, {\"check\": \"failed contract\", \"actual\": [1], \"expected\": [1], \"passed\": true}, {\"check\": \"private-args contract\", \"actual\": {\"size\": 1}, \"expected\": {\"size\": 1}, \"passed\": true}, {\"check\": \"playback-order contract\", \"actual\": [\"close\", \"write1\", \"create\"], \"expected\": [\"create\", \"write1\", \"close\"], \"passed\": false}, {\"check\": \"recording-playback contract\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"typed-parameters contract\", \"actual\": {\"count\": 2, \"enabled\": false}, \"expected\": {\"count\": 2, \"enabled\": false}, \"passed\": true}, {\"check\": \"unknown operation\", \"actual\": {\"error\": \"unsupported menu operation\"}, \"expected\": {\"error\": \"unsupported menu operation\"}, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":46.947,"exit_code":0,"observations":[{"actual":{"arguments":{"size":1},"command":"resize"},"check":"semantic contract","expected":{"arguments":{"size":1},"command":"resize"},"passed":true},{"actual":[1],"check":"failed contract","expected":[1],"passed":true},{"actual":{"size":1},"check":"private-args contract","expected":{"size":1},"passed":true},{"actual":["create","write1","close"],"check":"playback-order contract","expected":["create","write1","close"],"passed":true},{"actual":false,"check":"recording-playback contract","expected":false,"passed":true},{"actual":{"count":2,"enabled":false},"check":"typed-parameters contract","expected":{"count":2,"enabled":false},"passed":true},{"actual":{"error":"unsupported menu operation"},"check":"unknown operation","expected":{"error":"unsupported menu operation"},"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"semantic contract\", \"actual\": {\"command\": \"resize\", \"arguments\": {\"size\": 1}}, \"expected\": {\"command\": \"resize\", \"arguments\": {\"size\": 1}}, \"passed\": true}, {\"check\": \"failed contract\", \"actual\": [1], \"expected\": [1], \"passed\": true}, {\"check\": \"private-args contract\", \"actual\": {\"size\": 1}, \"expected\": {\"size\": 1}, \"passed\": true}, {\"check\": \"playback-order contract\", \"actual\": [\"create\", \"write1\", \"close\"], \"expected\": [\"create\", \"write1\", \"close\"], \"passed\": true}, {\"check\": \"recording-playback contract\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"typed-parameters contract\", \"actual\": {\"count\": 2, \"enabled\": false}, \"expected\": {\"count\": 2, \"enabled\": false}, \"passed\": true}, {\"check\": \"unknown operation\", \"actual\": {\"error\": \"unsupported menu operation\"}, \"expected\": {\"error\": \"unsupported menu operation\"}, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}