{"abstract":"The event trace violates the pending accent rule and produces incorrect keyboard state or command output.","category":"Keyboard interactions","checks":12,"contract":"Case [mapping,events], mapping uses accent+character string keys and string replacements; events [kind,value]. Dead event sets pending accent and flushes a previous accent literally. Text with pending accent maps a pair or emits accent then character; space emits only accent. Backspace cancels pending accent, otherwise emits deletion action. Cancel clears accent; flush emits accent then clears. Return output string chunks and pending accent. 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-dead-key","failed_approach":"The partial repair changes this transition to accent=None, which still violates the model contract on the explicit regression traces.","family":"s3-keyboard-interactions-dead-key-pending-accent","id":"FA-31496","implementations":{"attempt":{"sha256":"ded2ebd81bb5b216b7539a5f33ca72ae1f344ba9ce960444f749a2ac3e541176","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(cases):\n    def run(c):\n        mapping,events=c\n        accent=None; output=[]; deletes=0\n        for kind,value in events:\n            if kind=='dead':\n                if accent is not None: output.append(accent)\n                accent=None\n            elif kind=='text':\n                if accent is None: output.append(value)\n                else:\n                    if value==' ': output.append(accent)\n                    else: output.append(mapping.get(accent+value,accent+value))\n                    accent=None\n            elif kind=='backspace':\n                if accent is not None: accent=None\n                else: deletes+=1\n            elif kind=='cancel': accent=None\n            elif kind=='flush' and accent is not None:\n                output.append(accent)\n                accent=None\n        return [output,accent,deletes]\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('dead-key scenario 0', solve([[{}, []]] * N), [[[], None, 0]] * N)\ncheck('dead-key scenario 1', solve([[{}, [['backspace', ''], ['backspace', '']]]] * N), [[[], None, 2]] * N)\ncheck('dead-key scenario 2', solve([[{}, [['dead', '^'], ['backspace', '']]]] * N), [[[], None, 0]] * N)\ncheck('dead-key scenario 3', solve([[{}, [['text', 'word']]]] * N), [[['word'], None, 0]] * N)\ncheck('dead-key scenario 4', solve([[{'^a': 'â'}, [['dead', '^'], ['text', 'a'], ['text', 'b']]]] * N), [[['â', 'b'], None, 0]] * N)\ncheck('dead-key scenario 5', solve([[{}, [['dead', '^'], ['text', 'z']]]] * N), [[['^z'], None, 0]] * N)\ncheck('dead-key scenario 6', solve([[{}, [['dead', '^'], ['text', ' ']]]] * N), [[['^'], None, 0]] * N)\ncheck('dead-key scenario 7', solve([[{}, [['dead', '^'], ['dead', '~'], ['text', 'a']]]] * N), [[['^', '~a'], None, 0]] * N)\ncheck('dead-key scenario 8', solve([[{}, [['dead', '^'], ['backspace', ''], ['text', 'a']]]] * N), [[['a'], None, 0]] * N)\ncheck('dead-key scenario 9', solve([[{}, [['text', 'abc'], ['backspace', ''], ['backspace', '']]]] * N), [[['abc'], None, 2]] * N)\ncheck('dead-key scenario 10', solve([[{}, [['dead', '^'], ['flush', ''], ['flush', '']]]] * N), [[['^'], None, 0]] * N)\ncheck('dead-key scenario 11', solve([[{}, [['dead', '^'], ['cancel', ''], ['text', 'a']]]] * N), [[['a'], 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":"bea24b5d995339945c3289ff6efa756d5dafdf3bbaebebeaeb01d816ed83e3cd","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(cases):\n    def run(c):\n        mapping,events=c\n        accent=None; output=[]; deletes=0\n        for kind,value in events:\n            if kind=='dead':\n                if accent is not None: output.append(accent)\n                accent=accent or value\n            elif kind=='text':\n                if accent is None: output.append(value)\n                else:\n                    if value==' ': output.append(accent)\n                    else: output.append(mapping.get(accent+value,accent+value))\n                    accent=None\n            elif kind=='backspace':\n                if accent is not None: accent=None\n                else: deletes+=1\n            elif kind=='cancel': accent=None\n            elif kind=='flush' and accent is not None:\n                output.append(accent)\n                accent=None\n        return [output,accent,deletes]\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('dead-key scenario 0', solve([[{}, []]] * N), [[[], None, 0]] * N)\ncheck('dead-key scenario 1', solve([[{}, [['backspace', ''], ['backspace', '']]]] * N), [[[], None, 2]] * N)\ncheck('dead-key scenario 2', solve([[{}, [['dead', '^'], ['backspace', '']]]] * N), [[[], None, 0]] * N)\ncheck('dead-key scenario 3', solve([[{}, [['text', 'word']]]] * N), [[['word'], None, 0]] * N)\ncheck('dead-key scenario 4', solve([[{'^a': 'â'}, [['dead', '^'], ['text', 'a'], ['text', 'b']]]] * N), [[['â', 'b'], None, 0]] * N)\ncheck('dead-key scenario 5', solve([[{}, [['dead', '^'], ['text', 'z']]]] * N), [[['^z'], None, 0]] * N)\ncheck('dead-key scenario 6', solve([[{}, [['dead', '^'], ['text', ' ']]]] * N), [[['^'], None, 0]] * N)\ncheck('dead-key scenario 7', solve([[{}, [['dead', '^'], ['dead', '~'], ['text', 'a']]]] * N), [[['^', '~a'], None, 0]] * N)\ncheck('dead-key scenario 8', solve([[{}, [['dead', '^'], ['backspace', ''], ['text', 'a']]]] * N), [[['a'], None, 0]] * N)\ncheck('dead-key scenario 9', solve([[{}, [['text', 'abc'], ['backspace', ''], ['backspace', '']]]] * N), [[['abc'], None, 2]] * N)\ncheck('dead-key scenario 10', solve([[{}, [['dead', '^'], ['flush', ''], ['flush', '']]]] * N), [[['^'], None, 0]] * N)\ncheck('dead-key scenario 11', solve([[{}, [['dead', '^'], ['cancel', ''], ['text', 'a']]]] * N), [[['a'], 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":"c31a0c79fe9de801c777cb824d40812966653e2190a4e4ead8993702d9211296","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(cases):\n    def run(c):\n        mapping,events=c\n        accent=None; output=[]; deletes=0\n        for kind,value in events:\n            if kind=='dead':\n                if accent is not None: output.append(accent)\n                accent=value\n            elif kind=='text':\n                if accent is None: output.append(value)\n                else:\n                    if value==' ': output.append(accent)\n                    else: output.append(mapping.get(accent+value,accent+value))\n                    accent=None\n            elif kind=='backspace':\n                if accent is not None: accent=None\n                else: deletes+=1\n            elif kind=='cancel': accent=None\n            elif kind=='flush' and accent is not None:\n                output.append(accent)\n                accent=None\n        return [output,accent,deletes]\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('dead-key scenario 0', solve([[{}, []]] * N), [[[], None, 0]] * N)\ncheck('dead-key scenario 1', solve([[{}, [['backspace', ''], ['backspace', '']]]] * N), [[[], None, 2]] * N)\ncheck('dead-key scenario 2', solve([[{}, [['dead', '^'], ['backspace', '']]]] * N), [[[], None, 0]] * N)\ncheck('dead-key scenario 3', solve([[{}, [['text', 'word']]]] * N), [[['word'], None, 0]] * N)\ncheck('dead-key scenario 4', solve([[{'^a': 'â'}, [['dead', '^'], ['text', 'a'], ['text', 'b']]]] * N), [[['â', 'b'], None, 0]] * N)\ncheck('dead-key scenario 5', solve([[{}, [['dead', '^'], ['text', 'z']]]] * N), [[['^z'], None, 0]] * N)\ncheck('dead-key scenario 6', solve([[{}, [['dead', '^'], ['text', ' ']]]] * N), [[['^'], None, 0]] * N)\ncheck('dead-key scenario 7', solve([[{}, [['dead', '^'], ['dead', '~'], ['text', 'a']]]] * N), [[['^', '~a'], None, 0]] * N)\ncheck('dead-key scenario 8', solve([[{}, [['dead', '^'], ['backspace', ''], ['text', 'a']]]] * N), [[['a'], None, 0]] * N)\ncheck('dead-key scenario 9', solve([[{}, [['text', 'abc'], ['backspace', ''], ['backspace', '']]]] * N), [[['abc'], None, 2]] * N)\ncheck('dead-key scenario 10', solve([[{}, [['dead', '^'], ['flush', ''], ['flush', '']]]] * N), [[['^'], None, 0]] * N)\ncheck('dead-key scenario 11', solve([[{}, [['dead', '^'], ['cancel', ''], ['text', 'a']]]] * N), [[['a'], 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-dead-key-pending-accent","generated_at":"2026-09-29T14:42:02.585761+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 `accent=value` at the pending accent fault site; preserve the other state transitions.","root_cause":"Dead key activation fails to replace the pending accent.","sha256":"96dff7704bce0a6f7de7a5f04ae9b3e4f7af1d312baae6273f5d6f94b81bb30c","title":"Explicit dead-key text composition: Dead key activation fails to replace the pending accent · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":41.027,"exit_code":1,"observations":[{"actual":[[[],null,0]],"check":"dead-key scenario 0","expected":[[[],null,0]],"passed":true},{"actual":[[[],null,2]],"check":"dead-key scenario 1","expected":[[[],null,2]],"passed":true},{"actual":[[[],null,1]],"check":"dead-key scenario 2","expected":[[[],null,0]],"passed":false},{"actual":[[["word"],null,0]],"check":"dead-key scenario 3","expected":[[["word"],null,0]],"passed":true},{"actual":[[["a","b"],null,0]],"check":"dead-key scenario 4","expected":[[["â","b"],null,0]],"passed":false},{"actual":[[["z"],null,0]],"check":"dead-key scenario 5","expected":[[["^z"],null,0]],"passed":false},{"actual":[[[" "],null,0]],"check":"dead-key scenario 6","expected":[[["^"],null,0]],"passed":false},{"actual":[[["a"],null,0]],"check":"dead-key scenario 7","expected":[[["^","~a"],null,0]],"passed":false},{"actual":[[["a"],null,1]],"check":"dead-key scenario 8","expected":[[["a"],null,0]],"passed":false},{"actual":[[["abc"],null,2]],"check":"dead-key scenario 9","expected":[[["abc"],null,2]],"passed":true},{"actual":[[[],null,0]],"check":"dead-key scenario 10","expected":[[["^"],null,0]],"passed":false},{"actual":[[["a"],null,0]],"check":"dead-key scenario 11","expected":[[["a"],null,0]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"dead-key scenario 0\", \"actual\": [[[], null, 0]], \"expected\": [[[], null, 0]], \"passed\": true}, {\"check\": \"dead-key scenario 1\", \"actual\": [[[], null, 2]], \"expected\": [[[], null, 2]], \"passed\": true}, {\"check\": \"dead-key scenario 2\", \"actual\": [[[], null, 1]], \"expected\": [[[], null, 0]], \"passed\": false}, {\"check\": \"dead-key scenario 3\", \"actual\": [[[\"word\"], null, 0]], \"expected\": [[[\"word\"], null, 0]], \"passed\": true}, {\"check\": \"dead-key scenario 4\", \"actual\": [[[\"a\", \"b\"], null, 0]], \"expected\": [[[\"â\", \"b\"], null, 0]], \"passed\": false}, {\"check\": \"dead-key scenario 5\", \"actual\": [[[\"z\"], null, 0]], \"expected\": [[[\"^z\"], null, 0]], \"passed\": false}, {\"check\": \"dead-key scenario 6\", \"actual\": [[[\" \"], null, 0]], \"expected\": [[[\"^\"], null, 0]], \"passed\": false}, {\"check\": \"dead-key scenario 7\", \"actual\": [[[\"a\"], null, 0]], \"expected\": [[[\"^\", \"~a\"], null, 0]], \"passed\": false}, {\"check\": \"dead-key scenario 8\", \"actual\": [[[\"a\"], null, 1]], \"expected\": [[[\"a\"], null, 0]], \"passed\": false}, {\"check\": \"dead-key scenario 9\", \"actual\": [[[\"abc\"], null, 2]], \"expected\": [[[\"abc\"], null, 2]], \"passed\": true}, {\"check\": \"dead-key scenario 10\", \"actual\": [[[], null, 0]], \"expected\": [[[\"^\"], null, 0]], \"passed\": false}, {\"check\": \"dead-key scenario 11\", \"actual\": [[[\"a\"], null, 0]], \"expected\": [[[\"a\"], null, 0]], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.672,"exit_code":1,"observations":[{"actual":[[[],null,0]],"check":"dead-key scenario 0","expected":[[[],null,0]],"passed":true},{"actual":[[[],null,2]],"check":"dead-key scenario 1","expected":[[[],null,2]],"passed":true},{"actual":[[[],null,0]],"check":"dead-key scenario 2","expected":[[[],null,0]],"passed":true},{"actual":[[["word"],null,0]],"check":"dead-key scenario 3","expected":[[["word"],null,0]],"passed":true},{"actual":[[["â","b"],null,0]],"check":"dead-key scenario 4","expected":[[["â","b"],null,0]],"passed":true},{"actual":[[["^z"],null,0]],"check":"dead-key scenario 5","expected":[[["^z"],null,0]],"passed":true},{"actual":[[["^"],null,0]],"check":"dead-key scenario 6","expected":[[["^"],null,0]],"passed":true},{"actual":[[["^","^a"],null,0]],"check":"dead-key scenario 7","expected":[[["^","~a"],null,0]],"passed":false},{"actual":[[["a"],null,0]],"check":"dead-key scenario 8","expected":[[["a"],null,0]],"passed":true},{"actual":[[["abc"],null,2]],"check":"dead-key scenario 9","expected":[[["abc"],null,2]],"passed":true},{"actual":[[["^"],null,0]],"check":"dead-key scenario 10","expected":[[["^"],null,0]],"passed":true},{"actual":[[["a"],null,0]],"check":"dead-key scenario 11","expected":[[["a"],null,0]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"dead-key scenario 0\", \"actual\": [[[], null, 0]], \"expected\": [[[], null, 0]], \"passed\": true}, {\"check\": \"dead-key scenario 1\", \"actual\": [[[], null, 2]], \"expected\": [[[], null, 2]], \"passed\": true}, {\"check\": \"dead-key scenario 2\", \"actual\": [[[], null, 0]], \"expected\": [[[], null, 0]], \"passed\": true}, {\"check\": \"dead-key scenario 3\", \"actual\": [[[\"word\"], null, 0]], \"expected\": [[[\"word\"], null, 0]], \"passed\": true}, {\"check\": \"dead-key scenario 4\", \"actual\": [[[\"â\", \"b\"], null, 0]], \"expected\": [[[\"â\", \"b\"], null, 0]], \"passed\": true}, {\"check\": \"dead-key scenario 5\", \"actual\": [[[\"^z\"], null, 0]], \"expected\": [[[\"^z\"], null, 0]], \"passed\": true}, {\"check\": \"dead-key scenario 6\", \"actual\": [[[\"^\"], null, 0]], \"expected\": [[[\"^\"], null, 0]], \"passed\": true}, {\"check\": \"dead-key scenario 7\", \"actual\": [[[\"^\", \"^a\"], null, 0]], \"expected\": [[[\"^\", \"~a\"], null, 0]], \"passed\": false}, {\"check\": \"dead-key scenario 8\", \"actual\": [[[\"a\"], null, 0]], \"expected\": [[[\"a\"], null, 0]], \"passed\": true}, {\"check\": \"dead-key scenario 9\", \"actual\": [[[\"abc\"], null, 2]], \"expected\": [[[\"abc\"], null, 2]], \"passed\": true}, {\"check\": \"dead-key scenario 10\", \"actual\": [[[\"^\"], null, 0]], \"expected\": [[[\"^\"], null, 0]], \"passed\": true}, {\"check\": \"dead-key scenario 11\", \"actual\": [[[\"a\"], null, 0]], \"expected\": [[[\"a\"], null, 0]], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":40.03,"exit_code":0,"observations":[{"actual":[[[],null,0]],"check":"dead-key scenario 0","expected":[[[],null,0]],"passed":true},{"actual":[[[],null,2]],"check":"dead-key scenario 1","expected":[[[],null,2]],"passed":true},{"actual":[[[],null,0]],"check":"dead-key scenario 2","expected":[[[],null,0]],"passed":true},{"actual":[[["word"],null,0]],"check":"dead-key scenario 3","expected":[[["word"],null,0]],"passed":true},{"actual":[[["â","b"],null,0]],"check":"dead-key scenario 4","expected":[[["â","b"],null,0]],"passed":true},{"actual":[[["^z"],null,0]],"check":"dead-key scenario 5","expected":[[["^z"],null,0]],"passed":true},{"actual":[[["^"],null,0]],"check":"dead-key scenario 6","expected":[[["^"],null,0]],"passed":true},{"actual":[[["^","~a"],null,0]],"check":"dead-key scenario 7","expected":[[["^","~a"],null,0]],"passed":true},{"actual":[[["a"],null,0]],"check":"dead-key scenario 8","expected":[[["a"],null,0]],"passed":true},{"actual":[[["abc"],null,2]],"check":"dead-key scenario 9","expected":[[["abc"],null,2]],"passed":true},{"actual":[[["^"],null,0]],"check":"dead-key scenario 10","expected":[[["^"],null,0]],"passed":true},{"actual":[[["a"],null,0]],"check":"dead-key scenario 11","expected":[[["a"],null,0]],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"dead-key scenario 0\", \"actual\": [[[], null, 0]], \"expected\": [[[], null, 0]], \"passed\": true}, {\"check\": \"dead-key scenario 1\", \"actual\": [[[], null, 2]], \"expected\": [[[], null, 2]], \"passed\": true}, {\"check\": \"dead-key scenario 2\", \"actual\": [[[], null, 0]], \"expected\": [[[], null, 0]], \"passed\": true}, {\"check\": \"dead-key scenario 3\", \"actual\": [[[\"word\"], null, 0]], \"expected\": [[[\"word\"], null, 0]], \"passed\": true}, {\"check\": \"dead-key scenario 4\", \"actual\": [[[\"â\", \"b\"], null, 0]], \"expected\": [[[\"â\", \"b\"], null, 0]], \"passed\": true}, {\"check\": \"dead-key scenario 5\", \"actual\": [[[\"^z\"], null, 0]], \"expected\": [[[\"^z\"], null, 0]], \"passed\": true}, {\"check\": \"dead-key scenario 6\", \"actual\": [[[\"^\"], null, 0]], \"expected\": [[[\"^\"], null, 0]], \"passed\": true}, {\"check\": \"dead-key scenario 7\", \"actual\": [[[\"^\", \"~a\"], null, 0]], \"expected\": [[[\"^\", \"~a\"], null, 0]], \"passed\": true}, {\"check\": \"dead-key scenario 8\", \"actual\": [[[\"a\"], null, 0]], \"expected\": [[[\"a\"], null, 0]], \"passed\": true}, {\"check\": \"dead-key scenario 9\", \"actual\": [[[\"abc\"], null, 2]], \"expected\": [[[\"abc\"], null, 2]], \"passed\": true}, {\"check\": \"dead-key scenario 10\", \"actual\": [[[\"^\"], null, 0]], \"expected\": [[[\"^\"], null, 0]], \"passed\": true}, {\"check\": \"dead-key scenario 11\", \"actual\": [[[\"a\"], null, 0]], \"expected\": [[[\"a\"], null, 0]], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}