{"abstract":"The event trace violates the request focus rule and produces incorrect keyboard state or command output.","category":"Keyboard interactions","checks":10,"contract":"Events [kind,id,keys]. Initial window is focused. Request replaces pending id and deduplicated requested keys while focused. Grant applies only to current pending id while focused, filters Escape from captured keys, replaces active grant and clears pending. Deny clears only matching pending. Blur clears pending and active; focus restores eligibility; release clears both. Return focused flag, pending [id,keys] or None and active keys. 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-keyboard-lock","failed_approach":"The partial repair changes this transition to if kind=='request' and not focused:, which still violates the model contract on the explicit regression traces.","family":"s3-keyboard-interactions-keyboard-lock-request-focus","id":"FA-32091","implementations":{"attempt":{"sha256":"61775bb2b53a529edbb4b3320b7c4ded2d1fd96563975742881050c920f53382","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(cases):\n    def run(c):\n        focused=True; pending=None; active=[]\n        for kind,ident,keys in c:\n            if kind=='request' and not focused:\n                pending=[ident,sorted(set(keys))]\n            elif kind=='grant' and focused and pending is not None and ident==pending[0]:\n                active=[k for k in pending[1] if k!='Escape']\n                pending=None\n            elif kind=='deny' and pending is not None and ident==pending[0]:\n                pending=None\n            elif kind=='blur':\n                focused=False; pending=None; active=[]\n            elif kind=='focus': focused=True\n            elif kind=='release': pending=None; active=[]\n        return [focused,pending,active]\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('keyboard-lock scenario 0', solve([[]] * N), [[True, None, []]] * N)\ncheck('keyboard-lock scenario 1', solve([[['request', 1, ['B', 'A', 'A']]]] * N), [[True, [1, ['A', 'B']], []]] * N)\ncheck('keyboard-lock scenario 2', solve([[['request', 1, ['A', 'Escape']], ['grant', 1, []]]] * N), [[True, None, ['A']]] * N)\ncheck('keyboard-lock scenario 3', solve([[['request', 1, ['A']], ['request', 2, ['B']], ['grant', 1, []]]] * N), [[True, [2, ['B']], []]] * N)\ncheck('keyboard-lock scenario 4', solve([[['request', 1, ['A']], ['request', 2, ['B']], ['deny', 1, []]]] * N), [[True, [2, ['B']], []]] * N)\ncheck('keyboard-lock scenario 5', solve([[['request', 1, ['A']], ['grant', 1, []], ['request', 2, ['B']], ['grant', 2, []]]] * N), [[True, None, ['B']]] * N)\ncheck('keyboard-lock scenario 6', solve([[['blur', 0, []], ['request', 1, ['A']]]] * N), [[False, None, []]] * N)\ncheck('keyboard-lock scenario 7', solve([[['request', 1, ['A']], ['grant', 1, []], ['request', 2, ['B']], ['blur', 0, []]]] * N), [[False, None, []]] * N)\ncheck('keyboard-lock scenario 8', solve([[['request', 1, ['A']], ['grant', 1, []], ['request', 2, ['B']], ['release', 0, []]]] * N), [[True, None, []]] * N)\ncheck('keyboard-lock scenario 9', solve([[['request', 1, ['A']], ['deny', 1, []]]] * N), [[True, None, []]] * 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":"165523dd4874875050b13dc96ab775494d91f979c38a26508641fa65ce3d189f","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(cases):\n    def run(c):\n        focused=True; pending=None; active=[]\n        for kind,ident,keys in c:\n            if kind=='request':\n                pending=[ident,sorted(set(keys))]\n            elif kind=='grant' and focused and pending is not None and ident==pending[0]:\n                active=[k for k in pending[1] if k!='Escape']\n                pending=None\n            elif kind=='deny' and pending is not None and ident==pending[0]:\n                pending=None\n            elif kind=='blur':\n                focused=False; pending=None; active=[]\n            elif kind=='focus': focused=True\n            elif kind=='release': pending=None; active=[]\n        return [focused,pending,active]\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('keyboard-lock scenario 0', solve([[]] * N), [[True, None, []]] * N)\ncheck('keyboard-lock scenario 1', solve([[['request', 1, ['B', 'A', 'A']]]] * N), [[True, [1, ['A', 'B']], []]] * N)\ncheck('keyboard-lock scenario 2', solve([[['request', 1, ['A', 'Escape']], ['grant', 1, []]]] * N), [[True, None, ['A']]] * N)\ncheck('keyboard-lock scenario 3', solve([[['request', 1, ['A']], ['request', 2, ['B']], ['grant', 1, []]]] * N), [[True, [2, ['B']], []]] * N)\ncheck('keyboard-lock scenario 4', solve([[['request', 1, ['A']], ['request', 2, ['B']], ['deny', 1, []]]] * N), [[True, [2, ['B']], []]] * N)\ncheck('keyboard-lock scenario 5', solve([[['request', 1, ['A']], ['grant', 1, []], ['request', 2, ['B']], ['grant', 2, []]]] * N), [[True, None, ['B']]] * N)\ncheck('keyboard-lock scenario 6', solve([[['blur', 0, []], ['request', 1, ['A']]]] * N), [[False, None, []]] * N)\ncheck('keyboard-lock scenario 7', solve([[['request', 1, ['A']], ['grant', 1, []], ['request', 2, ['B']], ['blur', 0, []]]] * N), [[False, None, []]] * N)\ncheck('keyboard-lock scenario 8', solve([[['request', 1, ['A']], ['grant', 1, []], ['request', 2, ['B']], ['release', 0, []]]] * N), [[True, None, []]] * N)\ncheck('keyboard-lock scenario 9', solve([[['request', 1, ['A']], ['deny', 1, []]]] * N), [[True, None, []]] * 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-keyboard-lock-request-focus","generated_at":"2026-09-29T14:42:09.071638+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":"An unfocused window starts keyboard capture requests.","sha256":"be7be0a5d1fbd1afe59bfcb67a886c4488f63a2f3054a6df2d3ed8233c7fc479","title":"Asynchronous keyboard capture grant lifecycle: An unfocused window starts keyboard capture requests · 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":41.883,"exit_code":1,"observations":[{"actual":[[true,null,[]]],"check":"keyboard-lock scenario 0","expected":[[true,null,[]]],"passed":true},{"actual":[[true,null,[]]],"check":"keyboard-lock scenario 1","expected":[[true,[1,["A","B"]],[]]],"passed":false},{"actual":[[true,null,[]]],"check":"keyboard-lock scenario 2","expected":[[true,null,["A"]]],"passed":false},{"actual":[[true,null,[]]],"check":"keyboard-lock scenario 3","expected":[[true,[2,["B"]],[]]],"passed":false},{"actual":[[true,null,[]]],"check":"keyboard-lock scenario 4","expected":[[true,[2,["B"]],[]]],"passed":false},{"actual":[[true,null,[]]],"check":"keyboard-lock scenario 5","expected":[[true,null,["B"]]],"passed":false},{"actual":[[false,[1,["A"]],[]]],"check":"keyboard-lock scenario 6","expected":[[false,null,[]]],"passed":false},{"actual":[[false,null,[]]],"check":"keyboard-lock scenario 7","expected":[[false,null,[]]],"passed":true},{"actual":[[true,null,[]]],"check":"keyboard-lock scenario 8","expected":[[true,null,[]]],"passed":true},{"actual":[[true,null,[]]],"check":"keyboard-lock scenario 9","expected":[[true,null,[]]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"keyboard-lock scenario 0\", \"actual\": [[true, null, []]], \"expected\": [[true, null, []]], \"passed\": true}, {\"check\": \"keyboard-lock scenario 1\", \"actual\": [[true, null, []]], \"expected\": [[true, [1, [\"A\", \"B\"]], []]], \"passed\": false}, {\"check\": \"keyboard-lock scenario 2\", \"actual\": [[true, null, []]], \"expected\": [[true, null, [\"A\"]]], \"passed\": false}, {\"check\": \"keyboard-lock scenario 3\", \"actual\": [[true, null, []]], \"expected\": [[true, [2, [\"B\"]], []]], \"passed\": false}, {\"check\": \"keyboard-lock scenario 4\", \"actual\": [[true, null, []]], \"expected\": [[true, [2, [\"B\"]], []]], \"passed\": false}, {\"check\": \"keyboard-lock scenario 5\", \"actual\": [[true, null, []]], \"expected\": [[true, null, [\"B\"]]], \"passed\": false}, {\"check\": \"keyboard-lock scenario 6\", \"actual\": [[false, [1, [\"A\"]], []]], \"expected\": [[false, null, []]], \"passed\": false}, {\"check\": \"keyboard-lock scenario 7\", \"actual\": [[false, null, []]], \"expected\": [[false, null, []]], \"passed\": true}, {\"check\": \"keyboard-lock scenario 8\", \"actual\": [[true, null, []]], \"expected\": [[true, null, []]], \"passed\": true}, {\"check\": \"keyboard-lock scenario 9\", \"actual\": [[true, null, []]], \"expected\": [[true, null, []]], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":43.304,"exit_code":1,"observations":[{"actual":[[true,null,[]]],"check":"keyboard-lock scenario 0","expected":[[true,null,[]]],"passed":true},{"actual":[[true,[1,["A","B"]],[]]],"check":"keyboard-lock scenario 1","expected":[[true,[1,["A","B"]],[]]],"passed":true},{"actual":[[true,null,["A"]]],"check":"keyboard-lock scenario 2","expected":[[true,null,["A"]]],"passed":true},{"actual":[[true,[2,["B"]],[]]],"check":"keyboard-lock scenario 3","expected":[[true,[2,["B"]],[]]],"passed":true},{"actual":[[true,[2,["B"]],[]]],"check":"keyboard-lock scenario 4","expected":[[true,[2,["B"]],[]]],"passed":true},{"actual":[[true,null,["B"]]],"check":"keyboard-lock scenario 5","expected":[[true,null,["B"]]],"passed":true},{"actual":[[false,[1,["A"]],[]]],"check":"keyboard-lock scenario 6","expected":[[false,null,[]]],"passed":false},{"actual":[[false,null,[]]],"check":"keyboard-lock scenario 7","expected":[[false,null,[]]],"passed":true},{"actual":[[true,null,[]]],"check":"keyboard-lock scenario 8","expected":[[true,null,[]]],"passed":true},{"actual":[[true,null,[]]],"check":"keyboard-lock scenario 9","expected":[[true,null,[]]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"keyboard-lock scenario 0\", \"actual\": [[true, null, []]], \"expected\": [[true, null, []]], \"passed\": true}, {\"check\": \"keyboard-lock scenario 1\", \"actual\": [[true, [1, [\"A\", \"B\"]], []]], \"expected\": [[true, [1, [\"A\", \"B\"]], []]], \"passed\": true}, {\"check\": \"keyboard-lock scenario 2\", \"actual\": [[true, null, [\"A\"]]], \"expected\": [[true, null, [\"A\"]]], \"passed\": true}, {\"check\": \"keyboard-lock scenario 3\", \"actual\": [[true, [2, [\"B\"]], []]], \"expected\": [[true, [2, [\"B\"]], []]], \"passed\": true}, {\"check\": \"keyboard-lock scenario 4\", \"actual\": [[true, [2, [\"B\"]], []]], \"expected\": [[true, [2, [\"B\"]], []]], \"passed\": true}, {\"check\": \"keyboard-lock scenario 5\", \"actual\": [[true, null, [\"B\"]]], \"expected\": [[true, null, [\"B\"]]], \"passed\": true}, {\"check\": \"keyboard-lock scenario 6\", \"actual\": [[false, [1, [\"A\"]], []]], \"expected\": [[false, null, []]], \"passed\": false}, {\"check\": \"keyboard-lock scenario 7\", \"actual\": [[false, null, []]], \"expected\": [[false, null, []]], \"passed\": true}, {\"check\": \"keyboard-lock scenario 8\", \"actual\": [[true, null, []]], \"expected\": [[true, null, []]], \"passed\": true}, {\"check\": \"keyboard-lock scenario 9\", \"actual\": [[true, null, []]], \"expected\": [[true, null, []]], \"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."}}