{"abstract":"The event trace violates the cycle origin 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 base=start+cycle*gap, which still violates the model contract on the explicit regression traces.","family":"s3-keyboard-interactions-macro-play-cycle-origin","id":"FA-31601","implementations":{"attempt":{"sha256":"968c014a8619bec8ac1b9d0877ee7efe4d7e99d05ecd98ec402c91883233347f","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*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":"57c1806c82edb85cc7592cb21969a69db95472fd4860fc706eb802937daf14e6","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\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"},"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-cycle-origin","generated_at":"2026-09-29T14:42:03.697276+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 `base=start+cycle*(duration+gap)` at the cycle origin fault site; preserve the other state transitions.","root_cause":"Cycle scheduling omits the inter-cycle gap or recorded duration.","sha256":"f1515dfab049ddc0b55b774249b56a3cabaf616424c408d43adef37b97fa2da4","title":"Keyboard macro deterministic playback scheduler: Cycle scheduling omits the inter-cycle gap or recorded duration · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":43.933,"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",14],["up","A",15]]],"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",12],["down","B",13],["up","A",13],["up","B",13]]],"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",12],["up","A",15]]],"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\", 11], [\"down\", \"A\", 14], [\"up\", \"A\", 15]]], \"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\", 12], [\"down\", \"B\", 13], [\"up\", \"A\", 13], [\"up\", \"B\", 13]]], \"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\", 12], [\"up\", \"A\", 15]]], \"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":44.497,"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",11],["up","A",12]]],"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",11],["down","B",12],["up","A",12],["up","B",12]]],"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",13],["up","A",16]]],"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\", 11], [\"down\", \"A\", 11], [\"up\", \"A\", 12]]], \"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\", 11], [\"down\", \"B\", 12], [\"up\", \"A\", 12], [\"up\", \"B\", 12]]], \"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\", 13], [\"up\", \"A\", 16]]], \"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":46.57,"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"}