# moves

game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:47.996740
player_id: cpu_3
player_name: Diego
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}]

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


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:48.002818
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 7 for 8 at pos 3
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}]

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


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:48.008513
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 9
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": "6", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}]

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


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:48.020452
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:48.032266
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 10
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:48.037874
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 10
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped 10 for 3 at pos 1
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:48.047460
player_id: cpu_3
player_name: Diego
action: take_discard
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}]

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


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:48.053693
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 3 for 7 at pos 3
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}]

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


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:48.059616
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 7 from discard
visible_opponents_json:
{"River": [{"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}], "Kenji": [{"rank": "K", "suit": "hearts"}, {"rank": "10", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}], "Diego": [{"rank": "4", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}]}


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:48.065917
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: swapped 7 for 9 at pos 2
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}]

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


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:48.071930
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "A", "suit": "diamonds"}, {"rank": "6", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "3", "suit": "clubs"}], "Kenji": [{"rank": "K", "suit": "hearts"}, {"rank": "10", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}], "Diego": [{"rank": "4", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}]}


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:48.084183
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:48.090041
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped 4 for 10 at pos 1
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:48.095818
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}]

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


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:48.101903
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 7 for J at pos 5
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}]

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


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:48.107778
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}]

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


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:48.119725
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "A", "suit": "diamonds"}, {"rank": "6", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "3", "suit": "clubs"}], "Kenji": [{"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}], "Diego": [{"rank": "4", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}, {"rank": "7", "suit": "clubs"}]}


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:48.125429
player_id: cpu_1
player_name: River
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 3 for Q at pos 5
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:48.131600
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 5
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": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:48.137333
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 5 for 7 at pos 4
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:48.143744
player_id: cpu_3
player_name: Diego
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}]

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


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:48.150051
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 7 for 8 at pos 1
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}]

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


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:48.156175
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}], "Kenji": [{"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "5", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}], "Diego": [{"rank": "7", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}, {"rank": "7", "suit": "clubs"}]}


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:48.161850
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 5 for 7 at pos 2
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}]

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


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:48.167524
player_id: cpu_1
player_name: River
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:48.173306
player_id: cpu_1
player_name: River
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 7 for 10 at pos 4
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.190067
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.196025
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped A for 7 at pos 3
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.201833
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.207800
player_id: cpu_1
player_name: Kenji
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": "4", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.213657
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.219661
player_id: cpu_2
player_name: River
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped 2 for 9 at pos 1
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.226762
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.238674
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "4", "suit": "hearts"}, {"rank": "7", "suit": "diamonds"}], "River": [{"rank": "2", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}], "Sage": [{"rank": "2", "suit": "hearts"}, {"rank": "10", "suit": "diamonds"}]}


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.243920
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 2 for 5 at pos 1
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "4", "suit": "hearts"}, {"rank": "7", "suit": "diamonds"}], "River": [{"rank": "2", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}], "Sage": [{"rank": "2", "suit": "hearts"}, {"rank": "10", "suit": "diamonds"}]}


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.249604
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.255749
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 5 for 7 at pos 5
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.261832
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.273880
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: took 10 from discard
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.280025
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped 10 for 10 at pos 0
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.286286
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "4", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}], "River": [{"rank": "2", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}], "Sage": [{"rank": "10", "suit": "hearts"}, {"rank": "2", "suit": "hearts"}, {"rank": "10", "suit": "diamonds"}]}


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.297682
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.309068
player_id: cpu_2
player_name: River
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: took 6 from discard
visible_opponents_json:
{"Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "clubs"}], "Kenji": [{"rank": "4", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}], "Sage": [{"rank": "10", "suit": "hearts"}, {"rank": "2", "suit": "hearts"}, {"rank": "10", "suit": "diamonds"}]}


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.314752
player_id: cpu_2
player_name: River
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "A", "suit": "spades"}
decision_reason: swapped 6 for A at pos 2
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.320348
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: A
card_suit: spades
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: took A from discard
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.325988
player_id: cpu_3
player_name: Sage
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: swapped A for 10 at pos 0
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.331878
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "4", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}], "River": [{"rank": "2", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}, {"rank": "K", "suit": "clubs"}], "Sage": [{"rank": "A", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "10", "suit": "diamonds"}]}


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.337402
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "A", "suit": "clubs"}
decision_reason: swapped 2 for A at pos 3
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.343312
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took A from discard
visible_opponents_json:
{"Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}], "River": [{"rank": "2", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}, {"rank": "K", "suit": "clubs"}], "Sage": [{"rank": "A", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "10", "suit": "diamonds"}]}


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.349116
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped A for 5 at pos 5
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.355129
player_id: cpu_2
player_name: River
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.360762
player_id: cpu_2
player_name: River
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 5 for 6 at pos 2
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.366338
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.372075
player_id: cpu_3
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 3
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.378655
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 8
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": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.390147
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.396569
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "A", "suit": "hearts"}
decision_reason: swapped 6 for A at pos 4
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.402444
player_id: cpu_2
player_name: River
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": "Q", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.407844
player_id: cpu_2
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 2
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.413569
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.419220
player_id: cpu_3
player_name: Sage
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped K for 6 at pos 3
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.425348
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: took 6 from discard
visible_opponents_json:
{"Kenji": [{"rank": "4", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}, {"rank": "A", "suit": "clubs"}], "River": [{"rank": "2", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}], "Sage": [{"rank": "A", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}]}


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.431060
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 6 for 5 at pos 5
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.437143
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.443217
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 5 for 6 at pos 4
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.449306
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.460165
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.472383
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.478465
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 3 for 6 at pos 5
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.484569
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.490900
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped 6 for Q at pos 1
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.496937
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}], "Kenji": [{"rank": "4", "suit": "hearts"}, {"rank": "6", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}], "Sage": [{"rank": "A", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}]}


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.503056
player_id: cpu_2
player_name: River
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 4 for 7 at pos 3
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.509170
player_id: cpu_3
player_name: Sage
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:
{"Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}], "Kenji": [{"rank": "4", "suit": "hearts"}, {"rank": "6", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}], "River": [{"rank": "2", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}]}


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.514803
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "K", "suit": "diamonds"}
decision_reason: swapped 7 for K at pos 4
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.520681
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took K from discard
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.526408
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped K for 3 at pos 5
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.532312
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.538220
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 3 for 6 at pos 1
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.544334
player_id: cpu_2
player_name: River
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.549783
player_id: cpu_2
player_name: River
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 6 for 5 at pos 4
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.555252
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.561103
player_id: cpu_3
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": "A", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.570750
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.576802
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: swapped 7 for 9 at pos 2
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.582531
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.588228
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "K", "suit": "spades"}
decision_reason: swapped 8 for K at pos 3
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.593979
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "K", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.599935
player_id: cpu_2
player_name: River
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 5 for 6 at pos 4
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.606120
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "K", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.613568
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped 6 for 9 at pos 1
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.619217
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.630528
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.636415
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped 8 for 4 at pos 2
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.642336
player_id: cpu_2
player_name: River
action: take_discard
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.648181
player_id: cpu_2
player_name: River
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped 4 for Q at pos 0
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.654556
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.661933
player_id: cpu_3
player_name: Sage
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": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}]

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


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.667636
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 6 from discard
visible_opponents_json:
{"Kenji": [{"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "8", "suit": "clubs"}, {"rank": "8", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}], "River": [{"rank": "4", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}], "Sage": [{"rank": "A", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}, {"rank": "5", "suit": "spades"}]}


game_id: c61d0722-c4d3-4a52-bbc2-8fd0ba99d0ff
timestamp: 2026-01-25 00:08:48.673366
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 6 for 7 at pos 2
hand_json:
[{"rank": "10", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:48.689968
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Marcus": [{"rank": "2", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}], "Priya": [{"rank": "J", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}], "Sage": [{"rank": "10", "suit": "diamonds"}, {"rank": "3", "suit": "clubs"}]}


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:48.701258
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:48.712439
player_id: cpu_2
player_name: Priya
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": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:48.718319
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 2
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:48.723909
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "4", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}], "Marcus": [{"rank": "2", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}], "Priya": [{"rank": "7", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}]}


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:48.735907
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Marcus": [{"rank": "2", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}], "Priya": [{"rank": "7", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}], "Sage": [{"rank": "10", "suit": "diamonds"}, {"rank": "3", "suit": "clubs"}]}


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:48.747445
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:48.753108
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped A for 3 at pos 4
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:48.758969
player_id: cpu_2
player_name: Priya
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:48.764615
player_id: cpu_2
player_name: Priya
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 5 for 7 at pos 2
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:48.769867
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:48.775218
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 7 for 10 at pos 0
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:48.780998
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "2", "suit": "clubs"}, {"rank": "A", "suit": "clubs"}], "Priya": [{"rank": "5", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}], "Sage": [{"rank": "7", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}]}


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:48.792808
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:48.798960
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 4 for 8 at pos 3
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:48.804954
player_id: cpu_2
player_name: Priya
action: draw_deck
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:48.810507
player_id: cpu_2
player_name: Priya
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped K for 5 at pos 2
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:48.816071
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:48.821796
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 5 for 7 at pos 0
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:48.827389
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "2", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}], "Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}], "Sage": [{"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}]}


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:48.833309
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "2", "suit": "spades"}
decision_reason: swapped 7 for 2 at pos 3
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:48.839224
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:48.845135
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped 2 for 4 at pos 3
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:48.851079
player_id: cpu_2
player_name: Priya
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:48.856828
player_id: cpu_2
player_name: Priya
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped 4 for 10 at pos 4
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:48.863201
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:48.871717
player_id: cpu_3
player_name: Sage
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped A for 5 at pos 0
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:48.878194
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:48.884168
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 5 for 7 at pos 3
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:48.890388
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:48.901766
player_id: cpu_2
player_name: Priya
action: draw_deck
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:48.913668
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:48.954311
player_id: cpu_2
player_name: Priya
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped A for 4 at pos 4
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}]


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:48.960041
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 4 from discard
visible_opponents_json:
{"Kenji": [{"rank": "4", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}], "Marcus": [{"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "clubs"}], "Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "spades"}]}


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:48.966047
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped 4 for 4 at pos 2
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:48.971926
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 4 from discard
visible_opponents_json:
{"Marcus": [{"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "clubs"}], "Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Sage": [{"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}]}


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:48.977888
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 4 for 9 at pos 5
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:48.983706
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: Q
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "4", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}], "Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Sage": [{"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}]}


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:48.996773
player_id: cpu_2
player_name: Priya
action: draw_deck
card_rank: J
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:49.008148
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:49.013878
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped 3 for 4 at pos 2
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:49.020162
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:49.026198
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 4 for 5 at pos 3
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:49.031993
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 5 from discard
visible_opponents_json:
{"Kenji": [{"rank": "4", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}], "Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Sage": [{"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "spades"}, {"rank": "3", "suit": "clubs"}]}


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:49.037784
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 5 for 6 at pos 0
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:49.043940
player_id: cpu_2
player_name: Priya
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 6 from discard
visible_opponents_json:
{"Kenji": [{"rank": "4", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}], "Marcus": [{"rank": "5", "suit": "clubs"}, {"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "clubs"}], "Sage": [{"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "spades"}, {"rank": "3", "suit": "clubs"}]}


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:49.050611
player_id: cpu_2
player_name: Priya
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "2", "suit": "diamonds"}
decision_reason: swapped 6 for 2 at pos 5
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:49.056239
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:49.061848
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped 2 for 3 at pos 2
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:49.067431
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:49.073194
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 3 for 4 at pos 2
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:49.078923
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:49.084375
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 4 for 5 at pos 0
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:49.090354
player_id: cpu_2
player_name: Priya
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": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:49.096670
player_id: cpu_2
player_name: Priya
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 5 for 6 at pos 5
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:49.102842
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:49.108879
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped 6 for 9 at pos 1
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:49.114493
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:49.120942
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 4 for 5 at pos 0
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:49.126670
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:49.132395
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "A", "suit": "diamonds"}
decision_reason: swapped 5 for A at pos 1
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:49.137713
player_id: cpu_2
player_name: Priya
action: take_discard
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: took A from discard
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:49.143162
player_id: cpu_2
player_name: Priya
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "hearts"}
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": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:49.148652
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:49.153900
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped 6 for Q at pos 4
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:49.159699
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:49.165900
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 8 for 6 at pos 1
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:49.172098
player_id: cpu_1
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": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:49.177625
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "hearts"}
decision_reason: swapped 6 for 3 at pos 5
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:49.183537
player_id: cpu_2
player_name: Priya
action: take_discard
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:49.189911
player_id: cpu_2
player_name: Priya
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 3 for 5 at pos 5
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:49.195700
player_id: cpu_3
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": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 24a136bc-82ce-48e9-8a39-945a66924ac2
timestamp: 2026-01-25 00:08:49.201485
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 5 for 6 at pos 1
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: c1bacc40-e18e-4fee-9336-f656f88d826c
timestamp: 2026-01-25 00:08:49.217678
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 9
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Marcus": [{"rank": "6", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}], "Kenji": [{"rank": "Q", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}], "Priya": [{"rank": "4", "suit": "clubs"}, {"rank": "J", "suit": "diamonds"}]}


game_id: c1bacc40-e18e-4fee-9336-f656f88d826c
timestamp: 2026-01-25 00:08:49.228882
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}]

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


game_id: c1bacc40-e18e-4fee-9336-f656f88d826c
timestamp: 2026-01-25 00:08:49.243810
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"River": [{"rank": "4", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}], "Marcus": [{"rank": "6", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}], "Priya": [{"rank": "4", "suit": "clubs"}, {"rank": "J", "suit": "diamonds"}]}


game_id: c1bacc40-e18e-4fee-9336-f656f88d826c
timestamp: 2026-01-25 00:08:49.250073
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped A for Q at pos 1
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"River": [{"rank": "4", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}], "Marcus": [{"rank": "6", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}], "Priya": [{"rank": "4", "suit": "clubs"}, {"rank": "J", "suit": "diamonds"}]}


game_id: c1bacc40-e18e-4fee-9336-f656f88d826c
timestamp: 2026-01-25 00:08:49.255669
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: A
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: c1bacc40-e18e-4fee-9336-f656f88d826c
timestamp: 2026-01-25 00:08:49.261626
player_id: cpu_3
player_name: Priya
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped A for J at pos 4
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: c1bacc40-e18e-4fee-9336-f656f88d826c
timestamp: 2026-01-25 00:08:49.267413
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: c1bacc40-e18e-4fee-9336-f656f88d826c
timestamp: 2026-01-25 00:08:49.273293
player_id: cpu_0
player_name: River
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 2 for 4 at pos 0
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: c1bacc40-e18e-4fee-9336-f656f88d826c
timestamp: 2026-01-25 00:08:49.278834
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}]

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


game_id: c1bacc40-e18e-4fee-9336-f656f88d826c
timestamp: 2026-01-25 00:08:49.284606
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 4 for 6 at pos 2
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}]

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


game_id: c1bacc40-e18e-4fee-9336-f656f88d826c
timestamp: 2026-01-25 00:08:49.290190
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: c1bacc40-e18e-4fee-9336-f656f88d826c
timestamp: 2026-01-25 00:08:49.296151
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 4 for J at pos 2
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: c1bacc40-e18e-4fee-9336-f656f88d826c
timestamp: 2026-01-25 00:08:49.302054
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: c1bacc40-e18e-4fee-9336-f656f88d826c
timestamp: 2026-01-25 00:08:49.314273
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: c1bacc40-e18e-4fee-9336-f656f88d826c
timestamp: 2026-01-25 00:08:49.320153
player_id: cpu_0
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 1
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: c1bacc40-e18e-4fee-9336-f656f88d826c
timestamp: 2026-01-25 00:08:49.326229
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}]

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


game_id: c1bacc40-e18e-4fee-9336-f656f88d826c
timestamp: 2026-01-25 00:08:49.338594
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: J
card_suit: spades
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: c1bacc40-e18e-4fee-9336-f656f88d826c
timestamp: 2026-01-25 00:08:49.350176
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "2", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}], "Marcus": [{"rank": "4", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}], "Kenji": [{"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "spades"}, {"rank": "2", "suit": "clubs"}]}


game_id: c1bacc40-e18e-4fee-9336-f656f88d826c
timestamp: 2026-01-25 00:08:49.355801
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "2", "suit": "spades"}
decision_reason: swapped 5 for 2 at pos 3
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: c1bacc40-e18e-4fee-9336-f656f88d826c
timestamp: 2026-01-25 00:08:49.361667
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: c1bacc40-e18e-4fee-9336-f656f88d826c
timestamp: 2026-01-25 00:08:49.367138
player_id: cpu_0
player_name: River
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 2 for 6 at pos 1
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: c1bacc40-e18e-4fee-9336-f656f88d826c
timestamp: 2026-01-25 00:08:49.374728
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 6 from discard
visible_opponents_json:
{"River": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}, {"rank": "K", "suit": "hearts"}], "Kenji": [{"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "spades"}, {"rank": "2", "suit": "clubs"}], "Priya": [{"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "spades"}, {"rank": "A", "suit": "spades"}]}


game_id: c1bacc40-e18e-4fee-9336-f656f88d826c
timestamp: 2026-01-25 00:08:49.380862
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "A", "suit": "clubs"}
decision_reason: swapped 6 for A at pos 0
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}]

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


game_id: c1bacc40-e18e-4fee-9336-f656f88d826c
timestamp: 2026-01-25 00:08:49.386882
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took A from discard
visible_opponents_json:
{"River": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}, {"rank": "K", "suit": "hearts"}], "Marcus": [{"rank": "6", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}], "Priya": [{"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "spades"}, {"rank": "A", "suit": "spades"}]}


game_id: c1bacc40-e18e-4fee-9336-f656f88d826c
timestamp: 2026-01-25 00:08:49.392864
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped A for J at pos 4
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: c1bacc40-e18e-4fee-9336-f656f88d826c
timestamp: 2026-01-25 00:08:49.398890
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: c1bacc40-e18e-4fee-9336-f656f88d826c
timestamp: 2026-01-25 00:08:49.405055
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 4 for 5 at pos 3
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: c1bacc40-e18e-4fee-9336-f656f88d826c
timestamp: 2026-01-25 00:08:49.414444
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: c1bacc40-e18e-4fee-9336-f656f88d826c
timestamp: 2026-01-25 00:08:49.420127
player_id: cpu_0
player_name: River
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "A", "suit": "diamonds"}
decision_reason: swapped 5 for A at pos 3
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: c1bacc40-e18e-4fee-9336-f656f88d826c
timestamp: 2026-01-25 00:08:49.425677
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took A from discard
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}]

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


game_id: c1bacc40-e18e-4fee-9336-f656f88d826c
timestamp: 2026-01-25 00:08:49.431062
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped A for 6 at pos 0
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}]

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


game_id: c1bacc40-e18e-4fee-9336-f656f88d826c
timestamp: 2026-01-25 00:08:49.436675
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: c1bacc40-e18e-4fee-9336-f656f88d826c
timestamp: 2026-01-25 00:08:49.442447
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped 6 for 10 at pos 3
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: c1bacc40-e18e-4fee-9336-f656f88d826c
timestamp: 2026-01-25 00:08:49.448372
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 10
card_suit: spades
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: c1bacc40-e18e-4fee-9336-f656f88d826c
timestamp: 2026-01-25 00:08:49.460431
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: c1bacc40-e18e-4fee-9336-f656f88d826c
timestamp: 2026-01-25 00:08:49.466179
player_id: cpu_0
player_name: River
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 5 for 8 at pos 4
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: c1bacc40-e18e-4fee-9336-f656f88d826c
timestamp: 2026-01-25 00:08:49.476462
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}]

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


game_id: c1bacc40-e18e-4fee-9336-f656f88d826c
timestamp: 2026-01-25 00:08:49.488033
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: c1bacc40-e18e-4fee-9336-f656f88d826c
timestamp: 2026-01-25 00:08:49.493923
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 2 for 6 at pos 3
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: c1bacc40-e18e-4fee-9336-f656f88d826c
timestamp: 2026-01-25 00:08:49.499861
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 6 from discard
visible_opponents_json:
{"River": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "5", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}], "Marcus": [{"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}], "Kenji": [{"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "clubs"}]}


game_id: c1bacc40-e18e-4fee-9336-f656f88d826c
timestamp: 2026-01-25 00:08:49.506407
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 6 for 8 at pos 1
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: c1bacc40-e18e-4fee-9336-f656f88d826c
timestamp: 2026-01-25 00:08:49.512125
player_id: cpu_0
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": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: c1bacc40-e18e-4fee-9336-f656f88d826c
timestamp: 2026-01-25 00:08:49.518019
player_id: cpu_0
player_name: River
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 7 for 10 at pos 2
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: c1bacc40-e18e-4fee-9336-f656f88d826c
timestamp: 2026-01-25 00:08:49.524237
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}, {"rank": "7", "suit": "clubs"}, {"rank": "5", "suit": "spades"}, {"rank": "5", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}], "Kenji": [{"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "clubs"}], "Priya": [{"rank": "4", "suit": "clubs"}, {"rank": "6", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "spades"}]}


game_id: c1bacc40-e18e-4fee-9336-f656f88d826c
timestamp: 2026-01-25 00:08:49.536751
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: c1bacc40-e18e-4fee-9336-f656f88d826c
timestamp: 2026-01-25 00:08:49.542471
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped 3 for 4 at pos 2
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: c1bacc40-e18e-4fee-9336-f656f88d826c
timestamp: 2026-01-25 00:08:49.548362
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: c1bacc40-e18e-4fee-9336-f656f88d826c
timestamp: 2026-01-25 00:08:49.553954
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 4 for 6 at pos 1
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.569809
player_id: cpu_0
player_name: Sage
action: take_discard
card_rank: 5
card_suit: diamonds
decision_reason: took 5 from discard
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}]

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


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.575179
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped 5 for 3 at pos 3
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}]

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


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.580933
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: 3
card_suit: diamonds
decision_reason: took 3 from discard
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Sage": [{"rank": "5", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}, {"rank": "10", "suit": "hearts"}], "River": [{"rank": "9", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}], "Maya": [{"rank": "7", "suit": "spades"}, {"rank": "J", "suit": "clubs"}]}


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.586392
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 3 for 4 at pos 2
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Sage": [{"rank": "5", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}, {"rank": "10", "suit": "hearts"}], "River": [{"rank": "9", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}], "Maya": [{"rank": "7", "suit": "spades"}, {"rank": "J", "suit": "clubs"}]}


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.591808
player_id: cpu_2
player_name: River
action: take_discard
card_rank: 4
card_suit: diamonds
decision_reason: took 4 from discard
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}]

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


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.597647
player_id: cpu_2
player_name: River
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped 4 for 3 at pos 5
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.603603
player_id: cpu_3
player_name: Maya
action: take_discard
card_rank: 3
card_suit: clubs
decision_reason: took 3 from discard
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Sage": [{"rank": "5", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}, {"rank": "10", "suit": "hearts"}], "Diego": [{"rank": "3", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}], "River": [{"rank": "9", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}]}


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.609490
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 3 for J at pos 3
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Sage": [{"rank": "5", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}, {"rank": "10", "suit": "hearts"}], "Diego": [{"rank": "3", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}], "River": [{"rank": "9", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}]}


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.615348
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}]

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


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.621330
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: swapped 2 for 10 at pos 4
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}]

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


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.627606
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.633455
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped 4 for Q at pos 1
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.639411
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.650865
player_id: cpu_3
player_name: Maya
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}]

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


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.662718
player_id: cpu_0
player_name: Sage
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": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}]

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


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.680832
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped 6 for 9 at pos 5
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}]


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.686639
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "5", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}], "Diego": [{"rank": "4", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "6", "suit": "hearts"}], "Maya": [{"rank": "7", "suit": "spades"}, {"rank": "3", "suit": "clubs"}]}


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.692936
player_id: cpu_2
player_name: River
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped A for 9 at pos 2
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.699209
player_id: cpu_3
player_name: Maya
action: draw_deck
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "5", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}], "Diego": [{"rank": "4", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "6", "suit": "hearts"}], "River": [{"rank": "A", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}]}


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.705428
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 8 for 6 at pos 0
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}]

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


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.711518
player_id: cpu_0
player_name: Sage
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 6 from discard
visible_opponents_json:
{"Diego": [{"rank": "4", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "6", "suit": "hearts"}], "River": [{"rank": "A", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}], "Maya": [{"rank": "8", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}, {"rank": "3", "suit": "clubs"}]}


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.717241
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "K", "suit": "diamonds"}
decision_reason: swapped 6 for K at pos 5
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.723016
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took K from discard
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.728733
player_id: cpu_1
player_name: Diego
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped K for 6 at pos 5
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.734617
player_id: cpu_2
player_name: River
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.740162
player_id: cpu_2
player_name: River
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "2", "suit": "clubs"}
decision_reason: swapped 6 for 2 at pos 0
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.746184
player_id: cpu_3
player_name: Maya
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "2", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}]

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


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.752252
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 3 for 8 at pos 0
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}]

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


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.760688
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.766873
player_id: cpu_0
player_name: Sage
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped A for 6 at pos 5
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.773084
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.778818
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 6 for 4 at pos 0
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.784745
player_id: cpu_2
player_name: River
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.790685
player_id: cpu_2
player_name: River
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 4 for 6 at pos 0
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.796531
player_id: cpu_3
player_name: Maya
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}]

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


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.802386
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 6 for 7 at pos 1
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}]

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


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.808337
player_id: cpu_0
player_name: Sage
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.814394
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 7 for 8 at pos 1
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.819996
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.825567
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 5 for 6 at pos 0
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.831857
player_id: cpu_2
player_name: River
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.838061
player_id: cpu_2
player_name: River
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "2", "suit": "spades"}
decision_reason: swapped 6 for 2 at pos 1
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.844437
player_id: cpu_3
player_name: Maya
action: take_discard
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}]

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


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.850165
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 2 for 6 at pos 1
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}]

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


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.856516
player_id: cpu_0
player_name: Sage
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.862486
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 6 for 7 at pos 1
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.868349
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.874019
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped 7 for 10 at pos 4
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.879575
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: Q
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": "6", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.890996
player_id: cpu_3
player_name: Maya
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}]

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


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.896736
player_id: cpu_3
player_name: Maya
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped A for 3 at pos 0
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}]

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


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.902808
player_id: cpu_0
player_name: Sage
action: take_discard
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 6ca4647c-2611-479a-b6d5-5bedfce12243
timestamp: 2026-01-25 00:08:49.908875
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 3 for 6 at pos 1
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:49.926255
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}], "Priya": [{"rank": "6", "suit": "diamonds"}, {"rank": "J", "suit": "clubs"}], "Kenji": [{"rank": "7", "suit": "clubs"}, {"rank": "Q", "suit": "clubs"}]}


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:49.931907
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 4 for 8 at pos 5
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}], "Priya": [{"rank": "6", "suit": "diamonds"}, {"rank": "J", "suit": "clubs"}], "Kenji": [{"rank": "7", "suit": "clubs"}, {"rank": "Q", "suit": "clubs"}]}


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:49.937595
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: Q
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}], "Priya": [{"rank": "6", "suit": "diamonds"}, {"rank": "J", "suit": "clubs"}], "Kenji": [{"rank": "7", "suit": "clubs"}, {"rank": "Q", "suit": "clubs"}]}


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:49.949167
player_id: cpu_2
player_name: Priya
action: draw_deck
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}]

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


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:49.955108
player_id: cpu_2
player_name: Priya
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "A", "suit": "diamonds"}
decision_reason: swapped 3 for A at pos 0
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}]

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


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:49.961318
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took A from discard
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:49.967199
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped A for Q at pos 3
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:49.973264
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:49.985388
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:49.991329
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "2", "suit": "spades"}
decision_reason: swapped 6 for 2 at pos 2
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:49.997713
player_id: cpu_2
player_name: Priya
action: take_discard
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}]

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


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:50.003837
player_id: cpu_2
player_name: Priya
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 2 for J at pos 3
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}]

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


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:50.009703
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:50.021995
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "diamonds"}, {"rank": "6", "suit": "clubs"}, {"rank": "6", "suit": "spades"}], "Priya": [{"rank": "3", "suit": "hearts"}, {"rank": "6", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}], "Kenji": [{"rank": "7", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}]}


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:50.028113
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 2 for 4 at pos 5
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:50.035308
player_id: cpu_1
player_name: Sage
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": "9", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:50.041610
player_id: cpu_1
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": "9", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:50.047968
player_id: cpu_2
player_name: Priya
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}]

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


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:50.053974
player_id: cpu_2
player_name: Priya
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped 6 for Q at pos 4
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}]

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


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:50.060702
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "clubs"}], "Sage": [{"rank": "K", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}, {"rank": "6", "suit": "spades"}], "Priya": [{"rank": "3", "suit": "hearts"}, {"rank": "6", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}, {"rank": "6", "suit": "clubs"}]}


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:50.067017
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "K", "suit": "hearts"}
decision_reason: swapped 10 for K at pos 5
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}]

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


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:50.073429
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took K from discard
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:50.079750
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped K for 10 at pos 2
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:50.085904
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:50.092016
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 5 for 6 at pos 5
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:50.097822
player_id: cpu_2
player_name: Priya
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}]

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


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:50.109034
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: took 10 from discard
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}]

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


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:50.115257
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "A", "suit": "clubs"}
decision_reason: swapped 10 for A at pos 2
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}]

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


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:50.121223
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: took A from discard
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:50.127489
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped A for 3 at pos 3
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:50.133711
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:50.139920
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 3 for 5 at pos 5
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:50.150162
player_id: cpu_2
player_name: Priya
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: took 5 from discard
visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "clubs"}], "Sage": [{"rank": "K", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}, {"rank": "3", "suit": "spades"}], "Kenji": [{"rank": "7", "suit": "clubs"}, {"rank": "10", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}, {"rank": "10", "suit": "diamonds"}]}


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:50.157070
player_id: cpu_2
player_name: Priya
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 5 for 6 at pos 1
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}]

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


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:50.164001
player_id: cpu_3
player_name: Kenji
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": "K", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}]

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


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:50.170234
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: swapped 6 for 10 at pos 2
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}]

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


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:50.176355
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:50.182787
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 3 for J at pos 4
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:50.188859
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:50.195220
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 4 for 4 at pos 3
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:50.201408
player_id: cpu_2
player_name: Priya
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}]

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


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:50.208804
player_id: cpu_2
player_name: Priya
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 4 for 6 at pos 4
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}]

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


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:50.214764
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}]

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


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:50.220789
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 6 for 10 at pos 5
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:50.227216
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:50.239536
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:50.245674
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped 7 for 9 at pos 0
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:50.251933
player_id: cpu_2
player_name: Priya
action: draw_deck
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}]

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


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:50.258306
player_id: cpu_2
player_name: Priya
action: swap
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 8 for 5 at pos 2
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}]

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


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:50.264304
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:50.270276
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 5 for 7 at pos 1
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:50.276367
player_id: cpu_0
player_name: Marcus
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:
{"Sage": [{"rank": "7", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}, {"rank": "4", "suit": "spades"}, {"rank": "3", "suit": "spades"}], "Priya": [{"rank": "3", "suit": "hearts"}, {"rank": "5", "suit": "spades"}, {"rank": "8", "suit": "clubs"}, {"rank": "2", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}], "Kenji": [{"rank": "5", "suit": "clubs"}, {"rank": "6", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}, {"rank": "6", "suit": "clubs"}]}


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:50.282596
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "A", "suit": "hearts"}
decision_reason: swapped 7 for A at pos 1
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:50.288955
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took A from discard
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:50.294939
player_id: cpu_1
player_name: Sage
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped A for 7 at pos 0
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:50.300890
player_id: cpu_2
player_name: Priya
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}]

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


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:50.307397
player_id: cpu_2
player_name: Priya
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 7 for 8 at pos 2
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}]

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


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:50.313712
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: 3d1f684e-1d99-45ed-b3d3-a313ef792f0c
timestamp: 2026-01-25 00:08:50.320312
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 2 for 6 at pos 2
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.337985
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: 2
card_suit: spades
decision_reason: took 2 from discard
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Sofia": [{"rank": "9", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}], "Maya": [{"rank": "7", "suit": "hearts"}, {"rank": "6", "suit": "spades"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "Q", "suit": "diamonds"}]}


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.344015
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 2 for J at pos 1
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Sofia": [{"rank": "9", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}], "Maya": [{"rank": "7", "suit": "hearts"}, {"rank": "6", "suit": "spades"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "Q", "suit": "diamonds"}]}


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.350214
player_id: cpu_1
player_name: Sofia
action: draw_deck
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.355874
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 5 for 9 at pos 2
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.361993
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "10", "suit": "diamonds"}], "Sofia": [{"rank": "5", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "Q", "suit": "diamonds"}]}


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.374530
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 8 from discard
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.381808
player_id: cpu_3
player_name: Sage
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": "3", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.388168
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.394699
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 7 for 10 at pos 3
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.401099
player_id: cpu_1
player_name: Sofia
action: draw_deck
card_rank: 9
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.412862
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "7", "suit": "diamonds"}], "Sofia": [{"rank": "5", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "8", "suit": "spades"}]}


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.418957
player_id: cpu_2
player_name: Maya
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped K for 7 at pos 1
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "7", "suit": "diamonds"}], "Sofia": [{"rank": "5", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "8", "suit": "spades"}]}


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.425107
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.431169
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 4 for 8 at pos 3
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.437407
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "8", "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": "diamonds", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.443258
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped A for 7 at pos 3
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.449135
player_id: cpu_1
player_name: Sofia
action: draw_deck
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}], "Maya": [{"rank": "K", "suit": "hearts"}, {"rank": "6", "suit": "spades"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}]}


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.465608
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: J
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.478066
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.495729
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "K", "suit": "spades"}
decision_reason: swapped 5 for K at pos 5
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.502132
player_id: cpu_1
player_name: Sofia
action: take_discard
card_rank: K
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took K from discard
visible_opponents_json:
{"Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}], "Maya": [{"rank": "K", "suit": "hearts"}, {"rank": "6", "suit": "spades"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}]}


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.511478
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped K for 5 at pos 2
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.517538
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 9
card_suit: spades
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}], "Sofia": [{"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}], "Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}]}


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.533788
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}], "Sofia": [{"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}], "Maya": [{"rank": "K", "suit": "hearts"}, {"rank": "6", "suit": "spades"}]}


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.539844
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped 8 for 3 at pos 0
hand_json:
[{"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.545537
player_id: cpu_0
player_name: Marcus
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": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.552083
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 3 for 5 at pos 5
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.560478
player_id: cpu_1
player_name: Sofia
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.566793
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "2", "suit": "clubs"}
decision_reason: swapped 5 for 2 at pos 5
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.572337
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "2", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}], "Sofia": [{"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}], "Sage": [{"rank": "8", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}]}


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.584024
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: A
card_suit: spades
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.589724
player_id: cpu_3
player_name: Sage
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped A for 8 at pos 0
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.595835
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.601902
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped K for 3 at pos 5
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.608302
player_id: cpu_1
player_name: Sofia
action: take_discard
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.614400
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 3 for 5 at pos 5
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.620494
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took 5 from discard
visible_opponents_json:
{"Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}], "Sofia": [{"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}], "Sage": [{"rank": "A", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}]}


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.626764
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 5 for 6 at pos 5
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.632827
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.645171
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 4
card_suit: spades
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": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.651086
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "A", "suit": "hearts"}
decision_reason: swapped 4 for A at pos 4
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.657183
player_id: cpu_1
player_name: Sofia
action: take_discard
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took A from discard
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.663254
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped A for 3 at pos 5
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.669379
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.675800
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 3 for 5 at pos 5
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.681977
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 5 from discard
visible_opponents_json:
{"Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}, {"rank": "K", "suit": "clubs"}], "Sofia": [{"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}], "Maya": [{"rank": "K", "suit": "hearts"}, {"rank": "3", "suit": "spades"}]}


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.687945
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "hearts"}
decision_reason: swapped 5 for 3 at pos 4
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.693725
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "Q", "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": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.699513
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped 3 for 4 at pos 4
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.705118
player_id: cpu_1
player_name: Sofia
action: take_discard
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.710772
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped 4 for 3 at pos 0
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.716628
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.721884
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 3 for 4 at pos 2
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.727931
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.733438
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 4 for 5 at pos 4
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.739866
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.745854
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 5 for 5 at pos 2
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.752066
player_id: cpu_1
player_name: Sofia
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.758307
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 5 for 5 at pos 1
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.764131
player_id: cpu_2
player_name: Maya
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": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.770121
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "A", "suit": "clubs"}
decision_reason: swapped 5 for A at pos 0
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.775919
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took A from discard
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.781865
player_id: cpu_3
player_name: Sage
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped A for 4 at pos 3
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.787900
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
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": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.793832
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "hearts"}
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": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.799892
player_id: cpu_1
player_name: Sofia
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.805731
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 5 for J at pos 3
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.813775
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.820146
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: swapped 6 for 10 at pos 4
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.826232
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.832322
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped 7 for Q at pos 5
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.838386
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 3f2ddd40-20dd-4329-9779-f333e7262e71
timestamp: 2026-01-25 00:08:50.844444
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 2 for 4 at pos 2
hand_json:
[{"rank": "10", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:50.863255
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: K
card_suit: spades
decision_reason: took K from discard
hand_json:
[{"rank": "J", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Maya": [{"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}], "Priya": [{"rank": "4", "suit": "clubs"}, {"rank": "Q", "suit": "hearts"}], "Kenji": [{"rank": "J", "suit": "clubs"}, {"rank": "7", "suit": "diamonds"}]}


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:50.868595
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped K for J at pos 0
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Maya": [{"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}], "Priya": [{"rank": "4", "suit": "clubs"}, {"rank": "Q", "suit": "hearts"}], "Kenji": [{"rank": "J", "suit": "clubs"}, {"rank": "7", "suit": "diamonds"}]}


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:50.874338
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:50.887437
player_id: cpu_2
player_name: Priya
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:50.893089
player_id: cpu_2
player_name: Priya
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped 7 for Q at pos 4
hand_json:
[{"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:50.898603
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: Q
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:50.910802
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Maya": [{"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}], "Priya": [{"rank": "4", "suit": "clubs"}, {"rank": "7", "suit": "hearts"}], "Kenji": [{"rank": "J", "suit": "clubs"}, {"rank": "7", "suit": "diamonds"}]}


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:50.922491
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}], "Priya": [{"rank": "4", "suit": "clubs"}, {"rank": "7", "suit": "hearts"}], "Kenji": [{"rank": "J", "suit": "clubs"}, {"rank": "7", "suit": "diamonds"}]}


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:50.928293
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "A", "suit": "diamonds"}
decision_reason: swapped 2 for A at pos 2
hand_json:
[{"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}], "Priya": [{"rank": "4", "suit": "clubs"}, {"rank": "7", "suit": "hearts"}], "Kenji": [{"rank": "J", "suit": "clubs"}, {"rank": "7", "suit": "diamonds"}]}


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:50.934285
player_id: cpu_2
player_name: Priya
action: take_discard
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: took A from discard
hand_json:
[{"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:50.940302
player_id: cpu_2
player_name: Priya
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped A for 7 at pos 4
hand_json:
[{"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:50.946304
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:50.954168
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 7 for 5 at pos 2
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:50.960413
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: took 5 from discard
visible_opponents_json:
{"Maya": [{"rank": "2", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}], "Priya": [{"rank": "4", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}], "Kenji": [{"rank": "J", "suit": "clubs"}, {"rank": "7", "suit": "hearts"}, {"rank": "7", "suit": "diamonds"}]}


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:50.966404
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 5 for 5 at pos 3
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:50.972318
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:50.982402
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped 5 for Q at pos 3
hand_json:
[{"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:50.988402
player_id: cpu_2
player_name: Priya
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:50.994200
player_id: cpu_2
player_name: Priya
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped A for 3 at pos 1
hand_json:
[{"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:51.000022
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:51.005543
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 3 for J at pos 0
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:51.011270
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:51.022551
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


