{"abstract":"The event trace violates the deadline ratio 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 due=(base+offset)*den//num, which still violates the model contract on the explicit regression traces.","family":"s3-keyboard-interactions-macro-play-deadline-ratio","id":"FA-31611","implementations":{"attempt":{"sha256":"010973e3f37ff08034640dfe1b5ab2e78cc854625319dab9ecbc53b7a592929e","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])\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":"a74a7bff41180d324ac6da4319d5340c51c718104119ce48f337b9e871bcb1b7","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*num//den\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])\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-deadline-ratio","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":"Stroke speed scaling is inverted or scales the absolute start time.","sha256":"666d4ebb4ecdfd520ede00157e2d657311e6c87d8645d74e302c2910e0656224","title":"Keyboard macro deterministic playback scheduler: Stroke speed scaling is inverted or scales the absolute start 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":44.566,"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",5],["up","A",6],["down","A",7],["up","A",9]]],"check":"macro-play scenario 2","expected":[[["down","A",10],["up","A",11],["down","A",15],["up","A",16]]],"passed":false},{"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",14],["up","B",14]]],"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":true},{"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",7],["up","A",10],["down","A",10],["up","A",13]]],"check":"macro-play scenario 7","expected":[[["down","A",10],["up","A",13],["down","A",15],["up","A",18]]],"passed":false},{"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\", 5], [\"up\", \"A\", 6], [\"down\", \"A\", 7], [\"up\", \"A\", 9]]], \"expected\": [[[\"down\", \"A\", 10], [\"up\", \"A\", 11], [\"down\", \"A\", 15], [\"up\", \"A\", 16]]], \"passed\": false}, {\"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\", 14], [\"up\", \"B\", 14]]], \"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\": true}, {\"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\", 7], [\"up\", \"A\", 10], [\"down\", \"A\", 10], [\"up\", \"A\", 13]]], \"expected\": [[[\"down\", \"A\", 10], [\"up\", \"A\", 13], [\"down\", \"A\", 15], [\"up\", \"A\", 18]]], \"passed\": false}, {\"check\": \"macro-play scenario 8\", \"actual\": [[]], \"expected\": [[]], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":47.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",16],["down","A",15],["up","A",21]]],"check":"macro-play scenario 2","expected":[[["down","A",10],["up","A",11],["down","A",15],["up","A",16]]],"passed":false},{"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",14],["up","B",14]]],"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":true},{"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",11],["up","A",17],["down","A",16],["up","A",22]]],"check":"macro-play scenario 7","expected":[[["down","A",10],["up","A",13],["down","A",15],["up","A",18]]],"passed":false},{"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\", 16], [\"down\", \"A\", 15], [\"up\", \"A\", 21]]], \"expected\": [[[\"down\", \"A\", 10], [\"up\", \"A\", 11], [\"down\", \"A\", 15], [\"up\", \"A\", 16]]], \"passed\": false}, {\"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\", 14], [\"up\", \"B\", 14]]], \"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\": true}, {\"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\", 11], [\"up\", \"A\", 17], [\"down\", \"A\", 16], [\"up\", \"A\", 22]]], \"expected\": [[[\"down\", \"A\", 10], [\"up\", \"A\", 13], [\"down\", \"A\", 15], [\"up\", \"A\", 18]]], \"passed\": false}, {\"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."}}