{"abstract":"The event trace violates the capture revision rule and produces incorrect keyboard state or command output.","category":"Keyboard interactions","checks":8,"contract":"Case [document,revision,events]. Events [kind,a,b,text]. Begin captures valid range [a,b) and current revision with preedit text; update replaces pending preedit; external replaces entire document and increments revision. Commit applies pending replacement only if captured revision still equals current, otherwise counts stale conflict; either path closes pending. Cancel discards pending. Return document, revision, pending [lo,hi,base,text] or None, conflicts. Inputs are finite ordered event traces; return the stated deterministic state. Batch entries are independent. N varies the number of independent input transactions.","evaluation_group":"s3-keyboard-composition-revision","failed_approach":"The partial repair changes this transition to pending=[a,b,revision+1,text], which still violates the model contract on the explicit regression traces.","family":"s3-keyboard-interactions-composition-revision-capture-revision","id":"FA-32051","implementations":{"attempt":{"sha256":"8605d01597410e312184faf82804349dba84fa99b510e915cb315be65039091a","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(cases):\n    def run(c):\n        document,revision,events=c\n        pending=None; conflicts=0\n        for kind,a,b,text in events:\n            if kind=='begin': pending=[a,b,revision+1,text]\n            elif kind=='update' and pending is not None: pending[3]=text\n            elif kind=='external': document=text; revision+=1\n            elif kind=='commit' and pending is not None:\n                lo,hi,base,preedit=pending\n                if base==revision:\n                    document=document[:lo]+preedit+document[hi:]\n                    revision+=1\n                else: conflicts+=1\n                pending=None\n            elif kind=='cancel': pending=None\n        return [document,revision,pending,conflicts]\n    return [run(c) for c in cases]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('composition-revision scenario 0', solve([['abcd', 4, []]] * N), [['abcd', 4, None, 0]] * N)\ncheck('composition-revision scenario 1', solve([['abcd', 4, [['begin', 1, 3, 'X'], ['commit', 0, 0, '']]]] * N), [['aXd', 5, None, 0]] * N)\ncheck('composition-revision scenario 2', solve([['abcd', 4, [['begin', 1, 3, 'X'], ['update', 0, 0, 'YZ'], ['commit', 0, 0, '']]]] * N), [['aYZd', 5, None, 0]] * N)\ncheck('composition-revision scenario 3', solve([['abcd', 4, [['begin', 1, 3, 'X'], ['external', 0, 0, 'new'], ['commit', 0, 0, '']]]] * N), [['new', 5, None, 1]] * N)\ncheck('composition-revision scenario 4', solve([['abcd', 4, [['external', 0, 0, 'one'], ['external', 0, 0, 'two']]]] * N), [['two', 6, None, 0]] * N)\ncheck('composition-revision scenario 5', solve([['abcd', 4, [['begin', 1, 3, 'X'], ['external', 0, 0, 'one'], ['external', 0, 0, 'two'], ['commit', 0, 0, ''], ['begin', 0, 1, 'Z'], ['external', 0, 0, 'three'], ['commit', 0, 0, '']]]] * N), [['three', 7, None, 2]] * N)\ncheck('composition-revision scenario 6', solve([['abcd', 4, [['begin', 0, 0, ''], ['cancel', 0, 0, '']]]] * N), [['abcd', 4, None, 0]] * N)\ncheck('composition-revision scenario 7', solve([['abcd', 0, [['begin', 1, 3, 'X'], ['commit', 0, 0, ''], ['commit', 0, 0, '']]]] * N), [['aXd', 1, None, 0]] * N)\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":"abc8be1a4e22b8bd340f93167f02180edbba7629c7e11bc978b4c789ddf0a9cd","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(cases):\n    def run(c):\n        document,revision,events=c\n        pending=None; conflicts=0\n        for kind,a,b,text in events:\n            if kind=='begin': pending=[a,b,0,text]\n            elif kind=='update' and pending is not None: pending[3]=text\n            elif kind=='external': document=text; revision+=1\n            elif kind=='commit' and pending is not None:\n                lo,hi,base,preedit=pending\n                if base==revision:\n                    document=document[:lo]+preedit+document[hi:]\n                    revision+=1\n                else: conflicts+=1\n                pending=None\n            elif kind=='cancel': pending=None\n        return [document,revision,pending,conflicts]\n    return [run(c) for c in cases]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('composition-revision scenario 0', solve([['abcd', 4, []]] * N), [['abcd', 4, None, 0]] * N)\ncheck('composition-revision scenario 1', solve([['abcd', 4, [['begin', 1, 3, 'X'], ['commit', 0, 0, '']]]] * N), [['aXd', 5, None, 0]] * N)\ncheck('composition-revision scenario 2', solve([['abcd', 4, [['begin', 1, 3, 'X'], ['update', 0, 0, 'YZ'], ['commit', 0, 0, '']]]] * N), [['aYZd', 5, None, 0]] * N)\ncheck('composition-revision scenario 3', solve([['abcd', 4, [['begin', 1, 3, 'X'], ['external', 0, 0, 'new'], ['commit', 0, 0, '']]]] * N), [['new', 5, None, 1]] * N)\ncheck('composition-revision scenario 4', solve([['abcd', 4, [['external', 0, 0, 'one'], ['external', 0, 0, 'two']]]] * N), [['two', 6, None, 0]] * N)\ncheck('composition-revision scenario 5', solve([['abcd', 4, [['begin', 1, 3, 'X'], ['external', 0, 0, 'one'], ['external', 0, 0, 'two'], ['commit', 0, 0, ''], ['begin', 0, 1, 'Z'], ['external', 0, 0, 'three'], ['commit', 0, 0, '']]]] * N), [['three', 7, None, 2]] * N)\ncheck('composition-revision scenario 6', solve([['abcd', 4, [['begin', 0, 0, ''], ['cancel', 0, 0, '']]]] * N), [['abcd', 4, None, 0]] * N)\ncheck('composition-revision scenario 7', solve([['abcd', 0, [['begin', 1, 3, 'X'], ['commit', 0, 0, ''], ['commit', 0, 0, '']]]] * N), [['aXd', 1, None, 0]] * N)\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":"1716ae8042814704e7f822e0aae27ac4b9e47d4ef83ad742654827f3399a5289","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(cases):\n    def run(c):\n        document,revision,events=c\n        pending=None; conflicts=0\n        for kind,a,b,text in events:\n            if kind=='begin': pending=[a,b,revision,text]\n            elif kind=='update' and pending is not None: pending[3]=text\n            elif kind=='external': document=text; revision+=1\n            elif kind=='commit' and pending is not None:\n                lo,hi,base,preedit=pending\n                if base==revision:\n                    document=document[:lo]+preedit+document[hi:]\n                    revision+=1\n                else: conflicts+=1\n                pending=None\n            elif kind=='cancel': pending=None\n        return [document,revision,pending,conflicts]\n    return [run(c) for c in cases]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('composition-revision scenario 0', solve([['abcd', 4, []]] * N), [['abcd', 4, None, 0]] * N)\ncheck('composition-revision scenario 1', solve([['abcd', 4, [['begin', 1, 3, 'X'], ['commit', 0, 0, '']]]] * N), [['aXd', 5, None, 0]] * N)\ncheck('composition-revision scenario 2', solve([['abcd', 4, [['begin', 1, 3, 'X'], ['update', 0, 0, 'YZ'], ['commit', 0, 0, '']]]] * N), [['aYZd', 5, None, 0]] * N)\ncheck('composition-revision scenario 3', solve([['abcd', 4, [['begin', 1, 3, 'X'], ['external', 0, 0, 'new'], ['commit', 0, 0, '']]]] * N), [['new', 5, None, 1]] * N)\ncheck('composition-revision scenario 4', solve([['abcd', 4, [['external', 0, 0, 'one'], ['external', 0, 0, 'two']]]] * N), [['two', 6, None, 0]] * N)\ncheck('composition-revision scenario 5', solve([['abcd', 4, [['begin', 1, 3, 'X'], ['external', 0, 0, 'one'], ['external', 0, 0, 'two'], ['commit', 0, 0, ''], ['begin', 0, 1, 'Z'], ['external', 0, 0, 'three'], ['commit', 0, 0, '']]]] * N), [['three', 7, None, 2]] * N)\ncheck('composition-revision scenario 6', solve([['abcd', 4, [['begin', 0, 0, ''], ['cancel', 0, 0, '']]]] * N), [['abcd', 4, None, 0]] * N)\ncheck('composition-revision scenario 7', solve([['abcd', 0, [['begin', 1, 3, 'X'], ['commit', 0, 0, ''], ['commit', 0, 0, '']]]] * N), [['aXd', 1, None, 0]] * N)\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 stipulated event model, not a browser implementation or web standard conformance claim. 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-keyboard-interactions-composition-revision-capture-revision","generated_at":"2026-09-29T14:42:08.178421+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Controlled keyboard event processing model for debugging application event logic.","repair":"Use the contract transition `pending=[a,b,revision,text]` at the capture revision fault site; preserve the other state transitions.","root_cause":"Composition snapshot stores an unrelated base revision.","sha256":"de277d1d5c317eec20e2d5fb73d238115e6aa7d0cf1ee10a38390085d384eab9","title":"Composition replacement against document revisions: Composition snapshot stores an unrelated base revision · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":46.278,"exit_code":1,"observations":[{"actual":[["abcd",4,null,0]],"check":"composition-revision scenario 0","expected":[["abcd",4,null,0]],"passed":true},{"actual":[["abcd",4,null,1]],"check":"composition-revision scenario 1","expected":[["aXd",5,null,0]],"passed":false},{"actual":[["abcd",4,null,1]],"check":"composition-revision scenario 2","expected":[["aYZd",5,null,0]],"passed":false},{"actual":[["nX",6,null,0]],"check":"composition-revision scenario 3","expected":[["new",5,null,1]],"passed":false},{"actual":[["two",6,null,0]],"check":"composition-revision scenario 4","expected":[["two",6,null,0]],"passed":true},{"actual":[["Zhree",8,null,1]],"check":"composition-revision scenario 5","expected":[["three",7,null,2]],"passed":false},{"actual":[["abcd",4,null,0]],"check":"composition-revision scenario 6","expected":[["abcd",4,null,0]],"passed":true},{"actual":[["abcd",0,null,1]],"check":"composition-revision scenario 7","expected":[["aXd",1,null,0]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"composition-revision scenario 0\", \"actual\": [[\"abcd\", 4, null, 0]], \"expected\": [[\"abcd\", 4, null, 0]], \"passed\": true}, {\"check\": \"composition-revision scenario 1\", \"actual\": [[\"abcd\", 4, null, 1]], \"expected\": [[\"aXd\", 5, null, 0]], \"passed\": false}, {\"check\": \"composition-revision scenario 2\", \"actual\": [[\"abcd\", 4, null, 1]], \"expected\": [[\"aYZd\", 5, null, 0]], \"passed\": false}, {\"check\": \"composition-revision scenario 3\", \"actual\": [[\"nX\", 6, null, 0]], \"expected\": [[\"new\", 5, null, 1]], \"passed\": false}, {\"check\": \"composition-revision scenario 4\", \"actual\": [[\"two\", 6, null, 0]], \"expected\": [[\"two\", 6, null, 0]], \"passed\": true}, {\"check\": \"composition-revision scenario 5\", \"actual\": [[\"Zhree\", 8, null, 1]], \"expected\": [[\"three\", 7, null, 2]], \"passed\": false}, {\"check\": \"composition-revision scenario 6\", \"actual\": [[\"abcd\", 4, null, 0]], \"expected\": [[\"abcd\", 4, null, 0]], \"passed\": true}, {\"check\": \"composition-revision scenario 7\", \"actual\": [[\"abcd\", 0, null, 1]], \"expected\": [[\"aXd\", 1, null, 0]], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.138,"exit_code":1,"observations":[{"actual":[["abcd",4,null,0]],"check":"composition-revision scenario 0","expected":[["abcd",4,null,0]],"passed":true},{"actual":[["abcd",4,null,1]],"check":"composition-revision scenario 1","expected":[["aXd",5,null,0]],"passed":false},{"actual":[["abcd",4,null,1]],"check":"composition-revision scenario 2","expected":[["aYZd",5,null,0]],"passed":false},{"actual":[["new",5,null,1]],"check":"composition-revision scenario 3","expected":[["new",5,null,1]],"passed":true},{"actual":[["two",6,null,0]],"check":"composition-revision scenario 4","expected":[["two",6,null,0]],"passed":true},{"actual":[["three",7,null,2]],"check":"composition-revision scenario 5","expected":[["three",7,null,2]],"passed":true},{"actual":[["abcd",4,null,0]],"check":"composition-revision scenario 6","expected":[["abcd",4,null,0]],"passed":true},{"actual":[["aXd",1,null,0]],"check":"composition-revision scenario 7","expected":[["aXd",1,null,0]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"composition-revision scenario 0\", \"actual\": [[\"abcd\", 4, null, 0]], \"expected\": [[\"abcd\", 4, null, 0]], \"passed\": true}, {\"check\": \"composition-revision scenario 1\", \"actual\": [[\"abcd\", 4, null, 1]], \"expected\": [[\"aXd\", 5, null, 0]], \"passed\": false}, {\"check\": \"composition-revision scenario 2\", \"actual\": [[\"abcd\", 4, null, 1]], \"expected\": [[\"aYZd\", 5, null, 0]], \"passed\": false}, {\"check\": \"composition-revision scenario 3\", \"actual\": [[\"new\", 5, null, 1]], \"expected\": [[\"new\", 5, null, 1]], \"passed\": true}, {\"check\": \"composition-revision scenario 4\", \"actual\": [[\"two\", 6, null, 0]], \"expected\": [[\"two\", 6, null, 0]], \"passed\": true}, {\"check\": \"composition-revision scenario 5\", \"actual\": [[\"three\", 7, null, 2]], \"expected\": [[\"three\", 7, null, 2]], \"passed\": true}, {\"check\": \"composition-revision scenario 6\", \"actual\": [[\"abcd\", 4, null, 0]], \"expected\": [[\"abcd\", 4, null, 0]], \"passed\": true}, {\"check\": \"composition-revision scenario 7\", \"actual\": [[\"aXd\", 1, null, 0]], \"expected\": [[\"aXd\", 1, null, 0]], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":46.398,"exit_code":0,"observations":[{"actual":[["abcd",4,null,0]],"check":"composition-revision scenario 0","expected":[["abcd",4,null,0]],"passed":true},{"actual":[["aXd",5,null,0]],"check":"composition-revision scenario 1","expected":[["aXd",5,null,0]],"passed":true},{"actual":[["aYZd",5,null,0]],"check":"composition-revision scenario 2","expected":[["aYZd",5,null,0]],"passed":true},{"actual":[["new",5,null,1]],"check":"composition-revision scenario 3","expected":[["new",5,null,1]],"passed":true},{"actual":[["two",6,null,0]],"check":"composition-revision scenario 4","expected":[["two",6,null,0]],"passed":true},{"actual":[["three",7,null,2]],"check":"composition-revision scenario 5","expected":[["three",7,null,2]],"passed":true},{"actual":[["abcd",4,null,0]],"check":"composition-revision scenario 6","expected":[["abcd",4,null,0]],"passed":true},{"actual":[["aXd",1,null,0]],"check":"composition-revision scenario 7","expected":[["aXd",1,null,0]],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"composition-revision scenario 0\", \"actual\": [[\"abcd\", 4, null, 0]], \"expected\": [[\"abcd\", 4, null, 0]], \"passed\": true}, {\"check\": \"composition-revision scenario 1\", \"actual\": [[\"aXd\", 5, null, 0]], \"expected\": [[\"aXd\", 5, null, 0]], \"passed\": true}, {\"check\": \"composition-revision scenario 2\", \"actual\": [[\"aYZd\", 5, null, 0]], \"expected\": [[\"aYZd\", 5, null, 0]], \"passed\": true}, {\"check\": \"composition-revision scenario 3\", \"actual\": [[\"new\", 5, null, 1]], \"expected\": [[\"new\", 5, null, 1]], \"passed\": true}, {\"check\": \"composition-revision scenario 4\", \"actual\": [[\"two\", 6, null, 0]], \"expected\": [[\"two\", 6, null, 0]], \"passed\": true}, {\"check\": \"composition-revision scenario 5\", \"actual\": [[\"three\", 7, null, 2]], \"expected\": [[\"three\", 7, null, 2]], \"passed\": true}, {\"check\": \"composition-revision scenario 6\", \"actual\": [[\"abcd\", 4, null, 0]], \"expected\": [[\"abcd\", 4, null, 0]], \"passed\": true}, {\"check\": \"composition-revision scenario 7\", \"actual\": [[\"aXd\", 1, null, 0]], \"expected\": [[\"aXd\", 1, null, 0]], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}