{"abstract":"Menu macro playback recursively records its own 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 `p['recording'] or p['replaying']` still violates the recording-playback oracle.","family":"s3-menu-interactions-menu-macro-recording-recording-playback","id":"FA-33771","implementations":{"attempt":{"sha256":"b3179693183360077f5e31f6ad18ac252d6c72753db8f3debb2b0342d4071eb9","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'] or 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":"bda1682b64dd63f8db5ac7e5d407c672c818b25ac5aa743fefb3ac06125e8153","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']\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-recording-playback","generated_at":"2026-09-29T14:42:25.565518+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['recording'] and not p['replaying']` at recording-playback.","root_cause":"The menu-macro-recording model applies `p['recording']` at its recording-playback operation instead of the stipulated transformation.","sha256":"98156b231fdf95d5f98e9947635a09cb51b82ec6ac8abe8ac6f553d6f2648b47","title":"Menu macro playback recursively records its own commands · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":43.284,"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":["create","write1","close"],"check":"playback-order contract","expected":["create","write1","close"],"passed":true},{"actual":true,"check":"recording-playback contract","expected":false,"passed":false},{"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\": [\"create\", \"write1\", \"close\"], \"expected\": [\"create\", \"write1\", \"close\"], \"passed\": true}, {\"check\": \"recording-playback contract\", \"actual\": true, \"expected\": false, \"passed\": false}, {\"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":46.503,"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":["create","write1","close"],"check":"playback-order contract","expected":["create","write1","close"],"passed":true},{"actual":true,"check":"recording-playback contract","expected":false,"passed":false},{"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\": [\"create\", \"write1\", \"close\"], \"expected\": [\"create\", \"write1\", \"close\"], \"passed\": true}, {\"check\": \"recording-playback contract\", \"actual\": true, \"expected\": false, \"passed\": false}, {\"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":44.484,"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"}