# moves

game_id: 86bf795c-82f1-4daa-8405-e4cecd0f29f4
timestamp: 2026-01-25 00:10:23.071980
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took K from discard
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 86bf795c-82f1-4daa-8405-e4cecd0f29f4
timestamp: 2026-01-25 00:10:23.081137
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped K for 7 at pos 1
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 86bf795c-82f1-4daa-8405-e4cecd0f29f4
timestamp: 2026-01-25 00:10:23.089811
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 86bf795c-82f1-4daa-8405-e4cecd0f29f4
timestamp: 2026-01-25 00:10:23.096842
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped 7 for Q at pos 2
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 86bf795c-82f1-4daa-8405-e4cecd0f29f4
timestamp: 2026-01-25 00:10:23.106237
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 86bf795c-82f1-4daa-8405-e4cecd0f29f4
timestamp: 2026-01-25 00:10:23.118859
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 86bf795c-82f1-4daa-8405-e4cecd0f29f4
timestamp: 2026-01-25 00:10:23.125149
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "K", "suit": "clubs"}
decision_reason: swapped 7 for K at pos 1
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 86bf795c-82f1-4daa-8405-e4cecd0f29f4
timestamp: 2026-01-25 00:10:23.130866
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took K from discard
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 86bf795c-82f1-4daa-8405-e4cecd0f29f4
timestamp: 2026-01-25 00:10:23.136815
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped K for 4 at pos 0
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 86bf795c-82f1-4daa-8405-e4cecd0f29f4
timestamp: 2026-01-25 00:10:23.143193
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 86bf795c-82f1-4daa-8405-e4cecd0f29f4
timestamp: 2026-01-25 00:10:23.149326
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 4 for 7 at pos 2
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 86bf795c-82f1-4daa-8405-e4cecd0f29f4
timestamp: 2026-01-25 00:10:23.155508
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 7 from discard
visible_opponents_json:
{"Diego": [{"rank": "A", "suit": "hearts"}, {"rank": "7", "suit": "hearts"}, {"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}, {"rank": "6", "suit": "hearts"}], "Marcus": [{"rank": "K", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}], "Maya": [{"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}, {"rank": "2", "suit": "clubs"}, {"rank": "4", "suit": "spades"}]}


game_id: 86bf795c-82f1-4daa-8405-e4cecd0f29f4
timestamp: 2026-01-25 00:10:23.161843
player_id: cpu_3
player_name: River
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped 7 for 9 at pos 1
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.181113
player_id: cpu_0
player_name: Maya
action: take_discard
card_rank: 5
card_suit: clubs
decision_reason: took 5 from discard
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sage": [{"rank": "Q", "suit": "hearts"}, {"rank": "7", "suit": "spades"}], "River": [{"rank": "7", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "J", "suit": "spades"}]}


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.187323
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 5 for 9 at pos 1
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sage": [{"rank": "Q", "suit": "hearts"}, {"rank": "7", "suit": "spades"}], "River": [{"rank": "7", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "J", "suit": "spades"}]}


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.193719
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.200250
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped 8 for Q at pos 0
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.206284
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.212683
player_id: cpu_2
player_name: River
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 6 for 7 at pos 0
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.218922
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Maya": [{"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}], "Sage": [{"rank": "8", "suit": "clubs"}, {"rank": "7", "suit": "spades"}], "River": [{"rank": "6", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}]}


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.225076
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped 7 for J at pos 5
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}]

visible_opponents_json:
{"Maya": [{"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}], "Sage": [{"rank": "8", "suit": "clubs"}, {"rank": "7", "suit": "spades"}], "River": [{"rank": "6", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}]}


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.231070
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.237027
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 2 for 5 at pos 1
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.243114
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.249342
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 5 for 8 at pos 0
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.255677
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.267556
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.273790
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped 7 for 10 at pos 2
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.280046
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.287179
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "hearts"}
decision_reason: swapped 2 for 3 at pos 5
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.293256
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.299298
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 3 for 7 at pos 5
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.305486
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "2", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}], "Sage": [{"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}], "Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "7", "suit": "clubs"}, {"rank": "7", "suit": "diamonds"}]}


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.317628
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.323311
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 6 for 7 at pos 2
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.329563
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.346291
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: K
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.352278
player_id: cpu_1
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": "3", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.358185
player_id: cpu_2
player_name: River
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took 5 from discard
visible_opponents_json:
{"Maya": [{"rank": "2", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "6", "suit": "clubs"}, {"rank": "7", "suit": "diamonds"}]}


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.364256
player_id: cpu_2
player_name: River
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 5 for 6 at pos 0
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.370510
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.376930
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 3 for 7 at pos 5
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.382911
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "River": [{"rank": "5", "suit": "clubs"}, {"rank": "A", "suit": "clubs"}], "Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "6", "suit": "clubs"}, {"rank": "3", "suit": "spades"}]}


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.395255
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.402354
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "K", "suit": "hearts"}
decision_reason: swapped 5 for K at pos 2
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.410959
player_id: cpu_2
player_name: River
action: take_discard
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took K from discard
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.417404
player_id: cpu_2
player_name: River
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped K for 5 at pos 0
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.423935
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.430205
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 5 for 6 at pos 2
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.436406
player_id: cpu_0
player_name: Maya
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 6 from discard
visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}], "River": [{"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}], "Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "spades"}]}


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.442598
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 6 for 4 at pos 2
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.448493
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.454528
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 4 for 5 at pos 2
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.460678
player_id: cpu_2
player_name: River
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.466755
player_id: cpu_2
player_name: River
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "A", "suit": "spades"}
decision_reason: swapped 5 for A at pos 2
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.472623
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: A
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took A from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.478482
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped A for 5 at pos 2
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.484519
player_id: cpu_0
player_name: Maya
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.490117
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "A", "suit": "hearts"}
decision_reason: swapped 5 for A at pos 0
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.496186
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took A from discard
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.502329
player_id: cpu_1
player_name: Sage
action: swap
card_rank: A
card_suit: hearts
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": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.508750
player_id: cpu_2
player_name: River
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.514945
player_id: cpu_2
player_name: River
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 4 for 5 at pos 2
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.521149
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.527338
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped 5 for 4 at pos 4
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.533297
player_id: cpu_0
player_name: Maya
action: take_discard
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.539648
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 4 for 6 at pos 2
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.545824
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.552214
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 6 for Q at pos 4
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.558434
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.570680
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.576771
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 2 for 5 at pos 4
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.582864
player_id: cpu_0
player_name: Maya
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.588480
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped 5 for 10 at pos 3
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.594330
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.600265
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 3 for 6 at pos 4
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.606324
player_id: cpu_2
player_name: River
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took 6 from discard
visible_opponents_json:
{"Maya": [{"rank": "5", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}, {"rank": "4", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}], "Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}]}


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.612671
player_id: cpu_2
player_name: River
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped 6 for 9 at pos 4
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.618879
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.631146
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.637097
player_id: cpu_0
player_name: Maya
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped K for 5 at pos 0
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.643734
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.649456
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped 5 for 3 at pos 1
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.655380
player_id: cpu_2
player_name: River
action: take_discard
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.661399
player_id: cpu_2
player_name: River
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 3 for 6 at pos 4
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.667492
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 6 from discard
visible_opponents_json:
{"Maya": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}, {"rank": "4", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "5", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}], "River": [{"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}]}


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.673577
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 6 for 5 at pos 3
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.679670
player_id: cpu_0
player_name: Maya
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.685834
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 5 for J at pos 4
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.692516
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.705317
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.711357
player_id: cpu_2
player_name: River
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 6 for 6 at pos 3
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.717354
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 0513ebad-f18a-415e-9c91-0cad9410e4a1
timestamp: 2026-01-25 00:10:23.723667
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: swapped 6 for 9 at pos 1
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:23.741488
player_id: cpu_0
player_name: Priya
action: take_discard
card_rank: 2
card_suit: hearts
decision_reason: took 2 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Maya": [{"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "spades"}], "Diego": [{"rank": "4", "suit": "spades"}, {"rank": "7", "suit": "clubs"}], "Sage": [{"rank": "3", "suit": "clubs"}, {"rank": "J", "suit": "spades"}]}


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:23.747947
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 2 for Q at pos 1
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Maya": [{"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "spades"}], "Diego": [{"rank": "4", "suit": "spades"}, {"rank": "7", "suit": "clubs"}], "Sage": [{"rank": "3", "suit": "clubs"}, {"rank": "J", "suit": "spades"}]}


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:23.754187
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "hearts"}, {"rank": "8", "suit": "diamonds"}], "Diego": [{"rank": "4", "suit": "spades"}, {"rank": "7", "suit": "clubs"}], "Sage": [{"rank": "3", "suit": "clubs"}, {"rank": "J", "suit": "spades"}]}


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:23.766522
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:23.772436
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "2", "suit": "diamonds"}
decision_reason: swapped 5 for 2 at pos 0
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:23.778327
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:23.784258
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped 2 for J at pos 4
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:23.790148
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:23.796009
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 5 for 8 at pos 3
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:23.802223
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}]

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


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:23.818448
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: 9
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:23.830674
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: A
card_suit: spades
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:23.837200
player_id: cpu_3
player_name: Sage
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped A for 3 at pos 2
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:23.843521
player_id: cpu_0
player_name: Priya
action: take_discard
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:23.849849
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 3 for 5 at pos 3
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:23.856231
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 5 from discard
visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}], "Diego": [{"rank": "5", "suit": "spades"}, {"rank": "4", "suit": "spades"}, {"rank": "7", "suit": "clubs"}], "Sage": [{"rank": "A", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}]}


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:23.863076
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped 5 for 3 at pos 0
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}]

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


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:23.869412
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 3 from discard
visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}], "Maya": [{"rank": "5", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "spades"}], "Sage": [{"rank": "A", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}]}


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:23.875696
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 3 for 7 at pos 4
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:23.882400
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:23.888475
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 5 for J at pos 5
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:23.895005
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:23.907403
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}]

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


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:23.913714
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 4 for 8 at pos 5
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:23.921561
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: 10
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:23.934015
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:23.946514
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "5", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "hearts"}], "Diego": [{"rank": "5", "suit": "spades"}, {"rank": "4", "suit": "spades"}, {"rank": "3", "suit": "spades"}], "Sage": [{"rank": "A", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}]}


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:23.979955
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 6 for 6 at pos 3
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}]


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:23.986656
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 6 from discard
visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}], "Maya": [{"rank": "5", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "hearts"}], "Diego": [{"rank": "5", "suit": "spades"}, {"rank": "4", "suit": "spades"}, {"rank": "6", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}]}


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:23.993408
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "K", "suit": "hearts"}
decision_reason: swapped 6 for K at pos 1
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:24.000018
player_id: cpu_0
player_name: Priya
action: take_discard
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took K from discard
visible_opponents_json:
{"Maya": [{"rank": "5", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "hearts"}], "Diego": [{"rank": "5", "suit": "spades"}, {"rank": "4", "suit": "spades"}, {"rank": "6", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}], "Sage": [{"rank": "6", "suit": "clubs"}, {"rank": "A", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}]}


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:24.006374
player_id: cpu_0
player_name: Priya
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped K for 3 at pos 3
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:24.012657
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 3 from discard
visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}], "Diego": [{"rank": "5", "suit": "spades"}, {"rank": "4", "suit": "spades"}, {"rank": "6", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}], "Sage": [{"rank": "6", "suit": "clubs"}, {"rank": "A", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}]}


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:24.018711
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 3 for 5 at pos 0
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:24.024642
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:24.030384
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 5 for 6 at pos 3
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:24.037036
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:24.043419
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 6 for 7 at pos 0
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:24.049908
player_id: cpu_0
player_name: Priya
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:24.056419
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 7 for 6 at pos 5
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}]

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


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:24.063058
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:24.069762
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 6 for 9 at pos 1
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:24.075899
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:24.085518
player_id: cpu_2
player_name: Diego
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped A for 5 at pos 0
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:24.091829
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:24.098221
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 5 for 6 at pos 0
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:24.104316
player_id: cpu_0
player_name: Priya
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}]

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


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:24.110495
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 6 for 7 at pos 5
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:24.116508
player_id: cpu_1
player_name: Maya
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": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:24.122796
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "K", "suit": "clubs"}
decision_reason: swapped 7 for K at pos 3
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:24.128996
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took K from discard
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:24.135676
player_id: cpu_2
player_name: Diego
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped K for 5 at pos 3
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:24.142129
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:24.148572
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "A", "suit": "hearts"}
decision_reason: swapped 5 for A at pos 3
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:24.155042
player_id: cpu_0
player_name: Priya
action: take_discard
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took A from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: 31ff457b-2742-4c2d-a189-88a9c94d7618
timestamp: 2026-01-25 00:10:24.161229
player_id: cpu_0
player_name: Priya
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped A for 6 at pos 5
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 882c85b9-a5c5-4661-9062-44e8268e9b70
timestamp: 2026-01-25 00:10:24.179306
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "spades"}, {"rank": "6", "suit": "spades"}], "Priya": [{"rank": "3", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}], "River": [{"rank": "7", "suit": "spades"}, {"rank": "4", "suit": "hearts"}]}


game_id: 882c85b9-a5c5-4661-9062-44e8268e9b70
timestamp: 2026-01-25 00:10:24.185823
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 3 for 4 at pos 0
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "spades"}, {"rank": "6", "suit": "spades"}], "Priya": [{"rank": "3", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}], "River": [{"rank": "7", "suit": "spades"}, {"rank": "4", "suit": "hearts"}]}


game_id: 882c85b9-a5c5-4661-9062-44e8268e9b70
timestamp: 2026-01-25 00:10:24.192454
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "3", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}], "Priya": [{"rank": "3", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}], "River": [{"rank": "7", "suit": "spades"}, {"rank": "4", "suit": "hearts"}]}


game_id: 882c85b9-a5c5-4661-9062-44e8268e9b70
timestamp: 2026-01-25 00:10:24.198752
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped 4 for J at pos 5
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "3", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}], "Priya": [{"rank": "3", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}], "River": [{"rank": "7", "suit": "spades"}, {"rank": "4", "suit": "hearts"}]}


game_id: 882c85b9-a5c5-4661-9062-44e8268e9b70
timestamp: 2026-01-25 00:10:24.205151
player_id: cpu_2
player_name: Priya
action: draw_deck
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 882c85b9-a5c5-4661-9062-44e8268e9b70
timestamp: 2026-01-25 00:10:24.211394
player_id: cpu_2
player_name: Priya
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 6 for Q at pos 1
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 882c85b9-a5c5-4661-9062-44e8268e9b70
timestamp: 2026-01-25 00:10:24.217686
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: 882c85b9-a5c5-4661-9062-44e8268e9b70
timestamp: 2026-01-25 00:10:24.224207
player_id: cpu_3
player_name: River
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped K for 7 at pos 1
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: 882c85b9-a5c5-4661-9062-44e8268e9b70
timestamp: 2026-01-25 00:10:24.232304
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 882c85b9-a5c5-4661-9062-44e8268e9b70
timestamp: 2026-01-25 00:10:24.238551
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped 4 for 3 at pos 1
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 882c85b9-a5c5-4661-9062-44e8268e9b70
timestamp: 2026-01-25 00:10:24.245064
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 882c85b9-a5c5-4661-9062-44e8268e9b70
timestamp: 2026-01-25 00:10:24.251197
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 3 for 6 at pos 3
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 882c85b9-a5c5-4661-9062-44e8268e9b70
timestamp: 2026-01-25 00:10:24.257399
player_id: cpu_2
player_name: Priya
action: draw_deck
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 882c85b9-a5c5-4661-9062-44e8268e9b70
timestamp: 2026-01-25 00:10:24.263342
player_id: cpu_2
player_name: Priya
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 4 for 6 at pos 1
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 882c85b9-a5c5-4661-9062-44e8268e9b70
timestamp: 2026-01-25 00:10:24.269440
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: 882c85b9-a5c5-4661-9062-44e8268e9b70
timestamp: 2026-01-25 00:10:24.275175
player_id: cpu_3
player_name: River
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 6 for 8 at pos 0
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: 882c85b9-a5c5-4661-9062-44e8268e9b70
timestamp: 2026-01-25 00:10:24.281024
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 882c85b9-a5c5-4661-9062-44e8268e9b70
timestamp: 2026-01-25 00:10:24.293557
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: 9
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 882c85b9-a5c5-4661-9062-44e8268e9b70
timestamp: 2026-01-25 00:10:24.305688
player_id: cpu_2
player_name: Priya
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 882c85b9-a5c5-4661-9062-44e8268e9b70
timestamp: 2026-01-25 00:10:24.337620
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped A for 4 at pos 1
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}]


game_id: 882c85b9-a5c5-4661-9062-44e8268e9b70
timestamp: 2026-01-25 00:10:24.343379
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: took 4 from discard
visible_opponents_json:
{"Kenji": [{"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}], "Priya": [{"rank": "4", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}], "River": [{"rank": "6", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}]}


game_id: 882c85b9-a5c5-4661-9062-44e8268e9b70
timestamp: 2026-01-25 00:10:24.349377
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 4 for 5 at pos 2
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 882c85b9-a5c5-4661-9062-44e8268e9b70
timestamp: 2026-01-25 00:10:24.355524
player_id: cpu_2
player_name: Priya
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: took 5 from discard
visible_opponents_json:
{"Kenji": [{"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}], "Diego": [{"rank": "2", "suit": "spades"}, {"rank": "4", "suit": "spades"}, {"rank": "3", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}], "River": [{"rank": "6", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}]}


game_id: 882c85b9-a5c5-4661-9062-44e8268e9b70
timestamp: 2026-01-25 00:10:24.361505
player_id: cpu_2
player_name: Priya
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 5 for 6 at pos 4
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 882c85b9-a5c5-4661-9062-44e8268e9b70
timestamp: 2026-01-25 00:10:24.367639
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: took 6 from discard
visible_opponents_json:
{"Kenji": [{"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}], "Diego": [{"rank": "2", "suit": "spades"}, {"rank": "4", "suit": "spades"}, {"rank": "3", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}], "Priya": [{"rank": "4", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}]}


game_id: 882c85b9-a5c5-4661-9062-44e8268e9b70
timestamp: 2026-01-25 00:10:24.374113
player_id: cpu_3
player_name: River
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 6 for 5 at pos 5
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 882c85b9-a5c5-4661-9062-44e8268e9b70
timestamp: 2026-01-25 00:10:24.380201
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 882c85b9-a5c5-4661-9062-44e8268e9b70
timestamp: 2026-01-25 00:10:24.386440
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 5 for 10 at pos 3
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 882c85b9-a5c5-4661-9062-44e8268e9b70
timestamp: 2026-01-25 00:10:24.392180
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: 9
card_suit: spades
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 882c85b9-a5c5-4661-9062-44e8268e9b70
timestamp: 2026-01-25 00:10:24.404185
player_id: cpu_2
player_name: Priya
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 882c85b9-a5c5-4661-9062-44e8268e9b70
timestamp: 2026-01-25 00:10:24.410202
player_id: cpu_2
player_name: Priya
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped 3 for 9 at pos 5
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 882c85b9-a5c5-4661-9062-44e8268e9b70
timestamp: 2026-01-25 00:10:24.416164
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 882c85b9-a5c5-4661-9062-44e8268e9b70
timestamp: 2026-01-25 00:10:24.428150
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 882c85b9-a5c5-4661-9062-44e8268e9b70
timestamp: 2026-01-25 00:10:24.434204
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 2 for 5 at pos 3
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 882c85b9-a5c5-4661-9062-44e8268e9b70
timestamp: 2026-01-25 00:10:24.440225
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 5 from discard
visible_opponents_json:
{"Kenji": [{"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}], "Priya": [{"rank": "4", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "spades"}], "River": [{"rank": "6", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}, {"rank": "6", "suit": "hearts"}]}


game_id: 882c85b9-a5c5-4661-9062-44e8268e9b70
timestamp: 2026-01-25 00:10:24.446422
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped 5 for 10 at pos 0
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 882c85b9-a5c5-4661-9062-44e8268e9b70
timestamp: 2026-01-25 00:10:24.452557
player_id: cpu_2
player_name: Priya
action: draw_deck
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 882c85b9-a5c5-4661-9062-44e8268e9b70
timestamp: 2026-01-25 00:10:24.458664
player_id: cpu_2
player_name: Priya
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 7 for J at pos 0
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 882c85b9-a5c5-4661-9062-44e8268e9b70
timestamp: 2026-01-25 00:10:24.464884
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}], "Diego": [{"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}, {"rank": "4", "suit": "spades"}, {"rank": "3", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}], "Priya": [{"rank": "7", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "spades"}]}


game_id: 882c85b9-a5c5-4661-9062-44e8268e9b70
timestamp: 2026-01-25 00:10:24.477202
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 882c85b9-a5c5-4661-9062-44e8268e9b70
timestamp: 2026-01-25 00:10:24.483270
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 9 for 6 at pos 2
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 882c85b9-a5c5-4661-9062-44e8268e9b70
timestamp: 2026-01-25 00:10:24.489443
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 882c85b9-a5c5-4661-9062-44e8268e9b70
timestamp: 2026-01-25 00:10:24.496069
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "K", "suit": "spades"}
decision_reason: swapped 6 for K at pos 4
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 882c85b9-a5c5-4661-9062-44e8268e9b70
timestamp: 2026-01-25 00:10:24.502130
player_id: cpu_2
player_name: Priya
action: take_discard
card_rank: K
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took K from discard
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 882c85b9-a5c5-4661-9062-44e8268e9b70
timestamp: 2026-01-25 00:10:24.508374
player_id: cpu_2
player_name: Priya
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped K for 7 at pos 0
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 882c85b9-a5c5-4661-9062-44e8268e9b70
timestamp: 2026-01-25 00:10:24.514442
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took 7 from discard
visible_opponents_json:
{"Kenji": [{"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}, {"rank": "9", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}], "Diego": [{"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}, {"rank": "4", "suit": "spades"}, {"rank": "3", "suit": "clubs"}, {"rank": "6", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}], "Priya": [{"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "spades"}]}


game_id: 882c85b9-a5c5-4661-9062-44e8268e9b70
timestamp: 2026-01-25 00:10:24.520625
player_id: cpu_3
player_name: River
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 7 for 8 at pos 2
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 882c85b9-a5c5-4661-9062-44e8268e9b70
timestamp: 2026-01-25 00:10:24.526862
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 882c85b9-a5c5-4661-9062-44e8268e9b70
timestamp: 2026-01-25 00:10:24.533106
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 5 for 9 at pos 2
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.551239
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: 5
card_suit: diamonds
decision_reason: took 5 from discard
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "4", "suit": "clubs"}, {"rank": "8", "suit": "hearts"}], "Sage": [{"rank": "10", "suit": "diamonds"}, {"rank": "9", "suit": "spades"}], "Marcus": [{"rank": "10", "suit": "spades"}, {"rank": "Q", "suit": "diamonds"}]}


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.557649
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 5 for 8 at pos 0
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "4", "suit": "clubs"}, {"rank": "8", "suit": "hearts"}], "Sage": [{"rank": "10", "suit": "diamonds"}, {"rank": "9", "suit": "spades"}], "Marcus": [{"rank": "10", "suit": "spades"}, {"rank": "Q", "suit": "diamonds"}]}


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.563449
player_id: cpu_1
player_name: River
action: take_discard
card_rank: 8
card_suit: clubs
decision_reason: took 8 from discard
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Diego": [{"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}], "Sage": [{"rank": "10", "suit": "diamonds"}, {"rank": "9", "suit": "spades"}], "Marcus": [{"rank": "10", "suit": "spades"}, {"rank": "Q", "suit": "diamonds"}]}


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.569417
player_id: cpu_1
player_name: River
action: swap
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 8 for 6 at pos 2
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Diego": [{"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}], "Sage": [{"rank": "10", "suit": "diamonds"}, {"rank": "9", "suit": "spades"}], "Marcus": [{"rank": "10", "suit": "spades"}, {"rank": "Q", "suit": "diamonds"}]}


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.575794
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 6
card_suit: spades
decision_reason: took 6 from discard
hand_json:
[{"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": true}]

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


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.581843
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 6 for 10 at pos 0
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": true}]

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


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.587500
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 10
card_suit: diamonds
decision_reason: took 10 from discard
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.593652
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 10 for 4 at pos 5
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}]

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


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.599924
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: 4
card_suit: diamonds
decision_reason: took 4 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "4", "suit": "clubs"}, {"rank": "8", "suit": "clubs"}, {"rank": "8", "suit": "hearts"}], "Sage": [{"rank": "6", "suit": "spades"}, {"rank": "9", "suit": "spades"}], "Marcus": [{"rank": "10", "suit": "spades"}, {"rank": "Q", "suit": "diamonds"}, {"rank": "10", "suit": "diamonds"}]}


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.606231
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 4 for 7 at pos 5
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}]

visible_opponents_json:
{"River": [{"rank": "4", "suit": "clubs"}, {"rank": "8", "suit": "clubs"}, {"rank": "8", "suit": "hearts"}], "Sage": [{"rank": "6", "suit": "spades"}, {"rank": "9", "suit": "spades"}], "Marcus": [{"rank": "10", "suit": "spades"}, {"rank": "Q", "suit": "diamonds"}, {"rank": "10", "suit": "diamonds"}]}


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.612724
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Diego": [{"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}], "Sage": [{"rank": "6", "suit": "spades"}, {"rank": "9", "suit": "spades"}], "Marcus": [{"rank": "10", "suit": "spades"}, {"rank": "Q", "suit": "diamonds"}, {"rank": "10", "suit": "diamonds"}]}


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.618872
player_id: cpu_1
player_name: River
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped A for 8 at pos 2
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Diego": [{"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}], "Sage": [{"rank": "6", "suit": "spades"}, {"rank": "9", "suit": "spades"}], "Marcus": [{"rank": "10", "suit": "spades"}, {"rank": "Q", "suit": "diamonds"}, {"rank": "10", "suit": "diamonds"}]}


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.624952
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": true}]

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


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.632214
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped 4 for 9 at pos 5
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.638229
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}]

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


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.644441
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped 7 for 10 at pos 2
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}]

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


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.650625
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}]

visible_opponents_json:
{"River": [{"rank": "4", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}, {"rank": "8", "suit": "hearts"}], "Sage": [{"rank": "6", "suit": "spades"}, {"rank": "4", "suit": "spades"}], "Marcus": [{"rank": "7", "suit": "clubs"}, {"rank": "Q", "suit": "diamonds"}, {"rank": "10", "suit": "diamonds"}]}


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.656326
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 2 for 5 at pos 0
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}]

visible_opponents_json:
{"River": [{"rank": "4", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}, {"rank": "8", "suit": "hearts"}], "Sage": [{"rank": "6", "suit": "spades"}, {"rank": "4", "suit": "spades"}], "Marcus": [{"rank": "7", "suit": "clubs"}, {"rank": "Q", "suit": "diamonds"}, {"rank": "10", "suit": "diamonds"}]}


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.662075
player_id: cpu_1
player_name: River
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}], "Sage": [{"rank": "6", "suit": "spades"}, {"rank": "4", "suit": "spades"}], "Marcus": [{"rank": "7", "suit": "clubs"}, {"rank": "Q", "suit": "diamonds"}, {"rank": "10", "suit": "diamonds"}]}


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.668211
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 5
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}]

visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}], "Sage": [{"rank": "6", "suit": "spades"}, {"rank": "4", "suit": "spades"}], "Marcus": [{"rank": "7", "suit": "clubs"}, {"rank": "Q", "suit": "diamonds"}, {"rank": "10", "suit": "diamonds"}]}


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.674019
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}], "River": [{"rank": "4", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}], "Marcus": [{"rank": "7", "suit": "clubs"}, {"rank": "Q", "suit": "diamonds"}, {"rank": "10", "suit": "diamonds"}]}


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.685915
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took Q from discard
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}]

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


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.692304
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "K", "suit": "clubs"}
decision_reason: swapped Q for K at pos 0
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}]

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


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.698928
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took K from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}]

visible_opponents_json:
{"River": [{"rank": "4", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}], "Sage": [{"rank": "6", "suit": "spades"}, {"rank": "4", "suit": "spades"}], "Marcus": [{"rank": "Q", "suit": "hearts"}, {"rank": "7", "suit": "clubs"}, {"rank": "Q", "suit": "diamonds"}, {"rank": "10", "suit": "diamonds"}]}


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.705531
player_id: cpu_0
player_name: Diego
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped K for 4 at pos 5
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"River": [{"rank": "4", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}], "Sage": [{"rank": "6", "suit": "spades"}, {"rank": "4", "suit": "spades"}], "Marcus": [{"rank": "Q", "suit": "hearts"}, {"rank": "7", "suit": "clubs"}, {"rank": "Q", "suit": "diamonds"}, {"rank": "10", "suit": "diamonds"}]}


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.711633
player_id: cpu_1
player_name: River
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.717773
player_id: cpu_1
player_name: River
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped 4 for Q at pos 4
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.723983
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}, {"rank": "K", "suit": "clubs"}], "River": [{"rank": "4", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}], "Marcus": [{"rank": "Q", "suit": "hearts"}, {"rank": "7", "suit": "clubs"}, {"rank": "Q", "suit": "diamonds"}, {"rank": "10", "suit": "diamonds"}]}


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.730305
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 2 for 6 at pos 0
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.736564
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}]

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


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.742739
player_id: cpu_3
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 0
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}]

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


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.748669
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"River": [{"rank": "4", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}], "Sage": [{"rank": "2", "suit": "clubs"}, {"rank": "4", "suit": "spades"}], "Marcus": [{"rank": "6", "suit": "spades"}, {"rank": "7", "suit": "clubs"}, {"rank": "Q", "suit": "diamonds"}, {"rank": "10", "suit": "diamonds"}]}


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.754412
player_id: cpu_0
player_name: Diego
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped K for J at pos 3
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"River": [{"rank": "4", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}], "Sage": [{"rank": "2", "suit": "clubs"}, {"rank": "4", "suit": "spades"}], "Marcus": [{"rank": "6", "suit": "spades"}, {"rank": "7", "suit": "clubs"}, {"rank": "Q", "suit": "diamonds"}, {"rank": "10", "suit": "diamonds"}]}


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.760204
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.766200
player_id: cpu_1
player_name: River
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 5 for J at pos 0
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.772272
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.784276
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 8 from discard
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}]

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


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.790303
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 8 for Q at pos 3
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}]

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


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.796148
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"River": [{"rank": "5", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}], "Sage": [{"rank": "2", "suit": "clubs"}, {"rank": "4", "suit": "spades"}], "Marcus": [{"rank": "6", "suit": "spades"}, {"rank": "7", "suit": "clubs"}, {"rank": "8", "suit": "spades"}, {"rank": "10", "suit": "diamonds"}]}


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.811632
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.817423
player_id: cpu_1
player_name: River
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped K for 5 at pos 0
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.823123
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 5 from discard
visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}, {"rank": "2", "suit": "spades"}, {"rank": "K", "suit": "clubs"}], "River": [{"rank": "K", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}], "Marcus": [{"rank": "6", "suit": "spades"}, {"rank": "7", "suit": "clubs"}, {"rank": "8", "suit": "spades"}, {"rank": "10", "suit": "diamonds"}]}


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.829098
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped 5 for 9 at pos 4
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.835429
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}]

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


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.841577
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 5 for 10 at pos 5
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.848066
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "K", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}], "Sage": [{"rank": "2", "suit": "clubs"}, {"rank": "5", "suit": "spades"}, {"rank": "4", "suit": "spades"}], "Marcus": [{"rank": "6", "suit": "spades"}, {"rank": "7", "suit": "clubs"}, {"rank": "8", "suit": "spades"}, {"rank": "5", "suit": "clubs"}]}


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.854320
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "A", "suit": "hearts"}
decision_reason: swapped 5 for A at pos 2
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.860164
player_id: cpu_1
player_name: River
action: take_discard
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took A from discard
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.870537
player_id: cpu_1
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 5
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.876371
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.882285
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped 5 for 4 at pos 1
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.888233
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.897822
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 4 for 8 at pos 3
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.903588
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: 9
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.915084
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: K
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.920935
player_id: cpu_1
player_name: River
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped K for 4 at pos 1
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.926804
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.932851
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 4 for 6 at pos 2
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.939932
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.946227
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 6 for 7 at pos 2
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.952462
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 7 from discard
visible_opponents_json:
{"River": [{"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}], "Sage": [{"rank": "2", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "spades"}, {"rank": "4", "suit": "spades"}], "Marcus": [{"rank": "6", "suit": "spades"}, {"rank": "6", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}, {"rank": "5", "suit": "clubs"}]}


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.959083
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "hearts"}
decision_reason: swapped 7 for 3 at pos 1
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.965329
player_id: cpu_1
player_name: River
action: take_discard
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.971492
player_id: cpu_1
player_name: River
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 3 for 4 at pos 4
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.977700
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.983881
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped 4 for 3 at pos 3
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.989880
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 5bca5e29-ca98-4ebb-b650-d0455d2a3772
timestamp: 2026-01-25 00:10:24.995830
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 3 for 6 at pos 0
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.012916
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: A
card_suit: clubs
decision_reason: took A from discard
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.019031
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped A for Q at pos 4
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.025111
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Sofia": [{"rank": "9", "suit": "clubs"}, {"rank": "A", "suit": "clubs"}], "Diego": [{"rank": "J", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}], "Marcus": [{"rank": "J", "suit": "clubs"}, {"rank": "10", "suit": "diamonds"}]}


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.031164
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped 4 for J at pos 5
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sofia": [{"rank": "9", "suit": "clubs"}, {"rank": "A", "suit": "clubs"}], "Diego": [{"rank": "J", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}], "Marcus": [{"rank": "J", "suit": "clubs"}, {"rank": "10", "suit": "diamonds"}]}


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.039790
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: J
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took J from discard
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sofia": [{"rank": "9", "suit": "clubs"}, {"rank": "A", "suit": "clubs"}], "Maya": [{"rank": "5", "suit": "spades"}, {"rank": "4", "suit": "hearts"}], "Marcus": [{"rank": "J", "suit": "clubs"}, {"rank": "10", "suit": "diamonds"}]}


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.045964
player_id: cpu_2
player_name: Diego
action: swap
card_rank: J
card_suit: spades
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: swapped J for 10 at pos 4
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sofia": [{"rank": "9", "suit": "clubs"}, {"rank": "A", "suit": "clubs"}], "Maya": [{"rank": "5", "suit": "spades"}, {"rank": "4", "suit": "hearts"}], "Marcus": [{"rank": "J", "suit": "clubs"}, {"rank": "10", "suit": "diamonds"}]}


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.052130
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 10 from discard
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Sofia": [{"rank": "9", "suit": "clubs"}, {"rank": "A", "suit": "clubs"}], "Maya": [{"rank": "5", "suit": "spades"}, {"rank": "4", "suit": "hearts"}], "Diego": [{"rank": "J", "suit": "hearts"}, {"rank": "J", "suit": "spades"}, {"rank": "K", "suit": "hearts"}]}


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.057924
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "2", "suit": "diamonds"}
decision_reason: swapped 10 for 2 at pos 1
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Sofia": [{"rank": "9", "suit": "clubs"}, {"rank": "A", "suit": "clubs"}], "Maya": [{"rank": "5", "suit": "spades"}, {"rank": "4", "suit": "hearts"}], "Diego": [{"rank": "J", "suit": "hearts"}, {"rank": "J", "suit": "spades"}, {"rank": "K", "suit": "hearts"}]}


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.064086
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.070155
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: swapped 2 for 9 at pos 0
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.075946
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 9
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sofia": [{"rank": "2", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Diego": [{"rank": "J", "suit": "hearts"}, {"rank": "J", "suit": "spades"}, {"rank": "K", "suit": "hearts"}], "Marcus": [{"rank": "J", "suit": "clubs"}, {"rank": "10", "suit": "hearts"}, {"rank": "10", "suit": "diamonds"}]}


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.087865
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.093860
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 8 for J at pos 1
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.099852
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took J from discard
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}]

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


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.105992
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped J for 3 at pos 3
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}]

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


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.111866
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.117885
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 3 for 7 at pos 3
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.124237
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 7 from discard
visible_opponents_json:
{"Sofia": [{"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "clubs"}], "Diego": [{"rank": "8", "suit": "clubs"}, {"rank": "J", "suit": "spades"}, {"rank": "K", "suit": "hearts"}], "Marcus": [{"rank": "J", "suit": "clubs"}, {"rank": "10", "suit": "hearts"}, {"rank": "J", "suit": "hearts"}, {"rank": "10", "suit": "diamonds"}]}


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.130755
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped 7 for Q at pos 3
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sofia": [{"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "clubs"}], "Diego": [{"rank": "8", "suit": "clubs"}, {"rank": "J", "suit": "spades"}, {"rank": "K", "suit": "hearts"}], "Marcus": [{"rank": "J", "suit": "clubs"}, {"rank": "10", "suit": "hearts"}, {"rank": "J", "suit": "hearts"}, {"rank": "10", "suit": "diamonds"}]}


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.137167
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.143244
player_id: cpu_2
player_name: Diego
action: swap
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped J for 6 at pos 2
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.149522
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}]

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


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.155824
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 6 for J at pos 0
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}]

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


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.162005
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: A
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.168167
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped A for 3 at pos 1
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.174524
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sofia": [{"rank": "2", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}, {"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "clubs"}], "Diego": [{"rank": "8", "suit": "clubs"}, {"rank": "J", "suit": "diamonds"}, {"rank": "J", "suit": "spades"}, {"rank": "K", "suit": "hearts"}], "Marcus": [{"rank": "6", "suit": "clubs"}, {"rank": "10", "suit": "hearts"}, {"rank": "J", "suit": "hearts"}, {"rank": "10", "suit": "diamonds"}]}


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.180635
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 3 for 7 at pos 3
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sofia": [{"rank": "2", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}, {"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "clubs"}], "Diego": [{"rank": "8", "suit": "clubs"}, {"rank": "J", "suit": "diamonds"}, {"rank": "J", "suit": "spades"}, {"rank": "K", "suit": "hearts"}], "Marcus": [{"rank": "6", "suit": "clubs"}, {"rank": "10", "suit": "hearts"}, {"rank": "J", "suit": "hearts"}, {"rank": "10", "suit": "diamonds"}]}


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.186694
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.192647
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 7 for J at pos 2
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.198495
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}]

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


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.204264
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: swapped A for 10 at pos 1
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}]

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


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.210255
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.222168
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sofia": [{"rank": "2", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}, {"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "clubs"}], "Diego": [{"rank": "8", "suit": "clubs"}, {"rank": "7", "suit": "clubs"}, {"rank": "J", "suit": "spades"}, {"rank": "K", "suit": "hearts"}], "Marcus": [{"rank": "6", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "J", "suit": "hearts"}, {"rank": "10", "suit": "diamonds"}]}


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.227985
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 8 for 4 at pos 2
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sofia": [{"rank": "2", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}, {"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "clubs"}], "Diego": [{"rank": "8", "suit": "clubs"}, {"rank": "7", "suit": "clubs"}, {"rank": "J", "suit": "spades"}, {"rank": "K", "suit": "hearts"}], "Marcus": [{"rank": "6", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "J", "suit": "hearts"}, {"rank": "10", "suit": "diamonds"}]}


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.234039
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sofia": [{"rank": "2", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}, {"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "clubs"}], "Maya": [{"rank": "5", "suit": "spades"}, {"rank": "8", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}], "Marcus": [{"rank": "6", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "J", "suit": "hearts"}, {"rank": "10", "suit": "diamonds"}]}


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.239741
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped 4 for J at pos 4
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sofia": [{"rank": "2", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}, {"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "clubs"}], "Maya": [{"rank": "5", "suit": "spades"}, {"rank": "8", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}], "Marcus": [{"rank": "6", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "J", "suit": "hearts"}, {"rank": "10", "suit": "diamonds"}]}


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.245612
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 8
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": "A", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}]

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


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.251851
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 8
card_suit: diamonds
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": "A", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}]

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


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.257754
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "5", "suit": "spades"}, {"rank": "8", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}], "Diego": [{"rank": "8", "suit": "clubs"}, {"rank": "7", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}], "Marcus": [{"rank": "6", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "8", "suit": "diamonds"}, {"rank": "10", "suit": "diamonds"}]}


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.270465
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sofia": [{"rank": "2", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}, {"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "clubs"}], "Diego": [{"rank": "8", "suit": "clubs"}, {"rank": "7", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}], "Marcus": [{"rank": "6", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "8", "suit": "diamonds"}, {"rank": "10", "suit": "diamonds"}]}


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.276803
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 2 for 8 at pos 2
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sofia": [{"rank": "2", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}, {"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "clubs"}], "Diego": [{"rank": "8", "suit": "clubs"}, {"rank": "7", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}], "Marcus": [{"rank": "6", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "8", "suit": "diamonds"}, {"rank": "10", "suit": "diamonds"}]}


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.283059
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.288994
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "2", "suit": "hearts"}
decision_reason: swapped 4 for 2 at pos 0
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.294748
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}]

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


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.300789
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 2 for 10 at pos 4
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}]

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


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.307049
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 10
card_suit: spades
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "5", "suit": "spades"}, {"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}], "Diego": [{"rank": "4", "suit": "spades"}, {"rank": "8", "suit": "clubs"}, {"rank": "7", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}], "Marcus": [{"rank": "6", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "8", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}]}


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.319118
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: K
card_suit: spades
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.325057
player_id: cpu_1
player_name: Maya
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped K for 5 at pos 1
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.334926
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.340906
player_id: cpu_2
player_name: Diego
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": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.346727
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}]

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


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.354136
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 5 for 8 at pos 3
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}]

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


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.360974
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}], "Diego": [{"rank": "4", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "7", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}], "Marcus": [{"rank": "6", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "5", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}]}


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.373312
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.379479
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "K", "suit": "diamonds"}
decision_reason: swapped 7 for K at pos 0
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.385820
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took K from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.392073
player_id: cpu_2
player_name: Diego
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped K for 7 at pos 2
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.398320
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}]

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


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.404554
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped 7 for 3 at pos 5
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}]

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


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.410543
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 3 from discard
visible_opponents_json:
{"Maya": [{"rank": "7", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}], "Diego": [{"rank": "4", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}], "Marcus": [{"rank": "6", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "5", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}, {"rank": "7", "suit": "clubs"}]}


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.416885
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 3 for 7 at pos 5
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.422795
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.428873
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 7 for 8 at pos 4
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.437887
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.444275
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "K", "suit": "clubs"}
decision_reason: swapped 6 for K at pos 3
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.450311
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took K from discard
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}]

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


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.456715
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped K for 7 at pos 5
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.462356
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 8143b069-5246-4d23-a7da-0c407730652e
timestamp: 2026-01-25 00:10:25.468654
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 7 for 4 at pos 2
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.485471
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: K
card_suit: spades
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Sage": [{"rank": "Q", "suit": "hearts"}, {"rank": "9", "suit": "spades"}], "Diego": [{"rank": "A", "suit": "hearts"}, {"rank": "7", "suit": "hearts"}], "Kenji": [{"rank": "J", "suit": "spades"}, {"rank": "4", "suit": "spades"}]}


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.491263
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped K for 7 at pos 2
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Sage": [{"rank": "Q", "suit": "hearts"}, {"rank": "9", "suit": "spades"}], "Diego": [{"rank": "A", "suit": "hearts"}, {"rank": "7", "suit": "hearts"}], "Kenji": [{"rank": "J", "suit": "spades"}, {"rank": "4", "suit": "spades"}]}


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.497513
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Sofia": [{"rank": "K", "suit": "spades"}, {"rank": "7", "suit": "clubs"}], "Diego": [{"rank": "A", "suit": "hearts"}, {"rank": "7", "suit": "hearts"}], "Kenji": [{"rank": "J", "suit": "spades"}, {"rank": "4", "suit": "spades"}]}


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.504012
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped 7 for Q at pos 1
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Sofia": [{"rank": "K", "suit": "spades"}, {"rank": "7", "suit": "clubs"}], "Diego": [{"rank": "A", "suit": "hearts"}, {"rank": "7", "suit": "hearts"}], "Kenji": [{"rank": "J", "suit": "spades"}, {"rank": "4", "suit": "spades"}]}


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.510689
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sofia": [{"rank": "K", "suit": "spades"}, {"rank": "7", "suit": "clubs"}], "Sage": [{"rank": "7", "suit": "spades"}, {"rank": "9", "suit": "spades"}], "Kenji": [{"rank": "J", "suit": "spades"}, {"rank": "4", "suit": "spades"}]}


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.517029
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 5 for 7 at pos 5
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}]

visible_opponents_json:
{"Sofia": [{"rank": "K", "suit": "spades"}, {"rank": "7", "suit": "clubs"}], "Sage": [{"rank": "7", "suit": "spades"}, {"rank": "9", "suit": "spades"}], "Kenji": [{"rank": "J", "suit": "spades"}, {"rank": "4", "suit": "spades"}]}


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.523208
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Sofia": [{"rank": "K", "suit": "spades"}, {"rank": "7", "suit": "clubs"}], "Sage": [{"rank": "7", "suit": "spades"}, {"rank": "9", "suit": "spades"}], "Diego": [{"rank": "A", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}]}


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.529370
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped 7 for J at pos 2
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Sofia": [{"rank": "K", "suit": "spades"}, {"rank": "7", "suit": "clubs"}], "Sage": [{"rank": "7", "suit": "spades"}, {"rank": "9", "suit": "spades"}], "Diego": [{"rank": "A", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}]}


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.537036
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Sage": [{"rank": "7", "suit": "spades"}, {"rank": "9", "suit": "spades"}], "Diego": [{"rank": "A", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}], "Kenji": [{"rank": "7", "suit": "hearts"}, {"rank": "4", "suit": "spades"}]}


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.543037
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped A for 7 at pos 3
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Sage": [{"rank": "7", "suit": "spades"}, {"rank": "9", "suit": "spades"}], "Diego": [{"rank": "A", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}], "Kenji": [{"rank": "7", "suit": "hearts"}, {"rank": "4", "suit": "spades"}]}


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.548932
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": true}]

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


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.554499
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "A", "suit": "spades"}
decision_reason: swapped 7 for A at pos 4
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": true}]

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


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.560238
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: A
card_suit: spades
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took A from discard
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}]

visible_opponents_json:
{"Sofia": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "clubs"}], "Sage": [{"rank": "7", "suit": "spades"}, {"rank": "7", "suit": "clubs"}, {"rank": "9", "suit": "spades"}], "Kenji": [{"rank": "7", "suit": "hearts"}, {"rank": "4", "suit": "spades"}]}


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.565710
player_id: cpu_2
player_name: Diego
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped A for Q at pos 3
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}]

visible_opponents_json:
{"Sofia": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "clubs"}], "Sage": [{"rank": "7", "suit": "spades"}, {"rank": "7", "suit": "clubs"}, {"rank": "9", "suit": "spades"}], "Kenji": [{"rank": "7", "suit": "hearts"}, {"rank": "4", "suit": "spades"}]}


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.571444
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Sofia": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "clubs"}], "Sage": [{"rank": "7", "suit": "spades"}, {"rank": "7", "suit": "clubs"}, {"rank": "9", "suit": "spades"}], "Diego": [{"rank": "A", "suit": "hearts"}, {"rank": "A", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}]}


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.583502
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Sage": [{"rank": "7", "suit": "spades"}, {"rank": "7", "suit": "clubs"}, {"rank": "9", "suit": "spades"}], "Diego": [{"rank": "A", "suit": "hearts"}, {"rank": "A", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}], "Kenji": [{"rank": "7", "suit": "hearts"}, {"rank": "4", "suit": "spades"}]}


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.590030
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped A for 4 at pos 0
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Sage": [{"rank": "7", "suit": "spades"}, {"rank": "7", "suit": "clubs"}, {"rank": "9", "suit": "spades"}], "Diego": [{"rank": "A", "suit": "hearts"}, {"rank": "A", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}], "Kenji": [{"rank": "7", "suit": "hearts"}, {"rank": "4", "suit": "spades"}]}


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.595901
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": true}]

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


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.601791
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped 4 for 9 at pos 5
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.607906
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.613801
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 3 for 5 at pos 5
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.621213
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 5 from discard
visible_opponents_json:
{"Sofia": [{"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "clubs"}], "Sage": [{"rank": "7", "suit": "spades"}, {"rank": "7", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}], "Diego": [{"rank": "A", "suit": "hearts"}, {"rank": "A", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}]}


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.627245
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 5 for 6 at pos 0
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}]

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


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.633579
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.639903
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped K for 6 at pos 5
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.646051
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.652445
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 6 for 7 at pos 1
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.658809
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.665272
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 7 for 8 at pos 2
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.671411
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Sofia": [{"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}], "Sage": [{"rank": "6", "suit": "clubs"}, {"rank": "7", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}], "Diego": [{"rank": "A", "suit": "hearts"}, {"rank": "7", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}]}


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.677802
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "K", "suit": "diamonds"}
decision_reason: swapped 8 for K at pos 5
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sofia": [{"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}], "Sage": [{"rank": "6", "suit": "clubs"}, {"rank": "7", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}], "Diego": [{"rank": "A", "suit": "hearts"}, {"rank": "7", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}]}


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.683983
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took K from discard
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.690244
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped K for Q at pos 1
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.696217
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.702182
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 5 for 7 at pos 4
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.708217
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.714185
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped 7 for 9 at pos 1
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.720396
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}]

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


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.727017
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped J for 8 at pos 1
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}]

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


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.733624
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"Sage": [{"rank": "6", "suit": "clubs"}, {"rank": "5", "suit": "spades"}, {"rank": "4", "suit": "hearts"}], "Diego": [{"rank": "A", "suit": "hearts"}, {"rank": "7", "suit": "clubs"}, {"rank": "7", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}], "Kenji": [{"rank": "5", "suit": "diamonds"}, {"rank": "J", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "4", "suit": "spades"}, {"rank": "8", "suit": "hearts"}]}


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.739897
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "A", "suit": "diamonds"}
decision_reason: swapped 2 for A at pos 0
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"Sage": [{"rank": "6", "suit": "clubs"}, {"rank": "5", "suit": "spades"}, {"rank": "4", "suit": "hearts"}], "Diego": [{"rank": "A", "suit": "hearts"}, {"rank": "7", "suit": "clubs"}, {"rank": "7", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}], "Kenji": [{"rank": "5", "suit": "diamonds"}, {"rank": "J", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "4", "suit": "spades"}, {"rank": "8", "suit": "hearts"}]}


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.745981
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took A from discard
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.751812
player_id: cpu_1
player_name: Sage
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped A for 6 at pos 1
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.757766
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.763869
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 6 for 7 at pos 1
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.769991
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}]

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


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.776091
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 7 for J at pos 1
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}]

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


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.782182
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.794057
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.800259
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 6 for 10 at pos 2
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.806562
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.813047
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "2", "suit": "clubs"}
decision_reason: swapped 4 for 2 at pos 4
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.820601
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}]

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


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.826603
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 2 for 8 at pos 5
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.832659
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "A", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}, {"rank": "5", "suit": "spades"}, {"rank": "4", "suit": "hearts"}], "Diego": [{"rank": "A", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}, {"rank": "7", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}], "Kenji": [{"rank": "5", "suit": "diamonds"}, {"rank": "7", "suit": "clubs"}, {"rank": "7", "suit": "hearts"}, {"rank": "4", "suit": "spades"}, {"rank": "2", "suit": "clubs"}]}


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.847668
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: ff7e71a2-7d65-4c71-a923-30c95a006baa
timestamp: 2026-01-25 00:10:25.853922
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 5 for 6 at pos 2
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 79704a0a-91e6-46be-a558-fe86191fa9e7
timestamp: 2026-01-25 00:10:25.872672
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: 2
card_suit: diamonds
decision_reason: took 2 from discard
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Maya": [{"rank": "J", "suit": "clubs"}, {"rank": "Q", "suit": "diamonds"}], "Diego": [{"rank": "10", "suit": "spades"}, {"rank": "10", "suit": "hearts"}], "Marcus": [{"rank": "6", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}]}


game_id: 79704a0a-91e6-46be-a558-fe86191fa9e7
timestamp: 2026-01-25 00:10:25.878575
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 2 for 10 at pos 3
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Maya": [{"rank": "J", "suit": "clubs"}, {"rank": "Q", "suit": "diamonds"}], "Diego": [{"rank": "10", "suit": "spades"}, {"rank": "10", "suit": "hearts"}], "Marcus": [{"rank": "6", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}]}


game_id: 79704a0a-91e6-46be-a558-fe86191fa9e7
timestamp: 2026-01-25 00:10:25.886124
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "Diego": [{"rank": "10", "suit": "spades"}, {"rank": "10", "suit": "hearts"}], "Marcus": [{"rank": "6", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}]}


game_id: 79704a0a-91e6-46be-a558-fe86191fa9e7
timestamp: 2026-01-25 00:10:25.892374
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 7 for J at pos 1
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "Diego": [{"rank": "10", "suit": "spades"}, {"rank": "10", "suit": "hearts"}], "Marcus": [{"rank": "6", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}]}


game_id: 79704a0a-91e6-46be-a558-fe86191fa9e7
timestamp: 2026-01-25 00:10:25.898994
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "Maya": [{"rank": "7", "suit": "clubs"}, {"rank": "Q", "suit": "diamonds"}], "Marcus": [{"rank": "6", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}]}


game_id: 79704a0a-91e6-46be-a558-fe86191fa9e7
timestamp: 2026-01-25 00:10:25.905145
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped 2 for 10 at pos 0
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "Maya": [{"rank": "7", "suit": "clubs"}, {"rank": "Q", "suit": "diamonds"}], "Marcus": [{"rank": "6", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}]}


game_id: 79704a0a-91e6-46be-a558-fe86191fa9e7
timestamp: 2026-01-25 00:10:25.911207
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "Maya": [{"rank": "7", "suit": "clubs"}, {"rank": "Q", "suit": "diamonds"}], "Diego": [{"rank": "2", "suit": "spades"}, {"rank": "10", "suit": "hearts"}]}


game_id: 79704a0a-91e6-46be-a558-fe86191fa9e7
timestamp: 2026-01-25 00:10:25.917188
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 5 for 7 at pos 3
hand_json:
[{"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "Maya": [{"rank": "7", "suit": "clubs"}, {"rank": "Q", "suit": "diamonds"}], "Diego": [{"rank": "2", "suit": "spades"}, {"rank": "10", "suit": "hearts"}]}


game_id: 79704a0a-91e6-46be-a558-fe86191fa9e7
timestamp: 2026-01-25 00:10:25.923410
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: 79704a0a-91e6-46be-a558-fe86191fa9e7
timestamp: 2026-01-25 00:10:25.934973
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: took A from discard
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "Diego": [{"rank": "2", "suit": "spades"}, {"rank": "10", "suit": "hearts"}], "Marcus": [{"rank": "6", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}]}


game_id: 79704a0a-91e6-46be-a558-fe86191fa9e7
timestamp: 2026-01-25 00:10:25.941185
player_id: cpu_1
player_name: Maya
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped A for Q at pos 3
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "Diego": [{"rank": "2", "suit": "spades"}, {"rank": "10", "suit": "hearts"}], "Marcus": [{"rank": "6", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}]}


game_id: 79704a0a-91e6-46be-a558-fe86191fa9e7
timestamp: 2026-01-25 00:10:25.947359
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: 9
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "Maya": [{"rank": "7", "suit": "clubs"}, {"rank": "A", "suit": "clubs"}], "Marcus": [{"rank": "6", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}]}


game_id: 79704a0a-91e6-46be-a558-fe86191fa9e7
timestamp: 2026-01-25 00:10:25.953669
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 9
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: swapped 9 for 10 at pos 5
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "Maya": [{"rank": "7", "suit": "clubs"}, {"rank": "A", "suit": "clubs"}], "Marcus": [{"rank": "6", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}]}


game_id: 79704a0a-91e6-46be-a558-fe86191fa9e7
timestamp: 2026-01-25 00:10:25.959705
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "Maya": [{"rank": "7", "suit": "clubs"}, {"rank": "A", "suit": "clubs"}], "Diego": [{"rank": "2", "suit": "spades"}, {"rank": "9", "suit": "clubs"}]}


game_id: 79704a0a-91e6-46be-a558-fe86191fa9e7
timestamp: 2026-01-25 00:10:25.972169
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "7", "suit": "clubs"}, {"rank": "A", "suit": "clubs"}], "Diego": [{"rank": "2", "suit": "spades"}, {"rank": "9", "suit": "clubs"}], "Marcus": [{"rank": "6", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}]}


game_id: 79704a0a-91e6-46be-a558-fe86191fa9e7
timestamp: 2026-01-25 00:10:25.978702
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 3 for 5 at pos 5
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 79704a0a-91e6-46be-a558-fe86191fa9e7
timestamp: 2026-01-25 00:10:25.986138
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}], "Diego": [{"rank": "2", "suit": "spades"}, {"rank": "9", "suit": "clubs"}], "Marcus": [{"rank": "6", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}]}


game_id: 79704a0a-91e6-46be-a558-fe86191fa9e7
timestamp: 2026-01-25 00:10:25.992448
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 5 for 7 at pos 1
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}], "Diego": [{"rank": "2", "suit": "spades"}, {"rank": "9", "suit": "clubs"}], "Marcus": [{"rank": "6", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}]}


game_id: 79704a0a-91e6-46be-a558-fe86191fa9e7
timestamp: 2026-01-25 00:10:25.998974
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": true}]

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


game_id: 79704a0a-91e6-46be-a558-fe86191fa9e7
timestamp: 2026-01-25 00:10:26.005242
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: swapped 7 for 9 at pos 5
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}]

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


game_id: 79704a0a-91e6-46be-a558-fe86191fa9e7
timestamp: 2026-01-25 00:10:26.011322
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}], "Maya": [{"rank": "5", "suit": "spades"}, {"rank": "A", "suit": "clubs"}], "Diego": [{"rank": "2", "suit": "spades"}, {"rank": "7", "suit": "clubs"}]}


game_id: 79704a0a-91e6-46be-a558-fe86191fa9e7
timestamp: 2026-01-25 00:10:26.017318
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 4 for 6 at pos 1
hand_json:
[{"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}], "Maya": [{"rank": "5", "suit": "spades"}, {"rank": "A", "suit": "clubs"}], "Diego": [{"rank": "2", "suit": "spades"}, {"rank": "7", "suit": "clubs"}]}


game_id: 79704a0a-91e6-46be-a558-fe86191fa9e7
timestamp: 2026-01-25 00:10:26.023451
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: K
card_suit: spades
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

visible_opponents_json:
{"Maya": [{"rank": "5", "suit": "spades"}, {"rank": "A", "suit": "clubs"}], "Diego": [{"rank": "2", "suit": "spades"}, {"rank": "7", "suit": "clubs"}], "Marcus": [{"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}]}


game_id: 79704a0a-91e6-46be-a558-fe86191fa9e7
timestamp: 2026-01-25 00:10:26.029662
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped K for 3 at pos 5
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Maya": [{"rank": "5", "suit": "spades"}, {"rank": "A", "suit": "clubs"}], "Diego": [{"rank": "2", "suit": "spades"}, {"rank": "7", "suit": "clubs"}], "Marcus": [{"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}]}


game_id: 79704a0a-91e6-46be-a558-fe86191fa9e7
timestamp: 2026-01-25 00:10:26.036122
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: 79704a0a-91e6-46be-a558-fe86191fa9e7
timestamp: 2026-01-25 00:10:26.042091
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 3 for 5 at pos 1
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: 79704a0a-91e6-46be-a558-fe86191fa9e7
timestamp: 2026-01-25 00:10:26.048080
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}]

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


game_id: 79704a0a-91e6-46be-a558-fe86191fa9e7
timestamp: 2026-01-25 00:10:26.054151
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped 5 for Q at pos 3
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}]

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


game_id: 79704a0a-91e6-46be-a558-fe86191fa9e7
timestamp: 2026-01-25 00:10:26.060091
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}]

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


game_id: 79704a0a-91e6-46be-a558-fe86191fa9e7
timestamp: 2026-01-25 00:10:26.066882
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped A for 5 at pos 3
hand_json:
[{"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}]

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


game_id: 79704a0a-91e6-46be-a558-fe86191fa9e7
timestamp: 2026-01-25 00:10:26.072956
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 79704a0a-91e6-46be-a558-fe86191fa9e7
timestamp: 2026-01-25 00:10:26.079047
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped 5 for 9 at pos 2
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


