{"abstract":"The event trace violates the cleanup time rule and produces incorrect keyboard state or command output.","category":"Keyboard interactions","checks":9,"contract":"Case [records,start,rate_num,rate_den,loops,gap]. Records [kind,key,offset] have ordered nonnegative integer offsets. Positive rational playback speed scales deadlines by floor(offset*den/num). Repeat cycles start after scaled final offset plus gap. End of each cycle synthesizes releases for remaining held keys in sorted order. Return emitted [kind,key,deadline] records. Loops nonnegative; gap positive. 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-macro-play","failed_approach":"The partial repair changes this transition to out.append(['up',key,start+duration]), which still violates the model contract on the explicit regression traces.","family":"s3-keyboard-interactions-macro-play-cleanup-time","id":"FA-31636","implementations":{"attempt":{"sha256":"9943505ac5e67cf89b632fe399bec8e19799b31755f9bace8fdf6a5e12b08d76","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(cases):\n    def run(c):\n        records,start,num,den,loops,gap=c\n        out=[]\n        duration=(records[-1][2]*den//num) if records else 0\n        for cycle in range(loops):\n            base=start+cycle*(duration+gap)\n            held=set()\n            for kind,key,offset in records:\n                due=base+offset*den//num\n                if kind=='down': held.add(key)\n                elif kind=='up': held.discard(key)\n                out.append([kind,key,due])\n            for key in sorted(held):\n                out.append(['up',key,start+duration])\n        return out\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('macro-play scenario 0', solve([[[], 10, 1, 1, 0, 2]] * N), [[]] * N)\ncheck('macro-play scenario 1', solve([[[], 10, 1, 1, 2, 2]] * N), [[]] * N)\ncheck('macro-play scenario 2', solve([[[['down', 'A', 0], ['up', 'A', 3]], 10, 2, 1, 2, 4]] * N), [[['down', 'A', 10], ['up', 'A', 11], ['down', 'A', 15], ['up', 'A', 16]]] * N)\ncheck('macro-play scenario 3', solve([[[['up', 'A', 0]], 10, 1, 1, 1, 2]] * N), [[['up', 'A', 10]]] * N)\ncheck('macro-play scenario 4', solve([[[['down', 'A', 0], ['down', 'B', 1]], 10, 1, 1, 2, 2]] * N), [[['down', 'A', 10], ['down', 'B', 11], ['up', 'A', 11], ['up', 'B', 11], ['down', 'A', 13], ['down', 'B', 14], ['up', 'A', 14], ['up', 'B', 14]]] * N)\ncheck('macro-play scenario 5', solve([[[['down', 'A', 0], ['down', 'A', 1]], 10, 1, 1, 1, 2]] * N), [[['down', 'A', 10], ['down', 'A', 11], ['up', 'A', 11]]] * N)\ncheck('macro-play scenario 6', solve([[[['down', 'A', 0], ['down', 'B', 1], ['up', 'A', 2]], 10, 1, 1, 1, 2]] * N), [[['down', 'A', 10], ['down', 'B', 11], ['up', 'A', 12], ['up', 'B', 12]]] * N)\ncheck('macro-play scenario 7', solve([[[['down', 'A', 1], ['up', 'A', 5]], 10, 3, 2, 2, 2]] * N), [[['down', 'A', 10], ['up', 'A', 13], ['down', 'A', 15], ['up', 'A', 18]]] * N)\ncheck('macro-play scenario 8', solve([[[['down', 'A', 0], ['up', 'A', 2]], 10, 1, 1, 0, 2]] * N), [[]] * 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":"cba67ef23bfd12e0e2a9d95aa6067b1fd3e298259e111058c13f6252ef8dc829","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(cases):\n    def run(c):\n        records,start,num,den,loops,gap=c\n        out=[]\n        duration=(records[-1][2]*den//num) if records else 0\n        for cycle in range(loops):\n            base=start+cycle*(duration+gap)\n            held=set()\n            for kind,key,offset in records:\n                due=base+offset*den//num\n                if kind=='down': held.add(key)\n                elif kind=='up': held.discard(key)\n                out.append([kind,key,due])\n            for key in sorted(held):\n                out.append(['up',key,base+duration+gap])\n        return out\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('macro-play scenario 0', solve([[[], 10, 1, 1, 0, 2]] * N), [[]] * N)\ncheck('macro-play scenario 1', solve([[[], 10, 1, 1, 2, 2]] * N), [[]] * N)\ncheck('macro-play scenario 2', solve([[[['down', 'A', 0], ['up', 'A', 3]], 10, 2, 1, 2, 4]] * N), [[['down', 'A', 10], ['up', 'A', 11], ['down', 'A', 15], ['up', 'A', 16]]] * N)\ncheck('macro-play scenario 3', solve([[[['up', 'A', 0]], 10, 1, 1, 1, 2]] * N), [[['up', 'A', 10]]] * N)\ncheck('macro-play scenario 4', solve([[[['down', 'A', 0], ['down', 'B', 1]], 10, 1, 1, 2, 2]] * N), [[['down', 'A', 10], ['down', 'B', 11], ['up', 'A', 11], ['up', 'B', 11], ['down', 'A', 13], ['down', 'B', 14], ['up', 'A', 14], ['up', 'B', 14]]] * N)\ncheck('macro-play scenario 5', solve([[[['down', 'A', 0], ['down', 'A', 1]], 10, 1, 1, 1, 2]] * N), [[['down', 'A', 10], ['down', 'A', 11], ['up', 'A', 11]]] * N)\ncheck('macro-play scenario 6', solve([[[['down', 'A', 0], ['down', 'B', 1], ['up', 'A', 2]], 10, 1, 1, 1, 2]] * N), [[['down', 'A', 10], ['down', 'B', 11], ['up', 'A', 12], ['up', 'B', 12]]] * N)\ncheck('macro-play scenario 7', solve([[[['down', 'A', 1], ['up', 'A', 5]], 10, 3, 2, 2, 2]] * N), [[['down', 'A', 10], ['up', 'A', 13], ['down', 'A', 15], ['up', 'A', 18]]] * N)\ncheck('macro-play scenario 8', solve([[[['down', 'A', 0], ['up', 'A', 2]], 10, 1, 1, 0, 2]] * N), [[]] * 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-macro-play-cleanup-time","generated_at":"2026-09-29T14:42:04.013632+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":"Synthesized release cleanup happens after the gap or uses the first cycle time.","sha256":"f79a162eda8a06f687831e3075a60f97296f90c1e0a9bca2924b2a1a5ecffb63","title":"Keyboard macro deterministic playback scheduler: Synthesized release cleanup happens after the gap or uses the first cycle time · 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":43.343,"exit_code":1,"observations":[{"actual":[[]],"check":"macro-play scenario 0","expected":[[]],"passed":true},{"actual":[[]],"check":"macro-play scenario 1","expected":[[]],"passed":true},{"actual":[[["down","A",10],["up","A",11],["down","A",15],["up","A",16]]],"check":"macro-play scenario 2","expected":[[["down","A",10],["up","A",11],["down","A",15],["up","A",16]]],"passed":true},{"actual":[[["up","A",10]]],"check":"macro-play scenario 3","expected":[[["up","A",10]]],"passed":true},{"actual":[[["down","A",10],["down","B",11],["up","A",11],["up","B",11],["down","A",13],["down","B",14],["up","A",11],["up","B",11]]],"check":"macro-play scenario 4","expected":[[["down","A",10],["down","B",11],["up","A",11],["up","B",11],["down","A",13],["down","B",14],["up","A",14],["up","B",14]]],"passed":false},{"actual":[[["down","A",10],["down","A",11],["up","A",11]]],"check":"macro-play scenario 5","expected":[[["down","A",10],["down","A",11],["up","A",11]]],"passed":true},{"actual":[[["down","A",10],["down","B",11],["up","A",12],["up","B",12]]],"check":"macro-play scenario 6","expected":[[["down","A",10],["down","B",11],["up","A",12],["up","B",12]]],"passed":true},{"actual":[[["down","A",10],["up","A",13],["down","A",15],["up","A",18]]],"check":"macro-play scenario 7","expected":[[["down","A",10],["up","A",13],["down","A",15],["up","A",18]]],"passed":true},{"actual":[[]],"check":"macro-play scenario 8","expected":[[]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"macro-play scenario 0\", \"actual\": [[]], \"expected\": [[]], \"passed\": true}, {\"check\": \"macro-play scenario 1\", \"actual\": [[]], \"expected\": [[]], \"passed\": true}, {\"check\": \"macro-play scenario 2\", \"actual\": [[[\"down\", \"A\", 10], [\"up\", \"A\", 11], [\"down\", \"A\", 15], [\"up\", \"A\", 16]]], \"expected\": [[[\"down\", \"A\", 10], [\"up\", \"A\", 11], [\"down\", \"A\", 15], [\"up\", \"A\", 16]]], \"passed\": true}, {\"check\": \"macro-play scenario 3\", \"actual\": [[[\"up\", \"A\", 10]]], \"expected\": [[[\"up\", \"A\", 10]]], \"passed\": true}, {\"check\": \"macro-play scenario 4\", \"actual\": [[[\"down\", \"A\", 10], [\"down\", \"B\", 11], [\"up\", \"A\", 11], [\"up\", \"B\", 11], [\"down\", \"A\", 13], [\"down\", \"B\", 14], [\"up\", \"A\", 11], [\"up\", \"B\", 11]]], \"expected\": [[[\"down\", \"A\", 10], [\"down\", \"B\", 11], [\"up\", \"A\", 11], [\"up\", \"B\", 11], [\"down\", \"A\", 13], [\"down\", \"B\", 14], [\"up\", \"A\", 14], [\"up\", \"B\", 14]]], \"passed\": false}, {\"check\": \"macro-play scenario 5\", \"actual\": [[[\"down\", \"A\", 10], [\"down\", \"A\", 11], [\"up\", \"A\", 11]]], \"expected\": [[[\"down\", \"A\", 10], [\"down\", \"A\", 11], [\"up\", \"A\", 11]]], \"passed\": true}, {\"check\": \"macro-play scenario 6\", \"actual\": [[[\"down\", \"A\", 10], [\"down\", \"B\", 11], [\"up\", \"A\", 12], [\"up\", \"B\", 12]]], \"expected\": [[[\"down\", \"A\", 10], [\"down\", \"B\", 11], [\"up\", \"A\", 12], [\"up\", \"B\", 12]]], \"passed\": true}, {\"check\": \"macro-play scenario 7\", \"actual\": [[[\"down\", \"A\", 10], [\"up\", \"A\", 13], [\"down\", \"A\", 15], [\"up\", \"A\", 18]]], \"expected\": [[[\"down\", \"A\", 10], [\"up\", \"A\", 13], [\"down\", \"A\", 15], [\"up\", \"A\", 18]]], \"passed\": true}, {\"check\": \"macro-play scenario 8\", \"actual\": [[]], \"expected\": [[]], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.387,"exit_code":1,"observations":[{"actual":[[]],"check":"macro-play scenario 0","expected":[[]],"passed":true},{"actual":[[]],"check":"macro-play scenario 1","expected":[[]],"passed":true},{"actual":[[["down","A",10],["up","A",11],["down","A",15],["up","A",16]]],"check":"macro-play scenario 2","expected":[[["down","A",10],["up","A",11],["down","A",15],["up","A",16]]],"passed":true},{"actual":[[["up","A",10]]],"check":"macro-play scenario 3","expected":[[["up","A",10]]],"passed":true},{"actual":[[["down","A",10],["down","B",11],["up","A",13],["up","B",13],["down","A",13],["down","B",14],["up","A",16],["up","B",16]]],"check":"macro-play scenario 4","expected":[[["down","A",10],["down","B",11],["up","A",11],["up","B",11],["down","A",13],["down","B",14],["up","A",14],["up","B",14]]],"passed":false},{"actual":[[["down","A",10],["down","A",11],["up","A",13]]],"check":"macro-play scenario 5","expected":[[["down","A",10],["down","A",11],["up","A",11]]],"passed":false},{"actual":[[["down","A",10],["down","B",11],["up","A",12],["up","B",14]]],"check":"macro-play scenario 6","expected":[[["down","A",10],["down","B",11],["up","A",12],["up","B",12]]],"passed":false},{"actual":[[["down","A",10],["up","A",13],["down","A",15],["up","A",18]]],"check":"macro-play scenario 7","expected":[[["down","A",10],["up","A",13],["down","A",15],["up","A",18]]],"passed":true},{"actual":[[]],"check":"macro-play scenario 8","expected":[[]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"macro-play scenario 0\", \"actual\": [[]], \"expected\": [[]], \"passed\": true}, {\"check\": \"macro-play scenario 1\", \"actual\": [[]], \"expected\": [[]], \"passed\": true}, {\"check\": \"macro-play scenario 2\", \"actual\": [[[\"down\", \"A\", 10], [\"up\", \"A\", 11], [\"down\", \"A\", 15], [\"up\", \"A\", 16]]], \"expected\": [[[\"down\", \"A\", 10], [\"up\", \"A\", 11], [\"down\", \"A\", 15], [\"up\", \"A\", 16]]], \"passed\": true}, {\"check\": \"macro-play scenario 3\", \"actual\": [[[\"up\", \"A\", 10]]], \"expected\": [[[\"up\", \"A\", 10]]], \"passed\": true}, {\"check\": \"macro-play scenario 4\", \"actual\": [[[\"down\", \"A\", 10], [\"down\", \"B\", 11], [\"up\", \"A\", 13], [\"up\", \"B\", 13], [\"down\", \"A\", 13], [\"down\", \"B\", 14], [\"up\", \"A\", 16], [\"up\", \"B\", 16]]], \"expected\": [[[\"down\", \"A\", 10], [\"down\", \"B\", 11], [\"up\", \"A\", 11], [\"up\", \"B\", 11], [\"down\", \"A\", 13], [\"down\", \"B\", 14], [\"up\", \"A\", 14], [\"up\", \"B\", 14]]], \"passed\": false}, {\"check\": \"macro-play scenario 5\", \"actual\": [[[\"down\", \"A\", 10], [\"down\", \"A\", 11], [\"up\", \"A\", 13]]], \"expected\": [[[\"down\", \"A\", 10], [\"down\", \"A\", 11], [\"up\", \"A\", 11]]], \"passed\": false}, {\"check\": \"macro-play scenario 6\", \"actual\": [[[\"down\", \"A\", 10], [\"down\", \"B\", 11], [\"up\", \"A\", 12], [\"up\", \"B\", 14]]], \"expected\": [[[\"down\", \"A\", 10], [\"down\", \"B\", 11], [\"up\", \"A\", 12], [\"up\", \"B\", 12]]], \"passed\": false}, {\"check\": \"macro-play scenario 7\", \"actual\": [[[\"down\", \"A\", 10], [\"up\", \"A\", 13], [\"down\", \"A\", 15], [\"up\", \"A\", 18]]], \"expected\": [[[\"down\", \"A\", 10], [\"up\", \"A\", 13], [\"down\", \"A\", 15], [\"up\", \"A\", 18]]], \"passed\": true}, {\"check\": \"macro-play scenario 8\", \"actual\": [[]], \"expected\": [[]], \"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."}}