{
  "window": {
    "title": "Roblox",
    "rect": [
      344,
      60,
      2520,
      1821
    ]
  },
  "execute_requested": true,
  "executed_batches": 13,
  "backend": "directinput",
  "naturalize": true,
  "heuristics": true,
  "allow_gemini_clicks": false,
  "roll_mode": "off",
  "camera_key_mode": "micro",
  "allow_escape_key": false,
  "modal_close_cooldown_s": 4.0,
  "strategy_planner": "gemini",
  "strategy_interval_s": 12.0,
  "flash_history_frames": 3,
  "strategy_history_frames": 4,
  "frame_sampler": true,
  "frame_sample_interval_s": 0.9,
  "movement_examples_count": 12,
  "movement_examples_path": "fixtures\\human_movement\\latest.json",
  "movement_chains_count": 6,
  "movement_chain_names": [
    "human_forward_left_jump_chain_zigzag_00",
    "human_forward_left_jump_chain_zigzag_01",
    "human_forward_right_jump_chain_zigzag_02",
    "human_back_out_right_jump_chain_zigzag_03",
    "human_back_out_right_zigzag_lateral_pulses_04",
    "human_back_out_left_zigzag_lateral_pulses_05"
  ],
  "strategy_state": {
    "current_goal": "Collect enough coins to unlock the Canyon area.",
    "subgoal": "Get unstuck from the tree and find more slimes to defeat.",
    "next_intent": "Back away from the tree trunk blocking the view and turn towards open ground.",
    "preferred_skill": "recover_if_stuck",
    "recovery_skill": "recover_if_stuck",
    "last_seen": [
      "Large tree trunk blocking the camera",
      "Canyon gate requiring 216M coins",
      "Current coin balance 30.538M"
    ],
    "inventory_notes": [
      "Autoroll is enabled"
    ],
    "recent_failures": [
      "Repeatedly stuck against geometry, triggering multiple watchdog recoveries."
    ],
    "avoid": [
      "Do not click Roll or Roll another Slime; autoroll is enabled.",
      "Do not walk forward into the tree trunk."
    ],
    "allowed_skills": [
      "walk_natural",
      "move_toward_visible_objective",
      "approach_visible_target",
      "explore_open_path",
      "jump_obstacle",
      "micro_scan",
      "recover_if_stuck"
    ],
    "stuck_counter": 4,
    "confidence": 0.9,
    "reasoning_summary": "The avatar is in an open area with slimes present; approaching and targeting them will yield coins needed for the Canyon gate.",
    "updated_at_batch": 8,
    "updated_by": "gemini-3-pro-preview"
  },
  "local_rules": {
    "roll_mode": "off",
    "ignore_roll_buttons": true,
    "camera_key_mode": "micro",
    "modal_close_cooldown_s": 4.0,
    "allow_gemini_clicks": false
  },
  "strategy_updates": [
    {
      "batch_index": 0,
      "screenshot": "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\frame_0000.png",
      "frame_history": [
        "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\frame_0000.png"
      ],
      "latency_s": 13.157000000002881,
      "offset_s": 14.59400000000096,
      "state": {
        "current_goal": "Collect enough coins to unlock the Canyon area.",
        "subgoal": "Explore the current area to gather coins and resources.",
        "next_intent": "Move around the open area to collect coins or interact with objects, as the Canyon gate requires 216M coins and we only have 21.7M.",
        "preferred_skill": "explore_open_path",
        "recovery_skill": "recover_if_stuck",
        "last_seen": [
          "Canyon gate requiring 216M coins",
          "Current coin balance 21.764M",
          "Various slimes/pets"
        ],
        "inventory_notes": [
          "Autoroll is enabled"
        ],
        "recent_failures": [],
        "avoid": [
          "Do not click Roll or Roll another Slime; autoroll is enabled in this test.",
          "Do not try to buy the Canyon gate yet, insufficient funds."
        ],
        "allowed_skills": [
          "walk_natural",
          "move_toward_visible_objective",
          "approach_visible_target",
          "explore_open_path",
          "jump_obstacle",
          "micro_scan",
          "recover_if_stuck"
        ],
        "stuck_counter": 0,
        "confidence": 0.8,
        "reasoning_summary": "The avatar is in an open area with a locked gate requiring more coins than currently held, so exploration for resources is needed.",
        "updated_at_batch": 0,
        "updated_by": "gemini-3-pro-preview"
      }
    },
    {
      "batch_index": 3,
      "screenshot": "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\frame_0003.png",
      "frame_history": [
        "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\sample_0007.png",
        "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\sample_0008.png",
        "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\sample_0009.png",
        "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\frame_0003.png"
      ],
      "latency_s": 20.17199999999866,
      "offset_s": 36.26599999999962,
      "state": {
        "current_goal": "Collect enough coins to unlock the Canyon area.",
        "subgoal": "Defeat slimes to gather coins and resources.",
        "next_intent": "Approach the targeted slime to defeat it and collect coins.",
        "preferred_skill": "approach_visible_target",
        "recovery_skill": "recover_if_stuck",
        "last_seen": [
          "Canyon gate requiring 216M coins",
          "Current coin balance 25.161M",
          "Targeted slime with health bar"
        ],
        "inventory_notes": [
          "Autoroll is enabled"
        ],
        "recent_failures": [],
        "avoid": [
          "Do not click Roll or Roll another Slime; autoroll is enabled in this test.",
          "Do not try to buy the Canyon gate yet, insufficient funds."
        ],
        "allowed_skills": [
          "walk_natural",
          "move_toward_visible_objective",
          "approach_visible_target",
          "explore_open_path",
          "jump_obstacle",
          "micro_scan",
          "recover_if_stuck"
        ],
        "stuck_counter": 0,
        "confidence": 0.9,
        "reasoning_summary": "The avatar is in an open area with slimes present; approaching and targeting them will yield coins needed for the Canyon gate.",
        "updated_at_batch": 3,
        "updated_by": "gemini-3-pro-preview"
      }
    },
    {
      "batch_index": 8,
      "screenshot": "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\frame_0008.png",
      "frame_history": [
        "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\sample_0022.png",
        "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\sample_0023.png",
        "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\sample_0024.png",
        "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\frame_0008.png"
      ],
      "latency_s": 16.625,
      "offset_s": 54.5,
      "state": {
        "current_goal": "Collect enough coins to unlock the Canyon area.",
        "subgoal": "Get unstuck from the tree and find more slimes to defeat.",
        "next_intent": "Back away from the tree trunk blocking the view and turn towards open ground.",
        "preferred_skill": "recover_if_stuck",
        "recovery_skill": "recover_if_stuck",
        "last_seen": [
          "Large tree trunk blocking the camera",
          "Canyon gate requiring 216M coins",
          "Current coin balance 30.538M"
        ],
        "inventory_notes": [
          "Autoroll is enabled"
        ],
        "recent_failures": [
          "Repeatedly stuck against geometry, triggering multiple watchdog recoveries."
        ],
        "avoid": [
          "Do not click Roll or Roll another Slime; autoroll is enabled.",
          "Do not walk forward into the tree trunk."
        ],
        "allowed_skills": [
          "walk_natural",
          "move_toward_visible_objective",
          "approach_visible_target",
          "explore_open_path",
          "jump_obstacle",
          "micro_scan",
          "recover_if_stuck"
        ],
        "stuck_counter": 4,
        "confidence": 0.9,
        "reasoning_summary": "The avatar is in an open area with slimes present; approaching and targeting them will yield coins needed for the Canyon gate.",
        "updated_at_batch": 8,
        "updated_by": "gemini-3-pro-preview"
      }
    }
  ],
  "strategy_errors": [],
  "strategy_pending": true,
  "click_to_focus": true,
  "countdown_s": 15.0,
  "duration_requested_s": 60.0,
  "observe_delay_s": 0.65,
  "roll_cooldown_s": 3.2,
  "stuck_watchdog": true,
  "stuck_repeated_move_batches": 3,
  "stuck_recovery_cooldown_s": 8.0,
  "frame_history": [
    {
      "batch_index": -1,
      "path": "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\sample_0026.png",
      "offset_s": 39.90599999999904
    },
    {
      "batch_index": -1,
      "path": "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\sample_0027.png",
      "offset_s": 41.29699999999866
    },
    {
      "batch_index": 9,
      "path": "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\frame_0009.png",
      "offset_s": 42.78099999999904
    },
    {
      "batch_index": -1,
      "path": "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\sample_0028.png",
      "offset_s": 42.78099999999904
    },
    {
      "batch_index": -1,
      "path": "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\sample_0029.png",
      "offset_s": 44.17199999999866
    },
    {
      "batch_index": -1,
      "path": "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\sample_0030.png",
      "offset_s": 45.54699999999866
    },
    {
      "batch_index": -1,
      "path": "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\sample_0031.png",
      "offset_s": 46.93699999999808
    },
    {
      "batch_index": 10,
      "path": "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\frame_0010.png",
      "offset_s": 47.54699999999866
    },
    {
      "batch_index": -1,
      "path": "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\sample_0032.png",
      "offset_s": 48.35900000000038
    },
    {
      "batch_index": -1,
      "path": "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\sample_0033.png",
      "offset_s": 49.70300000000134
    },
    {
      "batch_index": -1,
      "path": "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\sample_0034.png",
      "offset_s": 51.04699999999866
    },
    {
      "batch_index": 11,
      "path": "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\frame_0011.png",
      "offset_s": 51.06199999999808
    },
    {
      "batch_index": -1,
      "path": "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\sample_0035.png",
      "offset_s": 52.43699999999808
    },
    {
      "batch_index": -1,
      "path": "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\sample_0036.png",
      "offset_s": 53.81199999999808
    },
    {
      "batch_index": -1,
      "path": "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\sample_0037.png",
      "offset_s": 55.21900000000096
    },
    {
      "batch_index": 12,
      "path": "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\frame_0012.png",
      "offset_s": 56.0
    },
    {
      "batch_index": -1,
      "path": "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\sample_0038.png",
      "offset_s": 56.875
    },
    {
      "batch_index": -1,
      "path": "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\sample_0039.png",
      "offset_s": 58.32800000000134
    },
    {
      "batch_index": -1,
      "path": "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\sample_0040.png",
      "offset_s": 59.76599999999962
    },
    {
      "batch_index": -1,
      "path": "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\sample_0041.png",
      "offset_s": 61.21900000000096
    },
    {
      "batch_index": 13,
      "path": "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\frame_0013.png",
      "offset_s": 61.54699999999866
    },
    {
      "batch_index": -1,
      "path": "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\sample_0042.png",
      "offset_s": 62.67199999999866
    },
    {
      "batch_index": -1,
      "path": "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\sample_0043.png",
      "offset_s": 64.125
    },
    {
      "batch_index": -1,
      "path": "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\sample_0044.png",
      "offset_s": 65.45300000000134
    }
  ],
  "recording_duration_s": 66.28099999999904,
  "batches": [
    {
      "batch_index": 0,
      "screenshot": "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\frame_0000.png",
      "frame_history": [
        "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\frame_0000.png"
      ],
      "source": "gemini",
      "strategy": {
        "current_goal": "Play the current Roblox experience as well as possible from visible context.",
        "subgoal": "Orient to the current objective and make cautious progress.",
        "next_intent": "Ignore Roll prompts because autoroll is enabled; use visible terrain, doors, portals, and objective UI to make map progress.",
        "preferred_skill": "explore_open_path",
        "recovery_skill": "recover_if_stuck",
        "last_seen": [],
        "inventory_notes": [],
        "recent_failures": [],
        "avoid": [
          "Do not click Roll or Roll another Slime; autoroll is enabled in this test.",
          "Do not click Roll or Roll another Slime; autoroll is enabled."
        ],
        "allowed_skills": [
          "walk_natural",
          "move_toward_visible_objective",
          "approach_visible_target",
          "explore_open_path",
          "jump_obstacle",
          "micro_scan",
          "recover_if_stuck"
        ],
        "stuck_counter": 0,
        "confidence": 0.35,
        "local_rules": {
          "roll_mode": "off",
          "ignore_roll_buttons": true,
          "camera_key_mode": "micro",
          "modal_close_cooldown_s": 4.0,
          "allow_gemini_clicks": false
        }
      },
      "plan_latency_s": 3.2820000000028813,
      "execution_offset_s": 5.046999999998661,
      "execute_requested": true,
      "executed": true,
      "skip_reason": "",
      "batch": {
        "sequence_id": "skill_walk_natural",
        "ttl_ms": 3500,
        "interruptible": true,
        "actions": [
          {
            "type": "key_hold",
            "key": "a",
            "start_ms": 172,
            "duration_ms": 140
          },
          {
            "type": "key_hold",
            "key": "d",
            "start_ms": 312,
            "duration_ms": 188
          },
          {
            "type": "key_hold",
            "key": "a",
            "start_ms": 453,
            "duration_ms": 1031
          },
          {
            "type": "key_hold",
            "key": "w",
            "start_ms": 578,
            "duration_ms": 1109
          },
          {
            "type": "key_tap",
            "key": "space",
            "start_ms": 812,
            "duration_ms": 172
          },
          {
            "type": "key_hold",
            "key": "d",
            "start_ms": 1391,
            "duration_ms": 796
          },
          {
            "type": "key_hold",
            "key": "w",
            "start_ms": 2094,
            "duration_ms": 906
          },
          {
            "type": "key_hold",
            "key": "a",
            "start_ms": 2594,
            "duration_ms": 406
          }
        ],
        "skill_trace": [
          "walk_natural"
        ],
        "movement_chain_trace": [
          "human_forward_left_jump_chain_zigzag_00"
        ]
      },
      "events": [
        {
          "at_ms": 128,
          "order": 10,
          "op": "key_down",
          "source": 0,
          "key": "a"
        },
        {
          "at_ms": 282,
          "order": 10,
          "op": "key_down",
          "source": 1,
          "key": "d"
        },
        {
          "at_ms": 282,
          "order": 90,
          "op": "key_up",
          "source": 0,
          "key": "a"
        },
        {
          "at_ms": 419,
          "order": 10,
          "op": "key_down",
          "source": 2,
          "key": "a"
        },
        {
          "at_ms": 519,
          "order": 90,
          "op": "key_up",
          "source": 1,
          "key": "d"
        },
        {
          "at_ms": 619,
          "order": 10,
          "op": "key_down",
          "source": 3,
          "key": "w"
        },
        {
          "at_ms": 879,
          "order": 10,
          "op": "key_down",
          "source": 4,
          "key": "space"
        },
        {
          "at_ms": 989,
          "order": 90,
          "op": "key_up",
          "source": 4,
          "key": "space"
        },
        {
          "at_ms": 1422,
          "order": 10,
          "op": "key_down",
          "source": 5,
          "key": "d"
        },
        {
          "at_ms": 1522,
          "order": 90,
          "op": "key_up",
          "source": 2,
          "key": "a"
        },
        {
          "at_ms": 1634,
          "order": 90,
          "op": "key_up",
          "source": 3,
          "key": "w"
        },
        {
          "at_ms": 2027,
          "order": 10,
          "op": "key_down",
          "source": 6,
          "key": "w"
        },
        {
          "at_ms": 2140,
          "order": 90,
          "op": "key_up",
          "source": 5,
          "key": "d"
        },
        {
          "at_ms": 2631,
          "order": 10,
          "op": "key_down",
          "source": 7,
          "key": "a"
        },
        {
          "at_ms": 2948,
          "order": 90,
          "op": "key_up",
          "source": 6,
          "key": "w"
        },
        {
          "at_ms": 2948,
          "order": 90,
          "op": "key_up",
          "source": 7,
          "key": "a"
        }
      ],
      "absolute_events": [
        {
          "at_ms": 5175,
          "order": 10,
          "op": "key_down",
          "source": 0,
          "key": "a",
          "batch_index": 0
        },
        {
          "at_ms": 5329,
          "order": 10,
          "op": "key_down",
          "source": 1,
          "key": "d",
          "batch_index": 0
        },
        {
          "at_ms": 5329,
          "order": 90,
          "op": "key_up",
          "source": 0,
          "key": "a",
          "batch_index": 0
        },
        {
          "at_ms": 5466,
          "order": 10,
          "op": "key_down",
          "source": 2,
          "key": "a",
          "batch_index": 0
        },
        {
          "at_ms": 5566,
          "order": 90,
          "op": "key_up",
          "source": 1,
          "key": "d",
          "batch_index": 0
        },
        {
          "at_ms": 5666,
          "order": 10,
          "op": "key_down",
          "source": 3,
          "key": "w",
          "batch_index": 0
        },
        {
          "at_ms": 5926,
          "order": 10,
          "op": "key_down",
          "source": 4,
          "key": "space",
          "batch_index": 0
        },
        {
          "at_ms": 6036,
          "order": 90,
          "op": "key_up",
          "source": 4,
          "key": "space",
          "batch_index": 0
        },
        {
          "at_ms": 6469,
          "order": 10,
          "op": "key_down",
          "source": 5,
          "key": "d",
          "batch_index": 0
        },
        {
          "at_ms": 6569,
          "order": 90,
          "op": "key_up",
          "source": 2,
          "key": "a",
          "batch_index": 0
        },
        {
          "at_ms": 6681,
          "order": 90,
          "op": "key_up",
          "source": 3,
          "key": "w",
          "batch_index": 0
        },
        {
          "at_ms": 7074,
          "order": 10,
          "op": "key_down",
          "source": 6,
          "key": "w",
          "batch_index": 0
        },
        {
          "at_ms": 7187,
          "order": 90,
          "op": "key_up",
          "source": 5,
          "key": "d",
          "batch_index": 0
        },
        {
          "at_ms": 7678,
          "order": 10,
          "op": "key_down",
          "source": 7,
          "key": "a",
          "batch_index": 0
        },
        {
          "at_ms": 7995,
          "order": 90,
          "op": "key_up",
          "source": 6,
          "key": "w",
          "batch_index": 0
        },
        {
          "at_ms": 7995,
          "order": 90,
          "op": "key_up",
          "source": 7,
          "key": "a",
          "batch_index": 0
        }
      ],
      "recovery_context": {
        "force": false,
        "level": 0,
        "direction": "right",
        "pressure": 0,
        "recent_recoveries": 0,
        "last_recovery_level": 0,
        "handoff": false,
        "reason": ""
      }
    },
    {
      "batch_index": 1,
      "screenshot": "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\frame_0001.png",
      "frame_history": [
        "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\sample_0001.png",
        "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\sample_0002.png",
        "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\frame_0001.png"
      ],
      "source": "gemini",
      "strategy": {
        "current_goal": "Play the current Roblox experience as well as possible from visible context.",
        "subgoal": "Orient to the current objective and make cautious progress.",
        "next_intent": "Ignore Roll prompts because autoroll is enabled; use visible terrain, doors, portals, and objective UI to make map progress.",
        "preferred_skill": "explore_open_path",
        "recovery_skill": "recover_if_stuck",
        "last_seen": [],
        "inventory_notes": [],
        "recent_failures": [],
        "avoid": [
          "Do not click Roll or Roll another Slime; autoroll is enabled in this test.",
          "Do not click Roll or Roll another Slime; autoroll is enabled."
        ],
        "allowed_skills": [
          "walk_natural",
          "move_toward_visible_objective",
          "approach_visible_target",
          "explore_open_path",
          "jump_obstacle",
          "micro_scan",
          "recover_if_stuck"
        ],
        "stuck_counter": 0,
        "confidence": 0.35,
        "local_rules": {
          "roll_mode": "off",
          "ignore_roll_buttons": true,
          "camera_key_mode": "micro",
          "modal_close_cooldown_s": 4.0,
          "allow_gemini_clicks": false,
          "recovery_ladder": {
            "force": false,
            "level": 0,
            "direction": "right",
            "pressure": 1,
            "recent_recoveries": 0,
            "last_recovery_level": 0,
            "handoff": false,
            "reason": ""
          }
        }
      },
      "plan_latency_s": 3.5,
      "execution_offset_s": 10.0,
      "execute_requested": true,
      "executed": true,
      "skip_reason": "",
      "batch": {
        "sequence_id": "skill_move_toward_visible_objective",
        "ttl_ms": 3500,
        "interruptible": true,
        "actions": [
          {
            "type": "key_hold",
            "key": "a",
            "start_ms": 172,
            "duration_ms": 140
          },
          {
            "type": "key_hold",
            "key": "d",
            "start_ms": 312,
            "duration_ms": 188
          },
          {
            "type": "key_hold",
            "key": "a",
            "start_ms": 453,
            "duration_ms": 1031
          },
          {
            "type": "key_hold",
            "key": "w",
            "start_ms": 578,
            "duration_ms": 1109
          },
          {
            "type": "key_tap",
            "key": "space",
            "start_ms": 812,
            "duration_ms": 172
          },
          {
            "type": "key_hold",
            "key": "d",
            "start_ms": 1391,
            "duration_ms": 796
          },
          {
            "type": "key_hold",
            "key": "w",
            "start_ms": 2094,
            "duration_ms": 906
          },
          {
            "type": "key_hold",
            "key": "a",
            "start_ms": 2594,
            "duration_ms": 406
          }
        ],
        "skill_trace": [
          "move_toward_visible_objective"
        ],
        "movement_chain_trace": [
          "human_forward_left_jump_chain_zigzag_00"
        ]
      },
      "events": [
        {
          "at_ms": 229,
          "order": 10,
          "op": "key_down",
          "source": 0,
          "key": "a"
        },
        {
          "at_ms": 353,
          "order": 10,
          "op": "key_down",
          "source": 1,
          "key": "d"
        },
        {
          "at_ms": 353,
          "order": 90,
          "op": "key_up",
          "source": 0,
          "key": "a"
        },
        {
          "at_ms": 482,
          "order": 10,
          "op": "key_down",
          "source": 2,
          "key": "a"
        },
        {
          "at_ms": 582,
          "order": 90,
          "op": "key_up",
          "source": 1,
          "key": "d"
        },
        {
          "at_ms": 682,
          "order": 10,
          "op": "key_down",
          "source": 3,
          "key": "w"
        },
        {
          "at_ms": 833,
          "order": 10,
          "op": "key_down",
          "source": 4,
          "key": "space"
        },
        {
          "at_ms": 996,
          "order": 90,
          "op": "key_up",
          "source": 4,
          "key": "space"
        },
        {
          "at_ms": 1328,
          "order": 10,
          "op": "key_down",
          "source": 5,
          "key": "d"
        },
        {
          "at_ms": 1440,
          "order": 90,
          "op": "key_up",
          "source": 2,
          "key": "a"
        },
        {
          "at_ms": 1710,
          "order": 90,
          "op": "key_up",
          "source": 3,
          "key": "w"
        },
        {
          "at_ms": 2133,
          "order": 10,
          "op": "key_down",
          "source": 6,
          "key": "w"
        },
        {
          "at_ms": 2233,
          "order": 90,
          "op": "key_up",
          "source": 5,
          "key": "d"
        },
        {
          "at_ms": 2564,
          "order": 10,
          "op": "key_down",
          "source": 7,
          "key": "a"
        },
        {
          "at_ms": 2964,
          "order": 90,
          "op": "key_up",
          "source": 6,
          "key": "w"
        },
        {
          "at_ms": 2964,
          "order": 90,
          "op": "key_up",
          "source": 7,
          "key": "a"
        }
      ],
      "absolute_events": [
        {
          "at_ms": 10229,
          "order": 10,
          "op": "key_down",
          "source": 0,
          "key": "a",
          "batch_index": 1
        },
        {
          "at_ms": 10353,
          "order": 10,
          "op": "key_down",
          "source": 1,
          "key": "d",
          "batch_index": 1
        },
        {
          "at_ms": 10353,
          "order": 90,
          "op": "key_up",
          "source": 0,
          "key": "a",
          "batch_index": 1
        },
        {
          "at_ms": 10482,
          "order": 10,
          "op": "key_down",
          "source": 2,
          "key": "a",
          "batch_index": 1
        },
        {
          "at_ms": 10582,
          "order": 90,
          "op": "key_up",
          "source": 1,
          "key": "d",
          "batch_index": 1
        },
        {
          "at_ms": 10682,
          "order": 10,
          "op": "key_down",
          "source": 3,
          "key": "w",
          "batch_index": 1
        },
        {
          "at_ms": 10833,
          "order": 10,
          "op": "key_down",
          "source": 4,
          "key": "space",
          "batch_index": 1
        },
        {
          "at_ms": 10996,
          "order": 90,
          "op": "key_up",
          "source": 4,
          "key": "space",
          "batch_index": 1
        },
        {
          "at_ms": 11328,
          "order": 10,
          "op": "key_down",
          "source": 5,
          "key": "d",
          "batch_index": 1
        },
        {
          "at_ms": 11440,
          "order": 90,
          "op": "key_up",
          "source": 2,
          "key": "a",
          "batch_index": 1
        },
        {
          "at_ms": 11710,
          "order": 90,
          "op": "key_up",
          "source": 3,
          "key": "w",
          "batch_index": 1
        },
        {
          "at_ms": 12133,
          "order": 10,
          "op": "key_down",
          "source": 6,
          "key": "w",
          "batch_index": 1
        },
        {
          "at_ms": 12233,
          "order": 90,
          "op": "key_up",
          "source": 5,
          "key": "d",
          "batch_index": 1
        },
        {
          "at_ms": 12564,
          "order": 10,
          "op": "key_down",
          "source": 7,
          "key": "a",
          "batch_index": 1
        },
        {
          "at_ms": 12964,
          "order": 90,
          "op": "key_up",
          "source": 6,
          "key": "w",
          "batch_index": 1
        },
        {
          "at_ms": 12964,
          "order": 90,
          "op": "key_up",
          "source": 7,
          "key": "a",
          "batch_index": 1
        }
      ],
      "recovery_context": {
        "force": false,
        "level": 0,
        "direction": "right",
        "pressure": 1,
        "recent_recoveries": 0,
        "last_recovery_level": 0,
        "handoff": false,
        "reason": ""
      }
    },
    {
      "batch_index": 2,
      "screenshot": "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\frame_0002.png",
      "frame_history": [
        "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\sample_0005.png",
        "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\sample_0006.png",
        "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\frame_0002.png"
      ],
      "source": "gemini",
      "strategy": {
        "current_goal": "Play the current Roblox experience as well as possible from visible context.",
        "subgoal": "Orient to the current objective and make cautious progress.",
        "next_intent": "Ignore Roll prompts because autoroll is enabled; use visible terrain, doors, portals, and objective UI to make map progress.",
        "preferred_skill": "explore_open_path",
        "recovery_skill": "recover_if_stuck",
        "last_seen": [],
        "inventory_notes": [],
        "recent_failures": [],
        "avoid": [
          "Do not click Roll or Roll another Slime; autoroll is enabled in this test.",
          "Do not click Roll or Roll another Slime; autoroll is enabled."
        ],
        "allowed_skills": [
          "walk_natural",
          "move_toward_visible_objective",
          "approach_visible_target",
          "explore_open_path",
          "jump_obstacle",
          "micro_scan",
          "recover_if_stuck"
        ],
        "stuck_counter": 0,
        "confidence": 0.35,
        "local_rules": {
          "roll_mode": "off",
          "ignore_roll_buttons": true,
          "camera_key_mode": "micro",
          "modal_close_cooldown_s": 4.0,
          "allow_gemini_clicks": false,
          "recovery_ladder": {
            "force": false,
            "level": 0,
            "direction": "right",
            "pressure": 2,
            "recent_recoveries": 0,
            "last_recovery_level": 0,
            "handoff": false,
            "reason": ""
          }
        }
      },
      "plan_latency_s": 3.438000000001921,
      "execution_offset_s": 15.078000000001339,
      "execute_requested": true,
      "executed": true,
      "skip_reason": "",
      "batch": {
        "sequence_id": "skill_walk_natural",
        "ttl_ms": 4000,
        "interruptible": true,
        "actions": [
          {
            "type": "key_hold",
            "key": "w",
            "start_ms": 0,
            "duration_ms": 531
          },
          {
            "type": "key_hold",
            "key": "a",
            "start_ms": 94,
            "duration_ms": 1156
          },
          {
            "type": "key_hold",
            "key": "d",
            "start_ms": 1344,
            "duration_ms": 547
          },
          {
            "type": "key_hold",
            "key": "a",
            "start_ms": 1922,
            "duration_ms": 515
          },
          {
            "type": "key_hold",
            "key": "w",
            "start_ms": 2359,
            "duration_ms": 641
          },
          {
            "type": "key_hold",
            "key": "d",
            "start_ms": 2562,
            "duration_ms": 438
          },
          {
            "type": "key_tap",
            "key": "space",
            "start_ms": 2875,
            "duration_ms": 125
          }
        ],
        "skill_trace": [
          "walk_natural"
        ],
        "movement_chain_trace": [
          "human_forward_left_jump_chain_zigzag_01"
        ]
      },
      "events": [
        {
          "at_ms": 0,
          "order": 10,
          "op": "key_down",
          "source": 0,
          "key": "w"
        },
        {
          "at_ms": 138,
          "order": 10,
          "op": "key_down",
          "source": 1,
          "key": "a"
        },
        {
          "at_ms": 489,
          "order": 90,
          "op": "key_up",
          "source": 0,
          "key": "w"
        },
        {
          "at_ms": 1208,
          "order": 90,
          "op": "key_up",
          "source": 1,
          "key": "a"
        },
        {
          "at_ms": 1357,
          "order": 10,
          "op": "key_down",
          "source": 2,
          "key": "d"
        },
        {
          "at_ms": 1871,
          "order": 90,
          "op": "key_up",
          "source": 2,
          "key": "d"
        },
        {
          "at_ms": 1971,
          "order": 10,
          "op": "key_down",
          "source": 3,
          "key": "a"
        },
        {
          "at_ms": 2408,
          "order": 10,
          "op": "key_down",
          "source": 4,
          "key": "w"
        },
        {
          "at_ms": 2508,
          "order": 90,
          "op": "key_up",
          "source": 3,
          "key": "a"
        },
        {
          "at_ms": 2608,
          "order": 10,
          "op": "key_down",
          "source": 5,
          "key": "d"
        },
        {
          "at_ms": 2848,
          "order": 10,
          "op": "key_down",
          "source": 6,
          "key": "space"
        },
        {
          "at_ms": 2956,
          "order": 90,
          "op": "key_up",
          "source": 4,
          "key": "w"
        },
        {
          "at_ms": 2956,
          "order": 90,
          "op": "key_up",
          "source": 5,
          "key": "d"
        },
        {
          "at_ms": 2956,
          "order": 90,
          "op": "key_up",
          "source": 6,
          "key": "space"
        }
      ],
      "absolute_events": [
        {
          "at_ms": 15078,
          "order": 10,
          "op": "key_down",
          "source": 0,
          "key": "w",
          "batch_index": 2
        },
        {
          "at_ms": 15216,
          "order": 10,
          "op": "key_down",
          "source": 1,
          "key": "a",
          "batch_index": 2
        },
        {
          "at_ms": 15567,
          "order": 90,
          "op": "key_up",
          "source": 0,
          "key": "w",
          "batch_index": 2
        },
        {
          "at_ms": 16286,
          "order": 90,
          "op": "key_up",
          "source": 1,
          "key": "a",
          "batch_index": 2
        },
        {
          "at_ms": 16435,
          "order": 10,
          "op": "key_down",
          "source": 2,
          "key": "d",
          "batch_index": 2
        },
        {
          "at_ms": 16949,
          "order": 90,
          "op": "key_up",
          "source": 2,
          "key": "d",
          "batch_index": 2
        },
        {
          "at_ms": 17049,
          "order": 10,
          "op": "key_down",
          "source": 3,
          "key": "a",
          "batch_index": 2
        },
        {
          "at_ms": 17486,
          "order": 10,
          "op": "key_down",
          "source": 4,
          "key": "w",
          "batch_index": 2
        },
        {
          "at_ms": 17586,
          "order": 90,
          "op": "key_up",
          "source": 3,
          "key": "a",
          "batch_index": 2
        },
        {
          "at_ms": 17686,
          "order": 10,
          "op": "key_down",
          "source": 5,
          "key": "d",
          "batch_index": 2
        },
        {
          "at_ms": 17926,
          "order": 10,
          "op": "key_down",
          "source": 6,
          "key": "space",
          "batch_index": 2
        },
        {
          "at_ms": 18034,
          "order": 90,
          "op": "key_up",
          "source": 4,
          "key": "w",
          "batch_index": 2
        },
        {
          "at_ms": 18034,
          "order": 90,
          "op": "key_up",
          "source": 5,
          "key": "d",
          "batch_index": 2
        },
        {
          "at_ms": 18034,
          "order": 90,
          "op": "key_up",
          "source": 6,
          "key": "space",
          "batch_index": 2
        }
      ],
      "recovery_context": {
        "force": false,
        "level": 0,
        "direction": "right",
        "pressure": 2,
        "recent_recoveries": 0,
        "last_recovery_level": 0,
        "handoff": false,
        "reason": ""
      }
    },
    {
      "batch_index": 3,
      "screenshot": "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\frame_0003.png",
      "frame_history": [
        "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\sample_0008.png",
        "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\sample_0009.png",
        "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\frame_0003.png"
      ],
      "source": "watchdog_recovery_l0",
      "strategy": {
        "current_goal": "Collect enough coins to unlock the Canyon area.",
        "subgoal": "Explore the current area to gather coins and resources.",
        "next_intent": "Move around the open area to collect coins or interact with objects, as the Canyon gate requires 216M coins and we only have 21.7M.",
        "preferred_skill": "explore_open_path",
        "recovery_skill": "recover_if_stuck",
        "last_seen": [
          "Canyon gate requiring 216M coins",
          "Current coin balance 21.764M",
          "Various slimes/pets"
        ],
        "inventory_notes": [
          "Autoroll is enabled"
        ],
        "recent_failures": [],
        "avoid": [
          "Do not click Roll or Roll another Slime; autoroll is enabled in this test.",
          "Do not try to buy the Canyon gate yet, insufficient funds.",
          "Do not click Roll or Roll another Slime; autoroll is enabled."
        ],
        "allowed_skills": [
          "walk_natural",
          "move_toward_visible_objective",
          "approach_visible_target",
          "explore_open_path",
          "jump_obstacle",
          "micro_scan",
          "recover_if_stuck"
        ],
        "stuck_counter": 0,
        "confidence": 0.8,
        "local_rules": {
          "roll_mode": "off",
          "ignore_roll_buttons": true,
          "camera_key_mode": "micro",
          "modal_close_cooldown_s": 4.0,
          "allow_gemini_clicks": false,
          "recovery_ladder": {
            "force": true,
            "level": 0,
            "direction": "right",
            "pressure": 3,
            "recent_recoveries": 0,
            "last_recovery_level": 0,
            "handoff": false,
            "reason": "repeated forward movement without enough reset; start recovery ladder"
          }
        }
      },
      "plan_latency_s": 0.5309999999990396,
      "execution_offset_s": 18.375,
      "execute_requested": true,
      "executed": true,
      "skip_reason": "",
      "batch": {
        "sequence_id": "skill_recover_if_stuck",
        "ttl_ms": 3800,
        "interruptible": true,
        "actions": [
          {
            "type": "key_hold",
            "key": "s",
            "start_ms": 0,
            "duration_ms": 1180
          },
          {
            "type": "key_hold",
            "key": "d",
            "start_ms": 120,
            "duration_ms": 520
          },
          {
            "type": "key_hold",
            "key": "right",
            "start_ms": 420,
            "duration_ms": 2000
          },
          {
            "type": "key_hold",
            "key": "a",
            "start_ms": 700,
            "duration_ms": 480
          },
          {
            "type": "key_hold",
            "key": "d",
            "start_ms": 1260,
            "duration_ms": 780
          },
          {
            "type": "key_hold",
            "key": "w",
            "start_ms": 1560,
            "duration_ms": 1900
          },
          {
            "type": "key_tap",
            "key": "space",
            "start_ms": 2040,
            "duration_ms": 140
          }
        ],
        "skill_trace": [
          "recover_if_stuck"
        ],
        "recovery_level": 0,
        "recovery_direction": "right",
        "recovery_reason": "repeated forward movement without enough reset; start recovery ladder"
      },
      "events": [
        {
          "at_ms": 0,
          "order": 10,
          "op": "key_down",
          "source": 0,
          "key": "s"
        },
        {
          "at_ms": 139,
          "order": 10,
          "op": "key_down",
          "source": 1,
          "key": "d"
        },
        {
          "at_ms": 381,
          "order": 10,
          "op": "key_down",
          "source": 2,
          "key": "right"
        },
        {
          "at_ms": 616,
          "order": 90,
          "op": "key_up",
          "source": 1,
          "key": "d"
        },
        {
          "at_ms": 716,
          "order": 10,
          "op": "key_down",
          "source": 3,
          "key": "a"
        },
        {
          "at_ms": 1118,
          "order": 90,
          "op": "key_up",
          "source": 0,
          "key": "s"
        },
        {
          "at_ms": 1118,
          "order": 90,
          "op": "key_up",
          "source": 3,
          "key": "a"
        },
        {
          "at_ms": 1228,
          "order": 10,
          "op": "key_down",
          "source": 4,
          "key": "d"
        },
        {
          "at_ms": 1552,
          "order": 10,
          "op": "key_down",
          "source": 5,
          "key": "w"
        },
        {
          "at_ms": 2041,
          "order": 10,
          "op": "key_down",
          "source": 6,
          "key": "space"
        },
        {
          "at_ms": 2041,
          "order": 90,
          "op": "key_up",
          "source": 4,
          "key": "d"
        },
        {
          "at_ms": 2163,
          "order": 90,
          "op": "key_up",
          "source": 6,
          "key": "space"
        },
        {
          "at_ms": 2351,
          "order": 90,
          "op": "key_up",
          "source": 2,
          "key": "right"
        },
        {
          "at_ms": 3516,
          "order": 90,
          "op": "key_up",
          "source": 5,
          "key": "w"
        }
      ],
      "absolute_events": [
        {
          "at_ms": 18375,
          "order": 10,
          "op": "key_down",
          "source": 0,
          "key": "s",
          "batch_index": 3
        },
        {
          "at_ms": 18514,
          "order": 10,
          "op": "key_down",
          "source": 1,
          "key": "d",
          "batch_index": 3
        },
        {
          "at_ms": 18756,
          "order": 10,
          "op": "key_down",
          "source": 2,
          "key": "right",
          "batch_index": 3
        },
        {
          "at_ms": 18991,
          "order": 90,
          "op": "key_up",
          "source": 1,
          "key": "d",
          "batch_index": 3
        },
        {
          "at_ms": 19091,
          "order": 10,
          "op": "key_down",
          "source": 3,
          "key": "a",
          "batch_index": 3
        },
        {
          "at_ms": 19493,
          "order": 90,
          "op": "key_up",
          "source": 0,
          "key": "s",
          "batch_index": 3
        },
        {
          "at_ms": 19493,
          "order": 90,
          "op": "key_up",
          "source": 3,
          "key": "a",
          "batch_index": 3
        },
        {
          "at_ms": 19603,
          "order": 10,
          "op": "key_down",
          "source": 4,
          "key": "d",
          "batch_index": 3
        },
        {
          "at_ms": 19927,
          "order": 10,
          "op": "key_down",
          "source": 5,
          "key": "w",
          "batch_index": 3
        },
        {
          "at_ms": 20416,
          "order": 10,
          "op": "key_down",
          "source": 6,
          "key": "space",
          "batch_index": 3
        },
        {
          "at_ms": 20416,
          "order": 90,
          "op": "key_up",
          "source": 4,
          "key": "d",
          "batch_index": 3
        },
        {
          "at_ms": 20538,
          "order": 90,
          "op": "key_up",
          "source": 6,
          "key": "space",
          "batch_index": 3
        },
        {
          "at_ms": 20726,
          "order": 90,
          "op": "key_up",
          "source": 2,
          "key": "right",
          "batch_index": 3
        },
        {
          "at_ms": 21891,
          "order": 90,
          "op": "key_up",
          "source": 5,
          "key": "w",
          "batch_index": 3
        }
      ],
      "recovery_context": {
        "force": true,
        "level": 0,
        "direction": "right",
        "pressure": 3,
        "recent_recoveries": 0,
        "last_recovery_level": 0,
        "handoff": false,
        "reason": "repeated forward movement without enough reset; start recovery ladder"
      }
    },
    {
      "batch_index": 4,
      "screenshot": "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\frame_0004.png",
      "frame_history": [
        "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\sample_0010.png",
        "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\sample_0011.png",
        "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\frame_0004.png"
      ],
      "source": "gemini",
      "strategy": {
        "current_goal": "Collect enough coins to unlock the Canyon area.",
        "subgoal": "Explore the current area to gather coins and resources.",
        "next_intent": "Move around the open area to collect coins or interact with objects, as the Canyon gate requires 216M coins and we only have 21.7M.",
        "preferred_skill": "explore_open_path",
        "recovery_skill": "recover_if_stuck",
        "last_seen": [
          "Canyon gate requiring 216M coins",
          "Current coin balance 21.764M",
          "Various slimes/pets"
        ],
        "inventory_notes": [
          "Autoroll is enabled"
        ],
        "recent_failures": [],
        "avoid": [
          "Do not click Roll or Roll another Slime; autoroll is enabled in this test.",
          "Do not try to buy the Canyon gate yet, insufficient funds.",
          "Do not click Roll or Roll another Slime; autoroll is enabled."
        ],
        "allowed_skills": [
          "walk_natural",
          "move_toward_visible_objective",
          "approach_visible_target",
          "explore_open_path",
          "jump_obstacle",
          "micro_scan",
          "recover_if_stuck"
        ],
        "stuck_counter": 0,
        "confidence": 0.8,
        "local_rules": {
          "roll_mode": "off",
          "ignore_roll_buttons": true,
          "camera_key_mode": "micro",
          "modal_close_cooldown_s": 4.0,
          "allow_gemini_clicks": false,
          "recovery_ladder": {
            "force": true,
            "level": 1,
            "direction": "left",
            "pressure": 4,
            "recent_recoveries": 1,
            "last_recovery_level": 0,
            "handoff": false,
            "reason": "recent recovery did not restore progress; use longer opposite-side escape"
          }
        }
      },
      "plan_latency_s": 3.438000000001921,
      "execution_offset_s": 23.43699999999808,
      "execute_requested": true,
      "executed": true,
      "skip_reason": "",
      "batch": {
        "sequence_id": "skill_explore_open_path",
        "ttl_ms": 3500,
        "interruptible": true,
        "actions": [
          {
            "type": "key_hold",
            "key": "w",
            "start_ms": 0,
            "duration_ms": 547
          },
          {
            "type": "key_hold",
            "key": "d",
            "start_ms": 62,
            "duration_ms": 954
          },
          {
            "type": "key_tap",
            "key": "space",
            "start_ms": 375,
            "duration_ms": 187
          },
          {
            "type": "key_tap",
            "key": "space",
            "start_ms": 1109,
            "duration_ms": 188
          },
          {
            "type": "key_hold",
            "key": "a",
            "start_ms": 1281,
            "duration_ms": 1047
          },
          {
            "type": "key_tap",
            "key": "space",
            "start_ms": 1797,
            "duration_ms": 172
          },
          {
            "type": "key_hold",
            "key": "w",
            "start_ms": 2078,
            "duration_ms": 922
          },
          {
            "type": "key_tap",
            "key": "space",
            "start_ms": 2500,
            "duration_ms": 156
          },
          {
            "type": "key_hold",
            "key": "d",
            "start_ms": 2625,
            "duration_ms": 375
          }
        ],
        "skill_trace": [
          "explore_open_path"
        ],
        "movement_chain_trace": [
          "human_forward_right_jump_chain_zigzag_02"
        ]
      },
      "events": [
        {
          "at_ms": 0,
          "order": 10,
          "op": "key_down",
          "source": 0,
          "key": "w"
        },
        {
          "at_ms": 100,
          "order": 10,
          "op": "key_down",
          "source": 1,
          "key": "d"
        },
        {
          "at_ms": 311,
          "order": 10,
          "op": "key_down",
          "source": 2,
          "key": "space"
        },
        {
          "at_ms": 512,
          "order": 90,
          "op": "key_up",
          "source": 0,
          "key": "w"
        },
        {
          "at_ms": 612,
          "order": 90,
          "op": "key_up",
          "source": 2,
          "key": "space"
        },
        {
          "at_ms": 1063,
          "order": 90,
          "op": "key_up",
          "source": 1,
          "key": "d"
        },
        {
          "at_ms": 1163,
          "order": 10,
          "op": "key_down",
          "source": 3,
          "key": "space"
        },
        {
          "at_ms": 1263,
          "order": 10,
          "op": "key_down",
          "source": 4,
          "key": "a"
        },
        {
          "at_ms": 1363,
          "order": 90,
          "op": "key_up",
          "source": 3,
          "key": "space"
        },
        {
          "at_ms": 1746,
          "order": 10,
          "op": "key_down",
          "source": 5,
          "key": "space"
        },
        {
          "at_ms": 1938,
          "order": 90,
          "op": "key_up",
          "source": 5,
          "key": "space"
        },
        {
          "at_ms": 2074,
          "order": 10,
          "op": "key_down",
          "source": 6,
          "key": "w"
        },
        {
          "at_ms": 2297,
          "order": 90,
          "op": "key_up",
          "source": 4,
          "key": "a"
        },
        {
          "at_ms": 2473,
          "order": 10,
          "op": "key_down",
          "source": 7,
          "key": "space"
        },
        {
          "at_ms": 2613,
          "order": 10,
          "op": "key_down",
          "source": 8,
          "key": "d"
        },
        {
          "at_ms": 2713,
          "order": 90,
          "op": "key_up",
          "source": 7,
          "key": "space"
        },
        {
          "at_ms": 2930,
          "order": 90,
          "op": "key_up",
          "source": 6,
          "key": "w"
        },
        {
          "at_ms": 2930,
          "order": 90,
          "op": "key_up",
          "source": 8,
          "key": "d"
        }
      ],
      "absolute_events": [
        {
          "at_ms": 23437,
          "order": 10,
          "op": "key_down",
          "source": 0,
          "key": "w",
          "batch_index": 4
        },
        {
          "at_ms": 23537,
          "order": 10,
          "op": "key_down",
          "source": 1,
          "key": "d",
          "batch_index": 4
        },
        {
          "at_ms": 23748,
          "order": 10,
          "op": "key_down",
          "source": 2,
          "key": "space",
          "batch_index": 4
        },
        {
          "at_ms": 23949,
          "order": 90,
          "op": "key_up",
          "source": 0,
          "key": "w",
          "batch_index": 4
        },
        {
          "at_ms": 24049,
          "order": 90,
          "op": "key_up",
          "source": 2,
          "key": "space",
          "batch_index": 4
        },
        {
          "at_ms": 24500,
          "order": 90,
          "op": "key_up",
          "source": 1,
          "key": "d",
          "batch_index": 4
        },
        {
          "at_ms": 24600,
          "order": 10,
          "op": "key_down",
          "source": 3,
          "key": "space",
          "batch_index": 4
        },
        {
          "at_ms": 24700,
          "order": 10,
          "op": "key_down",
          "source": 4,
          "key": "a",
          "batch_index": 4
        },
        {
          "at_ms": 24800,
          "order": 90,
          "op": "key_up",
          "source": 3,
          "key": "space",
          "batch_index": 4
        },
        {
          "at_ms": 25183,
          "order": 10,
          "op": "key_down",
          "source": 5,
          "key": "space",
          "batch_index": 4
        },
        {
          "at_ms": 25375,
          "order": 90,
          "op": "key_up",
          "source": 5,
          "key": "space",
          "batch_index": 4
        },
        {
          "at_ms": 25511,
          "order": 10,
          "op": "key_down",
          "source": 6,
          "key": "w",
          "batch_index": 4
        },
        {
          "at_ms": 25734,
          "order": 90,
          "op": "key_up",
          "source": 4,
          "key": "a",
          "batch_index": 4
        },
        {
          "at_ms": 25910,
          "order": 10,
          "op": "key_down",
          "source": 7,
          "key": "space",
          "batch_index": 4
        },
        {
          "at_ms": 26050,
          "order": 10,
          "op": "key_down",
          "source": 8,
          "key": "d",
          "batch_index": 4
        },
        {
          "at_ms": 26150,
          "order": 90,
          "op": "key_up",
          "source": 7,
          "key": "space",
          "batch_index": 4
        },
        {
          "at_ms": 26367,
          "order": 90,
          "op": "key_up",
          "source": 6,
          "key": "w",
          "batch_index": 4
        },
        {
          "at_ms": 26367,
          "order": 90,
          "op": "key_up",
          "source": 8,
          "key": "d",
          "batch_index": 4
        }
      ],
      "recovery_context": {
        "force": true,
        "level": 1,
        "direction": "left",
        "pressure": 4,
        "recent_recoveries": 1,
        "last_recovery_level": 0,
        "handoff": false,
        "reason": "recent recovery did not restore progress; use longer opposite-side escape"
      }
    },
    {
      "batch_index": 5,
      "screenshot": "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\frame_0005.png",
      "frame_history": [
        "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\sample_0014.png",
        "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\sample_0015.png",
        "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\frame_0005.png"
      ],
      "source": "gemini",
      "strategy": {
        "current_goal": "Collect enough coins to unlock the Canyon area.",
        "subgoal": "Explore the current area to gather coins and resources.",
        "next_intent": "Move around the open area to collect coins or interact with objects, as the Canyon gate requires 216M coins and we only have 21.7M.",
        "preferred_skill": "explore_open_path",
        "recovery_skill": "recover_if_stuck",
        "last_seen": [
          "Canyon gate requiring 216M coins",
          "Current coin balance 21.764M",
          "Various slimes/pets"
        ],
        "inventory_notes": [
          "Autoroll is enabled"
        ],
        "recent_failures": [],
        "avoid": [
          "Do not click Roll or Roll another Slime; autoroll is enabled in this test.",
          "Do not try to buy the Canyon gate yet, insufficient funds.",
          "Do not click Roll or Roll another Slime; autoroll is enabled."
        ],
        "allowed_skills": [
          "walk_natural",
          "move_toward_visible_objective",
          "approach_visible_target",
          "explore_open_path",
          "jump_obstacle",
          "micro_scan",
          "recover_if_stuck"
        ],
        "stuck_counter": 0,
        "confidence": 0.8,
        "local_rules": {
          "roll_mode": "off",
          "ignore_roll_buttons": true,
          "camera_key_mode": "micro",
          "modal_close_cooldown_s": 4.0,
          "allow_gemini_clicks": false,
          "recovery_ladder": {
            "force": true,
            "level": 1,
            "direction": "left",
            "pressure": 5,
            "recent_recoveries": 1,
            "last_recovery_level": 0,
            "handoff": false,
            "reason": "recent recovery did not restore progress; use longer opposite-side escape"
          }
        }
      },
      "plan_latency_s": 3.5780000000013388,
      "execution_offset_s": 28.43699999999808,
      "execute_requested": true,
      "executed": true,
      "skip_reason": "",
      "batch": {
        "sequence_id": "skill_recover_if_stuck",
        "ttl_ms": 4000,
        "interruptible": true,
        "actions": [
          {
            "type": "key_hold",
            "key": "s",
            "start_ms": 0,
            "duration_ms": 1180
          },
          {
            "type": "key_hold",
            "key": "d",
            "start_ms": 120,
            "duration_ms": 520
          },
          {
            "type": "key_hold",
            "key": "right",
            "start_ms": 420,
            "duration_ms": 2000
          },
          {
            "type": "key_hold",
            "key": "a",
            "start_ms": 700,
            "duration_ms": 480
          },
          {
            "type": "key_hold",
            "key": "d",
            "start_ms": 1260,
            "duration_ms": 780
          },
          {
            "type": "key_hold",
            "key": "w",
            "start_ms": 1560,
            "duration_ms": 1900
          },
          {
            "type": "key_tap",
            "key": "space",
            "start_ms": 2040,
            "duration_ms": 140
          }
        ],
        "skill_trace": [
          "recover_if_stuck"
        ]
      },
      "events": [
        {
          "at_ms": 0,
          "order": 10,
          "op": "key_down",
          "source": 0,
          "key": "s"
        },
        {
          "at_ms": 157,
          "order": 10,
          "op": "key_down",
          "source": 1,
          "key": "d"
        },
        {
          "at_ms": 423,
          "order": 10,
          "op": "key_down",
          "source": 2,
          "key": "right"
        },
        {
          "at_ms": 611,
          "order": 90,
          "op": "key_up",
          "source": 1,
          "key": "d"
        },
        {
          "at_ms": 752,
          "order": 10,
          "op": "key_down",
          "source": 3,
          "key": "a"
        },
        {
          "at_ms": 1195,
          "order": 90,
          "op": "key_up",
          "source": 0,
          "key": "s"
        },
        {
          "at_ms": 1195,
          "order": 90,
          "op": "key_up",
          "source": 3,
          "key": "a"
        },
        {
          "at_ms": 1295,
          "order": 10,
          "op": "key_down",
          "source": 4,
          "key": "d"
        },
        {
          "at_ms": 1609,
          "order": 10,
          "op": "key_down",
          "source": 5,
          "key": "w"
        },
        {
          "at_ms": 2055,
          "order": 10,
          "op": "key_down",
          "source": 6,
          "key": "space"
        },
        {
          "at_ms": 2055,
          "order": 90,
          "op": "key_up",
          "source": 4,
          "key": "d"
        },
        {
          "at_ms": 2155,
          "order": 90,
          "op": "key_up",
          "source": 6,
          "key": "space"
        },
        {
          "at_ms": 2486,
          "order": 90,
          "op": "key_up",
          "source": 2,
          "key": "right"
        },
        {
          "at_ms": 3492,
          "order": 90,
          "op": "key_up",
          "source": 5,
          "key": "w"
        }
      ],
      "absolute_events": [
        {
          "at_ms": 28437,
          "order": 10,
          "op": "key_down",
          "source": 0,
          "key": "s",
          "batch_index": 5
        },
        {
          "at_ms": 28594,
          "order": 10,
          "op": "key_down",
          "source": 1,
          "key": "d",
          "batch_index": 5
        },
        {
          "at_ms": 28860,
          "order": 10,
          "op": "key_down",
          "source": 2,
          "key": "right",
          "batch_index": 5
        },
        {
          "at_ms": 29048,
          "order": 90,
          "op": "key_up",
          "source": 1,
          "key": "d",
          "batch_index": 5
        },
        {
          "at_ms": 29189,
          "order": 10,
          "op": "key_down",
          "source": 3,
          "key": "a",
          "batch_index": 5
        },
        {
          "at_ms": 29632,
          "order": 90,
          "op": "key_up",
          "source": 0,
          "key": "s",
          "batch_index": 5
        },
        {
          "at_ms": 29632,
          "order": 90,
          "op": "key_up",
          "source": 3,
          "key": "a",
          "batch_index": 5
        },
        {
          "at_ms": 29732,
          "order": 10,
          "op": "key_down",
          "source": 4,
          "key": "d",
          "batch_index": 5
        },
        {
          "at_ms": 30046,
          "order": 10,
          "op": "key_down",
          "source": 5,
          "key": "w",
          "batch_index": 5
        },
        {
          "at_ms": 30492,
          "order": 10,
          "op": "key_down",
          "source": 6,
          "key": "space",
          "batch_index": 5
        },
        {
          "at_ms": 30492,
          "order": 90,
          "op": "key_up",
          "source": 4,
          "key": "d",
          "batch_index": 5
        },
        {
          "at_ms": 30592,
          "order": 90,
          "op": "key_up",
          "source": 6,
          "key": "space",
          "batch_index": 5
        },
        {
          "at_ms": 30923,
          "order": 90,
          "op": "key_up",
          "source": 2,
          "key": "right",
          "batch_index": 5
        },
        {
          "at_ms": 31929,
          "order": 90,
          "op": "key_up",
          "source": 5,
          "key": "w",
          "batch_index": 5
        }
      ],
      "recovery_context": {
        "force": true,
        "level": 1,
        "direction": "left",
        "pressure": 5,
        "recent_recoveries": 1,
        "last_recovery_level": 0,
        "handoff": false,
        "reason": "recent recovery did not restore progress; use longer opposite-side escape"
      }
    },
    {
      "batch_index": 6,
      "screenshot": "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\frame_0006.png",
      "frame_history": [
        "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\sample_0017.png",
        "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\sample_0018.png",
        "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\frame_0006.png"
      ],
      "source": "watchdog_recovery_l2",
      "strategy": {
        "current_goal": "Collect enough coins to unlock the Canyon area.",
        "subgoal": "Explore the current area to gather coins and resources.",
        "next_intent": "Move around the open area to collect coins or interact with objects, as the Canyon gate requires 216M coins and we only have 21.7M.",
        "preferred_skill": "explore_open_path",
        "recovery_skill": "recover_if_stuck",
        "last_seen": [
          "Canyon gate requiring 216M coins",
          "Current coin balance 21.764M",
          "Various slimes/pets"
        ],
        "inventory_notes": [
          "Autoroll is enabled"
        ],
        "recent_failures": [],
        "avoid": [
          "Do not click Roll or Roll another Slime; autoroll is enabled in this test.",
          "Do not try to buy the Canyon gate yet, insufficient funds.",
          "Do not click Roll or Roll another Slime; autoroll is enabled."
        ],
        "allowed_skills": [
          "walk_natural",
          "move_toward_visible_objective",
          "approach_visible_target",
          "explore_open_path",
          "jump_obstacle",
          "micro_scan",
          "recover_if_stuck"
        ],
        "stuck_counter": 0,
        "confidence": 0.8,
        "local_rules": {
          "roll_mode": "off",
          "ignore_roll_buttons": true,
          "camera_key_mode": "micro",
          "modal_close_cooldown_s": 4.0,
          "allow_gemini_clicks": false,
          "recovery_ladder": {
            "force": true,
            "level": 2,
            "direction": "left",
            "pressure": 6,
            "recent_recoveries": 2,
            "last_recovery_level": 1,
            "handoff": false,
            "reason": "two recent recoveries still look stuck; force full turn-around escape"
          }
        }
      },
      "plan_latency_s": 0.3899999999994179,
      "execution_offset_s": 32.31199999999808,
      "execute_requested": true,
      "executed": true,
      "skip_reason": "",
      "batch": {
        "sequence_id": "skill_recover_if_stuck",
        "ttl_ms": 4600,
        "interruptible": true,
        "actions": [
          {
            "type": "key_hold",
            "key": "s",
            "start_ms": 0,
            "duration_ms": 1560
          },
          {
            "type": "key_hold",
            "key": "a",
            "start_ms": 140,
            "duration_ms": 1360
          },
          {
            "type": "key_hold",
            "key": "right",
            "start_ms": 420,
            "duration_ms": 2000
          },
          {
            "type": "key_hold",
            "key": "w",
            "start_ms": 1700,
            "duration_ms": 2300
          },
          {
            "type": "key_hold",
            "key": "a",
            "start_ms": 1700,
            "duration_ms": 980
          },
          {
            "type": "key_tap",
            "key": "space",
            "start_ms": 2360,
            "duration_ms": 140
          }
        ],
        "skill_trace": [
          "recover_if_stuck"
        ],
        "recovery_level": 2,
        "recovery_direction": "left",
        "recovery_reason": "two recent recoveries still look stuck; force full turn-around escape"
      },
      "events": [
        {
          "at_ms": 0,
          "order": 10,
          "op": "key_down",
          "source": 0,
          "key": "s"
        },
        {
          "at_ms": 100,
          "order": 10,
          "op": "key_down",
          "source": 1,
          "key": "a"
        },
        {
          "at_ms": 424,
          "order": 10,
          "op": "key_down",
          "source": 2,
          "key": "right"
        },
        {
          "at_ms": 1561,
          "order": 90,
          "op": "key_up",
          "source": 1,
          "key": "a"
        },
        {
          "at_ms": 1661,
          "order": 90,
          "op": "key_up",
          "source": 0,
          "key": "s"
        },
        {
          "at_ms": 1761,
          "order": 10,
          "op": "key_down",
          "source": 3,
          "key": "w"
        },
        {
          "at_ms": 1777,
          "order": 10,
          "op": "key_down",
          "source": 4,
          "key": "a"
        },
        {
          "at_ms": 2391,
          "order": 10,
          "op": "key_down",
          "source": 5,
          "key": "space"
        },
        {
          "at_ms": 2491,
          "order": 90,
          "op": "key_up",
          "source": 2,
          "key": "right"
        },
        {
          "at_ms": 2591,
          "order": 90,
          "op": "key_up",
          "source": 5,
          "key": "space"
        },
        {
          "at_ms": 2691,
          "order": 90,
          "op": "key_up",
          "source": 4,
          "key": "a"
        },
        {
          "at_ms": 3945,
          "order": 90,
          "op": "key_up",
          "source": 3,
          "key": "w"
        }
      ],
      "absolute_events": [
        {
          "at_ms": 32312,
          "order": 10,
          "op": "key_down",
          "source": 0,
          "key": "s",
          "batch_index": 6
        },
        {
          "at_ms": 32412,
          "order": 10,
          "op": "key_down",
          "source": 1,
          "key": "a",
          "batch_index": 6
        },
        {
          "at_ms": 32736,
          "order": 10,
          "op": "key_down",
          "source": 2,
          "key": "right",
          "batch_index": 6
        },
        {
          "at_ms": 33873,
          "order": 90,
          "op": "key_up",
          "source": 1,
          "key": "a",
          "batch_index": 6
        },
        {
          "at_ms": 33973,
          "order": 90,
          "op": "key_up",
          "source": 0,
          "key": "s",
          "batch_index": 6
        },
        {
          "at_ms": 34073,
          "order": 10,
          "op": "key_down",
          "source": 3,
          "key": "w",
          "batch_index": 6
        },
        {
          "at_ms": 34089,
          "order": 10,
          "op": "key_down",
          "source": 4,
          "key": "a",
          "batch_index": 6
        },
        {
          "at_ms": 34703,
          "order": 10,
          "op": "key_down",
          "source": 5,
          "key": "space",
          "batch_index": 6
        },
        {
          "at_ms": 34803,
          "order": 90,
          "op": "key_up",
          "source": 2,
          "key": "right",
          "batch_index": 6
        },
        {
          "at_ms": 34903,
          "order": 90,
          "op": "key_up",
          "source": 5,
          "key": "space",
          "batch_index": 6
        },
        {
          "at_ms": 35003,
          "order": 90,
          "op": "key_up",
          "source": 4,
          "key": "a",
          "batch_index": 6
        },
        {
          "at_ms": 36257,
          "order": 90,
          "op": "key_up",
          "source": 3,
          "key": "w",
          "batch_index": 6
        }
      ],
      "recovery_context": {
        "force": true,
        "level": 2,
        "direction": "left",
        "pressure": 6,
        "recent_recoveries": 2,
        "last_recovery_level": 1,
        "handoff": false,
        "reason": "two recent recoveries still look stuck; force full turn-around escape"
      }
    },
    {
      "batch_index": 7,
      "screenshot": "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\frame_0007.png",
      "frame_history": [
        "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\sample_0020.png",
        "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\sample_0021.png",
        "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\frame_0007.png"
      ],
      "source": "watchdog_recovery_l3",
      "strategy": {
        "current_goal": "Collect enough coins to unlock the Canyon area.",
        "subgoal": "Explore the current area to gather coins and resources.",
        "next_intent": "Move around the open area to collect coins or interact with objects, as the Canyon gate requires 216M coins and we only have 21.7M.",
        "preferred_skill": "explore_open_path",
        "recovery_skill": "recover_if_stuck",
        "last_seen": [
          "Canyon gate requiring 216M coins",
          "Current coin balance 21.764M",
          "Various slimes/pets"
        ],
        "inventory_notes": [
          "Autoroll is enabled"
        ],
        "recent_failures": [],
        "avoid": [
          "Do not click Roll or Roll another Slime; autoroll is enabled in this test.",
          "Do not try to buy the Canyon gate yet, insufficient funds.",
          "Do not click Roll or Roll another Slime; autoroll is enabled."
        ],
        "allowed_skills": [
          "walk_natural",
          "move_toward_visible_objective",
          "approach_visible_target",
          "explore_open_path",
          "jump_obstacle",
          "micro_scan",
          "recover_if_stuck"
        ],
        "stuck_counter": 0,
        "confidence": 0.8,
        "local_rules": {
          "roll_mode": "off",
          "ignore_roll_buttons": true,
          "camera_key_mode": "micro",
          "modal_close_cooldown_s": 4.0,
          "allow_gemini_clicks": false,
          "recovery_ladder": {
            "force": true,
            "level": 3,
            "direction": "right",
            "pressure": 7,
            "recent_recoveries": 3,
            "last_recovery_level": 2,
            "handoff": false,
            "reason": "repeated recoveries failed; force maximum turn-away escape and avoid the same wall/objective"
          }
        }
      },
      "plan_latency_s": 0.4220000000022992,
      "execution_offset_s": 36.59400000000096,
      "execute_requested": true,
      "executed": true,
      "skip_reason": "",
      "batch": {
        "sequence_id": "skill_recover_if_stuck",
        "ttl_ms": 5000,
        "interruptible": true,
        "actions": [
          {
            "type": "key_hold",
            "key": "s",
            "start_ms": 0,
            "duration_ms": 1700
          },
          {
            "type": "key_hold",
            "key": "d",
            "start_ms": 120,
            "duration_ms": 1520
          },
          {
            "type": "key_hold",
            "key": "right",
            "start_ms": 420,
            "duration_ms": 2000
          },
          {
            "type": "key_hold",
            "key": "a",
            "start_ms": 1760,
            "duration_ms": 760
          },
          {
            "type": "key_hold",
            "key": "w",
            "start_ms": 2120,
            "duration_ms": 2500
          },
          {
            "type": "key_hold",
            "key": "a",
            "start_ms": 2120,
            "duration_ms": 1150
          },
          {
            "type": "key_tap",
            "key": "space",
            "start_ms": 2760,
            "duration_ms": 140
          },
          {
            "type": "key_tap",
            "key": "space",
            "start_ms": 3560,
            "duration_ms": 140
          }
        ],
        "skill_trace": [
          "recover_if_stuck"
        ],
        "recovery_level": 3,
        "recovery_direction": "right",
        "recovery_reason": "repeated recoveries failed; force maximum turn-away escape and avoid the same wall/objective"
      },
      "events": [
        {
          "at_ms": 0,
          "order": 10,
          "op": "key_down",
          "source": 0,
          "key": "s"
        },
        {
          "at_ms": 180,
          "order": 10,
          "op": "key_down",
          "source": 1,
          "key": "d"
        },
        {
          "at_ms": 357,
          "order": 10,
          "op": "key_down",
          "source": 2,
          "key": "right"
        },
        {
          "at_ms": 1703,
          "order": 90,
          "op": "key_up",
          "source": 1,
          "key": "d"
        },
        {
          "at_ms": 1803,
          "order": 90,
          "op": "key_up",
          "source": 0,
          "key": "s"
        },
        {
          "at_ms": 1903,
          "order": 10,
          "op": "key_down",
          "source": 3,
          "key": "a"
        },
        {
          "at_ms": 2142,
          "order": 10,
          "op": "key_down",
          "source": 4,
          "key": "w"
        },
        {
          "at_ms": 2165,
          "order": 10,
          "op": "key_down",
          "source": 5,
          "key": "a"
        },
        {
          "at_ms": 2476,
          "order": 90,
          "op": "key_up",
          "source": 2,
          "key": "right"
        },
        {
          "at_ms": 2576,
          "order": 90,
          "op": "key_up",
          "source": 3,
          "key": "a"
        },
        {
          "at_ms": 2809,
          "order": 10,
          "op": "key_down",
          "source": 6,
          "key": "space"
        },
        {
          "at_ms": 2935,
          "order": 90,
          "op": "key_up",
          "source": 6,
          "key": "space"
        },
        {
          "at_ms": 3316,
          "order": 90,
          "op": "key_up",
          "source": 5,
          "key": "a"
        },
        {
          "at_ms": 3526,
          "order": 10,
          "op": "key_down",
          "source": 7,
          "key": "space"
        },
        {
          "at_ms": 3752,
          "order": 90,
          "op": "key_up",
          "source": 7,
          "key": "space"
        },
        {
          "at_ms": 4667,
          "order": 90,
          "op": "key_up",
          "source": 4,
          "key": "w"
        }
      ],
      "absolute_events": [
        {
          "at_ms": 36594,
          "order": 10,
          "op": "key_down",
          "source": 0,
          "key": "s",
          "batch_index": 7
        },
        {
          "at_ms": 36774,
          "order": 10,
          "op": "key_down",
          "source": 1,
          "key": "d",
          "batch_index": 7
        },
        {
          "at_ms": 36951,
          "order": 10,
          "op": "key_down",
          "source": 2,
          "key": "right",
          "batch_index": 7
        },
        {
          "at_ms": 38297,
          "order": 90,
          "op": "key_up",
          "source": 1,
          "key": "d",
          "batch_index": 7
        },
        {
          "at_ms": 38397,
          "order": 90,
          "op": "key_up",
          "source": 0,
          "key": "s",
          "batch_index": 7
        },
        {
          "at_ms": 38497,
          "order": 10,
          "op": "key_down",
          "source": 3,
          "key": "a",
          "batch_index": 7
        },
        {
          "at_ms": 38736,
          "order": 10,
          "op": "key_down",
          "source": 4,
          "key": "w",
          "batch_index": 7
        },
        {
          "at_ms": 38759,
          "order": 10,
          "op": "key_down",
          "source": 5,
          "key": "a",
          "batch_index": 7
        },
        {
          "at_ms": 39070,
          "order": 90,
          "op": "key_up",
          "source": 2,
          "key": "right",
          "batch_index": 7
        },
        {
          "at_ms": 39170,
          "order": 90,
          "op": "key_up",
          "source": 3,
          "key": "a",
          "batch_index": 7
        },
        {
          "at_ms": 39403,
          "order": 10,
          "op": "key_down",
          "source": 6,
          "key": "space",
          "batch_index": 7
        },
        {
          "at_ms": 39529,
          "order": 90,
          "op": "key_up",
          "source": 6,
          "key": "space",
          "batch_index": 7
        },
        {
          "at_ms": 39910,
          "order": 90,
          "op": "key_up",
          "source": 5,
          "key": "a",
          "batch_index": 7
        },
        {
          "at_ms": 40120,
          "order": 10,
          "op": "key_down",
          "source": 7,
          "key": "space",
          "batch_index": 7
        },
        {
          "at_ms": 40346,
          "order": 90,
          "op": "key_up",
          "source": 7,
          "key": "space",
          "batch_index": 7
        },
        {
          "at_ms": 41261,
          "order": 90,
          "op": "key_up",
          "source": 4,
          "key": "w",
          "batch_index": 7
        }
      ],
      "recovery_context": {
        "force": true,
        "level": 3,
        "direction": "right",
        "pressure": 7,
        "recent_recoveries": 3,
        "last_recovery_level": 2,
        "handoff": false,
        "reason": "repeated recoveries failed; force maximum turn-away escape and avoid the same wall/objective"
      }
    },
    {
      "batch_index": 8,
      "screenshot": "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\frame_0008.png",
      "frame_history": [
        "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\sample_0023.png",
        "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\sample_0024.png",
        "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\frame_0008.png"
      ],
      "source": "gemini",
      "strategy": {
        "current_goal": "Collect enough coins to unlock the Canyon area.",
        "subgoal": "Defeat slimes to gather coins and resources.",
        "next_intent": "Level-3 recovery just ran. Do not use recover_if_stuck again this batch. Do not return to the same wall, portal, corner, or locked objective. Move toward open terrain away from the stuck object. Previous planner intent: Approach the targeted slime to defeat it and collect coins.",
        "preferred_skill": "explore_open_path",
        "recovery_skill": "recover_if_stuck",
        "last_seen": [
          "Canyon gate requiring 216M coins",
          "Current coin balance 25.161M",
          "Targeted slime with health bar"
        ],
        "inventory_notes": [
          "Autoroll is enabled"
        ],
        "recent_failures": [],
        "avoid": [
          "Do not click Roll or Roll another Slime; autoroll is enabled in this test.",
          "Do not try to buy the Canyon gate yet, insufficient funds.",
          "Do not use recover_if_stuck immediately after a level-3 recovery handoff.",
          "Do not aim back into the same wall, portal, corner, or locked objective.",
          "Do not click Roll or Roll another Slime; autoroll is enabled."
        ],
        "allowed_skills": [
          "walk_natural",
          "move_toward_visible_objective",
          "approach_visible_target",
          "explore_open_path",
          "jump_obstacle",
          "micro_scan",
          "recover_if_stuck"
        ],
        "stuck_counter": 0,
        "confidence": 0.9,
        "local_rules": {
          "roll_mode": "off",
          "ignore_roll_buttons": true,
          "camera_key_mode": "micro",
          "modal_close_cooldown_s": 4.0,
          "allow_gemini_clicks": false,
          "recovery_ladder": {
            "force": false,
            "level": 3,
            "direction": "left",
            "pressure": 8,
            "recent_recoveries": 4,
            "last_recovery_level": 3,
            "handoff": true,
            "reason": "level-3 recovery just ran; hand control back to Gemini and escape toward open terrain"
          }
        }
      },
      "plan_latency_s": 3.4530000000013388,
      "execution_offset_s": 41.64099999999962,
      "execute_requested": true,
      "executed": true,
      "skip_reason": "",
      "batch": {
        "sequence_id": "skill_explore_open_path",
        "ttl_ms": 4500,
        "interruptible": true,
        "actions": [
          {
            "type": "key_hold",
            "key": "w",
            "start_ms": 0,
            "duration_ms": 531
          },
          {
            "type": "key_hold",
            "key": "d",
            "start_ms": 94,
            "duration_ms": 1156
          },
          {
            "type": "key_hold",
            "key": "a",
            "start_ms": 1344,
            "duration_ms": 547
          },
          {
            "type": "key_hold",
            "key": "d",
            "start_ms": 1922,
            "duration_ms": 515
          },
          {
            "type": "key_hold",
            "key": "w",
            "start_ms": 2359,
            "duration_ms": 641
          },
          {
            "type": "key_hold",
            "key": "a",
            "start_ms": 2562,
            "duration_ms": 438
          },
          {
            "type": "key_tap",
            "key": "space",
            "start_ms": 2875,
            "duration_ms": 125
          }
        ],
        "skill_trace": [
          "explore_open_path"
        ],
        "movement_chain_trace": [
          "human_forward_left_jump_chain_zigzag_01"
        ]
      },
      "events": [
        {
          "at_ms": 0,
          "order": 10,
          "op": "key_down",
          "source": 0,
          "key": "w"
        },
        {
          "at_ms": 100,
          "order": 10,
          "op": "key_down",
          "source": 1,
          "key": "d"
        },
        {
          "at_ms": 502,
          "order": 90,
          "op": "key_up",
          "source": 0,
          "key": "w"
        },
        {
          "at_ms": 1235,
          "order": 90,
          "op": "key_up",
          "source": 1,
          "key": "d"
        },
        {
          "at_ms": 1335,
          "order": 10,
          "op": "key_down",
          "source": 2,
          "key": "a"
        },
        {
          "at_ms": 1929,
          "order": 90,
          "op": "key_up",
          "source": 2,
          "key": "a"
        },
        {
          "at_ms": 2029,
          "order": 10,
          "op": "key_down",
          "source": 3,
          "key": "d"
        },
        {
          "at_ms": 2404,
          "order": 10,
          "op": "key_down",
          "source": 4,
          "key": "w"
        },
        {
          "at_ms": 2504,
          "order": 90,
          "op": "key_up",
          "source": 3,
          "key": "d"
        },
        {
          "at_ms": 2604,
          "order": 10,
          "op": "key_down",
          "source": 5,
          "key": "a"
        },
        {
          "at_ms": 2923,
          "order": 10,
          "op": "key_down",
          "source": 6,
          "key": "space"
        },
        {
          "at_ms": 3023,
          "order": 90,
          "op": "key_up",
          "source": 4,
          "key": "w"
        },
        {
          "at_ms": 3023,
          "order": 90,
          "op": "key_up",
          "source": 5,
          "key": "a"
        },
        {
          "at_ms": 3023,
          "order": 90,
          "op": "key_up",
          "source": 6,
          "key": "space"
        }
      ],
      "absolute_events": [
        {
          "at_ms": 41641,
          "order": 10,
          "op": "key_down",
          "source": 0,
          "key": "w",
          "batch_index": 8
        },
        {
          "at_ms": 41741,
          "order": 10,
          "op": "key_down",
          "source": 1,
          "key": "d",
          "batch_index": 8
        },
        {
          "at_ms": 42143,
          "order": 90,
          "op": "key_up",
          "source": 0,
          "key": "w",
          "batch_index": 8
        },
        {
          "at_ms": 42876,
          "order": 90,
          "op": "key_up",
          "source": 1,
          "key": "d",
          "batch_index": 8
        },
        {
          "at_ms": 42976,
          "order": 10,
          "op": "key_down",
          "source": 2,
          "key": "a",
          "batch_index": 8
        },
        {
          "at_ms": 43570,
          "order": 90,
          "op": "key_up",
          "source": 2,
          "key": "a",
          "batch_index": 8
        },
        {
          "at_ms": 43670,
          "order": 10,
          "op": "key_down",
          "source": 3,
          "key": "d",
          "batch_index": 8
        },
        {
          "at_ms": 44045,
          "order": 10,
          "op": "key_down",
          "source": 4,
          "key": "w",
          "batch_index": 8
        },
        {
          "at_ms": 44145,
          "order": 90,
          "op": "key_up",
          "source": 3,
          "key": "d",
          "batch_index": 8
        },
        {
          "at_ms": 44245,
          "order": 10,
          "op": "key_down",
          "source": 5,
          "key": "a",
          "batch_index": 8
        },
        {
          "at_ms": 44564,
          "order": 10,
          "op": "key_down",
          "source": 6,
          "key": "space",
          "batch_index": 8
        },
        {
          "at_ms": 44664,
          "order": 90,
          "op": "key_up",
          "source": 4,
          "key": "w",
          "batch_index": 8
        },
        {
          "at_ms": 44664,
          "order": 90,
          "op": "key_up",
          "source": 5,
          "key": "a",
          "batch_index": 8
        },
        {
          "at_ms": 44664,
          "order": 90,
          "op": "key_up",
          "source": 6,
          "key": "space",
          "batch_index": 8
        }
      ],
      "recovery_context": {
        "force": false,
        "level": 3,
        "direction": "left",
        "pressure": 8,
        "recent_recoveries": 4,
        "last_recovery_level": 3,
        "handoff": true,
        "reason": "level-3 recovery just ran; hand control back to Gemini and escape toward open terrain"
      }
    },
    {
      "batch_index": 9,
      "screenshot": "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\frame_0009.png",
      "frame_history": [
        "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\sample_0026.png",
        "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\sample_0027.png",
        "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\frame_0009.png"
      ],
      "source": "gemini",
      "strategy": {
        "current_goal": "Collect enough coins to unlock the Canyon area.",
        "subgoal": "Defeat slimes to gather coins and resources.",
        "next_intent": "Approach the targeted slime to defeat it and collect coins.",
        "preferred_skill": "approach_visible_target",
        "recovery_skill": "recover_if_stuck",
        "last_seen": [
          "Canyon gate requiring 216M coins",
          "Current coin balance 25.161M",
          "Targeted slime with health bar"
        ],
        "inventory_notes": [
          "Autoroll is enabled"
        ],
        "recent_failures": [],
        "avoid": [
          "Do not click Roll or Roll another Slime; autoroll is enabled in this test.",
          "Do not try to buy the Canyon gate yet, insufficient funds.",
          "Do not click Roll or Roll another Slime; autoroll is enabled."
        ],
        "allowed_skills": [
          "walk_natural",
          "move_toward_visible_objective",
          "approach_visible_target",
          "explore_open_path",
          "jump_obstacle",
          "micro_scan",
          "recover_if_stuck"
        ],
        "stuck_counter": 0,
        "confidence": 0.9,
        "local_rules": {
          "roll_mode": "off",
          "ignore_roll_buttons": true,
          "camera_key_mode": "micro",
          "modal_close_cooldown_s": 4.0,
          "allow_gemini_clicks": false,
          "recovery_ladder": {
            "force": true,
            "level": 3,
            "direction": "left",
            "pressure": 9,
            "recent_recoveries": 4,
            "last_recovery_level": 3,
            "handoff": false,
            "reason": "repeated recoveries failed; force maximum turn-away escape and avoid the same wall/objective"
          }
        }
      },
      "plan_latency_s": 3.3440000000009604,
      "execution_offset_s": 46.43699999999808,
      "execute_requested": true,
      "executed": true,
      "skip_reason": "",
      "batch": {
        "sequence_id": "skill_approach_visible_target",
        "ttl_ms": 4500,
        "interruptible": true,
        "actions": [
          {
            "type": "key_hold",
            "key": "a",
            "start_ms": 172,
            "duration_ms": 140
          },
          {
            "type": "key_hold",
            "key": "d",
            "start_ms": 312,
            "duration_ms": 188
          },
          {
            "type": "key_hold",
            "key": "a",
            "start_ms": 453,
            "duration_ms": 1031
          },
          {
            "type": "key_hold",
            "key": "w",
            "start_ms": 578,
            "duration_ms": 1109
          },
          {
            "type": "key_tap",
            "key": "space",
            "start_ms": 812,
            "duration_ms": 172
          },
          {
            "type": "key_hold",
            "key": "d",
            "start_ms": 1391,
            "duration_ms": 796
          },
          {
            "type": "key_hold",
            "key": "w",
            "start_ms": 2094,
            "duration_ms": 906
          },
          {
            "type": "key_hold",
            "key": "a",
            "start_ms": 2594,
            "duration_ms": 406
          }
        ],
        "skill_trace": [
          "approach_visible_target"
        ],
        "movement_chain_trace": [
          "human_forward_left_jump_chain_zigzag_00"
        ]
      },
      "events": [
        {
          "at_ms": 200,
          "order": 10,
          "op": "key_down",
          "source": 0,
          "key": "a"
        },
        {
          "at_ms": 300,
          "order": 10,
          "op": "key_down",
          "source": 1,
          "key": "d"
        },
        {
          "at_ms": 300,
          "order": 90,
          "op": "key_up",
          "source": 0,
          "key": "a"
        },
        {
          "at_ms": 481,
          "order": 10,
          "op": "key_down",
          "source": 2,
          "key": "a"
        },
        {
          "at_ms": 581,
          "order": 90,
          "op": "key_up",
          "source": 1,
          "key": "d"
        },
        {
          "at_ms": 681,
          "order": 10,
          "op": "key_down",
          "source": 3,
          "key": "w"
        },
        {
          "at_ms": 828,
          "order": 10,
          "op": "key_down",
          "source": 4,
          "key": "space"
        },
        {
          "at_ms": 985,
          "order": 90,
          "op": "key_up",
          "source": 4,
          "key": "space"
        },
        {
          "at_ms": 1426,
          "order": 10,
          "op": "key_down",
          "source": 5,
          "key": "d"
        },
        {
          "at_ms": 1526,
          "order": 90,
          "op": "key_up",
          "source": 2,
          "key": "a"
        },
        {
          "at_ms": 1755,
          "order": 90,
          "op": "key_up",
          "source": 3,
          "key": "w"
        },
        {
          "at_ms": 2097,
          "order": 10,
          "op": "key_down",
          "source": 6,
          "key": "w"
        },
        {
          "at_ms": 2214,
          "order": 90,
          "op": "key_up",
          "source": 5,
          "key": "d"
        },
        {
          "at_ms": 2550,
          "order": 10,
          "op": "key_down",
          "source": 7,
          "key": "a"
        },
        {
          "at_ms": 3033,
          "order": 90,
          "op": "key_up",
          "source": 6,
          "key": "w"
        },
        {
          "at_ms": 3033,
          "order": 90,
          "op": "key_up",
          "source": 7,
          "key": "a"
        }
      ],
      "absolute_events": [
        {
          "at_ms": 46637,
          "order": 10,
          "op": "key_down",
          "source": 0,
          "key": "a",
          "batch_index": 9
        },
        {
          "at_ms": 46737,
          "order": 10,
          "op": "key_down",
          "source": 1,
          "key": "d",
          "batch_index": 9
        },
        {
          "at_ms": 46737,
          "order": 90,
          "op": "key_up",
          "source": 0,
          "key": "a",
          "batch_index": 9
        },
        {
          "at_ms": 46918,
          "order": 10,
          "op": "key_down",
          "source": 2,
          "key": "a",
          "batch_index": 9
        },
        {
          "at_ms": 47018,
          "order": 90,
          "op": "key_up",
          "source": 1,
          "key": "d",
          "batch_index": 9
        },
        {
          "at_ms": 47118,
          "order": 10,
          "op": "key_down",
          "source": 3,
          "key": "w",
          "batch_index": 9
        },
        {
          "at_ms": 47265,
          "order": 10,
          "op": "key_down",
          "source": 4,
          "key": "space",
          "batch_index": 9
        },
        {
          "at_ms": 47422,
          "order": 90,
          "op": "key_up",
          "source": 4,
          "key": "space",
          "batch_index": 9
        },
        {
          "at_ms": 47863,
          "order": 10,
          "op": "key_down",
          "source": 5,
          "key": "d",
          "batch_index": 9
        },
        {
          "at_ms": 47963,
          "order": 90,
          "op": "key_up",
          "source": 2,
          "key": "a",
          "batch_index": 9
        },
        {
          "at_ms": 48192,
          "order": 90,
          "op": "key_up",
          "source": 3,
          "key": "w",
          "batch_index": 9
        },
        {
          "at_ms": 48534,
          "order": 10,
          "op": "key_down",
          "source": 6,
          "key": "w",
          "batch_index": 9
        },
        {
          "at_ms": 48651,
          "order": 90,
          "op": "key_up",
          "source": 5,
          "key": "d",
          "batch_index": 9
        },
        {
          "at_ms": 48987,
          "order": 10,
          "op": "key_down",
          "source": 7,
          "key": "a",
          "batch_index": 9
        },
        {
          "at_ms": 49470,
          "order": 90,
          "op": "key_up",
          "source": 6,
          "key": "w",
          "batch_index": 9
        },
        {
          "at_ms": 49470,
          "order": 90,
          "op": "key_up",
          "source": 7,
          "key": "a",
          "batch_index": 9
        }
      ],
      "recovery_context": {
        "force": true,
        "level": 3,
        "direction": "left",
        "pressure": 9,
        "recent_recoveries": 4,
        "last_recovery_level": 3,
        "handoff": false,
        "reason": "repeated recoveries failed; force maximum turn-away escape and avoid the same wall/objective"
      }
    },
    {
      "batch_index": 10,
      "screenshot": "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\frame_0010.png",
      "frame_history": [
        "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\sample_0030.png",
        "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\sample_0031.png",
        "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\frame_0010.png"
      ],
      "source": "watchdog_recovery_l3",
      "strategy": {
        "current_goal": "Collect enough coins to unlock the Canyon area.",
        "subgoal": "Defeat slimes to gather coins and resources.",
        "next_intent": "Approach the targeted slime to defeat it and collect coins.",
        "preferred_skill": "approach_visible_target",
        "recovery_skill": "recover_if_stuck",
        "last_seen": [
          "Canyon gate requiring 216M coins",
          "Current coin balance 25.161M",
          "Targeted slime with health bar"
        ],
        "inventory_notes": [
          "Autoroll is enabled"
        ],
        "recent_failures": [],
        "avoid": [
          "Do not click Roll or Roll another Slime; autoroll is enabled in this test.",
          "Do not try to buy the Canyon gate yet, insufficient funds.",
          "Do not click Roll or Roll another Slime; autoroll is enabled."
        ],
        "allowed_skills": [
          "walk_natural",
          "move_toward_visible_objective",
          "approach_visible_target",
          "explore_open_path",
          "jump_obstacle",
          "micro_scan",
          "recover_if_stuck"
        ],
        "stuck_counter": 0,
        "confidence": 0.9,
        "local_rules": {
          "roll_mode": "off",
          "ignore_roll_buttons": true,
          "camera_key_mode": "micro",
          "modal_close_cooldown_s": 4.0,
          "allow_gemini_clicks": false,
          "recovery_ladder": {
            "force": true,
            "level": 3,
            "direction": "right",
            "pressure": 10,
            "recent_recoveries": 4,
            "last_recovery_level": 3,
            "handoff": false,
            "reason": "repeated recoveries failed; force maximum turn-away escape and avoid the same wall/objective"
          }
        }
      },
      "plan_latency_s": 0.5,
      "execution_offset_s": 49.84400000000096,
      "execute_requested": true,
      "executed": true,
      "skip_reason": "",
      "batch": {
        "sequence_id": "skill_recover_if_stuck",
        "ttl_ms": 5000,
        "interruptible": true,
        "actions": [
          {
            "type": "key_hold",
            "key": "s",
            "start_ms": 0,
            "duration_ms": 1700
          },
          {
            "type": "key_hold",
            "key": "d",
            "start_ms": 120,
            "duration_ms": 1520
          },
          {
            "type": "key_hold",
            "key": "right",
            "start_ms": 420,
            "duration_ms": 2000
          },
          {
            "type": "key_hold",
            "key": "a",
            "start_ms": 1760,
            "duration_ms": 760
          },
          {
            "type": "key_hold",
            "key": "w",
            "start_ms": 2120,
            "duration_ms": 2500
          },
          {
            "type": "key_hold",
            "key": "a",
            "start_ms": 2120,
            "duration_ms": 1150
          },
          {
            "type": "key_tap",
            "key": "space",
            "start_ms": 2760,
            "duration_ms": 140
          },
          {
            "type": "key_tap",
            "key": "space",
            "start_ms": 3560,
            "duration_ms": 140
          }
        ],
        "skill_trace": [
          "recover_if_stuck"
        ],
        "recovery_level": 3,
        "recovery_direction": "right",
        "recovery_reason": "repeated recoveries failed; force maximum turn-away escape and avoid the same wall/objective"
      },
      "events": [
        {
          "at_ms": 0,
          "order": 10,
          "op": "key_down",
          "source": 0,
          "key": "s"
        },
        {
          "at_ms": 129,
          "order": 10,
          "op": "key_down",
          "source": 1,
          "key": "d"
        },
        {
          "at_ms": 427,
          "order": 10,
          "op": "key_down",
          "source": 2,
          "key": "right"
        },
        {
          "at_ms": 1671,
          "order": 90,
          "op": "key_up",
          "source": 1,
          "key": "d"
        },
        {
          "at_ms": 1771,
          "order": 90,
          "op": "key_up",
          "source": 0,
          "key": "s"
        },
        {
          "at_ms": 1871,
          "order": 10,
          "op": "key_down",
          "source": 3,
          "key": "a"
        },
        {
          "at_ms": 2156,
          "order": 10,
          "op": "key_down",
          "source": 4,
          "key": "w"
        },
        {
          "at_ms": 2171,
          "order": 10,
          "op": "key_down",
          "source": 5,
          "key": "a"
        },
        {
          "at_ms": 2478,
          "order": 90,
          "op": "key_up",
          "source": 2,
          "key": "right"
        },
        {
          "at_ms": 2578,
          "order": 90,
          "op": "key_up",
          "source": 3,
          "key": "a"
        },
        {
          "at_ms": 2734,
          "order": 10,
          "op": "key_down",
          "source": 6,
          "key": "space"
        },
        {
          "at_ms": 2834,
          "order": 90,
          "op": "key_up",
          "source": 6,
          "key": "space"
        },
        {
          "at_ms": 3216,
          "order": 90,
          "op": "key_up",
          "source": 5,
          "key": "a"
        },
        {
          "at_ms": 3599,
          "order": 10,
          "op": "key_down",
          "source": 7,
          "key": "space"
        },
        {
          "at_ms": 3699,
          "order": 90,
          "op": "key_up",
          "source": 7,
          "key": "space"
        },
        {
          "at_ms": 4649,
          "order": 90,
          "op": "key_up",
          "source": 4,
          "key": "w"
        }
      ],
      "absolute_events": [
        {
          "at_ms": 49844,
          "order": 10,
          "op": "key_down",
          "source": 0,
          "key": "s",
          "batch_index": 10
        },
        {
          "at_ms": 49973,
          "order": 10,
          "op": "key_down",
          "source": 1,
          "key": "d",
          "batch_index": 10
        },
        {
          "at_ms": 50271,
          "order": 10,
          "op": "key_down",
          "source": 2,
          "key": "right",
          "batch_index": 10
        },
        {
          "at_ms": 51515,
          "order": 90,
          "op": "key_up",
          "source": 1,
          "key": "d",
          "batch_index": 10
        },
        {
          "at_ms": 51615,
          "order": 90,
          "op": "key_up",
          "source": 0,
          "key": "s",
          "batch_index": 10
        },
        {
          "at_ms": 51715,
          "order": 10,
          "op": "key_down",
          "source": 3,
          "key": "a",
          "batch_index": 10
        },
        {
          "at_ms": 52000,
          "order": 10,
          "op": "key_down",
          "source": 4,
          "key": "w",
          "batch_index": 10
        },
        {
          "at_ms": 52015,
          "order": 10,
          "op": "key_down",
          "source": 5,
          "key": "a",
          "batch_index": 10
        },
        {
          "at_ms": 52322,
          "order": 90,
          "op": "key_up",
          "source": 2,
          "key": "right",
          "batch_index": 10
        },
        {
          "at_ms": 52422,
          "order": 90,
          "op": "key_up",
          "source": 3,
          "key": "a",
          "batch_index": 10
        },
        {
          "at_ms": 52578,
          "order": 10,
          "op": "key_down",
          "source": 6,
          "key": "space",
          "batch_index": 10
        },
        {
          "at_ms": 52678,
          "order": 90,
          "op": "key_up",
          "source": 6,
          "key": "space",
          "batch_index": 10
        },
        {
          "at_ms": 53060,
          "order": 90,
          "op": "key_up",
          "source": 5,
          "key": "a",
          "batch_index": 10
        },
        {
          "at_ms": 53443,
          "order": 10,
          "op": "key_down",
          "source": 7,
          "key": "space",
          "batch_index": 10
        },
        {
          "at_ms": 53543,
          "order": 90,
          "op": "key_up",
          "source": 7,
          "key": "space",
          "batch_index": 10
        },
        {
          "at_ms": 54493,
          "order": 90,
          "op": "key_up",
          "source": 4,
          "key": "w",
          "batch_index": 10
        }
      ],
      "recovery_context": {
        "force": true,
        "level": 3,
        "direction": "right",
        "pressure": 10,
        "recent_recoveries": 4,
        "last_recovery_level": 3,
        "handoff": false,
        "reason": "repeated recoveries failed; force maximum turn-away escape and avoid the same wall/objective"
      }
    },
    {
      "batch_index": 11,
      "screenshot": "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\frame_0011.png",
      "frame_history": [
        "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\sample_0033.png",
        "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\sample_0034.png",
        "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\frame_0011.png"
      ],
      "source": "gemini",
      "strategy": {
        "current_goal": "Collect enough coins to unlock the Canyon area.",
        "subgoal": "Defeat slimes to gather coins and resources.",
        "next_intent": "Level-3 recovery just ran. Do not use recover_if_stuck again this batch. Do not return to the same wall, portal, corner, or locked objective. Move toward open terrain away from the stuck object. Previous planner intent: Approach the targeted slime to defeat it and collect coins.",
        "preferred_skill": "explore_open_path",
        "recovery_skill": "recover_if_stuck",
        "last_seen": [
          "Canyon gate requiring 216M coins",
          "Current coin balance 25.161M",
          "Targeted slime with health bar"
        ],
        "inventory_notes": [
          "Autoroll is enabled"
        ],
        "recent_failures": [],
        "avoid": [
          "Do not click Roll or Roll another Slime; autoroll is enabled in this test.",
          "Do not try to buy the Canyon gate yet, insufficient funds.",
          "Do not use recover_if_stuck immediately after a level-3 recovery handoff.",
          "Do not aim back into the same wall, portal, corner, or locked objective.",
          "Do not click Roll or Roll another Slime; autoroll is enabled."
        ],
        "allowed_skills": [
          "walk_natural",
          "move_toward_visible_objective",
          "approach_visible_target",
          "explore_open_path",
          "jump_obstacle",
          "micro_scan",
          "recover_if_stuck"
        ],
        "stuck_counter": 0,
        "confidence": 0.9,
        "local_rules": {
          "roll_mode": "off",
          "ignore_roll_buttons": true,
          "camera_key_mode": "micro",
          "modal_close_cooldown_s": 4.0,
          "allow_gemini_clicks": false,
          "recovery_ladder": {
            "force": false,
            "level": 3,
            "direction": "left",
            "pressure": 11,
            "recent_recoveries": 5,
            "last_recovery_level": 3,
            "handoff": true,
            "reason": "level-3 recovery just ran; hand control back to Gemini and escape toward open terrain"
          }
        }
      },
      "plan_latency_s": 3.4070000000028813,
      "execution_offset_s": 54.85900000000038,
      "execute_requested": true,
      "executed": true,
      "skip_reason": "",
      "batch": {
        "sequence_id": "skill_explore_open_path",
        "ttl_ms": 4000,
        "interruptible": true,
        "actions": [
          {
            "type": "key_hold",
            "key": "w",
            "start_ms": 0,
            "duration_ms": 547
          },
          {
            "type": "key_hold",
            "key": "d",
            "start_ms": 62,
            "duration_ms": 954
          },
          {
            "type": "key_tap",
            "key": "space",
            "start_ms": 375,
            "duration_ms": 187
          },
          {
            "type": "key_tap",
            "key": "space",
            "start_ms": 1109,
            "duration_ms": 188
          },
          {
            "type": "key_hold",
            "key": "a",
            "start_ms": 1281,
            "duration_ms": 1047
          },
          {
            "type": "key_tap",
            "key": "space",
            "start_ms": 1797,
            "duration_ms": 172
          },
          {
            "type": "key_hold",
            "key": "w",
            "start_ms": 2078,
            "duration_ms": 922
          },
          {
            "type": "key_tap",
            "key": "space",
            "start_ms": 2500,
            "duration_ms": 156
          },
          {
            "type": "key_hold",
            "key": "d",
            "start_ms": 2625,
            "duration_ms": 375
          },
          {
            "type": "key_hold",
            "key": "shift",
            "start_ms": 0,
            "duration_ms": 1600
          }
        ],
        "skill_trace": [
          "explore_open_path"
        ],
        "movement_chain_trace": [
          "human_forward_right_jump_chain_zigzag_02"
        ]
      },
      "events": [
        {
          "at_ms": 0,
          "order": 10,
          "op": "key_down",
          "source": 0,
          "key": "w"
        },
        {
          "at_ms": 29,
          "order": 10,
          "op": "key_down",
          "source": 9,
          "key": "shift"
        },
        {
          "at_ms": 100,
          "order": 10,
          "op": "key_down",
          "source": 1,
          "key": "d"
        },
        {
          "at_ms": 312,
          "order": 10,
          "op": "key_down",
          "source": 2,
          "key": "space"
        },
        {
          "at_ms": 611,
          "order": 90,
          "op": "key_up",
          "source": 0,
          "key": "w"
        },
        {
          "at_ms": 711,
          "order": 90,
          "op": "key_up",
          "source": 2,
          "key": "space"
        },
        {
          "at_ms": 958,
          "order": 90,
          "op": "key_up",
          "source": 1,
          "key": "d"
        },
        {
          "at_ms": 1164,
          "order": 10,
          "op": "key_down",
          "source": 3,
          "key": "space"
        },
        {
          "at_ms": 1264,
          "order": 10,
          "op": "key_down",
          "source": 4,
          "key": "a"
        },
        {
          "at_ms": 1364,
          "order": 90,
          "op": "key_up",
          "source": 3,
          "key": "space"
        },
        {
          "at_ms": 1638,
          "order": 90,
          "op": "key_up",
          "source": 9,
          "key": "shift"
        },
        {
          "at_ms": 1743,
          "order": 10,
          "op": "key_down",
          "source": 5,
          "key": "space"
        },
        {
          "at_ms": 1949,
          "order": 90,
          "op": "key_up",
          "source": 5,
          "key": "space"
        },
        {
          "at_ms": 2088,
          "order": 10,
          "op": "key_down",
          "source": 6,
          "key": "w"
        },
        {
          "at_ms": 2314,
          "order": 90,
          "op": "key_up",
          "source": 4,
          "key": "a"
        },
        {
          "at_ms": 2545,
          "order": 10,
          "op": "key_down",
          "source": 7,
          "key": "space"
        },
        {
          "at_ms": 2645,
          "order": 10,
          "op": "key_down",
          "source": 8,
          "key": "d"
        },
        {
          "at_ms": 2745,
          "order": 90,
          "op": "key_up",
          "source": 7,
          "key": "space"
        },
        {
          "at_ms": 2956,
          "order": 90,
          "op": "key_up",
          "source": 6,
          "key": "w"
        },
        {
          "at_ms": 2956,
          "order": 90,
          "op": "key_up",
          "source": 8,
          "key": "d"
        }
      ],
      "absolute_events": [
        {
          "at_ms": 54859,
          "order": 10,
          "op": "key_down",
          "source": 0,
          "key": "w",
          "batch_index": 11
        },
        {
          "at_ms": 54888,
          "order": 10,
          "op": "key_down",
          "source": 9,
          "key": "shift",
          "batch_index": 11
        },
        {
          "at_ms": 54959,
          "order": 10,
          "op": "key_down",
          "source": 1,
          "key": "d",
          "batch_index": 11
        },
        {
          "at_ms": 55171,
          "order": 10,
          "op": "key_down",
          "source": 2,
          "key": "space",
          "batch_index": 11
        },
        {
          "at_ms": 55470,
          "order": 90,
          "op": "key_up",
          "source": 0,
          "key": "w",
          "batch_index": 11
        },
        {
          "at_ms": 55570,
          "order": 90,
          "op": "key_up",
          "source": 2,
          "key": "space",
          "batch_index": 11
        },
        {
          "at_ms": 55817,
          "order": 90,
          "op": "key_up",
          "source": 1,
          "key": "d",
          "batch_index": 11
        },
        {
          "at_ms": 56023,
          "order": 10,
          "op": "key_down",
          "source": 3,
          "key": "space",
          "batch_index": 11
        },
        {
          "at_ms": 56123,
          "order": 10,
          "op": "key_down",
          "source": 4,
          "key": "a",
          "batch_index": 11
        },
        {
          "at_ms": 56223,
          "order": 90,
          "op": "key_up",
          "source": 3,
          "key": "space",
          "batch_index": 11
        },
        {
          "at_ms": 56497,
          "order": 90,
          "op": "key_up",
          "source": 9,
          "key": "shift",
          "batch_index": 11
        },
        {
          "at_ms": 56602,
          "order": 10,
          "op": "key_down",
          "source": 5,
          "key": "space",
          "batch_index": 11
        },
        {
          "at_ms": 56808,
          "order": 90,
          "op": "key_up",
          "source": 5,
          "key": "space",
          "batch_index": 11
        },
        {
          "at_ms": 56947,
          "order": 10,
          "op": "key_down",
          "source": 6,
          "key": "w",
          "batch_index": 11
        },
        {
          "at_ms": 57173,
          "order": 90,
          "op": "key_up",
          "source": 4,
          "key": "a",
          "batch_index": 11
        },
        {
          "at_ms": 57404,
          "order": 10,
          "op": "key_down",
          "source": 7,
          "key": "space",
          "batch_index": 11
        },
        {
          "at_ms": 57504,
          "order": 10,
          "op": "key_down",
          "source": 8,
          "key": "d",
          "batch_index": 11
        },
        {
          "at_ms": 57604,
          "order": 90,
          "op": "key_up",
          "source": 7,
          "key": "space",
          "batch_index": 11
        },
        {
          "at_ms": 57815,
          "order": 90,
          "op": "key_up",
          "source": 6,
          "key": "w",
          "batch_index": 11
        },
        {
          "at_ms": 57815,
          "order": 90,
          "op": "key_up",
          "source": 8,
          "key": "d",
          "batch_index": 11
        }
      ],
      "recovery_context": {
        "force": false,
        "level": 3,
        "direction": "left",
        "pressure": 11,
        "recent_recoveries": 5,
        "last_recovery_level": 3,
        "handoff": true,
        "reason": "level-3 recovery just ran; hand control back to Gemini and escape toward open terrain"
      }
    },
    {
      "batch_index": 12,
      "screenshot": "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\frame_0012.png",
      "frame_history": [
        "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\sample_0036.png",
        "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\sample_0037.png",
        "C:\\Coding\\roblox-gemini-test\\recordings\\roblox-20260518-201917\\frames\\frame_0012.png"
      ],
      "source": "gemini",
      "strategy": {
        "current_goal": "Collect enough coins to unlock the Canyon area.",
        "subgoal": "Get unstuck from the tree and find more slimes to defeat.",
        "next_intent": "Back away from the tree trunk blocking the view and turn towards open ground.",
        "preferred_skill": "recover_if_stuck",
        "recovery_skill": "recover_if_stuck",
        "last_seen": [
          "Large tree trunk blocking the camera",
          "Canyon gate requiring 216M coins",
          "Current coin balance 30.538M"
        ],
        "inventory_notes": [
          "Autoroll is enabled"
        ],
        "recent_failures": [
          "Repeatedly stuck against geometry, triggering multiple watchdog recoveries."
        ],
        "avoid": [
          "Do not click Roll or Roll another Slime; autoroll is enabled.",
          "Do not walk forward into the tree trunk."
        ],
        "allowed_skills": [
          "walk_natural",
          "move_toward_visible_objective",
          "approach_visible_target",
          "explore_open_path",
          "jump_obstacle",
          "micro_scan",
          "recover_if_stuck"
        ],
        "stuck_counter": 4,
        "confidence": 0.9,
        "local_rules": {
          "roll_mode": "off",
          "ignore_roll_buttons": true,
          "camera_key_mode": "micro",
          "modal_close_cooldown_s": 4.0,
          "allow_gemini_clicks": false,
          "recovery_ladder": {
            "force": true,
            "level": 3,
            "direction": "left",
            "pressure": 12,
            "recent_recoveries": 5,
            "last_recovery_level": 3,
            "handoff": false,
            "reason": "repeated recoveries failed; force maximum turn-away escape and avoid the same wall/objective"
          }
        }
      },
      "plan_latency_s": 4.09400000000096,
      "execution_offset_s": 60.40599999999904,
      "execute_requested": true,
      "executed": true,
      "skip_reason": "",
      "batch": {
        "sequence_id": "skill_recover_if_stuck",
        "ttl_ms": 3500,
        "interruptible": true,
        "actions": [
          {
            "type": "key_hold",
            "key": "s",
            "start_ms": 0,
            "duration_ms": 1180
          },
          {
            "type": "key_hold",
            "key": "d",
            "start_ms": 120,
            "duration_ms": 520
          },
          {
            "type": "key_hold",
            "key": "right",
            "start_ms": 420,
            "duration_ms": 2000
          },
          {
            "type": "key_hold",
            "key": "a",
            "start_ms": 700,
            "duration_ms": 480
          },
          {
            "type": "key_hold",
            "key": "d",
            "start_ms": 1260,
            "duration_ms": 780
          },
          {
            "type": "key_hold",
            "key": "w",
            "start_ms": 1560,
            "duration_ms": 1900
          },
          {
            "type": "key_tap",
            "key": "space",
            "start_ms": 2040,
            "duration_ms": 140
          }
        ],
        "skill_trace": [
          "recover_if_stuck"
        ]
      },
      "events": [
        {
          "at_ms": 0,
          "order": 10,
          "op": "key_down",
          "source": 0,
          "key": "s"
        },
        {
          "at_ms": 100,
          "order": 10,
          "op": "key_down",
          "source": 1,
          "key": "d"
        },
        {
          "at_ms": 473,
          "order": 10,
          "op": "key_down",
          "source": 2,
          "key": "right"
        },
        {
          "at_ms": 675,
          "order": 90,
          "op": "key_up",
          "source": 1,
          "key": "d"
        },
        {
          "at_ms": 775,
          "order": 10,
          "op": "key_down",
          "source": 3,
          "key": "a"
        },
        {
          "at_ms": 1144,
          "order": 90,
          "op": "key_up",
          "source": 0,
          "key": "s"
        },
        {
          "at_ms": 1144,
          "order": 90,
          "op": "key_up",
          "source": 3,
          "key": "a"
        },
        {
          "at_ms": 1268,
          "order": 10,
          "op": "key_down",
          "source": 4,
          "key": "d"
        },
        {
          "at_ms": 1593,
          "order": 10,
          "op": "key_down",
          "source": 5,
          "key": "w"
        },
        {
          "at_ms": 2084,
          "order": 10,
          "op": "key_down",
          "source": 6,
          "key": "space"
        },
        {
          "at_ms": 2084,
          "order": 90,
          "op": "key_up",
          "source": 4,
          "key": "d"
        },
        {
          "at_ms": 2184,
          "order": 90,
          "op": "key_up",
          "source": 6,
          "key": "space"
        },
        {
          "at_ms": 2435,
          "order": 90,
          "op": "key_up",
          "source": 2,
          "key": "right"
        },
        {
          "at_ms": 3498,
          "order": 90,
          "op": "key_up",
          "source": 5,
          "key": "w"
        }
      ],
      "absolute_events": [
        {
          "at_ms": 60406,
          "order": 10,
          "op": "key_down",
          "source": 0,
          "key": "s",
          "batch_index": 12
        },
        {
          "at_ms": 60506,
          "order": 10,
          "op": "key_down",
          "source": 1,
          "key": "d",
          "batch_index": 12
        },
        {
          "at_ms": 60879,
          "order": 10,
          "op": "key_down",
          "source": 2,
          "key": "right",
          "batch_index": 12
        },
        {
          "at_ms": 61081,
          "order": 90,
          "op": "key_up",
          "source": 1,
          "key": "d",
          "batch_index": 12
        },
        {
          "at_ms": 61181,
          "order": 10,
          "op": "key_down",
          "source": 3,
          "key": "a",
          "batch_index": 12
        },
        {
          "at_ms": 61550,
          "order": 90,
          "op": "key_up",
          "source": 0,
          "key": "s",
          "batch_index": 12
        },
        {
          "at_ms": 61550,
          "order": 90,
          "op": "key_up",
          "source": 3,
          "key": "a",
          "batch_index": 12
        },
        {
          "at_ms": 61674,
          "order": 10,
          "op": "key_down",
          "source": 4,
          "key": "d",
          "batch_index": 12
        },
        {
          "at_ms": 61999,
          "order": 10,
          "op": "key_down",
          "source": 5,
          "key": "w",
          "batch_index": 12
        },
        {
          "at_ms": 62490,
          "order": 10,
          "op": "key_down",
          "source": 6,
          "key": "space",
          "batch_index": 12
        },
        {
          "at_ms": 62490,
          "order": 90,
          "op": "key_up",
          "source": 4,
          "key": "d",
          "batch_index": 12
        },
        {
          "at_ms": 62590,
          "order": 90,
          "op": "key_up",
          "source": 6,
          "key": "space",
          "batch_index": 12
        },
        {
          "at_ms": 62841,
          "order": 90,
          "op": "key_up",
          "source": 2,
          "key": "right",
          "batch_index": 12
        },
        {
          "at_ms": 63904,
          "order": 90,
          "op": "key_up",
          "source": 5,
          "key": "w",
          "batch_index": 12
        }
      ],
      "recovery_context": {
        "force": true,
        "level": 3,
        "direction": "left",
        "pressure": 12,
        "recent_recoveries": 5,
        "last_recovery_level": 3,
        "handoff": false,
        "reason": "repeated recoveries failed; force maximum turn-away escape and avoid the same wall/objective"
      }
    }
  ],
  "errors": [],
  "overlay_events": [
    {
      "at_ms": 5175,
      "order": 10,
      "op": "key_down",
      "source": 0,
      "key": "a",
      "batch_index": 0
    },
    {
      "at_ms": 5329,
      "order": 10,
      "op": "key_down",
      "source": 1,
      "key": "d",
      "batch_index": 0
    },
    {
      "at_ms": 5329,
      "order": 90,
      "op": "key_up",
      "source": 0,
      "key": "a",
      "batch_index": 0
    },
    {
      "at_ms": 5466,
      "order": 10,
      "op": "key_down",
      "source": 2,
      "key": "a",
      "batch_index": 0
    },
    {
      "at_ms": 5566,
      "order": 90,
      "op": "key_up",
      "source": 1,
      "key": "d",
      "batch_index": 0
    },
    {
      "at_ms": 5666,
      "order": 10,
      "op": "key_down",
      "source": 3,
      "key": "w",
      "batch_index": 0
    },
    {
      "at_ms": 5926,
      "order": 10,
      "op": "key_down",
      "source": 4,
      "key": "space",
      "batch_index": 0
    },
    {
      "at_ms": 6036,
      "order": 90,
      "op": "key_up",
      "source": 4,
      "key": "space",
      "batch_index": 0
    },
    {
      "at_ms": 6469,
      "order": 10,
      "op": "key_down",
      "source": 5,
      "key": "d",
      "batch_index": 0
    },
    {
      "at_ms": 6569,
      "order": 90,
      "op": "key_up",
      "source": 2,
      "key": "a",
      "batch_index": 0
    },
    {
      "at_ms": 6681,
      "order": 90,
      "op": "key_up",
      "source": 3,
      "key": "w",
      "batch_index": 0
    },
    {
      "at_ms": 7074,
      "order": 10,
      "op": "key_down",
      "source": 6,
      "key": "w",
      "batch_index": 0
    },
    {
      "at_ms": 7187,
      "order": 90,
      "op": "key_up",
      "source": 5,
      "key": "d",
      "batch_index": 0
    },
    {
      "at_ms": 7678,
      "order": 10,
      "op": "key_down",
      "source": 7,
      "key": "a",
      "batch_index": 0
    },
    {
      "at_ms": 7995,
      "order": 90,
      "op": "key_up",
      "source": 6,
      "key": "w",
      "batch_index": 0
    },
    {
      "at_ms": 7995,
      "order": 90,
      "op": "key_up",
      "source": 7,
      "key": "a",
      "batch_index": 0
    },
    {
      "at_ms": 10229,
      "order": 10,
      "op": "key_down",
      "source": 0,
      "key": "a",
      "batch_index": 1
    },
    {
      "at_ms": 10353,
      "order": 10,
      "op": "key_down",
      "source": 1,
      "key": "d",
      "batch_index": 1
    },
    {
      "at_ms": 10353,
      "order": 90,
      "op": "key_up",
      "source": 0,
      "key": "a",
      "batch_index": 1
    },
    {
      "at_ms": 10482,
      "order": 10,
      "op": "key_down",
      "source": 2,
      "key": "a",
      "batch_index": 1
    },
    {
      "at_ms": 10582,
      "order": 90,
      "op": "key_up",
      "source": 1,
      "key": "d",
      "batch_index": 1
    },
    {
      "at_ms": 10682,
      "order": 10,
      "op": "key_down",
      "source": 3,
      "key": "w",
      "batch_index": 1
    },
    {
      "at_ms": 10833,
      "order": 10,
      "op": "key_down",
      "source": 4,
      "key": "space",
      "batch_index": 1
    },
    {
      "at_ms": 10996,
      "order": 90,
      "op": "key_up",
      "source": 4,
      "key": "space",
      "batch_index": 1
    },
    {
      "at_ms": 11328,
      "order": 10,
      "op": "key_down",
      "source": 5,
      "key": "d",
      "batch_index": 1
    },
    {
      "at_ms": 11440,
      "order": 90,
      "op": "key_up",
      "source": 2,
      "key": "a",
      "batch_index": 1
    },
    {
      "at_ms": 11710,
      "order": 90,
      "op": "key_up",
      "source": 3,
      "key": "w",
      "batch_index": 1
    },
    {
      "at_ms": 12133,
      "order": 10,
      "op": "key_down",
      "source": 6,
      "key": "w",
      "batch_index": 1
    },
    {
      "at_ms": 12233,
      "order": 90,
      "op": "key_up",
      "source": 5,
      "key": "d",
      "batch_index": 1
    },
    {
      "at_ms": 12564,
      "order": 10,
      "op": "key_down",
      "source": 7,
      "key": "a",
      "batch_index": 1
    },
    {
      "at_ms": 12964,
      "order": 90,
      "op": "key_up",
      "source": 6,
      "key": "w",
      "batch_index": 1
    },
    {
      "at_ms": 12964,
      "order": 90,
      "op": "key_up",
      "source": 7,
      "key": "a",
      "batch_index": 1
    },
    {
      "at_ms": 15078,
      "order": 10,
      "op": "key_down",
      "source": 0,
      "key": "w",
      "batch_index": 2
    },
    {
      "at_ms": 15216,
      "order": 10,
      "op": "key_down",
      "source": 1,
      "key": "a",
      "batch_index": 2
    },
    {
      "at_ms": 15567,
      "order": 90,
      "op": "key_up",
      "source": 0,
      "key": "w",
      "batch_index": 2
    },
    {
      "at_ms": 16286,
      "order": 90,
      "op": "key_up",
      "source": 1,
      "key": "a",
      "batch_index": 2
    },
    {
      "at_ms": 16435,
      "order": 10,
      "op": "key_down",
      "source": 2,
      "key": "d",
      "batch_index": 2
    },
    {
      "at_ms": 16949,
      "order": 90,
      "op": "key_up",
      "source": 2,
      "key": "d",
      "batch_index": 2
    },
    {
      "at_ms": 17049,
      "order": 10,
      "op": "key_down",
      "source": 3,
      "key": "a",
      "batch_index": 2
    },
    {
      "at_ms": 17486,
      "order": 10,
      "op": "key_down",
      "source": 4,
      "key": "w",
      "batch_index": 2
    },
    {
      "at_ms": 17586,
      "order": 90,
      "op": "key_up",
      "source": 3,
      "key": "a",
      "batch_index": 2
    },
    {
      "at_ms": 17686,
      "order": 10,
      "op": "key_down",
      "source": 5,
      "key": "d",
      "batch_index": 2
    },
    {
      "at_ms": 17926,
      "order": 10,
      "op": "key_down",
      "source": 6,
      "key": "space",
      "batch_index": 2
    },
    {
      "at_ms": 18034,
      "order": 90,
      "op": "key_up",
      "source": 4,
      "key": "w",
      "batch_index": 2
    },
    {
      "at_ms": 18034,
      "order": 90,
      "op": "key_up",
      "source": 5,
      "key": "d",
      "batch_index": 2
    },
    {
      "at_ms": 18034,
      "order": 90,
      "op": "key_up",
      "source": 6,
      "key": "space",
      "batch_index": 2
    },
    {
      "at_ms": 18375,
      "order": 10,
      "op": "key_down",
      "source": 0,
      "key": "s",
      "batch_index": 3
    },
    {
      "at_ms": 18514,
      "order": 10,
      "op": "key_down",
      "source": 1,
      "key": "d",
      "batch_index": 3
    },
    {
      "at_ms": 18756,
      "order": 10,
      "op": "key_down",
      "source": 2,
      "key": "right",
      "batch_index": 3
    },
    {
      "at_ms": 18991,
      "order": 90,
      "op": "key_up",
      "source": 1,
      "key": "d",
      "batch_index": 3
    },
    {
      "at_ms": 19091,
      "order": 10,
      "op": "key_down",
      "source": 3,
      "key": "a",
      "batch_index": 3
    },
    {
      "at_ms": 19493,
      "order": 90,
      "op": "key_up",
      "source": 0,
      "key": "s",
      "batch_index": 3
    },
    {
      "at_ms": 19493,
      "order": 90,
      "op": "key_up",
      "source": 3,
      "key": "a",
      "batch_index": 3
    },
    {
      "at_ms": 19603,
      "order": 10,
      "op": "key_down",
      "source": 4,
      "key": "d",
      "batch_index": 3
    },
    {
      "at_ms": 19927,
      "order": 10,
      "op": "key_down",
      "source": 5,
      "key": "w",
      "batch_index": 3
    },
    {
      "at_ms": 20416,
      "order": 10,
      "op": "key_down",
      "source": 6,
      "key": "space",
      "batch_index": 3
    },
    {
      "at_ms": 20416,
      "order": 90,
      "op": "key_up",
      "source": 4,
      "key": "d",
      "batch_index": 3
    },
    {
      "at_ms": 20538,
      "order": 90,
      "op": "key_up",
      "source": 6,
      "key": "space",
      "batch_index": 3
    },
    {
      "at_ms": 20726,
      "order": 90,
      "op": "key_up",
      "source": 2,
      "key": "right",
      "batch_index": 3
    },
    {
      "at_ms": 21891,
      "order": 90,
      "op": "key_up",
      "source": 5,
      "key": "w",
      "batch_index": 3
    },
    {
      "at_ms": 23437,
      "order": 10,
      "op": "key_down",
      "source": 0,
      "key": "w",
      "batch_index": 4
    },
    {
      "at_ms": 23537,
      "order": 10,
      "op": "key_down",
      "source": 1,
      "key": "d",
      "batch_index": 4
    },
    {
      "at_ms": 23748,
      "order": 10,
      "op": "key_down",
      "source": 2,
      "key": "space",
      "batch_index": 4
    },
    {
      "at_ms": 23949,
      "order": 90,
      "op": "key_up",
      "source": 0,
      "key": "w",
      "batch_index": 4
    },
    {
      "at_ms": 24049,
      "order": 90,
      "op": "key_up",
      "source": 2,
      "key": "space",
      "batch_index": 4
    },
    {
      "at_ms": 24500,
      "order": 90,
      "op": "key_up",
      "source": 1,
      "key": "d",
      "batch_index": 4
    },
    {
      "at_ms": 24600,
      "order": 10,
      "op": "key_down",
      "source": 3,
      "key": "space",
      "batch_index": 4
    },
    {
      "at_ms": 24700,
      "order": 10,
      "op": "key_down",
      "source": 4,
      "key": "a",
      "batch_index": 4
    },
    {
      "at_ms": 24800,
      "order": 90,
      "op": "key_up",
      "source": 3,
      "key": "space",
      "batch_index": 4
    },
    {
      "at_ms": 25183,
      "order": 10,
      "op": "key_down",
      "source": 5,
      "key": "space",
      "batch_index": 4
    },
    {
      "at_ms": 25375,
      "order": 90,
      "op": "key_up",
      "source": 5,
      "key": "space",
      "batch_index": 4
    },
    {
      "at_ms": 25511,
      "order": 10,
      "op": "key_down",
      "source": 6,
      "key": "w",
      "batch_index": 4
    },
    {
      "at_ms": 25734,
      "order": 90,
      "op": "key_up",
      "source": 4,
      "key": "a",
      "batch_index": 4
    },
    {
      "at_ms": 25910,
      "order": 10,
      "op": "key_down",
      "source": 7,
      "key": "space",
      "batch_index": 4
    },
    {
      "at_ms": 26050,
      "order": 10,
      "op": "key_down",
      "source": 8,
      "key": "d",
      "batch_index": 4
    },
    {
      "at_ms": 26150,
      "order": 90,
      "op": "key_up",
      "source": 7,
      "key": "space",
      "batch_index": 4
    },
    {
      "at_ms": 26367,
      "order": 90,
      "op": "key_up",
      "source": 6,
      "key": "w",
      "batch_index": 4
    },
    {
      "at_ms": 26367,
      "order": 90,
      "op": "key_up",
      "source": 8,
      "key": "d",
      "batch_index": 4
    },
    {
      "at_ms": 28437,
      "order": 10,
      "op": "key_down",
      "source": 0,
      "key": "s",
      "batch_index": 5
    },
    {
      "at_ms": 28594,
      "order": 10,
      "op": "key_down",
      "source": 1,
      "key": "d",
      "batch_index": 5
    },
    {
      "at_ms": 28860,
      "order": 10,
      "op": "key_down",
      "source": 2,
      "key": "right",
      "batch_index": 5
    },
    {
      "at_ms": 29048,
      "order": 90,
      "op": "key_up",
      "source": 1,
      "key": "d",
      "batch_index": 5
    },
    {
      "at_ms": 29189,
      "order": 10,
      "op": "key_down",
      "source": 3,
      "key": "a",
      "batch_index": 5
    },
    {
      "at_ms": 29632,
      "order": 90,
      "op": "key_up",
      "source": 0,
      "key": "s",
      "batch_index": 5
    },
    {
      "at_ms": 29632,
      "order": 90,
      "op": "key_up",
      "source": 3,
      "key": "a",
      "batch_index": 5
    },
    {
      "at_ms": 29732,
      "order": 10,
      "op": "key_down",
      "source": 4,
      "key": "d",
      "batch_index": 5
    },
    {
      "at_ms": 30046,
      "order": 10,
      "op": "key_down",
      "source": 5,
      "key": "w",
      "batch_index": 5
    },
    {
      "at_ms": 30492,
      "order": 10,
      "op": "key_down",
      "source": 6,
      "key": "space",
      "batch_index": 5
    },
    {
      "at_ms": 30492,
      "order": 90,
      "op": "key_up",
      "source": 4,
      "key": "d",
      "batch_index": 5
    },
    {
      "at_ms": 30592,
      "order": 90,
      "op": "key_up",
      "source": 6,
      "key": "space",
      "batch_index": 5
    },
    {
      "at_ms": 30923,
      "order": 90,
      "op": "key_up",
      "source": 2,
      "key": "right",
      "batch_index": 5
    },
    {
      "at_ms": 31929,
      "order": 90,
      "op": "key_up",
      "source": 5,
      "key": "w",
      "batch_index": 5
    },
    {
      "at_ms": 32312,
      "order": 10,
      "op": "key_down",
      "source": 0,
      "key": "s",
      "batch_index": 6
    },
    {
      "at_ms": 32412,
      "order": 10,
      "op": "key_down",
      "source": 1,
      "key": "a",
      "batch_index": 6
    },
    {
      "at_ms": 32736,
      "order": 10,
      "op": "key_down",
      "source": 2,
      "key": "right",
      "batch_index": 6
    },
    {
      "at_ms": 33873,
      "order": 90,
      "op": "key_up",
      "source": 1,
      "key": "a",
      "batch_index": 6
    },
    {
      "at_ms": 33973,
      "order": 90,
      "op": "key_up",
      "source": 0,
      "key": "s",
      "batch_index": 6
    },
    {
      "at_ms": 34073,
      "order": 10,
      "op": "key_down",
      "source": 3,
      "key": "w",
      "batch_index": 6
    },
    {
      "at_ms": 34089,
      "order": 10,
      "op": "key_down",
      "source": 4,
      "key": "a",
      "batch_index": 6
    },
    {
      "at_ms": 34703,
      "order": 10,
      "op": "key_down",
      "source": 5,
      "key": "space",
      "batch_index": 6
    },
    {
      "at_ms": 34803,
      "order": 90,
      "op": "key_up",
      "source": 2,
      "key": "right",
      "batch_index": 6
    },
    {
      "at_ms": 34903,
      "order": 90,
      "op": "key_up",
      "source": 5,
      "key": "space",
      "batch_index": 6
    },
    {
      "at_ms": 35003,
      "order": 90,
      "op": "key_up",
      "source": 4,
      "key": "a",
      "batch_index": 6
    },
    {
      "at_ms": 36257,
      "order": 90,
      "op": "key_up",
      "source": 3,
      "key": "w",
      "batch_index": 6
    },
    {
      "at_ms": 36594,
      "order": 10,
      "op": "key_down",
      "source": 0,
      "key": "s",
      "batch_index": 7
    },
    {
      "at_ms": 36774,
      "order": 10,
      "op": "key_down",
      "source": 1,
      "key": "d",
      "batch_index": 7
    },
    {
      "at_ms": 36951,
      "order": 10,
      "op": "key_down",
      "source": 2,
      "key": "right",
      "batch_index": 7
    },
    {
      "at_ms": 38297,
      "order": 90,
      "op": "key_up",
      "source": 1,
      "key": "d",
      "batch_index": 7
    },
    {
      "at_ms": 38397,
      "order": 90,
      "op": "key_up",
      "source": 0,
      "key": "s",
      "batch_index": 7
    },
    {
      "at_ms": 38497,
      "order": 10,
      "op": "key_down",
      "source": 3,
      "key": "a",
      "batch_index": 7
    },
    {
      "at_ms": 38736,
      "order": 10,
      "op": "key_down",
      "source": 4,
      "key": "w",
      "batch_index": 7
    },
    {
      "at_ms": 38759,
      "order": 10,
      "op": "key_down",
      "source": 5,
      "key": "a",
      "batch_index": 7
    },
    {
      "at_ms": 39070,
      "order": 90,
      "op": "key_up",
      "source": 2,
      "key": "right",
      "batch_index": 7
    },
    {
      "at_ms": 39170,
      "order": 90,
      "op": "key_up",
      "source": 3,
      "key": "a",
      "batch_index": 7
    },
    {
      "at_ms": 39403,
      "order": 10,
      "op": "key_down",
      "source": 6,
      "key": "space",
      "batch_index": 7
    },
    {
      "at_ms": 39529,
      "order": 90,
      "op": "key_up",
      "source": 6,
      "key": "space",
      "batch_index": 7
    },
    {
      "at_ms": 39910,
      "order": 90,
      "op": "key_up",
      "source": 5,
      "key": "a",
      "batch_index": 7
    },
    {
      "at_ms": 40120,
      "order": 10,
      "op": "key_down",
      "source": 7,
      "key": "space",
      "batch_index": 7
    },
    {
      "at_ms": 40346,
      "order": 90,
      "op": "key_up",
      "source": 7,
      "key": "space",
      "batch_index": 7
    },
    {
      "at_ms": 41261,
      "order": 90,
      "op": "key_up",
      "source": 4,
      "key": "w",
      "batch_index": 7
    },
    {
      "at_ms": 41641,
      "order": 10,
      "op": "key_down",
      "source": 0,
      "key": "w",
      "batch_index": 8
    },
    {
      "at_ms": 41741,
      "order": 10,
      "op": "key_down",
      "source": 1,
      "key": "d",
      "batch_index": 8
    },
    {
      "at_ms": 42143,
      "order": 90,
      "op": "key_up",
      "source": 0,
      "key": "w",
      "batch_index": 8
    },
    {
      "at_ms": 42876,
      "order": 90,
      "op": "key_up",
      "source": 1,
      "key": "d",
      "batch_index": 8
    },
    {
      "at_ms": 42976,
      "order": 10,
      "op": "key_down",
      "source": 2,
      "key": "a",
      "batch_index": 8
    },
    {
      "at_ms": 43570,
      "order": 90,
      "op": "key_up",
      "source": 2,
      "key": "a",
      "batch_index": 8
    },
    {
      "at_ms": 43670,
      "order": 10,
      "op": "key_down",
      "source": 3,
      "key": "d",
      "batch_index": 8
    },
    {
      "at_ms": 44045,
      "order": 10,
      "op": "key_down",
      "source": 4,
      "key": "w",
      "batch_index": 8
    },
    {
      "at_ms": 44145,
      "order": 90,
      "op": "key_up",
      "source": 3,
      "key": "d",
      "batch_index": 8
    },
    {
      "at_ms": 44245,
      "order": 10,
      "op": "key_down",
      "source": 5,
      "key": "a",
      "batch_index": 8
    },
    {
      "at_ms": 44564,
      "order": 10,
      "op": "key_down",
      "source": 6,
      "key": "space",
      "batch_index": 8
    },
    {
      "at_ms": 44664,
      "order": 90,
      "op": "key_up",
      "source": 4,
      "key": "w",
      "batch_index": 8
    },
    {
      "at_ms": 44664,
      "order": 90,
      "op": "key_up",
      "source": 5,
      "key": "a",
      "batch_index": 8
    },
    {
      "at_ms": 44664,
      "order": 90,
      "op": "key_up",
      "source": 6,
      "key": "space",
      "batch_index": 8
    },
    {
      "at_ms": 46637,
      "order": 10,
      "op": "key_down",
      "source": 0,
      "key": "a",
      "batch_index": 9
    },
    {
      "at_ms": 46737,
      "order": 10,
      "op": "key_down",
      "source": 1,
      "key": "d",
      "batch_index": 9
    },
    {
      "at_ms": 46737,
      "order": 90,
      "op": "key_up",
      "source": 0,
      "key": "a",
      "batch_index": 9
    },
    {
      "at_ms": 46918,
      "order": 10,
      "op": "key_down",
      "source": 2,
      "key": "a",
      "batch_index": 9
    },
    {
      "at_ms": 47018,
      "order": 90,
      "op": "key_up",
      "source": 1,
      "key": "d",
      "batch_index": 9
    },
    {
      "at_ms": 47118,
      "order": 10,
      "op": "key_down",
      "source": 3,
      "key": "w",
      "batch_index": 9
    },
    {
      "at_ms": 47265,
      "order": 10,
      "op": "key_down",
      "source": 4,
      "key": "space",
      "batch_index": 9
    },
    {
      "at_ms": 47422,
      "order": 90,
      "op": "key_up",
      "source": 4,
      "key": "space",
      "batch_index": 9
    },
    {
      "at_ms": 47863,
      "order": 10,
      "op": "key_down",
      "source": 5,
      "key": "d",
      "batch_index": 9
    },
    {
      "at_ms": 47963,
      "order": 90,
      "op": "key_up",
      "source": 2,
      "key": "a",
      "batch_index": 9
    },
    {
      "at_ms": 48192,
      "order": 90,
      "op": "key_up",
      "source": 3,
      "key": "w",
      "batch_index": 9
    },
    {
      "at_ms": 48534,
      "order": 10,
      "op": "key_down",
      "source": 6,
      "key": "w",
      "batch_index": 9
    },
    {
      "at_ms": 48651,
      "order": 90,
      "op": "key_up",
      "source": 5,
      "key": "d",
      "batch_index": 9
    },
    {
      "at_ms": 48987,
      "order": 10,
      "op": "key_down",
      "source": 7,
      "key": "a",
      "batch_index": 9
    },
    {
      "at_ms": 49470,
      "order": 90,
      "op": "key_up",
      "source": 6,
      "key": "w",
      "batch_index": 9
    },
    {
      "at_ms": 49470,
      "order": 90,
      "op": "key_up",
      "source": 7,
      "key": "a",
      "batch_index": 9
    },
    {
      "at_ms": 49844,
      "order": 10,
      "op": "key_down",
      "source": 0,
      "key": "s",
      "batch_index": 10
    },
    {
      "at_ms": 49973,
      "order": 10,
      "op": "key_down",
      "source": 1,
      "key": "d",
      "batch_index": 10
    },
    {
      "at_ms": 50271,
      "order": 10,
      "op": "key_down",
      "source": 2,
      "key": "right",
      "batch_index": 10
    },
    {
      "at_ms": 51515,
      "order": 90,
      "op": "key_up",
      "source": 1,
      "key": "d",
      "batch_index": 10
    },
    {
      "at_ms": 51615,
      "order": 90,
      "op": "key_up",
      "source": 0,
      "key": "s",
      "batch_index": 10
    },
    {
      "at_ms": 51715,
      "order": 10,
      "op": "key_down",
      "source": 3,
      "key": "a",
      "batch_index": 10
    },
    {
      "at_ms": 52000,
      "order": 10,
      "op": "key_down",
      "source": 4,
      "key": "w",
      "batch_index": 10
    },
    {
      "at_ms": 52015,
      "order": 10,
      "op": "key_down",
      "source": 5,
      "key": "a",
      "batch_index": 10
    },
    {
      "at_ms": 52322,
      "order": 90,
      "op": "key_up",
      "source": 2,
      "key": "right",
      "batch_index": 10
    },
    {
      "at_ms": 52422,
      "order": 90,
      "op": "key_up",
      "source": 3,
      "key": "a",
      "batch_index": 10
    },
    {
      "at_ms": 52578,
      "order": 10,
      "op": "key_down",
      "source": 6,
      "key": "space",
      "batch_index": 10
    },
    {
      "at_ms": 52678,
      "order": 90,
      "op": "key_up",
      "source": 6,
      "key": "space",
      "batch_index": 10
    },
    {
      "at_ms": 53060,
      "order": 90,
      "op": "key_up",
      "source": 5,
      "key": "a",
      "batch_index": 10
    },
    {
      "at_ms": 53443,
      "order": 10,
      "op": "key_down",
      "source": 7,
      "key": "space",
      "batch_index": 10
    },
    {
      "at_ms": 53543,
      "order": 90,
      "op": "key_up",
      "source": 7,
      "key": "space",
      "batch_index": 10
    },
    {
      "at_ms": 54493,
      "order": 90,
      "op": "key_up",
      "source": 4,
      "key": "w",
      "batch_index": 10
    },
    {
      "at_ms": 54859,
      "order": 10,
      "op": "key_down",
      "source": 0,
      "key": "w",
      "batch_index": 11
    },
    {
      "at_ms": 54888,
      "order": 10,
      "op": "key_down",
      "source": 9,
      "key": "shift",
      "batch_index": 11
    },
    {
      "at_ms": 54959,
      "order": 10,
      "op": "key_down",
      "source": 1,
      "key": "d",
      "batch_index": 11
    },
    {
      "at_ms": 55171,
      "order": 10,
      "op": "key_down",
      "source": 2,
      "key": "space",
      "batch_index": 11
    },
    {
      "at_ms": 55470,
      "order": 90,
      "op": "key_up",
      "source": 0,
      "key": "w",
      "batch_index": 11
    },
    {
      "at_ms": 55570,
      "order": 90,
      "op": "key_up",
      "source": 2,
      "key": "space",
      "batch_index": 11
    },
    {
      "at_ms": 55817,
      "order": 90,
      "op": "key_up",
      "source": 1,
      "key": "d",
      "batch_index": 11
    },
    {
      "at_ms": 56023,
      "order": 10,
      "op": "key_down",
      "source": 3,
      "key": "space",
      "batch_index": 11
    },
    {
      "at_ms": 56123,
      "order": 10,
      "op": "key_down",
      "source": 4,
      "key": "a",
      "batch_index": 11
    },
    {
      "at_ms": 56223,
      "order": 90,
      "op": "key_up",
      "source": 3,
      "key": "space",
      "batch_index": 11
    },
    {
      "at_ms": 56497,
      "order": 90,
      "op": "key_up",
      "source": 9,
      "key": "shift",
      "batch_index": 11
    },
    {
      "at_ms": 56602,
      "order": 10,
      "op": "key_down",
      "source": 5,
      "key": "space",
      "batch_index": 11
    },
    {
      "at_ms": 56808,
      "order": 90,
      "op": "key_up",
      "source": 5,
      "key": "space",
      "batch_index": 11
    },
    {
      "at_ms": 56947,
      "order": 10,
      "op": "key_down",
      "source": 6,
      "key": "w",
      "batch_index": 11
    },
    {
      "at_ms": 57173,
      "order": 90,
      "op": "key_up",
      "source": 4,
      "key": "a",
      "batch_index": 11
    },
    {
      "at_ms": 57404,
      "order": 10,
      "op": "key_down",
      "source": 7,
      "key": "space",
      "batch_index": 11
    },
    {
      "at_ms": 57504,
      "order": 10,
      "op": "key_down",
      "source": 8,
      "key": "d",
      "batch_index": 11
    },
    {
      "at_ms": 57604,
      "order": 90,
      "op": "key_up",
      "source": 7,
      "key": "space",
      "batch_index": 11
    },
    {
      "at_ms": 57815,
      "order": 90,
      "op": "key_up",
      "source": 6,
      "key": "w",
      "batch_index": 11
    },
    {
      "at_ms": 57815,
      "order": 90,
      "op": "key_up",
      "source": 8,
      "key": "d",
      "batch_index": 11
    },
    {
      "at_ms": 60406,
      "order": 10,
      "op": "key_down",
      "source": 0,
      "key": "s",
      "batch_index": 12
    },
    {
      "at_ms": 60506,
      "order": 10,
      "op": "key_down",
      "source": 1,
      "key": "d",
      "batch_index": 12
    },
    {
      "at_ms": 60879,
      "order": 10,
      "op": "key_down",
      "source": 2,
      "key": "right",
      "batch_index": 12
    },
    {
      "at_ms": 61081,
      "order": 90,
      "op": "key_up",
      "source": 1,
      "key": "d",
      "batch_index": 12
    },
    {
      "at_ms": 61181,
      "order": 10,
      "op": "key_down",
      "source": 3,
      "key": "a",
      "batch_index": 12
    },
    {
      "at_ms": 61550,
      "order": 90,
      "op": "key_up",
      "source": 0,
      "key": "s",
      "batch_index": 12
    },
    {
      "at_ms": 61550,
      "order": 90,
      "op": "key_up",
      "source": 3,
      "key": "a",
      "batch_index": 12
    },
    {
      "at_ms": 61674,
      "order": 10,
      "op": "key_down",
      "source": 4,
      "key": "d",
      "batch_index": 12
    },
    {
      "at_ms": 61999,
      "order": 10,
      "op": "key_down",
      "source": 5,
      "key": "w",
      "batch_index": 12
    },
    {
      "at_ms": 62490,
      "order": 10,
      "op": "key_down",
      "source": 6,
      "key": "space",
      "batch_index": 12
    },
    {
      "at_ms": 62490,
      "order": 90,
      "op": "key_up",
      "source": 4,
      "key": "d",
      "batch_index": 12
    },
    {
      "at_ms": 62590,
      "order": 90,
      "op": "key_up",
      "source": 6,
      "key": "space",
      "batch_index": 12
    },
    {
      "at_ms": 62841,
      "order": 90,
      "op": "key_up",
      "source": 2,
      "key": "right",
      "batch_index": 12
    },
    {
      "at_ms": 63904,
      "order": 90,
      "op": "key_up",
      "source": 5,
      "key": "w",
      "batch_index": 12
    }
  ],
  "ffmpeg": {
    "stdout": "",
    "stderr": "[in#0/gdigrab @ 0000013784243240] Stream #0: not enough frames to estimate rate; consider increasing probesize\n"
  }
}