# moves

game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.210897
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "8", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}], "Sage": [{"rank": "J", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "Q", "suit": "diamonds"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.217044
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped 6 for Q at pos 4
hand_json:
[{"rank": "8", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}], "Sage": [{"rank": "J", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "Q", "suit": "diamonds"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.223117
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}], "Marcus": [{"rank": "6", "suit": "diamonds"}, {"rank": "9", "suit": "spades"}, {"rank": "6", "suit": "spades"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "Q", "suit": "diamonds"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.229144
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 3 for J at pos 1
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}], "Marcus": [{"rank": "6", "suit": "diamonds"}, {"rank": "9", "suit": "spades"}, {"rank": "6", "suit": "spades"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "Q", "suit": "diamonds"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.235207
player_id: cpu_3
player_name: Maya
action: draw_deck
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}], "Marcus": [{"rank": "6", "suit": "diamonds"}, {"rank": "9", "suit": "spades"}, {"rank": "6", "suit": "spades"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.241198
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 3 for 5 at pos 5
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}], "Marcus": [{"rank": "6", "suit": "diamonds"}, {"rank": "9", "suit": "spades"}, {"rank": "6", "suit": "spades"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.247090
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Marcus": [{"rank": "6", "suit": "diamonds"}, {"rank": "9", "suit": "spades"}, {"rank": "6", "suit": "spades"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "Q", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.258694
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "Q", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.264601
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped 7 for 9 at pos 3
hand_json:
[{"rank": "8", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "Q", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.270287
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}], "Marcus": [{"rank": "6", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "6", "suit": "spades"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "Q", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.276735
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 3 for 10 at pos 4
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}], "Marcus": [{"rank": "6", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "6", "suit": "spades"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "Q", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.282888
player_id: cpu_3
player_name: Maya
action: draw_deck
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}], "Marcus": [{"rank": "6", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "6", "suit": "spades"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "3", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.289620
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 4 for Q at pos 3
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}], "Marcus": [{"rank": "6", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "6", "suit": "spades"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "3", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.295961
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "6", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "6", "suit": "spades"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "3", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.301628
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped K for 4 at pos 5
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

visible_opponents_json:
{"Marcus": [{"rank": "6", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "6", "suit": "spades"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "3", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.307106
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "8", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "3", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.313052
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 4 for 7 at pos 3
hand_json:
[{"rank": "8", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "3", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.320006
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}], "Marcus": [{"rank": "6", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}, {"rank": "6", "suit": "spades"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.325662
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 4 for 5 at pos 5
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}], "Marcus": [{"rank": "6", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}, {"rank": "6", "suit": "spades"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.331784
player_id: cpu_3
player_name: Maya
action: draw_deck
card_rank: K
card_suit: spades
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}], "Marcus": [{"rank": "6", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}, {"rank": "6", "suit": "spades"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "3", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.337559
player_id: cpu_3
player_name: Maya
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped K for 4 at pos 3
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}], "Marcus": [{"rank": "6", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}, {"rank": "6", "suit": "spades"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "3", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.343757
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

visible_opponents_json:
{"Marcus": [{"rank": "6", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}, {"rank": "6", "suit": "spades"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "3", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.355660
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "8", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "3", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.361211
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 2 for 6 at pos 1
hand_json:
[{"rank": "8", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "3", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.367843
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}], "Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "6", "suit": "spades"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.374280
player_id: cpu_2
player_name: Sage
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped K for 4 at pos 5
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}], "Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "6", "suit": "spades"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.380685
player_id: cpu_3
player_name: Maya
action: draw_deck
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}], "Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "6", "suit": "spades"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.387537
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 8 for 9 at pos 1
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}], "Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "6", "suit": "spades"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.393276
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "6", "suit": "spades"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}], "Maya": [{"rank": "8", "suit": "clubs"}, {"rank": "3", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.399191
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "A", "suit": "spades"}
decision_reason: swapped 8 for A at pos 4
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

visible_opponents_json:
{"Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "6", "suit": "spades"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}], "Maya": [{"rank": "8", "suit": "clubs"}, {"rank": "3", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.405009
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: A
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took A from discard
hand_json:
[{"rank": "8", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "8", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}], "Maya": [{"rank": "8", "suit": "clubs"}, {"rank": "3", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.410517
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped A for 6 at pos 4
hand_json:
[{"rank": "8", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "8", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}], "Maya": [{"rank": "8", "suit": "clubs"}, {"rank": "3", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.415880
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "8", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}], "Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Maya": [{"rank": "8", "suit": "clubs"}, {"rank": "3", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.421542
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 10 for 5 at pos 3
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "8", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}], "Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Maya": [{"rank": "8", "suit": "clubs"}, {"rank": "3", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.427454
player_id: cpu_3
player_name: Maya
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "8", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}], "Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "10", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.433133
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 5 for 8 at pos 1
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "8", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}], "Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "10", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.438778
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: took 8 from discard
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

visible_opponents_json:
{"Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "10", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}], "Maya": [{"rank": "5", "suit": "spades"}, {"rank": "3", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.444777
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 8 for 8 at pos 1
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

visible_opponents_json:
{"Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "10", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}], "Maya": [{"rank": "5", "suit": "spades"}, {"rank": "3", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.451394
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: 9
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "8", "suit": "clubs"}, {"rank": "8", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "10", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}], "Maya": [{"rank": "5", "suit": "spades"}, {"rank": "3", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.463214
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: J
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "8", "suit": "clubs"}, {"rank": "8", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}], "Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Maya": [{"rank": "5", "suit": "spades"}, {"rank": "3", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.474160
player_id: cpu_3
player_name: Maya
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "8", "suit": "clubs"}, {"rank": "8", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}], "Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "10", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.480037
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 2 for 5 at pos 1
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "8", "suit": "clubs"}, {"rank": "8", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}], "Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "10", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.486952
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

visible_opponents_json:
{"Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "10", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.493454
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 5 for 8 at pos 1
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

visible_opponents_json:
{"Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "10", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.499838
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "spades"}, {"rank": "8", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "10", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.505804
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped A for 4 at pos 3
hand_json:
[{"rank": "8", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "spades"}, {"rank": "8", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "10", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.512761
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 4 from discard
visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "spades"}, {"rank": "8", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}], "Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.518736
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: swapped 4 for 10 at pos 3
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "spades"}, {"rank": "8", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}], "Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.524825
player_id: cpu_3
player_name: Maya
action: draw_deck
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "spades"}, {"rank": "8", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}], "Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.530619
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 6 for 6 at pos 0
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "spades"}, {"rank": "8", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}], "Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.535880
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

visible_opponents_json:
{"Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}], "Maya": [{"rank": "6", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.541779
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 6 for 8 at pos 4
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

visible_opponents_json:
{"Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}], "Maya": [{"rank": "6", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.547807
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "spades"}, {"rank": "6", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}], "Maya": [{"rank": "6", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.553470
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 4 for 8 at pos 0
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "spades"}, {"rank": "6", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}], "Maya": [{"rank": "6", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.558851
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "spades"}, {"rank": "6", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}], "Marcus": [{"rank": "4", "suit": "spades"}, {"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "Maya": [{"rank": "6", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.570282
player_id: cpu_3
player_name: Maya
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "spades"}, {"rank": "6", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}], "Marcus": [{"rank": "4", "suit": "spades"}, {"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.575878
player_id: cpu_3
player_name: Maya
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped A for 6 at pos 0
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "spades"}, {"rank": "6", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}], "Marcus": [{"rank": "4", "suit": "spades"}, {"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.582311
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

visible_opponents_json:
{"Marcus": [{"rank": "4", "suit": "spades"}, {"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}], "Maya": [{"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.593795
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: 10
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "spades"}, {"rank": "6", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}], "Maya": [{"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.605520
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "spades"}, {"rank": "6", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}], "Marcus": [{"rank": "4", "suit": "spades"}, {"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "Maya": [{"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.611234
player_id: cpu_2
player_name: Sage
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped A for 4 at pos 3
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "spades"}, {"rank": "6", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}], "Marcus": [{"rank": "4", "suit": "spades"}, {"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "Maya": [{"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.617065
player_id: cpu_3
player_name: Maya
action: draw_deck
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "spades"}, {"rank": "6", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}], "Marcus": [{"rank": "4", "suit": "spades"}, {"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.623539
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped 5 for 9 at pos 4
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "spades"}, {"rank": "6", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}], "Marcus": [{"rank": "4", "suit": "spades"}, {"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.630137
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "4", "suit": "spades"}, {"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}], "Maya": [{"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.636351
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "2", "suit": "clubs"}
decision_reason: swapped 8 for 2 at pos 3
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

visible_opponents_json:
{"Marcus": [{"rank": "4", "suit": "spades"}, {"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}], "Maya": [{"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.643111
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: took 2 from discard
visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "spades"}, {"rank": "8", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}], "Maya": [{"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.649896
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped 2 for 4 at pos 0
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "spades"}, {"rank": "8", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}], "Maya": [{"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.656557
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "spades"}, {"rank": "8", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}], "Marcus": [{"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "Maya": [{"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}]}


game_id: 0c1d4955-d8b0-4e9d-8d86-d58aa84b4c2a
timestamp: 2026-01-24 18:51:41.663807
player_id: cpu_2
player_name: Sage
action: discard
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: discarded Q
hand_json:
[{"rank": "10", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "spades"}, {"rank": "7", "suit": "clubs"}, {"rank": "8", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}], "Marcus": [{"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "spades"}, {"rank": "7", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}, {"rank": "J", "suit": "hearts"}], "Maya": [{"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}]}


game_id: cdcae700-251c-4459-a05b-35a5b63ec7db
timestamp: 2026-01-24 18:51:41.680945
player_id: cpu_0
player_name: Priya
action: take_discard
card_rank: 8
card_suit: diamonds
decision_reason: took 8 from discard
hand_json:
[{"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "9", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}], "Maya": [{"rank": "A", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Sofia": [{"rank": "K", "suit": "diamonds"}, {"rank": "Q", "suit": "hearts"}]}


game_id: cdcae700-251c-4459-a05b-35a5b63ec7db
timestamp: 2026-01-24 18:51:41.687154
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: swapped 8 for 10 at pos 3
hand_json:
[{"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "9", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}], "Maya": [{"rank": "A", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Sofia": [{"rank": "K", "suit": "diamonds"}, {"rank": "Q", "suit": "hearts"}]}


game_id: cdcae700-251c-4459-a05b-35a5b63ec7db
timestamp: 2026-01-24 18:51:41.693130
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "8", "suit": "hearts"}, {"rank": "8", "suit": "diamonds"}, {"rank": "Q", "suit": "clubs"}], "Maya": [{"rank": "A", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Sofia": [{"rank": "K", "suit": "diamonds"}, {"rank": "Q", "suit": "hearts"}]}


game_id: cdcae700-251c-4459-a05b-35a5b63ec7db
timestamp: 2026-01-24 18:51:41.699211
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 4 for 9 at pos 2
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "8", "suit": "hearts"}, {"rank": "8", "suit": "diamonds"}, {"rank": "Q", "suit": "clubs"}], "Maya": [{"rank": "A", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Sofia": [{"rank": "K", "suit": "diamonds"}, {"rank": "Q", "suit": "hearts"}]}


game_id: cdcae700-251c-4459-a05b-35a5b63ec7db
timestamp: 2026-01-24 18:51:41.704867
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "8", "suit": "hearts"}, {"rank": "8", "suit": "diamonds"}, {"rank": "Q", "suit": "clubs"}], "Kenji": [{"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}], "Sofia": [{"rank": "K", "suit": "diamonds"}, {"rank": "Q", "suit": "hearts"}]}


game_id: cdcae700-251c-4459-a05b-35a5b63ec7db
timestamp: 2026-01-24 18:51:41.716347
player_id: cpu_3
player_name: Sofia
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "8", "suit": "hearts"}, {"rank": "8", "suit": "diamonds"}, {"rank": "Q", "suit": "clubs"}], "Kenji": [{"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}], "Maya": [{"rank": "A", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: cdcae700-251c-4459-a05b-35a5b63ec7db
timestamp: 2026-01-24 18:51:41.722426
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped 7 for Q at pos 4
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "8", "suit": "hearts"}, {"rank": "8", "suit": "diamonds"}, {"rank": "Q", "suit": "clubs"}], "Kenji": [{"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}], "Maya": [{"rank": "A", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: cdcae700-251c-4459-a05b-35a5b63ec7db
timestamp: 2026-01-24 18:51:41.728248
player_id: cpu_0
player_name: Priya
action: take_discard
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took Q from discard
hand_json:
[{"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}], "Maya": [{"rank": "A", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Sofia": [{"rank": "K", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}]}


game_id: cdcae700-251c-4459-a05b-35a5b63ec7db
timestamp: 2026-01-24 18:51:41.734266
player_id: cpu_0
player_name: Priya
action: swap
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped Q for 6 at pos 4
hand_json:
[{"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}], "Maya": [{"rank": "A", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Sofia": [{"rank": "K", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}]}


game_id: cdcae700-251c-4459-a05b-35a5b63ec7db
timestamp: 2026-01-24 18:51:41.740980
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "8", "suit": "hearts"}, {"rank": "8", "suit": "diamonds"}, {"rank": "Q", "suit": "hearts"}, {"rank": "Q", "suit": "clubs"}], "Maya": [{"rank": "A", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Sofia": [{"rank": "K", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}]}


game_id: cdcae700-251c-4459-a05b-35a5b63ec7db
timestamp: 2026-01-24 18:51:41.747267
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped 4 for 9 at pos 1
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "8", "suit": "hearts"}, {"rank": "8", "suit": "diamonds"}, {"rank": "Q", "suit": "hearts"}, {"rank": "Q", "suit": "clubs"}], "Maya": [{"rank": "A", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Sofia": [{"rank": "K", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}]}


game_id: cdcae700-251c-4459-a05b-35a5b63ec7db
timestamp: 2026-01-24 18:51:41.753754
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "8", "suit": "hearts"}, {"rank": "8", "suit": "diamonds"}, {"rank": "Q", "suit": "hearts"}, {"rank": "Q", "suit": "clubs"}], "Kenji": [{"rank": "4", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}], "Sofia": [{"rank": "K", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}]}


game_id: cdcae700-251c-4459-a05b-35a5b63ec7db
timestamp: 2026-01-24 18:51:41.766113
player_id: cpu_3
player_name: Sofia
action: draw_deck
card_rank: 9
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "8", "suit": "hearts"}, {"rank": "8", "suit": "diamonds"}, {"rank": "Q", "suit": "hearts"}, {"rank": "Q", "suit": "clubs"}], "Kenji": [{"rank": "4", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}], "Maya": [{"rank": "A", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: cdcae700-251c-4459-a05b-35a5b63ec7db
timestamp: 2026-01-24 18:51:41.778557
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "4", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}], "Maya": [{"rank": "A", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Sofia": [{"rank": "K", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}]}


game_id: cdcae700-251c-4459-a05b-35a5b63ec7db
timestamp: 2026-01-24 18:51:41.807479
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "2", "suit": "diamonds"}
decision_reason: swapped 5 for 2 at pos 1
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]


game_id: cdcae700-251c-4459-a05b-35a5b63ec7db
timestamp: 2026-01-24 18:51:41.813153
player_id: cpu_3
player_name: Sofia
action: take_discard
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 2 from discard
visible_opponents_json:
{"Priya": [{"rank": "8", "suit": "hearts"}, {"rank": "8", "suit": "diamonds"}, {"rank": "Q", "suit": "hearts"}, {"rank": "Q", "suit": "clubs"}], "Kenji": [{"rank": "4", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}], "Maya": [{"rank": "A", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: cdcae700-251c-4459-a05b-35a5b63ec7db
timestamp: 2026-01-24 18:51:41.818759
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 2 for 7 at pos 4
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "8", "suit": "hearts"}, {"rank": "8", "suit": "diamonds"}, {"rank": "Q", "suit": "hearts"}, {"rank": "Q", "suit": "clubs"}], "Kenji": [{"rank": "4", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}], "Maya": [{"rank": "A", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: cdcae700-251c-4459-a05b-35a5b63ec7db
timestamp: 2026-01-24 18:51:41.824372
player_id: cpu_0
player_name: Priya
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 7 from discard
visible_opponents_json:
{"Kenji": [{"rank": "4", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}], "Maya": [{"rank": "A", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Sofia": [{"rank": "K", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}]}


game_id: cdcae700-251c-4459-a05b-35a5b63ec7db
timestamp: 2026-01-24 18:51:41.830155
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped 7 for Q at pos 4
hand_json:
[{"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "4", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}], "Maya": [{"rank": "A", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Sofia": [{"rank": "K", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}]}


game_id: cdcae700-251c-4459-a05b-35a5b63ec7db
timestamp: 2026-01-24 18:51:41.835861
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "8", "suit": "hearts"}, {"rank": "8", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "Q", "suit": "clubs"}], "Maya": [{"rank": "A", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Sofia": [{"rank": "K", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}]}


game_id: cdcae700-251c-4459-a05b-35a5b63ec7db
timestamp: 2026-01-24 18:51:41.842213
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped A for 5 at pos 4
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "8", "suit": "hearts"}, {"rank": "8", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "Q", "suit": "clubs"}], "Maya": [{"rank": "A", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Sofia": [{"rank": "K", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}]}


game_id: cdcae700-251c-4459-a05b-35a5b63ec7db
timestamp: 2026-01-24 18:51:41.848589
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "8", "suit": "hearts"}, {"rank": "8", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "Q", "suit": "clubs"}], "Kenji": [{"rank": "4", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}], "Sofia": [{"rank": "K", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}]}


game_id: cdcae700-251c-4459-a05b-35a5b63ec7db
timestamp: 2026-01-24 18:51:41.855170
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 6 for 5 at pos 2
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "8", "suit": "hearts"}, {"rank": "8", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "Q", "suit": "clubs"}], "Kenji": [{"rank": "4", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}], "Sofia": [{"rank": "K", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}]}


game_id: cdcae700-251c-4459-a05b-35a5b63ec7db
timestamp: 2026-01-24 18:51:41.861718
player_id: cpu_3
player_name: Sofia
action: draw_deck
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "8", "suit": "hearts"}, {"rank": "8", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "Q", "suit": "clubs"}], "Kenji": [{"rank": "4", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}], "Maya": [{"rank": "A", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "6", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}]}


game_id: cdcae700-251c-4459-a05b-35a5b63ec7db
timestamp: 2026-01-24 18:51:41.876117
player_id: cpu_0
player_name: Priya
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "4", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}], "Maya": [{"rank": "A", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "6", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}], "Sofia": [{"rank": "K", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}]}


game_id: cdcae700-251c-4459-a05b-35a5b63ec7db
timestamp: 2026-01-24 18:51:41.882168
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 7 for 6 at pos 1
hand_json:
[{"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "4", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}], "Maya": [{"rank": "A", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "6", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}], "Sofia": [{"rank": "K", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}]}


game_id: cdcae700-251c-4459-a05b-35a5b63ec7db
timestamp: 2026-01-24 18:51:41.888973
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "8", "suit": "hearts"}, {"rank": "7", "suit": "diamonds"}, {"rank": "8", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "Q", "suit": "clubs"}], "Maya": [{"rank": "A", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "6", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}], "Sofia": [{"rank": "K", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}]}


game_id: cdcae700-251c-4459-a05b-35a5b63ec7db
timestamp: 2026-01-24 18:51:41.894870
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "2", "suit": "spades"}
decision_reason: swapped 4 for 2 at pos 5
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Priya": [{"rank": "8", "suit": "hearts"}, {"rank": "7", "suit": "diamonds"}, {"rank": "8", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "Q", "suit": "clubs"}], "Maya": [{"rank": "A", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "6", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}], "Sofia": [{"rank": "K", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}]}


game_id: cdcae700-251c-4459-a05b-35a5b63ec7db
timestamp: 2026-01-24 18:51:41.900822
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "8", "suit": "hearts"}, {"rank": "7", "suit": "diamonds"}, {"rank": "8", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "Q", "suit": "clubs"}], "Kenji": [{"rank": "4", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Sofia": [{"rank": "K", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}]}


game_id: cdcae700-251c-4459-a05b-35a5b63ec7db
timestamp: 2026-01-24 18:51:41.906359
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 2 for 6 at pos 2
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "8", "suit": "hearts"}, {"rank": "7", "suit": "diamonds"}, {"rank": "8", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "Q", "suit": "clubs"}], "Kenji": [{"rank": "4", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Sofia": [{"rank": "K", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}]}


game_id: cdcae700-251c-4459-a05b-35a5b63ec7db
timestamp: 2026-01-24 18:51:41.912259
player_id: cpu_3
player_name: Sofia
action: draw_deck
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "8", "suit": "hearts"}, {"rank": "7", "suit": "diamonds"}, {"rank": "8", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "Q", "suit": "clubs"}], "Kenji": [{"rank": "4", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "A", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: cdcae700-251c-4459-a05b-35a5b63ec7db
timestamp: 2026-01-24 18:51:41.923951
player_id: cpu_0
player_name: Priya
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "4", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "A", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Sofia": [{"rank": "K", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}]}


game_id: cdcae700-251c-4459-a05b-35a5b63ec7db
timestamp: 2026-01-24 18:51:41.930093
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped 6 for Q at pos 5
hand_json:
[{"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "4", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "A", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Sofia": [{"rank": "K", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}]}


game_id: cdcae700-251c-4459-a05b-35a5b63ec7db
timestamp: 2026-01-24 18:51:41.935388
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Priya": [{"rank": "8", "suit": "hearts"}, {"rank": "7", "suit": "diamonds"}, {"rank": "8", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}], "Maya": [{"rank": "A", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Sofia": [{"rank": "K", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}]}


game_id: cdcae700-251c-4459-a05b-35a5b63ec7db
timestamp: 2026-01-24 18:51:41.941047
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped 8 for Q at pos 3
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Priya": [{"rank": "8", "suit": "hearts"}, {"rank": "7", "suit": "diamonds"}, {"rank": "8", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}], "Maya": [{"rank": "A", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Sofia": [{"rank": "K", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}]}


game_id: cdcae700-251c-4459-a05b-35a5b63ec7db
timestamp: 2026-01-24 18:51:41.947142
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: J
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "8", "suit": "hearts"}, {"rank": "7", "suit": "diamonds"}, {"rank": "8", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}], "Kenji": [{"rank": "4", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "8", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Sofia": [{"rank": "K", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}]}


game_id: cdcae700-251c-4459-a05b-35a5b63ec7db
timestamp: 2026-01-24 18:51:41.960145
player_id: cpu_3
player_name: Sofia
action: draw_deck
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "8", "suit": "hearts"}, {"rank": "7", "suit": "diamonds"}, {"rank": "8", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}], "Kenji": [{"rank": "4", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "8", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "A", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: cdcae700-251c-4459-a05b-35a5b63ec7db
timestamp: 2026-01-24 18:51:41.966304
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "K", "suit": "spades"}
decision_reason: swapped K for K at pos 3
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "8", "suit": "hearts"}, {"rank": "7", "suit": "diamonds"}, {"rank": "8", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}], "Kenji": [{"rank": "4", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "8", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "A", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: cdcae700-251c-4459-a05b-35a5b63ec7db
timestamp: 2026-01-24 18:51:41.972068
player_id: cpu_0
player_name: Priya
action: take_discard
card_rank: K
card_suit: spades
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took K from discard
hand_json:
[{"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "4", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "8", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "A", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Sofia": [{"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}]}


game_id: cdcae700-251c-4459-a05b-35a5b63ec7db
timestamp: 2026-01-24 18:51:41.977854
player_id: cpu_0
player_name: Priya
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped K for 8 at pos 0
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "4", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "8", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "A", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Sofia": [{"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}]}


game_id: cdcae700-251c-4459-a05b-35a5b63ec7db
timestamp: 2026-01-24 18:51:41.983683
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 8 from discard
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Priya": [{"rank": "K", "suit": "spades"}, {"rank": "7", "suit": "diamonds"}, {"rank": "8", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}], "Maya": [{"rank": "A", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Sofia": [{"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}]}


game_id: cdcae700-251c-4459-a05b-35a5b63ec7db
timestamp: 2026-01-24 18:51:41.989489
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped 8 for 3 at pos 0
hand_json:
[{"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Priya": [{"rank": "K", "suit": "spades"}, {"rank": "7", "suit": "diamonds"}, {"rank": "8", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}], "Maya": [{"rank": "A", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Sofia": [{"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}]}


game_id: cdcae700-251c-4459-a05b-35a5b63ec7db
timestamp: 2026-01-24 18:51:41.995682
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 3 from discard
visible_opponents_json:
{"Priya": [{"rank": "K", "suit": "spades"}, {"rank": "7", "suit": "diamonds"}, {"rank": "8", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}], "Kenji": [{"rank": "8", "suit": "hearts"}, {"rank": "4", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "8", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Sofia": [{"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}]}


game_id: cdcae700-251c-4459-a05b-35a5b63ec7db
timestamp: 2026-01-24 18:51:42.001870
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 3 for 5 at pos 1
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "K", "suit": "spades"}, {"rank": "7", "suit": "diamonds"}, {"rank": "8", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}], "Kenji": [{"rank": "8", "suit": "hearts"}, {"rank": "4", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "8", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Sofia": [{"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}]}


game_id: cdcae700-251c-4459-a05b-35a5b63ec7db
timestamp: 2026-01-24 18:51:42.008140
player_id: cpu_3
player_name: Sofia
action: draw_deck
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "K", "suit": "spades"}, {"rank": "7", "suit": "diamonds"}, {"rank": "8", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}], "Kenji": [{"rank": "8", "suit": "hearts"}, {"rank": "4", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "8", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "A", "suit": "spades"}, {"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: cdcae700-251c-4459-a05b-35a5b63ec7db
timestamp: 2026-01-24 18:51:42.014010
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped A for 9 at pos 1
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "K", "suit": "spades"}, {"rank": "7", "suit": "diamonds"}, {"rank": "8", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}], "Kenji": [{"rank": "8", "suit": "hearts"}, {"rank": "4", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "8", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "A", "suit": "spades"}, {"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: cdcae700-251c-4459-a05b-35a5b63ec7db
timestamp: 2026-01-24 18:51:42.020062
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "8", "suit": "hearts"}, {"rank": "4", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "8", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "A", "suit": "spades"}, {"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Sofia": [{"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}]}


game_id: cdcae700-251c-4459-a05b-35a5b63ec7db
timestamp: 2026-01-24 18:51:42.026932
player_id: cpu_0
player_name: Priya
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped A for 8 at pos 3
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "8", "suit": "hearts"}, {"rank": "4", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "8", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "A", "suit": "spades"}, {"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}, {"rank": "Q", "suit": "diamonds"}], "Sofia": [{"rank": "10", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "10", "suit": "spades"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.044975
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "J", "suit": "spades"}, {"rank": "A", "suit": "spades"}], "River": [{"rank": "Q", "suit": "hearts"}, {"rank": "3", "suit": "spades"}], "Maya": [{"rank": "10", "suit": "spades"}, {"rank": "10", "suit": "diamonds"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.050885
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: swapped 2 for 9 at pos 0
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "J", "suit": "spades"}, {"rank": "A", "suit": "spades"}], "River": [{"rank": "Q", "suit": "hearts"}, {"rank": "3", "suit": "spades"}], "Maya": [{"rank": "10", "suit": "spades"}, {"rank": "10", "suit": "diamonds"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.056560
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "9", "suit": "hearts"}], "River": [{"rank": "Q", "suit": "hearts"}, {"rank": "3", "suit": "spades"}], "Maya": [{"rank": "10", "suit": "spades"}, {"rank": "10", "suit": "diamonds"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.062076
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped 6 for J at pos 1
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "9", "suit": "hearts"}], "River": [{"rank": "Q", "suit": "hearts"}, {"rank": "3", "suit": "spades"}], "Maya": [{"rank": "10", "suit": "spades"}, {"rank": "10", "suit": "diamonds"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.068538
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "9", "suit": "hearts"}], "Kenji": [{"rank": "6", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Maya": [{"rank": "10", "suit": "spades"}, {"rank": "10", "suit": "diamonds"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.075520
player_id: cpu_2
player_name: River
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped 7 for Q at pos 2
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "9", "suit": "hearts"}], "Kenji": [{"rank": "6", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Maya": [{"rank": "10", "suit": "spades"}, {"rank": "10", "suit": "diamonds"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.081570
player_id: cpu_3
player_name: Maya
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "9", "suit": "hearts"}], "Kenji": [{"rank": "6", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "River": [{"rank": "7", "suit": "spades"}, {"rank": "3", "suit": "spades"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.088116
player_id: cpu_3
player_name: Maya
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped A for 10 at pos 1
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "9", "suit": "hearts"}], "Kenji": [{"rank": "6", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "River": [{"rank": "7", "suit": "spades"}, {"rank": "3", "suit": "spades"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.093764
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "6", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "River": [{"rank": "7", "suit": "spades"}, {"rank": "3", "suit": "spades"}], "Maya": [{"rank": "A", "suit": "hearts"}, {"rank": "10", "suit": "diamonds"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.100179
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped 8 for 9 at pos 4
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "6", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "River": [{"rank": "7", "suit": "spades"}, {"rank": "3", "suit": "spades"}], "Maya": [{"rank": "A", "suit": "hearts"}, {"rank": "10", "suit": "diamonds"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.106439
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "8", "suit": "hearts"}], "River": [{"rank": "7", "suit": "spades"}, {"rank": "3", "suit": "spades"}], "Maya": [{"rank": "A", "suit": "hearts"}, {"rank": "10", "suit": "diamonds"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.111820
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped 6 for 4 at pos 4
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "8", "suit": "hearts"}], "River": [{"rank": "7", "suit": "spades"}, {"rank": "3", "suit": "spades"}], "Maya": [{"rank": "A", "suit": "hearts"}, {"rank": "10", "suit": "diamonds"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.117522
player_id: cpu_2
player_name: River
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "8", "suit": "hearts"}], "Kenji": [{"rank": "6", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}, {"rank": "A", "suit": "spades"}], "Maya": [{"rank": "A", "suit": "hearts"}, {"rank": "10", "suit": "diamonds"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.122990
player_id: cpu_2
player_name: River
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 4 for 7 at pos 2
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "8", "suit": "hearts"}], "Kenji": [{"rank": "6", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}, {"rank": "A", "suit": "spades"}], "Maya": [{"rank": "A", "suit": "hearts"}, {"rank": "10", "suit": "diamonds"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.128631
player_id: cpu_3
player_name: Maya
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "8", "suit": "hearts"}], "Kenji": [{"rank": "6", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}, {"rank": "A", "suit": "spades"}], "River": [{"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "spades"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.134260
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 7 for 10 at pos 3
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "8", "suit": "hearts"}], "Kenji": [{"rank": "6", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}, {"rank": "A", "suit": "spades"}], "River": [{"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "spades"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.139997
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "6", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}, {"rank": "A", "suit": "spades"}], "River": [{"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "spades"}], "Maya": [{"rank": "A", "suit": "hearts"}, {"rank": "7", "suit": "spades"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.146446
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 2 for 8 at pos 4
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "6", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}, {"rank": "A", "suit": "spades"}], "River": [{"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "spades"}], "Maya": [{"rank": "A", "suit": "hearts"}, {"rank": "7", "suit": "spades"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.152172
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}], "River": [{"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "spades"}], "Maya": [{"rank": "A", "suit": "hearts"}, {"rank": "7", "suit": "spades"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.165115
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}], "Kenji": [{"rank": "6", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}, {"rank": "A", "suit": "spades"}], "Maya": [{"rank": "A", "suit": "hearts"}, {"rank": "7", "suit": "spades"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.171784
player_id: cpu_2
player_name: River
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped A for 4 at pos 2
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}], "Kenji": [{"rank": "6", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}, {"rank": "A", "suit": "spades"}], "Maya": [{"rank": "A", "suit": "hearts"}, {"rank": "7", "suit": "spades"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.177960
player_id: cpu_3
player_name: Maya
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}], "Kenji": [{"rank": "6", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}, {"rank": "A", "suit": "spades"}], "River": [{"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "spades"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.187912
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 4 for 7 at pos 3
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}], "Kenji": [{"rank": "6", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}, {"rank": "A", "suit": "spades"}], "River": [{"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "spades"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.194408
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "6", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}, {"rank": "A", "suit": "spades"}], "River": [{"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "spades"}], "Maya": [{"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.205765
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: took K from discard
visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}], "River": [{"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "spades"}], "Maya": [{"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.211322
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped K for 6 at pos 1
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}], "River": [{"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "spades"}], "Maya": [{"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.217358
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}], "Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "6", "suit": "clubs"}, {"rank": "A", "suit": "spades"}], "Maya": [{"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.228446
player_id: cpu_3
player_name: Maya
action: draw_deck
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}], "Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "6", "suit": "clubs"}, {"rank": "A", "suit": "spades"}], "River": [{"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "spades"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.234161
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped 3 for 4 at pos 3
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}], "Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "6", "suit": "clubs"}, {"rank": "A", "suit": "spades"}], "River": [{"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "spades"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.239786
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "6", "suit": "clubs"}, {"rank": "A", "suit": "spades"}], "River": [{"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "spades"}], "Maya": [{"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.245710
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 3 for 4 at pos 5
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "6", "suit": "clubs"}, {"rank": "A", "suit": "spades"}], "River": [{"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "spades"}], "Maya": [{"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.251667
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}], "River": [{"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "spades"}], "Maya": [{"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.258021
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 4 for 6 at pos 4
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}], "River": [{"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "spades"}], "Maya": [{"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.265228
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}], "Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "Maya": [{"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.271960
player_id: cpu_2
player_name: River
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped 2 for 3 at pos 4
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}], "Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "Maya": [{"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.277645
player_id: cpu_3
player_name: Maya
action: take_discard
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}], "Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "River": [{"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.284305
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped 3 for Q at pos 0
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}], "Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "River": [{"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.291126
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "River": [{"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.297086
player_id: cpu_0
player_name: Priya
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped A for 3 at pos 5
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "River": [{"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.303292
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}], "River": [{"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.314492
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: K
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}], "Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.320391
player_id: cpu_2
player_name: River
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "A", "suit": "clubs"}
decision_reason: swapped K for A at pos 2
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}], "Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.325884
player_id: cpu_3
player_name: Maya
action: take_discard
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took A from discard
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}], "Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "River": [{"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "hearts"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.331568
player_id: cpu_3
player_name: Maya
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped A for 5 at pos 4
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}], "Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "River": [{"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "hearts"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.337135
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "River": [{"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "hearts"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.348829
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}], "River": [{"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "hearts"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.354309
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped K for 4 at pos 4
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}], "River": [{"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "hearts"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.360893
player_id: cpu_2
player_name: River
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}], "Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.366898
player_id: cpu_2
player_name: River
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 4 for J at pos 0
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}], "Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.373023
player_id: cpu_3
player_name: Maya
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}], "Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "River": [{"rank": "4", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "hearts"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.385504
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "River": [{"rank": "4", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "hearts"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.392253
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "A", "suit": "diamonds"}
decision_reason: swapped 2 for A at pos 5
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "River": [{"rank": "4", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "hearts"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.398639
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: took A from discard
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "River": [{"rank": "4", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "hearts"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.404273
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped A for 7 at pos 2
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "River": [{"rank": "4", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "hearts"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.410208
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.416105
player_id: cpu_2
player_name: River
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 3 for 4 at pos 0
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.421878
player_id: cpu_3
player_name: Maya
action: draw_deck
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "River": [{"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "hearts"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.433627
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "River": [{"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "hearts"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.445674
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 9
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "River": [{"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "hearts"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.474810
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 5 for J at pos 5
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.481502
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "River": [{"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "hearts"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.493830
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "River": [{"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "hearts"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.506061
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.548873
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 5 for Q at pos 0
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}]


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.554710
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "Kenji": [{"rank": "5", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.560509
player_id: cpu_2
player_name: River
action: swap
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped J for 4 at pos 1
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "Kenji": [{"rank": "5", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.566640
player_id: cpu_3
player_name: Maya
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "Kenji": [{"rank": "5", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "River": [{"rank": "3", "suit": "clubs"}, {"rank": "J", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "hearts"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.578000
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "5", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "River": [{"rank": "3", "suit": "clubs"}, {"rank": "J", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "hearts"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.589977
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "River": [{"rank": "3", "suit": "clubs"}, {"rank": "J", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "hearts"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.596181
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 8 for 5 at pos 3
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "River": [{"rank": "3", "suit": "clubs"}, {"rank": "J", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "hearts"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.602759
player_id: cpu_2
player_name: River
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "Kenji": [{"rank": "5", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}, {"rank": "8", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.610042
player_id: cpu_2
player_name: River
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 5 for J at pos 1
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "Kenji": [{"rank": "5", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}, {"rank": "8", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.615881
player_id: cpu_3
player_name: Maya
action: draw_deck
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "Kenji": [{"rank": "5", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}, {"rank": "8", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "River": [{"rank": "3", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "hearts"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.621750
player_id: cpu_3
player_name: Maya
action: swap
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped Q for 6 at pos 2
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "Kenji": [{"rank": "5", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}, {"rank": "8", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "River": [{"rank": "3", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "hearts"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.627823
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "5", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}, {"rank": "8", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "River": [{"rank": "3", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "hearts"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "Q", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}]}


game_id: 14795861-6905-4276-a4a6-e64666d66713
timestamp: 2026-01-24 18:51:42.634321
player_id: cpu_0
player_name: Priya
action: discard
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: discarded Q
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "5", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}, {"rank": "8", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "River": [{"rank": "3", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "hearts"}, {"rank": "2", "suit": "hearts"}, {"rank": "7", "suit": "diamonds"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "Q", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:42.652110
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: K
card_suit: diamonds
decision_reason: took K from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Maya": [{"rank": "J", "suit": "clubs"}, {"rank": "6", "suit": "clubs"}], "Sage": [{"rank": "9", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:42.660438
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped K for 5 at pos 2
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Maya": [{"rank": "J", "suit": "clubs"}, {"rank": "6", "suit": "clubs"}], "Sage": [{"rank": "9", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:42.666543
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 5
card_suit: diamonds
decision_reason: took 5 from discard
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}], "Sage": [{"rank": "9", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:42.672851
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 5 for J at pos 1
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}], "Sage": [{"rank": "9", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:42.679530
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}], "Maya": [{"rank": "5", "suit": "diamonds"}, {"rank": "6", "suit": "clubs"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:42.685440
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: swapped 5 for 9 at pos 2
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}], "Maya": [{"rank": "5", "suit": "diamonds"}, {"rank": "6", "suit": "clubs"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:42.691212
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}], "Maya": [{"rank": "5", "suit": "diamonds"}, {"rank": "6", "suit": "clubs"}], "Sage": [{"rank": "5", "suit": "spades"}, {"rank": "K", "suit": "hearts"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:42.696818
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 2 for 6 at pos 5
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}], "Maya": [{"rank": "5", "suit": "diamonds"}, {"rank": "6", "suit": "clubs"}], "Sage": [{"rank": "5", "suit": "spades"}, {"rank": "K", "suit": "hearts"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:42.706361
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 9
card_suit: spades
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Maya": [{"rank": "5", "suit": "diamonds"}, {"rank": "6", "suit": "clubs"}], "Sage": [{"rank": "5", "suit": "spades"}, {"rank": "K", "suit": "hearts"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:42.717902
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}], "Sage": [{"rank": "5", "suit": "spades"}, {"rank": "K", "suit": "hearts"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:42.729922
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}], "Maya": [{"rank": "5", "suit": "diamonds"}, {"rank": "6", "suit": "clubs"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:42.776645
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 2 for 6 at pos 3
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}]


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:42.782194
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}], "Maya": [{"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:42.787798
player_id: cpu_2
player_name: Sage
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped A for 5 at pos 2
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}], "Maya": [{"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:42.797242
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}], "Maya": [{"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}], "Sage": [{"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:42.808744
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}], "Sage": [{"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:42.814285
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped 5 for Q at pos 3
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Maya": [{"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}], "Sage": [{"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:42.820204
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}], "Sage": [{"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:42.836353
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}], "Maya": [{"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:42.842184
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 4 for 5 at pos 5
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}], "Maya": [{"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:42.848461
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: Q
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}], "Maya": [{"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}], "Sage": [{"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:42.860670
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Maya": [{"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}], "Sage": [{"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:42.872235
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}], "Sage": [{"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:42.925034
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "A", "suit": "spades"}
decision_reason: swapped 8 for A at pos 5
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}]


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:42.930675
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: A
card_suit: spades
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took A from discard
visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}], "Maya": [{"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}, {"rank": "8", "suit": "hearts"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:42.935889
player_id: cpu_2
player_name: Sage
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped A for 4 at pos 5
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}], "Maya": [{"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}, {"rank": "8", "suit": "hearts"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:42.941350
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 4 from discard
visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}], "Maya": [{"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}, {"rank": "8", "suit": "hearts"}], "Sage": [{"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "spades"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:42.947502
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "K", "suit": "clubs"}
decision_reason: swapped 4 for K at pos 4
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}], "Maya": [{"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}, {"rank": "8", "suit": "hearts"}], "Sage": [{"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "spades"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:42.953240
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took K from discard
visible_opponents_json:
{"Maya": [{"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}, {"rank": "8", "suit": "hearts"}], "Sage": [{"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:42.959003
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped K for 5 at pos 3
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Maya": [{"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}, {"rank": "8", "suit": "hearts"}], "Sage": [{"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:42.964767
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}], "Sage": [{"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:42.970959
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 5 for 7 at pos 4
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}], "Sage": [{"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:42.977294
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}], "Maya": [{"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "8", "suit": "hearts"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:42.983099
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped 4 for J at pos 4
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}], "Maya": [{"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "8", "suit": "hearts"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:42.989134
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}], "Maya": [{"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "8", "suit": "hearts"}], "Sage": [{"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "spades"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:42.995544
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "2", "suit": "hearts"}
decision_reason: swapped 3 for 2 at pos 2
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}], "Maya": [{"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "8", "suit": "hearts"}], "Sage": [{"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "spades"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:43.001134
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Maya": [{"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "8", "suit": "hearts"}], "Sage": [{"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:43.006836
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "hearts"}
decision_reason: swapped 2 for 3 at pos 4
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Maya": [{"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "8", "suit": "hearts"}], "Sage": [{"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:43.012334
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}], "Sage": [{"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:43.018150
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 3 for 8 at pos 5
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}], "Sage": [{"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:43.023856
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}], "Maya": [{"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:43.029563
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "K", "suit": "spades"}
decision_reason: swapped 4 for K at pos 1
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}], "Maya": [{"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:43.034882
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: K
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took K from discard
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}], "Maya": [{"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}], "Sage": [{"rank": "4", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "spades"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:43.040522
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped K for 4 at pos 4
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}], "Maya": [{"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}], "Sage": [{"rank": "4", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "spades"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:43.046169
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Maya": [{"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}], "Sage": [{"rank": "4", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "spades"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:43.060241
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}], "Sage": [{"rank": "4", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "spades"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:43.066102
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 3 for 8 at pos 2
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}], "Sage": [{"rank": "4", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "spades"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:43.071969
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}], "Maya": [{"rank": "5", "suit": "diamonds"}, {"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "spades"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:43.077749
player_id: cpu_2
player_name: Sage
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped A for 4 at pos 1
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}], "Maya": [{"rank": "5", "suit": "diamonds"}, {"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "spades"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:43.082880
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}], "Maya": [{"rank": "5", "suit": "diamonds"}, {"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}], "Sage": [{"rank": "A", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "spades"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:43.094190
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "5", "suit": "diamonds"}, {"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}], "Sage": [{"rank": "A", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "spades"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:43.106261
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 10
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}], "Sage": [{"rank": "A", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "spades"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:43.219924
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 5 for 7 at pos 0
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}]


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:43.225461
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}], "Maya": [{"rank": "5", "suit": "diamonds"}, {"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}], "Sage": [{"rank": "5", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "spades"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:43.231106
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 5 for 6 at pos 1
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}], "Maya": [{"rank": "5", "suit": "diamonds"}, {"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}], "Sage": [{"rank": "5", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "spades"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:43.236868
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "5", "suit": "diamonds"}, {"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}], "Sage": [{"rank": "5", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "spades"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:43.249328
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}], "Sage": [{"rank": "5", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "spades"}]}


game_id: 40e7a21d-0945-4d4b-abfd-b0633c1e18e5
timestamp: 2026-01-24 18:51:43.254720
player_id: cpu_1
player_name: Maya
action: discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: discarded 7
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Marcus": [{"rank": "4", "suit": "spades"}, {"rank": "7", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}, {"rank": "Q", "suit": "spades"}], "Sage": [{"rank": "5", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "spades"}]}


game_id: 870b5d5e-072a-4ccf-a789-c3ba765d01b4
timestamp: 2026-01-24 18:51:43.273663
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "spades"}], "Maya": [{"rank": "6", "suit": "diamonds"}, {"rank": "J", "suit": "spades"}], "Marcus": [{"rank": "6", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}]}


game_id: 870b5d5e-072a-4ccf-a789-c3ba765d01b4
timestamp: 2026-01-24 18:51:43.284085
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "5", "suit": "clubs"}, {"rank": "5", "suit": "spades"}], "Maya": [{"rank": "6", "suit": "diamonds"}, {"rank": "J", "suit": "spades"}], "Marcus": [{"rank": "6", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}]}


game_id: 870b5d5e-072a-4ccf-a789-c3ba765d01b4
timestamp: 2026-01-24 18:51:43.295218
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "5", "suit": "clubs"}, {"rank": "5", "suit": "spades"}], "Diego": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "spades"}], "Marcus": [{"rank": "6", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}]}


game_id: 870b5d5e-072a-4ccf-a789-c3ba765d01b4
timestamp: 2026-01-24 18:51:43.301462
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped 7 for J at pos 3
hand_json:
[{"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "5", "suit": "clubs"}, {"rank": "5", "suit": "spades"}], "Diego": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "spades"}], "Marcus": [{"rank": "6", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}]}


game_id: 870b5d5e-072a-4ccf-a789-c3ba765d01b4
timestamp: 2026-01-24 18:51:43.307671
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "5", "suit": "clubs"}, {"rank": "5", "suit": "spades"}], "Diego": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "spades"}], "Maya": [{"rank": "6", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}]}


game_id: 870b5d5e-072a-4ccf-a789-c3ba765d01b4
timestamp: 2026-01-24 18:51:43.319830
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "spades"}], "Maya": [{"rank": "6", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}], "Marcus": [{"rank": "6", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}]}


game_id: 870b5d5e-072a-4ccf-a789-c3ba765d01b4
timestamp: 2026-01-24 18:51:43.332615
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "5", "suit": "clubs"}, {"rank": "5", "suit": "spades"}], "Maya": [{"rank": "6", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}], "Marcus": [{"rank": "6", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}]}


game_id: 870b5d5e-072a-4ccf-a789-c3ba765d01b4
timestamp: 2026-01-24 18:51:43.338192
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 4 for 6 at pos 4
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "5", "suit": "clubs"}, {"rank": "5", "suit": "spades"}], "Maya": [{"rank": "6", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}], "Marcus": [{"rank": "6", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}]}


game_id: 870b5d5e-072a-4ccf-a789-c3ba765d01b4
timestamp: 2026-01-24 18:51:43.344036
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "5", "suit": "clubs"}, {"rank": "5", "suit": "spades"}], "Diego": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "spades"}], "Marcus": [{"rank": "6", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}]}


game_id: 870b5d5e-072a-4ccf-a789-c3ba765d01b4
timestamp: 2026-01-24 18:51:43.349703
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "K", "suit": "hearts"}
decision_reason: swapped 6 for K at pos 5
hand_json:
[{"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"River": [{"rank": "5", "suit": "clubs"}, {"rank": "5", "suit": "spades"}], "Diego": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "spades"}], "Marcus": [{"rank": "6", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}]}


game_id: 870b5d5e-072a-4ccf-a789-c3ba765d01b4
timestamp: 2026-01-24 18:51:43.358821
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took K from discard
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "5", "suit": "clubs"}, {"rank": "5", "suit": "spades"}], "Diego": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "spades"}], "Maya": [{"rank": "6", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}, {"rank": "6", "suit": "spades"}]}


game_id: 870b5d5e-072a-4ccf-a789-c3ba765d01b4
timestamp: 2026-01-24 18:51:43.364526
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped K for 6 at pos 0
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "5", "suit": "clubs"}, {"rank": "5", "suit": "spades"}], "Diego": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "spades"}], "Maya": [{"rank": "6", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}, {"rank": "6", "suit": "spades"}]}


game_id: 870b5d5e-072a-4ccf-a789-c3ba765d01b4
timestamp: 2026-01-24 18:51:43.369776
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "spades"}], "Maya": [{"rank": "6", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}, {"rank": "6", "suit": "spades"}], "Marcus": [{"rank": "K", "suit": "hearts"}, {"rank": "5", "suit": "hearts"}]}


game_id: 870b5d5e-072a-4ccf-a789-c3ba765d01b4
timestamp: 2026-01-24 18:51:43.375016
player_id: cpu_0
player_name: River
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 4 for 5 at pos 2
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "spades"}], "Maya": [{"rank": "6", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}, {"rank": "6", "suit": "spades"}], "Marcus": [{"rank": "K", "suit": "hearts"}, {"rank": "5", "suit": "hearts"}]}


game_id: 870b5d5e-072a-4ccf-a789-c3ba765d01b4
timestamp: 2026-01-24 18:51:43.380214
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "spades"}], "Maya": [{"rank": "6", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}, {"rank": "6", "suit": "spades"}], "Marcus": [{"rank": "K", "suit": "hearts"}, {"rank": "5", "suit": "hearts"}]}


game_id: 870b5d5e-072a-4ccf-a789-c3ba765d01b4
timestamp: 2026-01-24 18:51:43.392422
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"River": [{"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "spades"}], "Diego": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "spades"}], "Marcus": [{"rank": "K", "suit": "hearts"}, {"rank": "5", "suit": "hearts"}]}


game_id: 870b5d5e-072a-4ccf-a789-c3ba765d01b4
timestamp: 2026-01-24 18:51:43.404501
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "spades"}], "Diego": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "spades"}], "Maya": [{"rank": "6", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}, {"rank": "6", "suit": "spades"}]}


game_id: 870b5d5e-072a-4ccf-a789-c3ba765d01b4
timestamp: 2026-01-24 18:51:43.410485
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 2 for 5 at pos 4
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "spades"}], "Diego": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "spades"}], "Maya": [{"rank": "6", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}, {"rank": "6", "suit": "spades"}]}


game_id: 870b5d5e-072a-4ccf-a789-c3ba765d01b4
timestamp: 2026-01-24 18:51:43.416500
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "spades"}], "Maya": [{"rank": "6", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}, {"rank": "6", "suit": "spades"}], "Marcus": [{"rank": "K", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}]}


game_id: 870b5d5e-072a-4ccf-a789-c3ba765d01b4
timestamp: 2026-01-24 18:51:43.421861
player_id: cpu_0
player_name: River
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "K", "suit": "clubs"}
decision_reason: swapped 5 for K at pos 0
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "spades"}], "Maya": [{"rank": "6", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}, {"rank": "6", "suit": "spades"}], "Marcus": [{"rank": "K", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}]}


game_id: 870b5d5e-072a-4ccf-a789-c3ba765d01b4
timestamp: 2026-01-24 18:51:43.427071
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: took K from discard
visible_opponents_json:
{"River": [{"rank": "5", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "spades"}], "Maya": [{"rank": "6", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}, {"rank": "6", "suit": "spades"}], "Marcus": [{"rank": "K", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}]}


game_id: 870b5d5e-072a-4ccf-a789-c3ba765d01b4
timestamp: 2026-01-24 18:51:43.434173
player_id: cpu_1
player_name: Diego
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped K for 4 at pos 4
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "5", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "spades"}], "Maya": [{"rank": "6", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}, {"rank": "6", "suit": "spades"}], "Marcus": [{"rank": "K", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}]}


game_id: 870b5d5e-072a-4ccf-a789-c3ba765d01b4
timestamp: 2026-01-24 18:51:43.439598
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: took 4 from discard
visible_opponents_json:
{"River": [{"rank": "5", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "spades"}], "Diego": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "clubs"}], "Marcus": [{"rank": "K", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}]}


game_id: 870b5d5e-072a-4ccf-a789-c3ba765d01b4
timestamp: 2026-01-24 18:51:43.445215
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 4 for 7 at pos 3
hand_json:
[{"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"River": [{"rank": "5", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "spades"}], "Diego": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "clubs"}], "Marcus": [{"rank": "K", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}]}


game_id: 870b5d5e-072a-4ccf-a789-c3ba765d01b4
timestamp: 2026-01-24 18:51:43.450617
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "5", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "spades"}], "Diego": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "clubs"}], "Maya": [{"rank": "6", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}, {"rank": "6", "suit": "spades"}]}


game_id: 870b5d5e-072a-4ccf-a789-c3ba765d01b4
timestamp: 2026-01-24 18:51:43.461888
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "clubs"}], "Maya": [{"rank": "6", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}, {"rank": "6", "suit": "spades"}], "Marcus": [{"rank": "K", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}]}


game_id: 870b5d5e-072a-4ccf-a789-c3ba765d01b4
timestamp: 2026-01-24 18:51:43.467908
player_id: cpu_0
player_name: River
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped 4 for 3 at pos 5
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "clubs"}], "Maya": [{"rank": "6", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}, {"rank": "6", "suit": "spades"}], "Marcus": [{"rank": "K", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}]}


game_id: 870b5d5e-072a-4ccf-a789-c3ba765d01b4
timestamp: 2026-01-24 18:51:43.473546
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "5", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}], "Maya": [{"rank": "6", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}, {"rank": "6", "suit": "spades"}], "Marcus": [{"rank": "K", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}]}


game_id: 870b5d5e-072a-4ccf-a789-c3ba765d01b4
timestamp: 2026-01-24 18:51:43.479488
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped 3 for Q at pos 5
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"River": [{"rank": "5", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}], "Maya": [{"rank": "6", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}, {"rank": "6", "suit": "spades"}], "Marcus": [{"rank": "K", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}]}


game_id: 870b5d5e-072a-4ccf-a789-c3ba765d01b4
timestamp: 2026-01-24 18:51:43.485149
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"River": [{"rank": "5", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}], "Diego": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}], "Marcus": [{"rank": "K", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}]}


game_id: 870b5d5e-072a-4ccf-a789-c3ba765d01b4
timestamp: 2026-01-24 18:51:43.497294
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "5", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}], "Diego": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}], "Maya": [{"rank": "6", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}, {"rank": "6", "suit": "spades"}]}


game_id: 870b5d5e-072a-4ccf-a789-c3ba765d01b4
timestamp: 2026-01-24 18:51:43.503098
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "hearts"}
decision_reason: swapped 2 for 3 at pos 3
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "5", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}], "Diego": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}], "Maya": [{"rank": "6", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}, {"rank": "6", "suit": "spades"}]}


game_id: 870b5d5e-072a-4ccf-a789-c3ba765d01b4
timestamp: 2026-01-24 18:51:43.509143
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}], "Maya": [{"rank": "6", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}, {"rank": "6", "suit": "spades"}], "Marcus": [{"rank": "K", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}]}


game_id: 870b5d5e-072a-4ccf-a789-c3ba765d01b4
timestamp: 2026-01-24 18:51:43.515205
player_id: cpu_0
player_name: River
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 3 for 5 at pos 0
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}], "Maya": [{"rank": "6", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}, {"rank": "6", "suit": "spades"}], "Marcus": [{"rank": "K", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}]}


game_id: 870b5d5e-072a-4ccf-a789-c3ba765d01b4
timestamp: 2026-01-24 18:51:43.521724
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"River": [{"rank": "3", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}], "Maya": [{"rank": "6", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}, {"rank": "6", "suit": "spades"}], "Marcus": [{"rank": "K", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}]}


game_id: 870b5d5e-072a-4ccf-a789-c3ba765d01b4
timestamp: 2026-01-24 18:51:43.527091
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped 3 for 10 at pos 0
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"River": [{"rank": "3", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}], "Maya": [{"rank": "6", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}, {"rank": "6", "suit": "spades"}], "Marcus": [{"rank": "K", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}]}


game_id: 870b5d5e-072a-4ccf-a789-c3ba765d01b4
timestamp: 2026-01-24 18:51:43.532389
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "3", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}], "Diego": [{"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}], "Marcus": [{"rank": "K", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}]}


game_id: 870b5d5e-072a-4ccf-a789-c3ba765d01b4
timestamp: 2026-01-24 18:51:43.542925
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "3", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}], "Diego": [{"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}], "Maya": [{"rank": "6", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}, {"rank": "6", "suit": "spades"}]}


game_id: 870b5d5e-072a-4ccf-a789-c3ba765d01b4
timestamp: 2026-01-24 18:51:43.548510
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 3 for Q at pos 1
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "3", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}], "Diego": [{"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}], "Maya": [{"rank": "6", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}, {"rank": "6", "suit": "spades"}]}


game_id: 870b5d5e-072a-4ccf-a789-c3ba765d01b4
timestamp: 2026-01-24 18:51:43.553952
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

visible_opponents_json:
{"Diego": [{"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}], "Maya": [{"rank": "6", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}, {"rank": "6", "suit": "spades"}], "Marcus": [{"rank": "K", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}]}


game_id: 870b5d5e-072a-4ccf-a789-c3ba765d01b4
timestamp: 2026-01-24 18:51:43.564713
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"River": [{"rank": "3", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}], "Maya": [{"rank": "6", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}, {"rank": "6", "suit": "spades"}], "Marcus": [{"rank": "K", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}]}


game_id: 870b5d5e-072a-4ccf-a789-c3ba765d01b4
timestamp: 2026-01-24 18:51:43.575805
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 9
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "3", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}], "Diego": [{"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}], "Marcus": [{"rank": "K", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}]}


game_id: 870b5d5e-072a-4ccf-a789-c3ba765d01b4
timestamp: 2026-01-24 18:51:43.604222
player_id: cpu_0
player_name: River
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 4 for 5 at pos 3
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]


game_id: 870b5d5e-072a-4ccf-a789-c3ba765d01b4
timestamp: 2026-01-24 18:51:43.610451
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: took 5 from discard
visible_opponents_json:
{"River": [{"rank": "3", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}], "Maya": [{"rank": "6", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}, {"rank": "6", "suit": "spades"}], "Marcus": [{"rank": "K", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}]}


game_id: 870b5d5e-072a-4ccf-a789-c3ba765d01b4
timestamp: 2026-01-24 18:51:43.616609
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped 5 for Q at pos 1
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"River": [{"rank": "3", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}], "Maya": [{"rank": "6", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}, {"rank": "6", "suit": "spades"}], "Marcus": [{"rank": "K", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}]}


game_id: 870b5d5e-072a-4ccf-a789-c3ba765d01b4
timestamp: 2026-01-24 18:51:43.623219
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 10
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "3", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}], "Diego": [{"rank": "3", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}], "Marcus": [{"rank": "K", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}]}


game_id: 870b5d5e-072a-4ccf-a789-c3ba765d01b4
timestamp: 2026-01-24 18:51:43.634812
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "3", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}], "Diego": [{"rank": "3", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}], "Maya": [{"rank": "6", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}, {"rank": "6", "suit": "spades"}]}


game_id: 870b5d5e-072a-4ccf-a789-c3ba765d01b4
timestamp: 2026-01-24 18:51:43.645697
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

visible_opponents_json:
{"Diego": [{"rank": "3", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}], "Maya": [{"rank": "6", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}, {"rank": "6", "suit": "spades"}], "Marcus": [{"rank": "K", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}]}


game_id: 870b5d5e-072a-4ccf-a789-c3ba765d01b4
timestamp: 2026-01-24 18:51:43.651265
player_id: cpu_0
player_name: River
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "2", "suit": "spades"}
decision_reason: swapped 5 for 2 at pos 4
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}]

visible_opponents_json:
{"Diego": [{"rank": "3", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}], "Maya": [{"rank": "A", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "6", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "6", "suit": "spades"}], "Marcus": [{"rank": "K", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "9", "suit": "clubs"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:43.667226
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: 8
card_suit: diamonds
decision_reason: took 8 from discard
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "8", "suit": "spades"}, {"rank": "7", "suit": "spades"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "J", "suit": "diamonds"}], "River": [{"rank": "9", "suit": "hearts"}, {"rank": "9", "suit": "spades"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:43.672847
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped 8 for 10 at pos 4
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "8", "suit": "spades"}, {"rank": "7", "suit": "spades"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "J", "suit": "diamonds"}], "River": [{"rank": "9", "suit": "hearts"}, {"rank": "9", "suit": "spades"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:43.678004
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "4", "suit": "spades"}, {"rank": "8", "suit": "diamonds"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "J", "suit": "diamonds"}], "River": [{"rank": "9", "suit": "hearts"}, {"rank": "9", "suit": "spades"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:43.683363
player_id: cpu_1
player_name: Priya
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped K for 8 at pos 0
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "4", "suit": "spades"}, {"rank": "8", "suit": "diamonds"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "J", "suit": "diamonds"}], "River": [{"rank": "9", "suit": "hearts"}, {"rank": "9", "suit": "spades"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:43.688880
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 8 from discard
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "4", "suit": "spades"}, {"rank": "8", "suit": "diamonds"}], "Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "7", "suit": "spades"}], "River": [{"rank": "9", "suit": "hearts"}, {"rank": "9", "suit": "spades"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:43.694615
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 8 for J at pos 4
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "4", "suit": "spades"}, {"rank": "8", "suit": "diamonds"}], "Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "7", "suit": "spades"}], "River": [{"rank": "9", "suit": "hearts"}, {"rank": "9", "suit": "spades"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:43.700378
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "4", "suit": "spades"}, {"rank": "8", "suit": "diamonds"}], "Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "7", "suit": "spades"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "8", "suit": "spades"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:43.706338
player_id: cpu_3
player_name: River
action: swap
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped 8 for 9 at pos 0
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "4", "suit": "spades"}, {"rank": "8", "suit": "diamonds"}], "Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "7", "suit": "spades"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "8", "suit": "spades"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:43.712281
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "7", "suit": "spades"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "8", "suit": "spades"}], "River": [{"rank": "8", "suit": "clubs"}, {"rank": "9", "suit": "spades"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:43.718486
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped A for 8 at pos 4
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "7", "suit": "spades"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "8", "suit": "spades"}], "River": [{"rank": "8", "suit": "clubs"}, {"rank": "9", "suit": "spades"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:43.724271
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "4", "suit": "spades"}, {"rank": "A", "suit": "clubs"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "8", "suit": "spades"}], "River": [{"rank": "8", "suit": "clubs"}, {"rank": "9", "suit": "spades"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:43.730459
player_id: cpu_1
player_name: Priya
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 2 for 7 at pos 4
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "4", "suit": "spades"}, {"rank": "A", "suit": "clubs"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "8", "suit": "spades"}], "River": [{"rank": "8", "suit": "clubs"}, {"rank": "9", "suit": "spades"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:43.736844
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "4", "suit": "spades"}, {"rank": "A", "suit": "clubs"}], "Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "8", "suit": "clubs"}, {"rank": "9", "suit": "spades"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:43.748325
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "4", "suit": "spades"}, {"rank": "A", "suit": "clubs"}], "Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "spades"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "8", "suit": "spades"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:43.754753
player_id: cpu_3
player_name: River
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped 5 for 9 at pos 4
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "4", "suit": "spades"}, {"rank": "A", "suit": "clubs"}], "Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "spades"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "8", "suit": "spades"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:43.760293
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "spades"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "8", "suit": "spades"}], "River": [{"rank": "8", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:43.765576
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped 3 for 4 at pos 2
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "spades"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "8", "suit": "spades"}], "River": [{"rank": "8", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:43.770708
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "3", "suit": "clubs"}, {"rank": "A", "suit": "clubs"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "8", "suit": "spades"}], "River": [{"rank": "8", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:43.782184
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "2", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "3", "suit": "clubs"}, {"rank": "A", "suit": "clubs"}], "Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "8", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:43.788113
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 4 for 8 at pos 4
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "3", "suit": "clubs"}, {"rank": "A", "suit": "clubs"}], "Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "8", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:43.793494
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "2", "suit": "diamonds"}
decision_reason: took 8 from discard
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "3", "suit": "clubs"}, {"rank": "A", "suit": "clubs"}], "Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "spades"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "hearts"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:43.798895
player_id: cpu_3
player_name: River
action: swap
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 8 for 7 at pos 3
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "3", "suit": "clubs"}, {"rank": "A", "suit": "clubs"}], "Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "spades"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "hearts"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:43.806224
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "spades"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "hearts"}], "River": [{"rank": "8", "suit": "clubs"}, {"rank": "8", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:43.812195
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped 2 for 3 at pos 2
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "spades"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "hearts"}], "River": [{"rank": "8", "suit": "clubs"}, {"rank": "8", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:43.818758
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: 9
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "hearts"}], "River": [{"rank": "8", "suit": "clubs"}, {"rank": "8", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:43.830603
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: A
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}], "Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "8", "suit": "clubs"}, {"rank": "8", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:43.836993
player_id: cpu_2
player_name: Sage
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped A for 4 at pos 4
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}], "Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "8", "suit": "clubs"}, {"rank": "8", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:43.843007
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}], "Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "spades"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "spades"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:43.849024
player_id: cpu_3
player_name: River
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 4 for 8 at pos 0
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}], "Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "spades"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "spades"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:43.854987
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "spades"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "spades"}], "River": [{"rank": "4", "suit": "hearts"}, {"rank": "8", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:43.866738
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "spades"}], "River": [{"rank": "4", "suit": "hearts"}, {"rank": "8", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:43.878587
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}], "Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "4", "suit": "hearts"}, {"rank": "8", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:43.907083
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 3 for Q at pos 0
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}]


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:43.912653
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "spades"}], "River": [{"rank": "4", "suit": "hearts"}, {"rank": "8", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:43.923831
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 2 from discard
visible_opponents_json:
{"Kenji": [{"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}], "Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "4", "suit": "hearts"}, {"rank": "8", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:43.929674
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "A", "suit": "spades"}
decision_reason: swapped 2 for A at pos 4
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}], "Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "4", "suit": "hearts"}, {"rank": "8", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:43.935761
player_id: cpu_3
player_name: River
action: take_discard
card_rank: A
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took A from discard
visible_opponents_json:
{"Kenji": [{"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}], "Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "spades"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "clubs"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:43.941869
player_id: cpu_3
player_name: River
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped A for 8 at pos 3
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}], "Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "spades"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "clubs"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:43.947927
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 10
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "spades"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "clubs"}], "River": [{"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:43.960691
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "clubs"}], "River": [{"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:43.972332
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}], "Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:43.978007
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "A", "suit": "hearts"}
decision_reason: swapped 4 for A at pos 2
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}], "Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:43.983697
player_id: cpu_3
player_name: River
action: take_discard
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took A from discard
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}], "Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "spades"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "2", "suit": "clubs"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:43.989831
player_id: cpu_3
player_name: River
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped A for 5 at pos 4
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}], "Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "spades"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "2", "suit": "clubs"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:43.996003
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "spades"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "2", "suit": "clubs"}], "River": [{"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "spades"}, {"rank": "A", "suit": "hearts"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:44.007746
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "2", "suit": "clubs"}], "River": [{"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "spades"}, {"rank": "A", "suit": "hearts"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:44.020500
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}], "Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "spades"}, {"rank": "A", "suit": "hearts"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:44.040115
player_id: cpu_3
player_name: River
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped K for 4 at pos 0
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:44.045965
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "spades"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "2", "suit": "clubs"}], "River": [{"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "spades"}, {"rank": "A", "suit": "hearts"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:44.051355
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 3 for 5 at pos 3
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "spades"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "2", "suit": "clubs"}], "River": [{"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "spades"}, {"rank": "A", "suit": "hearts"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:44.057473
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "2", "suit": "clubs"}], "River": [{"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "spades"}, {"rank": "A", "suit": "hearts"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:44.069542
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: took A from discard
visible_opponents_json:
{"Kenji": [{"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "spades"}, {"rank": "A", "suit": "hearts"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:44.075331
player_id: cpu_2
player_name: Sage
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped A for 4 at pos 2
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "spades"}, {"rank": "A", "suit": "hearts"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:44.081414
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: 10
card_suit: spades
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "spades"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:44.093296
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "spades"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}], "River": [{"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "spades"}, {"rank": "A", "suit": "hearts"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:44.105411
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}], "River": [{"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "spades"}, {"rank": "A", "suit": "hearts"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:44.125030
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "A", "suit": "diamonds"}
decision_reason: swapped 2 for A at pos 2
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:44.131067
player_id: cpu_3
player_name: River
action: take_discard
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took A from discard
visible_opponents_json:
{"Kenji": [{"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "spades"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:44.137775
player_id: cpu_3
player_name: River
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped A for 6 at pos 1
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "spades"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:44.143552
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "spades"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}], "River": [{"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}, {"rank": "A", "suit": "hearts"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:44.155610
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}], "River": [{"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}, {"rank": "A", "suit": "hearts"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:44.167685
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}, {"rank": "A", "suit": "hearts"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:44.185117
player_id: cpu_3
player_name: River
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 3 for 7 at pos 5
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:44.190945
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "spades"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}], "River": [{"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:44.204722
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}], "River": [{"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:44.210816
player_id: cpu_1
player_name: Priya
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 4 for 5 at pos 3
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}], "River": [{"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:44.216897
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "4", "suit": "spades"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:44.230052
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "4", "suit": "spades"}, {"rank": "2", "suit": "spades"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:44.236288
player_id: cpu_3
player_name: River
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "hearts"}
decision_reason: swapped 5 for 3 at pos 2
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "4", "suit": "spades"}, {"rank": "2", "suit": "spades"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:44.242663
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "3", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "4", "suit": "spades"}, {"rank": "2", "suit": "spades"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}], "River": [{"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:44.255258
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}], "River": [{"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:44.266843
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "4", "suit": "spades"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}]}


game_id: 3c309a88-7219-472b-a269-a20a049a4b64
timestamp: 2026-01-24 18:51:44.272434
player_id: cpu_2
player_name: Sage
action: discard
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: discarded 9
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "3", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}, {"rank": "J", "suit": "spades"}], "Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "10", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}, {"rank": "4", "suit": "spades"}, {"rank": "2", "suit": "spades"}, {"rank": "Q", "suit": "hearts"}], "River": [{"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.289538
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "7", "suit": "clubs"}, {"rank": "J", "suit": "diamonds"}], "Maya": [{"rank": "8", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}], "Priya": [{"rank": "5", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.300732
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: 9
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": true}]

visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}], "Maya": [{"rank": "8", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}], "Priya": [{"rank": "5", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.306417
player_id: cpu_1
player_name: River
action: swap
card_rank: 9
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 9 for J at pos 5
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}], "Maya": [{"rank": "8", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}], "Priya": [{"rank": "5", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.312644
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}], "River": [{"rank": "7", "suit": "clubs"}, {"rank": "9", "suit": "clubs"}], "Priya": [{"rank": "5", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.324106
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}], "River": [{"rank": "7", "suit": "clubs"}, {"rank": "9", "suit": "clubs"}], "Maya": [{"rank": "8", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.330181
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 3 for 5 at pos 0
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}], "River": [{"rank": "7", "suit": "clubs"}, {"rank": "9", "suit": "clubs"}], "Maya": [{"rank": "8", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.336451
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "7", "suit": "clubs"}, {"rank": "9", "suit": "clubs"}], "Maya": [{"rank": "8", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}], "Priya": [{"rank": "3", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.343012
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped 4 for Q at pos 4
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "7", "suit": "clubs"}, {"rank": "9", "suit": "clubs"}], "Maya": [{"rank": "8", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}], "Priya": [{"rank": "3", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.349359
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: 10
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "8", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}], "Priya": [{"rank": "3", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.361975
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "River": [{"rank": "7", "suit": "clubs"}, {"rank": "9", "suit": "clubs"}], "Priya": [{"rank": "3", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.368088
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 2 for 8 at pos 0
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "River": [{"rank": "7", "suit": "clubs"}, {"rank": "9", "suit": "clubs"}], "Priya": [{"rank": "3", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.373962
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "River": [{"rank": "7", "suit": "clubs"}, {"rank": "9", "suit": "clubs"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.385698
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "7", "suit": "clubs"}, {"rank": "9", "suit": "clubs"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}], "Priya": [{"rank": "3", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.391674
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped 2 for 4 at pos 4
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "7", "suit": "clubs"}, {"rank": "9", "suit": "clubs"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}], "Priya": [{"rank": "3", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.397425
player_id: cpu_1
player_name: River
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 4 from discard
visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}], "Priya": [{"rank": "3", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.403070
player_id: cpu_1
player_name: River
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: swapped 4 for 9 at pos 5
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}], "Priya": [{"rank": "3", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.409080
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "7", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}], "Priya": [{"rank": "3", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.414698
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "A", "suit": "diamonds"}
decision_reason: swapped 3 for A at pos 2
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "7", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}], "Priya": [{"rank": "3", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.420542
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took A from discard
visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "7", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.427164
player_id: cpu_3
player_name: Priya
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped A for 3 at pos 0
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "7", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.433456
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "7", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Priya": [{"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.445760
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Priya": [{"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.451750
player_id: cpu_1
player_name: River
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped K for 7 at pos 1
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Priya": [{"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.457244
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Priya": [{"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.468816
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.481172
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Priya": [{"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.488144
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 5 for 5 at pos 1
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Priya": [{"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.494244
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sage": [{"rank": "5", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Priya": [{"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.506600
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "5", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Priya": [{"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.512119
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped 2 for 3 at pos 2
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sage": [{"rank": "5", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Priya": [{"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.517628
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "5", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.529439
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}], "Priya": [{"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.535163
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 4 for 5 at pos 1
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}], "Priya": [{"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.541218
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}], "Priya": [{"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.553481
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sage": [{"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Priya": [{"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.566651
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.572413
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped 6 for 3 at pos 2
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Sage": [{"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.578133
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}], "Priya": [{"rank": "A", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.585335
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 5 for 7 at pos 0
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}], "Priya": [{"rank": "A", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.591464
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "5", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}], "Priya": [{"rank": "A", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.602425
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: J
card_suit: spades
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "5", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Priya": [{"rank": "A", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.614725
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Sage": [{"rank": "5", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.632004
player_id: cpu_0
player_name: Sage
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped K for 5 at pos 0
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}]


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.637883
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: 9
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}], "Priya": [{"rank": "A", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.649354
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Priya": [{"rank": "A", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.661146
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.702738
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 5 for 6 at pos 3
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.708242
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: took 6 from discard
visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "5", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.713966
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "A", "suit": "spades"}
decision_reason: swapped 6 for A at pos 5
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "5", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.720175
player_id: cpu_0
player_name: Sage
action: take_discard
card_rank: A
card_suit: spades
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: took A from discard
visible_opponents_json:
{"River": [{"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "5", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Priya": [{"rank": "A", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.726612
player_id: cpu_0
player_name: Sage
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped A for 4 at pos 1
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "5", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Priya": [{"rank": "A", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.732305
player_id: cpu_1
player_name: River
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: took 4 from discard
visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "5", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Priya": [{"rank": "A", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.738447
player_id: cpu_1
player_name: River
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 4 for 4 at pos 2
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "5", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Priya": [{"rank": "A", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.745073
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}], "Priya": [{"rank": "A", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.757623
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "5", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.769751
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: J
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "5", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Priya": [{"rank": "A", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.786909
player_id: cpu_1
player_name: River
action: swap
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped J for Q at pos 0
hand_json:
[{"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.793061
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "J", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}], "Priya": [{"rank": "A", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.804620
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 9
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "J", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "5", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.816912
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "J", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "5", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Priya": [{"rank": "A", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.835239
player_id: cpu_1
player_name: River
action: swap
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped J for Q at pos 3
hand_json:
[{"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.842081
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "J", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "J", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Priya": [{"rank": "A", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.854764
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "J", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "J", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "5", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.867720
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "J", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "J", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "5", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Priya": [{"rank": "A", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.885960
player_id: cpu_1
player_name: River
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 6 for J at pos 0
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.892158
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "6", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "J", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Priya": [{"rank": "A", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.897991
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 3 for 5 at pos 3
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "6", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "J", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Priya": [{"rank": "A", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.904066
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "6", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "J", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.916930
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "6", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "J", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}], "Priya": [{"rank": "A", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.929821
player_id: cpu_1
player_name: River
action: take_discard
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 8 from discard
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}], "Priya": [{"rank": "A", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.935447
player_id: cpu_1
player_name: River
action: swap
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 8 for J at pos 3
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}], "Priya": [{"rank": "A", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.941252
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "6", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "8", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Priya": [{"rank": "A", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.947113
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 3 for 8 at pos 4
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "6", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "8", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Priya": [{"rank": "A", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.952920
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "6", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "8", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "3", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.965241
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "6", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "8", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "3", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Priya": [{"rank": "A", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.980548
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "3", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Priya": [{"rank": "A", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.986739
player_id: cpu_1
player_name: River
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 5 for 8 at pos 3
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "3", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Priya": [{"rank": "A", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:44.992784
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 10
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "6", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}], "Priya": [{"rank": "A", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:45.005118
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "6", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "3", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:45.010860
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 3 for 6 at pos 2
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "6", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "3", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:45.016897
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "6", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "3", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Priya": [{"rank": "A", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:45.022884
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "2", "suit": "clubs"}
decision_reason: swapped 5 for 2 at pos 5
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"River": [{"rank": "6", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "3", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Priya": [{"rank": "A", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:45.029039
player_id: cpu_1
player_name: River
action: take_discard
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}, {"rank": "5", "suit": "hearts"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "3", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Priya": [{"rank": "A", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:45.034933
player_id: cpu_1
player_name: River
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 2 for 6 at pos 0
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}, {"rank": "5", "suit": "hearts"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "3", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Priya": [{"rank": "A", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:45.041033
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}, {"rank": "5", "suit": "hearts"}], "River": [{"rank": "2", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}], "Priya": [{"rank": "A", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:45.052270
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}, {"rank": "5", "suit": "hearts"}], "River": [{"rank": "2", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "3", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: d2a03b9a-eced-40f1-9b7d-be498e17b6ed
timestamp: 2026-01-24 18:51:45.058392
player_id: cpu_3
player_name: Priya
action: discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: discarded 6
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}, {"rank": "5", "suit": "hearts"}], "River": [{"rank": "2", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}, {"rank": "10", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "3", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: 1d686e7b-71e3-4c1a-a27c-b0076ed6eb19
timestamp: 2026-01-24 18:51:45.076145
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: 3
card_suit: hearts
decision_reason: took 3 from discard
hand_json:
[{"rank": "J", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}]

visible_opponents_json:
{"Sage": [{"rank": "8", "suit": "spades"}, {"rank": "7", "suit": "hearts"}], "Sofia": [{"rank": "K", "suit": "hearts"}, {"rank": "7", "suit": "spades"}], "Maya": [{"rank": "6", "suit": "hearts"}, {"rank": "9", "suit": "hearts"}]}


game_id: 1d686e7b-71e3-4c1a-a27c-b0076ed6eb19
timestamp: 2026-01-24 18:51:45.081793
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped 3 for J at pos 0
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}]

visible_opponents_json:
{"Sage": [{"rank": "8", "suit": "spades"}, {"rank": "7", "suit": "hearts"}], "Sofia": [{"rank": "K", "suit": "hearts"}, {"rank": "7", "suit": "spades"}], "Maya": [{"rank": "6", "suit": "hearts"}, {"rank": "9", "suit": "hearts"}]}


game_id: 1d686e7b-71e3-4c1a-a27c-b0076ed6eb19
timestamp: 2026-01-24 18:51:45.087751
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Marcus": [{"rank": "3", "suit": "hearts"}, {"rank": "6", "suit": "diamonds"}], "Sofia": [{"rank": "K", "suit": "hearts"}, {"rank": "7", "suit": "spades"}], "Maya": [{"rank": "6", "suit": "hearts"}, {"rank": "9", "suit": "hearts"}]}


game_id: 1d686e7b-71e3-4c1a-a27c-b0076ed6eb19
timestamp: 2026-01-24 18:51:45.093338
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 5 for 8 at pos 2
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Marcus": [{"rank": "3", "suit": "hearts"}, {"rank": "6", "suit": "diamonds"}], "Sofia": [{"rank": "K", "suit": "hearts"}, {"rank": "7", "suit": "spades"}], "Maya": [{"rank": "6", "suit": "hearts"}, {"rank": "9", "suit": "hearts"}]}


