{"abstract":"The event trace violates the deadline rounding 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.","evaluation_group":"s3-keyboard-macro-play","failed_approach":"The partial repair changes this transition to round(offset*den/num)\n        if, which still violates the model contract on the explicit regression traces.","family":"s3-keyboard-interactions-macro-play-deadline-rounding","id":"FA-31616","implementations":{"attempt":{"sha256":"db905b89a976a89d24873a80dcc3fb265de3a50d5fe87e91a7f862410a0542af","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+round(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":"8a75c74e82e05c322af286120e7cf211dcbd6684baed06959ac6bf5c85741ddf","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-1)//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"},"fixed":{"sha256":"e98c652512720bf6ad76c0d28a67659954e8bf958fa9ff26aa3ec79247e9df5c","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"}},"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-rounding","generated_at":"2026-09-29T14:42:03.919205+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.","repair":"Use the contract transition `offset*den//num\n        if` at the deadline rounding fault site; preserve the other state transitions.","root_cause":"Stroke deadlines round upward rather than applying the contract floor.","sha256":"78ab3f78c04a2a88a85181d6719bbf5dfde4dbdeab827580979e15c353a5850a","title":"Keyboard macro deterministic playback scheduler: Stroke deadlines round upward rather than applying the contract floor · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":43.429,"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",12],["down","A",15],["up","A",17]]],"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",13],["down","A",16],["up","A",18]]],"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\", 12], [\"down\", \"A\", 15], [\"up\", \"A\", 17]]], \"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\", 13], [\"down\", \"A\", 16], [\"up\", \"A\", 18]]], \"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":41.345,"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",12],["down","A",15],["up","A",17]]],"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",14],["down","A",16],["up","A",19]]],"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\", 12], [\"down\", \"A\", 15], [\"up\", \"A\", 17]]], \"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\", 14], [\"down\", \"A\", 16], [\"up\", \"A\", 19]]], \"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"},"fixed":{"elapsed_ms":43.131,"exit_code":0,"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",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",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":true,"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\", 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\", 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\": true}\n"}},"verified":true,"visibility":"public"}