{"abstract":"The announcement trace violates the stated edit-narration contract.","category":"Assistive announcements","checks":8,"contract":"Document announcement state stores text and a cursor. Insert inserts at clamped cursor and announces inserted span. Backspace removes up to count before cursor and announces removed span in original order. Delete removes after cursor without moving it. Move clamps cursor. Replace range uses sorted clamped endpoints, announces old/new, moves cursor to replacement end. Undo restores text and cursor from last mutating edit and announces restored text. Silent toggles suppress cues but not state or undo. Return cues,text,cursor.","evaluation_group":"s3-announcement-edit-narration","failed_approach":"The attempted repair substitutes a,b=0,len(text) and still violates a regression oracle.","family":"s3-assistive-announcements-edit-narration-replace-range","id":"FA-21431","implementations":{"attempt":{"sha256":"e6d7e43b62bdc0922c711e7b611b1c908d490eefc3bc1671b527963b7a4a0525","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(events):\n    text=''; cursor=0; history=[]; silent=False; out=[]\n    for e in events:\n        op=e[0]\n        if op=='move': cursor=max(0,min(len(text),e[1]))\n        elif op=='silent': silent=e[1]\n        elif op=='undo' and history:\n            text,cursor=history.pop()\n            if not silent: out.append(['undo',text])\n        elif op in ('insert','backspace','delete','replace'):\n            history.append([text,cursor])\n            if op=='insert':\n                text=text[:cursor]+e[1]+text[cursor:]; cursor+=len(e[1]); cue=['insert',e[1]]\n            elif op=='backspace':\n                start=max(0,cursor-e[1]); cue=['remove',text[start:cursor]]\n                text=text[:start]+text[cursor:]; cursor=start\n            elif op=='delete':\n                end=min(len(text),cursor+e[1]); cue=['remove',text[cursor:end]]\n                text=text[:cursor]+text[end:]\n            else:\n                a,b=0,len(text)\n                cue=['replace',text[a:b],e[3]]; text=text[:a]+e[3]+text[b:]; cursor=a+len(e[3])\n            if not silent: out.append(cue)\n    return [out,text,cursor]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [\"[['insert','abcd'*N],['move',2],['insert','XY'],['backspace',2],['undo'],['undo']]\", \"[['insert','abcdef'*N],['move',4],['backspace',2]]\", \"[['insert','abcdef'*N],['move',2],['delete',2]]\", \"[['insert','abcdef'*N],['replace',5,2,'Z']]\", \"[['insert','abcdef'*N],['replace',5,2,'Z'],['undo']]\", \"[['silent',True],['insert','secret'*N],['silent',False],['move',99],['insert','!']]\", \"[['insert','x'*N],['move',-5],['backspace',4],['delete',99],['undo']]\", '[]']\nexpected = {1: [[[['insert', 'abcd'], ['insert', 'XY'], ['remove', 'XY'], ['undo', 'abXYcd'], ['undo', 'abcd']], 'abcd', 2], [[['insert', 'abcdef'], ['remove', 'cd']], 'abef', 2], [[['insert', 'abcdef'], ['remove', 'cd']], 'abef', 2], [[['insert', 'abcdef'], ['replace', 'cde', 'Z']], 'abZf', 3], [[['insert', 'abcdef'], ['replace', 'cde', 'Z'], ['undo', 'abcdef']], 'abcdef', 6], [[['insert', '!']], 'secret!', 7], [[['insert', 'x'], ['remove', ''], ['remove', 'x'], ['undo', 'x']], 'x', 0], [[], '', 0]], 2: [[[['insert', 'abcdabcd'], ['insert', 'XY'], ['remove', 'XY'], ['undo', 'abXYcdabcd'], ['undo', 'abcdabcd']], 'abcdabcd', 2], [[['insert', 'abcdefabcdef'], ['remove', 'cd']], 'abefabcdef', 2], [[['insert', 'abcdefabcdef'], ['remove', 'cd']], 'abefabcdef', 2], [[['insert', 'abcdefabcdef'], ['replace', 'cde', 'Z']], 'abZfabcdef', 3], [[['insert', 'abcdefabcdef'], ['replace', 'cde', 'Z'], ['undo', 'abcdefabcdef']], 'abcdefabcdef', 12], [[['insert', '!']], 'secretsecret!', 13], [[['insert', 'xx'], ['remove', ''], ['remove', 'xx'], ['undo', 'xx']], 'xx', 0], [[], '', 0]], 3: [[[['insert', 'abcdabcdabcd'], ['insert', 'XY'], ['remove', 'XY'], ['undo', 'abXYcdabcdabcd'], ['undo', 'abcdabcdabcd']], 'abcdabcdabcd', 2], [[['insert', 'abcdefabcdefabcdef'], ['remove', 'cd']], 'abefabcdefabcdef', 2], [[['insert', 'abcdefabcdefabcdef'], ['remove', 'cd']], 'abefabcdefabcdef', 2], [[['insert', 'abcdefabcdefabcdef'], ['replace', 'cde', 'Z']], 'abZfabcdefabcdef', 3], [[['insert', 'abcdefabcdefabcdef'], ['replace', 'cde', 'Z'], ['undo', 'abcdefabcdefabcdef']], 'abcdefabcdefabcdef', 18], [[['insert', '!']], 'secretsecretsecret!', 19], [[['insert', 'xxx'], ['remove', ''], ['remove', 'xxx'], ['undo', 'xxx']], 'xxx', 0], [[], '', 0]], 4: [[[['insert', 'abcdabcdabcdabcd'], ['insert', 'XY'], ['remove', 'XY'], ['undo', 'abXYcdabcdabcdabcd'], ['undo', 'abcdabcdabcdabcd']], 'abcdabcdabcdabcd', 2], [[['insert', 'abcdefabcdefabcdefabcdef'], ['remove', 'cd']], 'abefabcdefabcdefabcdef', 2], [[['insert', 'abcdefabcdefabcdefabcdef'], ['remove', 'cd']], 'abefabcdefabcdefabcdef', 2], [[['insert', 'abcdefabcdefabcdefabcdef'], ['replace', 'cde', 'Z']], 'abZfabcdefabcdefabcdef', 3], [[['insert', 'abcdefabcdefabcdefabcdef'], ['replace', 'cde', 'Z'], ['undo', 'abcdefabcdefabcdefabcdef']], 'abcdefabcdefabcdefabcdef', 24], [[['insert', '!']], 'secretsecretsecretsecret!', 25], [[['insert', 'xxxx'], ['remove', ''], ['remove', 'xxxx'], ['undo', 'xxxx']], 'xxxx', 0], [[], '', 0]], 5: [[[['insert', 'abcdabcdabcdabcdabcd'], ['insert', 'XY'], ['remove', 'XY'], ['undo', 'abXYcdabcdabcdabcdabcd'], ['undo', 'abcdabcdabcdabcdabcd']], 'abcdabcdabcdabcdabcd', 2], [[['insert', 'abcdefabcdefabcdefabcdefabcdef'], ['remove', 'cd']], 'abefabcdefabcdefabcdefabcdef', 2], [[['insert', 'abcdefabcdefabcdefabcdefabcdef'], ['remove', 'cd']], 'abefabcdefabcdefabcdefabcdef', 2], [[['insert', 'abcdefabcdefabcdefabcdefabcdef'], ['replace', 'cde', 'Z']], 'abZfabcdefabcdefabcdefabcdef', 3], [[['insert', 'abcdefabcdefabcdefabcdefabcdef'], ['replace', 'cde', 'Z'], ['undo', 'abcdefabcdefabcdefabcdefabcdef']], 'abcdefabcdefabcdefabcdefabcdef', 30], [[['insert', '!']], 'secretsecretsecretsecretsecret!', 31], [[['insert', 'xxxxx'], ['remove', ''], ['remove', 'xxxxx'], ['undo', 'xxxxx']], 'xxxxx', 0], [[], '', 0]]}[N]\nfor i, expression in enumerate(fixtures):\n    check(\"trace-\"+str(i+1), solve(eval(expression)), expected[i])\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":"72dc60537abf31195ad5f0c06d9a2395c86b79615b935e0c46c296f161dab80d","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(events):\n    text=''; cursor=0; history=[]; silent=False; out=[]\n    for e in events:\n        op=e[0]\n        if op=='move': cursor=max(0,min(len(text),e[1]))\n        elif op=='silent': silent=e[1]\n        elif op=='undo' and history:\n            text,cursor=history.pop()\n            if not silent: out.append(['undo',text])\n        elif op in ('insert','backspace','delete','replace'):\n            history.append([text,cursor])\n            if op=='insert':\n                text=text[:cursor]+e[1]+text[cursor:]; cursor+=len(e[1]); cue=['insert',e[1]]\n            elif op=='backspace':\n                start=max(0,cursor-e[1]); cue=['remove',text[start:cursor]]\n                text=text[:start]+text[cursor:]; cursor=start\n            elif op=='delete':\n                end=min(len(text),cursor+e[1]); cue=['remove',text[cursor:end]]\n                text=text[:cursor]+text[end:]\n            else:\n                a,b=[max(0,min(len(text),e[1])),max(0,min(len(text),e[2]))]\n                cue=['replace',text[a:b],e[3]]; text=text[:a]+e[3]+text[b:]; cursor=a+len(e[3])\n            if not silent: out.append(cue)\n    return [out,text,cursor]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [\"[['insert','abcd'*N],['move',2],['insert','XY'],['backspace',2],['undo'],['undo']]\", \"[['insert','abcdef'*N],['move',4],['backspace',2]]\", \"[['insert','abcdef'*N],['move',2],['delete',2]]\", \"[['insert','abcdef'*N],['replace',5,2,'Z']]\", \"[['insert','abcdef'*N],['replace',5,2,'Z'],['undo']]\", \"[['silent',True],['insert','secret'*N],['silent',False],['move',99],['insert','!']]\", \"[['insert','x'*N],['move',-5],['backspace',4],['delete',99],['undo']]\", '[]']\nexpected = {1: [[[['insert', 'abcd'], ['insert', 'XY'], ['remove', 'XY'], ['undo', 'abXYcd'], ['undo', 'abcd']], 'abcd', 2], [[['insert', 'abcdef'], ['remove', 'cd']], 'abef', 2], [[['insert', 'abcdef'], ['remove', 'cd']], 'abef', 2], [[['insert', 'abcdef'], ['replace', 'cde', 'Z']], 'abZf', 3], [[['insert', 'abcdef'], ['replace', 'cde', 'Z'], ['undo', 'abcdef']], 'abcdef', 6], [[['insert', '!']], 'secret!', 7], [[['insert', 'x'], ['remove', ''], ['remove', 'x'], ['undo', 'x']], 'x', 0], [[], '', 0]], 2: [[[['insert', 'abcdabcd'], ['insert', 'XY'], ['remove', 'XY'], ['undo', 'abXYcdabcd'], ['undo', 'abcdabcd']], 'abcdabcd', 2], [[['insert', 'abcdefabcdef'], ['remove', 'cd']], 'abefabcdef', 2], [[['insert', 'abcdefabcdef'], ['remove', 'cd']], 'abefabcdef', 2], [[['insert', 'abcdefabcdef'], ['replace', 'cde', 'Z']], 'abZfabcdef', 3], [[['insert', 'abcdefabcdef'], ['replace', 'cde', 'Z'], ['undo', 'abcdefabcdef']], 'abcdefabcdef', 12], [[['insert', '!']], 'secretsecret!', 13], [[['insert', 'xx'], ['remove', ''], ['remove', 'xx'], ['undo', 'xx']], 'xx', 0], [[], '', 0]], 3: [[[['insert', 'abcdabcdabcd'], ['insert', 'XY'], ['remove', 'XY'], ['undo', 'abXYcdabcdabcd'], ['undo', 'abcdabcdabcd']], 'abcdabcdabcd', 2], [[['insert', 'abcdefabcdefabcdef'], ['remove', 'cd']], 'abefabcdefabcdef', 2], [[['insert', 'abcdefabcdefabcdef'], ['remove', 'cd']], 'abefabcdefabcdef', 2], [[['insert', 'abcdefabcdefabcdef'], ['replace', 'cde', 'Z']], 'abZfabcdefabcdef', 3], [[['insert', 'abcdefabcdefabcdef'], ['replace', 'cde', 'Z'], ['undo', 'abcdefabcdefabcdef']], 'abcdefabcdefabcdef', 18], [[['insert', '!']], 'secretsecretsecret!', 19], [[['insert', 'xxx'], ['remove', ''], ['remove', 'xxx'], ['undo', 'xxx']], 'xxx', 0], [[], '', 0]], 4: [[[['insert', 'abcdabcdabcdabcd'], ['insert', 'XY'], ['remove', 'XY'], ['undo', 'abXYcdabcdabcdabcd'], ['undo', 'abcdabcdabcdabcd']], 'abcdabcdabcdabcd', 2], [[['insert', 'abcdefabcdefabcdefabcdef'], ['remove', 'cd']], 'abefabcdefabcdefabcdef', 2], [[['insert', 'abcdefabcdefabcdefabcdef'], ['remove', 'cd']], 'abefabcdefabcdefabcdef', 2], [[['insert', 'abcdefabcdefabcdefabcdef'], ['replace', 'cde', 'Z']], 'abZfabcdefabcdefabcdef', 3], [[['insert', 'abcdefabcdefabcdefabcdef'], ['replace', 'cde', 'Z'], ['undo', 'abcdefabcdefabcdefabcdef']], 'abcdefabcdefabcdefabcdef', 24], [[['insert', '!']], 'secretsecretsecretsecret!', 25], [[['insert', 'xxxx'], ['remove', ''], ['remove', 'xxxx'], ['undo', 'xxxx']], 'xxxx', 0], [[], '', 0]], 5: [[[['insert', 'abcdabcdabcdabcdabcd'], ['insert', 'XY'], ['remove', 'XY'], ['undo', 'abXYcdabcdabcdabcdabcd'], ['undo', 'abcdabcdabcdabcdabcd']], 'abcdabcdabcdabcdabcd', 2], [[['insert', 'abcdefabcdefabcdefabcdefabcdef'], ['remove', 'cd']], 'abefabcdefabcdefabcdefabcdef', 2], [[['insert', 'abcdefabcdefabcdefabcdefabcdef'], ['remove', 'cd']], 'abefabcdefabcdefabcdefabcdef', 2], [[['insert', 'abcdefabcdefabcdefabcdefabcdef'], ['replace', 'cde', 'Z']], 'abZfabcdefabcdefabcdefabcdef', 3], [[['insert', 'abcdefabcdefabcdefabcdefabcdef'], ['replace', 'cde', 'Z'], ['undo', 'abcdefabcdefabcdefabcdefabcdef']], 'abcdefabcdefabcdefabcdefabcdef', 30], [[['insert', '!']], 'secretsecretsecretsecretsecret!', 31], [[['insert', 'xxxxx'], ['remove', ''], ['remove', 'xxxxx'], ['undo', 'xxxxx']], 'xxxxx', 0], [[], '', 0]]}[N]\nfor i, expression in enumerate(fixtures):\n    check(\"trace-\"+str(i+1), solve(eval(expression)), expected[i])\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":"57f754d7870db9131c713c229503e67479461553944d07f3e8188446c5bfd29d","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(events):\n    text=''; cursor=0; history=[]; silent=False; out=[]\n    for e in events:\n        op=e[0]\n        if op=='move': cursor=max(0,min(len(text),e[1]))\n        elif op=='silent': silent=e[1]\n        elif op=='undo' and history:\n            text,cursor=history.pop()\n            if not silent: out.append(['undo',text])\n        elif op in ('insert','backspace','delete','replace'):\n            history.append([text,cursor])\n            if op=='insert':\n                text=text[:cursor]+e[1]+text[cursor:]; cursor+=len(e[1]); cue=['insert',e[1]]\n            elif op=='backspace':\n                start=max(0,cursor-e[1]); cue=['remove',text[start:cursor]]\n                text=text[:start]+text[cursor:]; cursor=start\n            elif op=='delete':\n                end=min(len(text),cursor+e[1]); cue=['remove',text[cursor:end]]\n                text=text[:cursor]+text[end:]\n            else:\n                a,b=sorted([max(0,min(len(text),e[1])),max(0,min(len(text),e[2]))])\n                cue=['replace',text[a:b],e[3]]; text=text[:a]+e[3]+text[b:]; cursor=a+len(e[3])\n            if not silent: out.append(cue)\n    return [out,text,cursor]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [\"[['insert','abcd'*N],['move',2],['insert','XY'],['backspace',2],['undo'],['undo']]\", \"[['insert','abcdef'*N],['move',4],['backspace',2]]\", \"[['insert','abcdef'*N],['move',2],['delete',2]]\", \"[['insert','abcdef'*N],['replace',5,2,'Z']]\", \"[['insert','abcdef'*N],['replace',5,2,'Z'],['undo']]\", \"[['silent',True],['insert','secret'*N],['silent',False],['move',99],['insert','!']]\", \"[['insert','x'*N],['move',-5],['backspace',4],['delete',99],['undo']]\", '[]']\nexpected = {1: [[[['insert', 'abcd'], ['insert', 'XY'], ['remove', 'XY'], ['undo', 'abXYcd'], ['undo', 'abcd']], 'abcd', 2], [[['insert', 'abcdef'], ['remove', 'cd']], 'abef', 2], [[['insert', 'abcdef'], ['remove', 'cd']], 'abef', 2], [[['insert', 'abcdef'], ['replace', 'cde', 'Z']], 'abZf', 3], [[['insert', 'abcdef'], ['replace', 'cde', 'Z'], ['undo', 'abcdef']], 'abcdef', 6], [[['insert', '!']], 'secret!', 7], [[['insert', 'x'], ['remove', ''], ['remove', 'x'], ['undo', 'x']], 'x', 0], [[], '', 0]], 2: [[[['insert', 'abcdabcd'], ['insert', 'XY'], ['remove', 'XY'], ['undo', 'abXYcdabcd'], ['undo', 'abcdabcd']], 'abcdabcd', 2], [[['insert', 'abcdefabcdef'], ['remove', 'cd']], 'abefabcdef', 2], [[['insert', 'abcdefabcdef'], ['remove', 'cd']], 'abefabcdef', 2], [[['insert', 'abcdefabcdef'], ['replace', 'cde', 'Z']], 'abZfabcdef', 3], [[['insert', 'abcdefabcdef'], ['replace', 'cde', 'Z'], ['undo', 'abcdefabcdef']], 'abcdefabcdef', 12], [[['insert', '!']], 'secretsecret!', 13], [[['insert', 'xx'], ['remove', ''], ['remove', 'xx'], ['undo', 'xx']], 'xx', 0], [[], '', 0]], 3: [[[['insert', 'abcdabcdabcd'], ['insert', 'XY'], ['remove', 'XY'], ['undo', 'abXYcdabcdabcd'], ['undo', 'abcdabcdabcd']], 'abcdabcdabcd', 2], [[['insert', 'abcdefabcdefabcdef'], ['remove', 'cd']], 'abefabcdefabcdef', 2], [[['insert', 'abcdefabcdefabcdef'], ['remove', 'cd']], 'abefabcdefabcdef', 2], [[['insert', 'abcdefabcdefabcdef'], ['replace', 'cde', 'Z']], 'abZfabcdefabcdef', 3], [[['insert', 'abcdefabcdefabcdef'], ['replace', 'cde', 'Z'], ['undo', 'abcdefabcdefabcdef']], 'abcdefabcdefabcdef', 18], [[['insert', '!']], 'secretsecretsecret!', 19], [[['insert', 'xxx'], ['remove', ''], ['remove', 'xxx'], ['undo', 'xxx']], 'xxx', 0], [[], '', 0]], 4: [[[['insert', 'abcdabcdabcdabcd'], ['insert', 'XY'], ['remove', 'XY'], ['undo', 'abXYcdabcdabcdabcd'], ['undo', 'abcdabcdabcdabcd']], 'abcdabcdabcdabcd', 2], [[['insert', 'abcdefabcdefabcdefabcdef'], ['remove', 'cd']], 'abefabcdefabcdefabcdef', 2], [[['insert', 'abcdefabcdefabcdefabcdef'], ['remove', 'cd']], 'abefabcdefabcdefabcdef', 2], [[['insert', 'abcdefabcdefabcdefabcdef'], ['replace', 'cde', 'Z']], 'abZfabcdefabcdefabcdef', 3], [[['insert', 'abcdefabcdefabcdefabcdef'], ['replace', 'cde', 'Z'], ['undo', 'abcdefabcdefabcdefabcdef']], 'abcdefabcdefabcdefabcdef', 24], [[['insert', '!']], 'secretsecretsecretsecret!', 25], [[['insert', 'xxxx'], ['remove', ''], ['remove', 'xxxx'], ['undo', 'xxxx']], 'xxxx', 0], [[], '', 0]], 5: [[[['insert', 'abcdabcdabcdabcdabcd'], ['insert', 'XY'], ['remove', 'XY'], ['undo', 'abXYcdabcdabcdabcdabcd'], ['undo', 'abcdabcdabcdabcdabcd']], 'abcdabcdabcdabcdabcd', 2], [[['insert', 'abcdefabcdefabcdefabcdefabcdef'], ['remove', 'cd']], 'abefabcdefabcdefabcdefabcdef', 2], [[['insert', 'abcdefabcdefabcdefabcdefabcdef'], ['remove', 'cd']], 'abefabcdefabcdefabcdefabcdef', 2], [[['insert', 'abcdefabcdefabcdefabcdefabcdef'], ['replace', 'cde', 'Z']], 'abZfabcdefabcdefabcdefabcdef', 3], [[['insert', 'abcdefabcdefabcdefabcdefabcdef'], ['replace', 'cde', 'Z'], ['undo', 'abcdefabcdefabcdefabcdefabcdef']], 'abcdefabcdefabcdefabcdefabcdef', 30], [[['insert', '!']], 'secretsecretsecretsecretsecret!', 31], [[['insert', 'xxxxx'], ['remove', ''], ['remove', 'xxxxx'], ['undo', 'xxxxx']], 'xxxxx', 0], [[], '', 0]]}[N]\nfor i, expression in enumerate(fixtures):\n    check(\"trace-\"+str(i+1), solve(eval(expression)), expected[i])\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":"Stipulated bounded policy, not a browser, speech engine, platform API, or standards 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-assistive-announcements-edit-narration-replace-range","generated_at":"2026-09-29T14:40:28.813839+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Deterministic controlled model of assistive announcement delivery.","repair":"Restore the stated transition: a,b=sorted([max(0,min(len(text),e[1])),max(0,min(len(text),e[2]))])","root_cause":"Fault site: a,b=sorted([max(0,min(len(text),e[1])),max(0,min(len(text),e[2]))]) is implemented as a,b=[max(0,min(len(text),e[1])),max(0,min(len(text),e[2]))]","sha256":"5761f116d5372db3fa04a020aa76052f48410c244c34b4bd68010ccfb5780dda","title":"Reversed replacement endpoints are not normalized · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":41.835,"exit_code":1,"observations":[{"actual":[[["insert","abcd"],["insert","XY"],["remove","XY"],["undo","abXYcd"],["undo","abcd"]],"abcd",2],"check":"trace-1","expected":[[["insert","abcd"],["insert","XY"],["remove","XY"],["undo","abXYcd"],["undo","abcd"]],"abcd",2],"passed":true},{"actual":[[["insert","abcdef"],["remove","cd"]],"abef",2],"check":"trace-2","expected":[[["insert","abcdef"],["remove","cd"]],"abef",2],"passed":true},{"actual":[[["insert","abcdef"],["remove","cd"]],"abef",2],"check":"trace-3","expected":[[["insert","abcdef"],["remove","cd"]],"abef",2],"passed":true},{"actual":[[["insert","abcdef"],["replace","abcdef","Z"]],"Z",1],"check":"trace-4","expected":[[["insert","abcdef"],["replace","cde","Z"]],"abZf",3],"passed":false},{"actual":[[["insert","abcdef"],["replace","abcdef","Z"],["undo","abcdef"]],"abcdef",6],"check":"trace-5","expected":[[["insert","abcdef"],["replace","cde","Z"],["undo","abcdef"]],"abcdef",6],"passed":false},{"actual":[[["insert","!"]],"secret!",7],"check":"trace-6","expected":[[["insert","!"]],"secret!",7],"passed":true},{"actual":[[["insert","x"],["remove",""],["remove","x"],["undo","x"]],"x",0],"check":"trace-7","expected":[[["insert","x"],["remove",""],["remove","x"],["undo","x"]],"x",0],"passed":true},{"actual":[[],"",0],"check":"trace-8","expected":[[],"",0],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"trace-1\", \"actual\": [[[\"insert\", \"abcd\"], [\"insert\", \"XY\"], [\"remove\", \"XY\"], [\"undo\", \"abXYcd\"], [\"undo\", \"abcd\"]], \"abcd\", 2], \"expected\": [[[\"insert\", \"abcd\"], [\"insert\", \"XY\"], [\"remove\", \"XY\"], [\"undo\", \"abXYcd\"], [\"undo\", \"abcd\"]], \"abcd\", 2], \"passed\": true}, {\"check\": \"trace-2\", \"actual\": [[[\"insert\", \"abcdef\"], [\"remove\", \"cd\"]], \"abef\", 2], \"expected\": [[[\"insert\", \"abcdef\"], [\"remove\", \"cd\"]], \"abef\", 2], \"passed\": true}, {\"check\": \"trace-3\", \"actual\": [[[\"insert\", \"abcdef\"], [\"remove\", \"cd\"]], \"abef\", 2], \"expected\": [[[\"insert\", \"abcdef\"], [\"remove\", \"cd\"]], \"abef\", 2], \"passed\": true}, {\"check\": \"trace-4\", \"actual\": [[[\"insert\", \"abcdef\"], [\"replace\", \"abcdef\", \"Z\"]], \"Z\", 1], \"expected\": [[[\"insert\", \"abcdef\"], [\"replace\", \"cde\", \"Z\"]], \"abZf\", 3], \"passed\": false}, {\"check\": \"trace-5\", \"actual\": [[[\"insert\", \"abcdef\"], [\"replace\", \"abcdef\", \"Z\"], [\"undo\", \"abcdef\"]], \"abcdef\", 6], \"expected\": [[[\"insert\", \"abcdef\"], [\"replace\", \"cde\", \"Z\"], [\"undo\", \"abcdef\"]], \"abcdef\", 6], \"passed\": false}, {\"check\": \"trace-6\", \"actual\": [[[\"insert\", \"!\"]], \"secret!\", 7], \"expected\": [[[\"insert\", \"!\"]], \"secret!\", 7], \"passed\": true}, {\"check\": \"trace-7\", \"actual\": [[[\"insert\", \"x\"], [\"remove\", \"\"], [\"remove\", \"x\"], [\"undo\", \"x\"]], \"x\", 0], \"expected\": [[[\"insert\", \"x\"], [\"remove\", \"\"], [\"remove\", \"x\"], [\"undo\", \"x\"]], \"x\", 0], \"passed\": true}, {\"check\": \"trace-8\", \"actual\": [[], \"\", 0], \"expected\": [[], \"\", 0], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":44.666,"exit_code":1,"observations":[{"actual":[[["insert","abcd"],["insert","XY"],["remove","XY"],["undo","abXYcd"],["undo","abcd"]],"abcd",2],"check":"trace-1","expected":[[["insert","abcd"],["insert","XY"],["remove","XY"],["undo","abXYcd"],["undo","abcd"]],"abcd",2],"passed":true},{"actual":[[["insert","abcdef"],["remove","cd"]],"abef",2],"check":"trace-2","expected":[[["insert","abcdef"],["remove","cd"]],"abef",2],"passed":true},{"actual":[[["insert","abcdef"],["remove","cd"]],"abef",2],"check":"trace-3","expected":[[["insert","abcdef"],["remove","cd"]],"abef",2],"passed":true},{"actual":[[["insert","abcdef"],["replace","","Z"]],"abcdeZcdef",6],"check":"trace-4","expected":[[["insert","abcdef"],["replace","cde","Z"]],"abZf",3],"passed":false},{"actual":[[["insert","abcdef"],["replace","","Z"],["undo","abcdef"]],"abcdef",6],"check":"trace-5","expected":[[["insert","abcdef"],["replace","cde","Z"],["undo","abcdef"]],"abcdef",6],"passed":false},{"actual":[[["insert","!"]],"secret!",7],"check":"trace-6","expected":[[["insert","!"]],"secret!",7],"passed":true},{"actual":[[["insert","x"],["remove",""],["remove","x"],["undo","x"]],"x",0],"check":"trace-7","expected":[[["insert","x"],["remove",""],["remove","x"],["undo","x"]],"x",0],"passed":true},{"actual":[[],"",0],"check":"trace-8","expected":[[],"",0],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"trace-1\", \"actual\": [[[\"insert\", \"abcd\"], [\"insert\", \"XY\"], [\"remove\", \"XY\"], [\"undo\", \"abXYcd\"], [\"undo\", \"abcd\"]], \"abcd\", 2], \"expected\": [[[\"insert\", \"abcd\"], [\"insert\", \"XY\"], [\"remove\", \"XY\"], [\"undo\", \"abXYcd\"], [\"undo\", \"abcd\"]], \"abcd\", 2], \"passed\": true}, {\"check\": \"trace-2\", \"actual\": [[[\"insert\", \"abcdef\"], [\"remove\", \"cd\"]], \"abef\", 2], \"expected\": [[[\"insert\", \"abcdef\"], [\"remove\", \"cd\"]], \"abef\", 2], \"passed\": true}, {\"check\": \"trace-3\", \"actual\": [[[\"insert\", \"abcdef\"], [\"remove\", \"cd\"]], \"abef\", 2], \"expected\": [[[\"insert\", \"abcdef\"], [\"remove\", \"cd\"]], \"abef\", 2], \"passed\": true}, {\"check\": \"trace-4\", \"actual\": [[[\"insert\", \"abcdef\"], [\"replace\", \"\", \"Z\"]], \"abcdeZcdef\", 6], \"expected\": [[[\"insert\", \"abcdef\"], [\"replace\", \"cde\", \"Z\"]], \"abZf\", 3], \"passed\": false}, {\"check\": \"trace-5\", \"actual\": [[[\"insert\", \"abcdef\"], [\"replace\", \"\", \"Z\"], [\"undo\", \"abcdef\"]], \"abcdef\", 6], \"expected\": [[[\"insert\", \"abcdef\"], [\"replace\", \"cde\", \"Z\"], [\"undo\", \"abcdef\"]], \"abcdef\", 6], \"passed\": false}, {\"check\": \"trace-6\", \"actual\": [[[\"insert\", \"!\"]], \"secret!\", 7], \"expected\": [[[\"insert\", \"!\"]], \"secret!\", 7], \"passed\": true}, {\"check\": \"trace-7\", \"actual\": [[[\"insert\", \"x\"], [\"remove\", \"\"], [\"remove\", \"x\"], [\"undo\", \"x\"]], \"x\", 0], \"expected\": [[[\"insert\", \"x\"], [\"remove\", \"\"], [\"remove\", \"x\"], [\"undo\", \"x\"]], \"x\", 0], \"passed\": true}, {\"check\": \"trace-8\", \"actual\": [[], \"\", 0], \"expected\": [[], \"\", 0], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":41.746,"exit_code":0,"observations":[{"actual":[[["insert","abcd"],["insert","XY"],["remove","XY"],["undo","abXYcd"],["undo","abcd"]],"abcd",2],"check":"trace-1","expected":[[["insert","abcd"],["insert","XY"],["remove","XY"],["undo","abXYcd"],["undo","abcd"]],"abcd",2],"passed":true},{"actual":[[["insert","abcdef"],["remove","cd"]],"abef",2],"check":"trace-2","expected":[[["insert","abcdef"],["remove","cd"]],"abef",2],"passed":true},{"actual":[[["insert","abcdef"],["remove","cd"]],"abef",2],"check":"trace-3","expected":[[["insert","abcdef"],["remove","cd"]],"abef",2],"passed":true},{"actual":[[["insert","abcdef"],["replace","cde","Z"]],"abZf",3],"check":"trace-4","expected":[[["insert","abcdef"],["replace","cde","Z"]],"abZf",3],"passed":true},{"actual":[[["insert","abcdef"],["replace","cde","Z"],["undo","abcdef"]],"abcdef",6],"check":"trace-5","expected":[[["insert","abcdef"],["replace","cde","Z"],["undo","abcdef"]],"abcdef",6],"passed":true},{"actual":[[["insert","!"]],"secret!",7],"check":"trace-6","expected":[[["insert","!"]],"secret!",7],"passed":true},{"actual":[[["insert","x"],["remove",""],["remove","x"],["undo","x"]],"x",0],"check":"trace-7","expected":[[["insert","x"],["remove",""],["remove","x"],["undo","x"]],"x",0],"passed":true},{"actual":[[],"",0],"check":"trace-8","expected":[[],"",0],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"trace-1\", \"actual\": [[[\"insert\", \"abcd\"], [\"insert\", \"XY\"], [\"remove\", \"XY\"], [\"undo\", \"abXYcd\"], [\"undo\", \"abcd\"]], \"abcd\", 2], \"expected\": [[[\"insert\", \"abcd\"], [\"insert\", \"XY\"], [\"remove\", \"XY\"], [\"undo\", \"abXYcd\"], [\"undo\", \"abcd\"]], \"abcd\", 2], \"passed\": true}, {\"check\": \"trace-2\", \"actual\": [[[\"insert\", \"abcdef\"], [\"remove\", \"cd\"]], \"abef\", 2], \"expected\": [[[\"insert\", \"abcdef\"], [\"remove\", \"cd\"]], \"abef\", 2], \"passed\": true}, {\"check\": \"trace-3\", \"actual\": [[[\"insert\", \"abcdef\"], [\"remove\", \"cd\"]], \"abef\", 2], \"expected\": [[[\"insert\", \"abcdef\"], [\"remove\", \"cd\"]], \"abef\", 2], \"passed\": true}, {\"check\": \"trace-4\", \"actual\": [[[\"insert\", \"abcdef\"], [\"replace\", \"cde\", \"Z\"]], \"abZf\", 3], \"expected\": [[[\"insert\", \"abcdef\"], [\"replace\", \"cde\", \"Z\"]], \"abZf\", 3], \"passed\": true}, {\"check\": \"trace-5\", \"actual\": [[[\"insert\", \"abcdef\"], [\"replace\", \"cde\", \"Z\"], [\"undo\", \"abcdef\"]], \"abcdef\", 6], \"expected\": [[[\"insert\", \"abcdef\"], [\"replace\", \"cde\", \"Z\"], [\"undo\", \"abcdef\"]], \"abcdef\", 6], \"passed\": true}, {\"check\": \"trace-6\", \"actual\": [[[\"insert\", \"!\"]], \"secret!\", 7], \"expected\": [[[\"insert\", \"!\"]], \"secret!\", 7], \"passed\": true}, {\"check\": \"trace-7\", \"actual\": [[[\"insert\", \"x\"], [\"remove\", \"\"], [\"remove\", \"x\"], [\"undo\", \"x\"]], \"x\", 0], \"expected\": [[[\"insert\", \"x\"], [\"remove\", \"\"], [\"remove\", \"x\"], [\"undo\", \"x\"]], \"x\", 0], \"passed\": true}, {\"check\": \"trace-8\", \"actual\": [[], \"\", 0], \"expected\": [[], \"\", 0], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}