{"abstract":"The event trace violates the consume 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.","contract_signature":"cases","evaluation_group":"s3-keyboard-dead-key","failed_approach":"The partial repair changes this transition to pass\n    elif kind=='backspace', which still violates the model contract on the explicit regression traces.","family":"s3-keyboard-interactions-dead-key-consume-accent","id":"FA-31521","implementations":{"attempt":{"sha256":"50670e151316e0dca4a33cea4844c440bea5a9bd24e4ff1e40094d7ebc73f197","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                    pass\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":"5652a31c674cc7925b0c975eb64db47fc22ed71a8dd38743ce89e839aace7e29","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=value\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-consume-accent","generated_at":"2026-09-29T14:42:02.988695+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.","root_cause":"Completed text composition leaves a pending accent for the next character.","sha256":"1482bdcfdb1d3650e0067a8abeb4286cde65c3b9119618752ee5a44a7178c315","title":"Explicit dead-key text composition: Completed text composition leaves a pending accent for the next character · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":42.156,"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"],"^",0]],"check":"dead-key scenario 4","expected":[[["â","b"],null,0]],"passed":false},{"actual":[[["^z"],"^",0]],"check":"dead-key scenario 5","expected":[[["^z"],null,0]],"passed":false},{"actual":[[["^"],"^",0]],"check":"dead-key scenario 6","expected":[[["^"],null,0]],"passed":false},{"actual":[[["^","~a"],"~",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\"], \"^\", 0]], \"expected\": [[[\"â\", \"b\"], null, 0]], \"passed\": false}, {\"check\": \"dead-key scenario 5\", \"actual\": [[[\"^z\"], \"^\", 0]], \"expected\": [[[\"^z\"], null, 0]], \"passed\": false}, {\"check\": \"dead-key scenario 6\", \"actual\": [[[\"^\"], \"^\", 0]], \"expected\": [[[\"^\"], null, 0]], \"passed\": false}, {\"check\": \"dead-key scenario 7\", \"actual\": [[[\"^\", \"~a\"], \"~\", 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"},"broken":{"elapsed_ms":45.933,"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":[[["â","ab"],"b",0]],"check":"dead-key scenario 4","expected":[[["â","b"],null,0]],"passed":false},{"actual":[[["^z"],"z",0]],"check":"dead-key scenario 5","expected":[[["^z"],null,0]],"passed":false},{"actual":[[["^"]," ",0]],"check":"dead-key scenario 6","expected":[[["^"],null,0]],"passed":false},{"actual":[[["^","~a"],"a",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\": [[[\"â\", \"ab\"], \"b\", 0]], \"expected\": [[[\"â\", \"b\"], null, 0]], \"passed\": false}, {\"check\": \"dead-key scenario 5\", \"actual\": [[[\"^z\"], \"z\", 0]], \"expected\": [[[\"^z\"], null, 0]], \"passed\": false}, {\"check\": \"dead-key scenario 6\", \"actual\": [[[\"^\"], \" \", 0]], \"expected\": [[[\"^\"], null, 0]], \"passed\": false}, {\"check\": \"dead-key scenario 7\", \"actual\": [[[\"^\", \"~a\"], \"a\", 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"}},"member_only":{"stages":["fixed"],"fields":["implementations.fixed","verification.fixed","harness","repair"],"note":"The verified repair, its recorded checks, the repair description, and the scoring harness are available to members."}}