{"abstract":"The event trace violates the accepted clock rule and produces incorrect keyboard state or command output.","category":"Keyboard interactions","checks":10,"contract":"Case [sequence,timeout,events]. Nonempty sequence is list of key names. Events [kind,key,time,repeat]. Only nonrepeat down feeds matcher. Accepted downs more than timeout after the previous accepted down discard the prefix; tick likewise expires it. Cancel resets prefix and clock. Keep longest suffix matching a sequence prefix, and after a match retain the longest proper overlapping prefix. Return match timestamps, partial prefix and last accepted time. 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-sequence-prefix","failed_approach":"The partial repair changes this transition to last=last if last is not None else now, which still violates the model contract on the explicit regression traces.","family":"s3-keyboard-interactions-sequence-prefix-accepted-clock","id":"FA-31466","implementations":{"attempt":{"sha256":"5725979eb60a5ecf9a5d5df68539b6bdf46e97a67829f4a213c0b241f55fad33","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(cases):\n    def run(c):\n        sequence,timeout,events=c\n        buffer=[]; last=None; matches=[]\n        for kind,key,now,repeat in events:\n            if kind=='cancel': buffer=[]; last=None\n            elif kind=='tick':\n                if last is not None and now-last>timeout: buffer=[]; last=None\n            elif kind=='down' and not repeat:\n                if last is not None and now-last>timeout: buffer=[]\n                candidate=buffer+[key]\n                last=last if last is not None else now\n                buffer=[]\n                for size in range(min(len(sequence),len(candidate)),0,-1):\n                    if candidate[-size:]==sequence[:size]:\n                        buffer=candidate[-size:]\n                        break\n                if buffer==sequence:\n                    matches.append(now)\n                    buffer=[]\n                    for size in range(len(sequence)-1,0,-1):\n                        if sequence[-size:]==sequence[:size]:\n                            buffer=sequence[:size]\n                            break\n        return [matches,buffer,last]\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('sequence-prefix scenario 0', solve([[['A', 'B'], 5, []]] * N), [[[], [], None]] * N)\ncheck('sequence-prefix scenario 1', solve([[['A', 'B'], 5, [['down', 'A', 10, False], ['down', 'B', 15, False]]]] * N), [[[15], [], 15]] * N)\ncheck('sequence-prefix scenario 2', solve([[['A', 'B'], 5, [['down', 'A', 10, False], ['tick', '', 15, False]]]] * N), [[[], ['A'], 10]] * N)\ncheck('sequence-prefix scenario 3', solve([[['A', 'B'], 5, [['down', 'A', 10, False], ['down', 'B', 16, False]]]] * N), [[[], [], 16]] * N)\ncheck('sequence-prefix scenario 4', solve([[['A', 'B'], 5, [['down', 'A', 10, False], ['down', 'B', 11, True], ['up', 'B', 12, False]]]] * N), [[[], ['A'], 10]] * N)\ncheck('sequence-prefix scenario 5', solve([[['A', 'B'], 5, [['down', 'A', 10, False], ['cancel', '', 11, False]]]] * N), [[[], [], None]] * N)\ncheck('sequence-prefix scenario 6', solve([[['A', 'B', 'A'], 5, [['down', 'A', 10, False], ['down', 'B', 11, False], ['down', 'A', 12, False], ['down', 'B', 13, False], ['down', 'A', 14, False]]]] * N), [[[12, 14], ['A'], 14]] * N)\ncheck('sequence-prefix scenario 7', solve([[['A', 'B', 'A', 'B'], 5, [['down', 'A', 10, False], ['down', 'B', 11, False], ['down', 'A', 12, False], ['down', 'B', 13, False], ['down', 'A', 14, False], ['down', 'B', 15, False]]]] * N), [[[13, 15], ['A', 'B'], 15]] * N)\ncheck('sequence-prefix scenario 8', solve([[['A', 'A', 'B'], 5, [['down', 'A', 10, False], ['down', 'A', 11, False], ['down', 'A', 12, False], ['down', 'B', 13, False]]]] * N), [[[13], [], 13]] * N)\ncheck('sequence-prefix scenario 9', solve([[['A', 'B', 'C'], 5, [['down', 'A', 10, False], ['down', 'X', 11, False], ['down', 'A', 12, False], ['down', 'B', 13, False], ['down', 'C', 14, False]]]] * N), [[[14], [], 14]] * 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":"acde019477c8ebf6c38e7de662e78024a99ca0bc18f7523aa26265c8f3dc3f6e","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(cases):\n    def run(c):\n        sequence,timeout,events=c\n        buffer=[]; last=None; matches=[]\n        for kind,key,now,repeat in events:\n            if kind=='cancel': buffer=[]; last=None\n            elif kind=='tick':\n                if last is not None and now-last>timeout: buffer=[]; last=None\n            elif kind=='down' and not repeat:\n                if last is not None and now-last>timeout: buffer=[]\n                candidate=buffer+[key]\n                last=0\n                buffer=[]\n                for size in range(min(len(sequence),len(candidate)),0,-1):\n                    if candidate[-size:]==sequence[:size]:\n                        buffer=candidate[-size:]\n                        break\n                if buffer==sequence:\n                    matches.append(now)\n                    buffer=[]\n                    for size in range(len(sequence)-1,0,-1):\n                        if sequence[-size:]==sequence[:size]:\n                            buffer=sequence[:size]\n                            break\n        return [matches,buffer,last]\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('sequence-prefix scenario 0', solve([[['A', 'B'], 5, []]] * N), [[[], [], None]] * N)\ncheck('sequence-prefix scenario 1', solve([[['A', 'B'], 5, [['down', 'A', 10, False], ['down', 'B', 15, False]]]] * N), [[[15], [], 15]] * N)\ncheck('sequence-prefix scenario 2', solve([[['A', 'B'], 5, [['down', 'A', 10, False], ['tick', '', 15, False]]]] * N), [[[], ['A'], 10]] * N)\ncheck('sequence-prefix scenario 3', solve([[['A', 'B'], 5, [['down', 'A', 10, False], ['down', 'B', 16, False]]]] * N), [[[], [], 16]] * N)\ncheck('sequence-prefix scenario 4', solve([[['A', 'B'], 5, [['down', 'A', 10, False], ['down', 'B', 11, True], ['up', 'B', 12, False]]]] * N), [[[], ['A'], 10]] * N)\ncheck('sequence-prefix scenario 5', solve([[['A', 'B'], 5, [['down', 'A', 10, False], ['cancel', '', 11, False]]]] * N), [[[], [], None]] * N)\ncheck('sequence-prefix scenario 6', solve([[['A', 'B', 'A'], 5, [['down', 'A', 10, False], ['down', 'B', 11, False], ['down', 'A', 12, False], ['down', 'B', 13, False], ['down', 'A', 14, False]]]] * N), [[[12, 14], ['A'], 14]] * N)\ncheck('sequence-prefix scenario 7', solve([[['A', 'B', 'A', 'B'], 5, [['down', 'A', 10, False], ['down', 'B', 11, False], ['down', 'A', 12, False], ['down', 'B', 13, False], ['down', 'A', 14, False], ['down', 'B', 15, False]]]] * N), [[[13, 15], ['A', 'B'], 15]] * N)\ncheck('sequence-prefix scenario 8', solve([[['A', 'A', 'B'], 5, [['down', 'A', 10, False], ['down', 'A', 11, False], ['down', 'A', 12, False], ['down', 'B', 13, False]]]] * N), [[[13], [], 13]] * N)\ncheck('sequence-prefix scenario 9', solve([[['A', 'B', 'C'], 5, [['down', 'A', 10, False], ['down', 'X', 11, False], ['down', 'A', 12, False], ['down', 'B', 13, False], ['down', 'C', 14, False]]]] * N), [[[14], [], 14]] * 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-sequence-prefix-accepted-clock","generated_at":"2026-09-29T14:42:02.567274+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":"Accepted key events fail to refresh the inter-key timeout origin.","sha256":"2e73990f16ce587fafeccd849afcca511a68226b6b3e2d110365c5060b950708","title":"Overlapping keyboard sequence matcher: Accepted key events fail to refresh the inter-key timeout origin · 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":44.666,"exit_code":1,"observations":[{"actual":[[[],[],null]],"check":"sequence-prefix scenario 0","expected":[[[],[],null]],"passed":true},{"actual":[[[15],[],10]],"check":"sequence-prefix scenario 1","expected":[[[15],[],15]],"passed":false},{"actual":[[[],["A"],10]],"check":"sequence-prefix scenario 2","expected":[[[],["A"],10]],"passed":true},{"actual":[[[],[],10]],"check":"sequence-prefix scenario 3","expected":[[[],[],16]],"passed":false},{"actual":[[[],["A"],10]],"check":"sequence-prefix scenario 4","expected":[[[],["A"],10]],"passed":true},{"actual":[[[],[],null]],"check":"sequence-prefix scenario 5","expected":[[[],[],null]],"passed":true},{"actual":[[[12,14],["A"],10]],"check":"sequence-prefix scenario 6","expected":[[[12,14],["A"],14]],"passed":false},{"actual":[[[13,15],["A","B"],10]],"check":"sequence-prefix scenario 7","expected":[[[13,15],["A","B"],15]],"passed":false},{"actual":[[[13],[],10]],"check":"sequence-prefix scenario 8","expected":[[[13],[],13]],"passed":false},{"actual":[[[14],[],10]],"check":"sequence-prefix scenario 9","expected":[[[14],[],14]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"sequence-prefix scenario 0\", \"actual\": [[[], [], null]], \"expected\": [[[], [], null]], \"passed\": true}, {\"check\": \"sequence-prefix scenario 1\", \"actual\": [[[15], [], 10]], \"expected\": [[[15], [], 15]], \"passed\": false}, {\"check\": \"sequence-prefix scenario 2\", \"actual\": [[[], [\"A\"], 10]], \"expected\": [[[], [\"A\"], 10]], \"passed\": true}, {\"check\": \"sequence-prefix scenario 3\", \"actual\": [[[], [], 10]], \"expected\": [[[], [], 16]], \"passed\": false}, {\"check\": \"sequence-prefix scenario 4\", \"actual\": [[[], [\"A\"], 10]], \"expected\": [[[], [\"A\"], 10]], \"passed\": true}, {\"check\": \"sequence-prefix scenario 5\", \"actual\": [[[], [], null]], \"expected\": [[[], [], null]], \"passed\": true}, {\"check\": \"sequence-prefix scenario 6\", \"actual\": [[[12, 14], [\"A\"], 10]], \"expected\": [[[12, 14], [\"A\"], 14]], \"passed\": false}, {\"check\": \"sequence-prefix scenario 7\", \"actual\": [[[13, 15], [\"A\", \"B\"], 10]], \"expected\": [[[13, 15], [\"A\", \"B\"], 15]], \"passed\": false}, {\"check\": \"sequence-prefix scenario 8\", \"actual\": [[[13], [], 10]], \"expected\": [[[13], [], 13]], \"passed\": false}, {\"check\": \"sequence-prefix scenario 9\", \"actual\": [[[14], [], 10]], \"expected\": [[[14], [], 14]], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":44.794,"exit_code":1,"observations":[{"actual":[[[],[],null]],"check":"sequence-prefix scenario 0","expected":[[[],[],null]],"passed":true},{"actual":[[[],[],0]],"check":"sequence-prefix scenario 1","expected":[[[15],[],15]],"passed":false},{"actual":[[[],[],null]],"check":"sequence-prefix scenario 2","expected":[[[],["A"],10]],"passed":false},{"actual":[[[],[],0]],"check":"sequence-prefix scenario 3","expected":[[[],[],16]],"passed":false},{"actual":[[[],["A"],0]],"check":"sequence-prefix scenario 4","expected":[[[],["A"],10]],"passed":false},{"actual":[[[],[],null]],"check":"sequence-prefix scenario 5","expected":[[[],[],null]],"passed":true},{"actual":[[[],["A"],0]],"check":"sequence-prefix scenario 6","expected":[[[12,14],["A"],14]],"passed":false},{"actual":[[[],[],0]],"check":"sequence-prefix scenario 7","expected":[[[13,15],["A","B"],15]],"passed":false},{"actual":[[[],[],0]],"check":"sequence-prefix scenario 8","expected":[[[13],[],13]],"passed":false},{"actual":[[[],[],0]],"check":"sequence-prefix scenario 9","expected":[[[14],[],14]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"sequence-prefix scenario 0\", \"actual\": [[[], [], null]], \"expected\": [[[], [], null]], \"passed\": true}, {\"check\": \"sequence-prefix scenario 1\", \"actual\": [[[], [], 0]], \"expected\": [[[15], [], 15]], \"passed\": false}, {\"check\": \"sequence-prefix scenario 2\", \"actual\": [[[], [], null]], \"expected\": [[[], [\"A\"], 10]], \"passed\": false}, {\"check\": \"sequence-prefix scenario 3\", \"actual\": [[[], [], 0]], \"expected\": [[[], [], 16]], \"passed\": false}, {\"check\": \"sequence-prefix scenario 4\", \"actual\": [[[], [\"A\"], 0]], \"expected\": [[[], [\"A\"], 10]], \"passed\": false}, {\"check\": \"sequence-prefix scenario 5\", \"actual\": [[[], [], null]], \"expected\": [[[], [], null]], \"passed\": true}, {\"check\": \"sequence-prefix scenario 6\", \"actual\": [[[], [\"A\"], 0]], \"expected\": [[[12, 14], [\"A\"], 14]], \"passed\": false}, {\"check\": \"sequence-prefix scenario 7\", \"actual\": [[[], [], 0]], \"expected\": [[[13, 15], [\"A\", \"B\"], 15]], \"passed\": false}, {\"check\": \"sequence-prefix scenario 8\", \"actual\": [[[], [], 0]], \"expected\": [[[13], [], 13]], \"passed\": false}, {\"check\": \"sequence-prefix scenario 9\", \"actual\": [[[], [], 0]], \"expected\": [[[14], [], 14]], \"passed\": false}], \"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."}}