# moves

game_id: 73032622-899e-4779-b350-72833a0b1013
timestamp: 2026-01-24 18:52:01.105980
player_id: cpu_2
player_name: River
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped 3 for Q at pos 4
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}]

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


game_id: 73032622-899e-4779-b350-72833a0b1013
timestamp: 2026-01-24 18:52:01.111535
player_id: cpu_3
player_name: Sofia
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 73032622-899e-4779-b350-72833a0b1013
timestamp: 2026-01-24 18:52:01.122945
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: 10
card_suit: spades
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: 73032622-899e-4779-b350-72833a0b1013
timestamp: 2026-01-24 18:52:01.135085
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}]

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


game_id: 73032622-899e-4779-b350-72833a0b1013
timestamp: 2026-01-24 18:52:01.141692
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 6 for 9 at pos 1
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}]

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


game_id: 73032622-899e-4779-b350-72833a0b1013
timestamp: 2026-01-24 18:52:01.147899
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}]

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


game_id: 73032622-899e-4779-b350-72833a0b1013
timestamp: 2026-01-24 18:52:01.154682
player_id: cpu_2
player_name: River
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 2 for 7 at pos 2
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}]

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


game_id: 73032622-899e-4779-b350-72833a0b1013
timestamp: 2026-01-24 18:52:01.160651
player_id: cpu_3
player_name: Sofia
action: draw_deck
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "5", "suit": "hearts"}, {"rank": "4", "suit": "spades"}], "Maya": [{"rank": "K", "suit": "spades"}, {"rank": "6", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}], "River": [{"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "clubs"}]}


game_id: 73032622-899e-4779-b350-72833a0b1013
timestamp: 2026-01-24 18:52:01.173173
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "K", "suit": "spades"}, {"rank": "6", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}], "River": [{"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "clubs"}], "Sofia": [{"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "spades"}]}


game_id: 73032622-899e-4779-b350-72833a0b1013
timestamp: 2026-01-24 18:52:01.184668
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}]

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


game_id: 73032622-899e-4779-b350-72833a0b1013
timestamp: 2026-01-24 18:52:01.202122
player_id: cpu_2
player_name: River
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped A for 3 at pos 4
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "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": "8", "suit": "hearts", "face_up": false}]


game_id: 73032622-899e-4779-b350-72833a0b1013
timestamp: 2026-01-24 18:52:01.207943
player_id: cpu_3
player_name: Sofia
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "5", "suit": "hearts"}, {"rank": "4", "suit": "spades"}], "Maya": [{"rank": "K", "suit": "spades"}, {"rank": "6", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}], "River": [{"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "clubs"}]}


game_id: 73032622-899e-4779-b350-72833a0b1013
timestamp: 2026-01-24 18:52:01.219206
player_id: cpu_0
player_name: Priya
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: took 5 from discard
visible_opponents_json:
{"Maya": [{"rank": "K", "suit": "spades"}, {"rank": "6", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}], "River": [{"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "clubs"}], "Sofia": [{"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "spades"}]}


game_id: 73032622-899e-4779-b350-72833a0b1013
timestamp: 2026-01-24 18:52:01.224675
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 5 for 8 at pos 4
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: 73032622-899e-4779-b350-72833a0b1013
timestamp: 2026-01-24 18:52:01.230957
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "5", "suit": "hearts"}, {"rank": "4", "suit": "spades"}, {"rank": "5", "suit": "clubs"}], "River": [{"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "clubs"}], "Sofia": [{"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "spades"}]}


game_id: 73032622-899e-4779-b350-72833a0b1013
timestamp: 2026-01-24 18:52:01.237091
player_id: cpu_1
player_name: Maya
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped K for 6 at pos 1
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}]

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


game_id: 73032622-899e-4779-b350-72833a0b1013
timestamp: 2026-01-24 18:52:01.243152
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "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": "8", "suit": "hearts", "face_up": false}]

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


game_id: 73032622-899e-4779-b350-72833a0b1013
timestamp: 2026-01-24 18:52:01.255579
player_id: cpu_3
player_name: Sofia
action: draw_deck
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "5", "suit": "hearts"}, {"rank": "4", "suit": "spades"}, {"rank": "5", "suit": "clubs"}], "Maya": [{"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}], "River": [{"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "clubs"}]}


game_id: 73032622-899e-4779-b350-72833a0b1013
timestamp: 2026-01-24 18:52:01.268100
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: 73032622-899e-4779-b350-72833a0b1013
timestamp: 2026-01-24 18:52:01.276322
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 3 for 5 at pos 1
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: 73032622-899e-4779-b350-72833a0b1013
timestamp: 2026-01-24 18:52:01.282644
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}]

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


game_id: 73032622-899e-4779-b350-72833a0b1013
timestamp: 2026-01-24 18:52:01.294747
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "3", "suit": "spades"}, {"rank": "4", "suit": "spades"}, {"rank": "5", "suit": "clubs"}], "Maya": [{"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}], "Sofia": [{"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "spades"}]}


game_id: 73032622-899e-4779-b350-72833a0b1013
timestamp: 2026-01-24 18:52:01.306394
player_id: cpu_3
player_name: Sofia
action: draw_deck
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "3", "suit": "spades"}, {"rank": "4", "suit": "spades"}, {"rank": "5", "suit": "clubs"}], "Maya": [{"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}], "River": [{"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "clubs"}]}


game_id: 73032622-899e-4779-b350-72833a0b1013
timestamp: 2026-01-24 18:52:01.326576
player_id: cpu_0
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 4
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}]


game_id: 73032622-899e-4779-b350-72833a0b1013
timestamp: 2026-01-24 18:52:01.332525
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "3", "suit": "spades"}, {"rank": "4", "suit": "spades"}, {"rank": "K", "suit": "clubs"}], "River": [{"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "clubs"}], "Sofia": [{"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "spades"}]}


game_id: 73032622-899e-4779-b350-72833a0b1013
timestamp: 2026-01-24 18:52:01.338414
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 4 for 7 at pos 2
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}]

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


game_id: 73032622-899e-4779-b350-72833a0b1013
timestamp: 2026-01-24 18:52:01.344471
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "3", "suit": "spades"}, {"rank": "4", "suit": "spades"}, {"rank": "K", "suit": "clubs"}], "Maya": [{"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}], "Sofia": [{"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "spades"}]}


game_id: 73032622-899e-4779-b350-72833a0b1013
timestamp: 2026-01-24 18:52:01.350745
player_id: cpu_2
player_name: River
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "2", "suit": "hearts"}
decision_reason: swapped 5 for 2 at pos 1
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}]

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


game_id: 73032622-899e-4779-b350-72833a0b1013
timestamp: 2026-01-24 18:52:01.356866
player_id: cpu_3
player_name: Sofia
action: take_discard
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: took 2 from discard
visible_opponents_json:
{"Priya": [{"rank": "3", "suit": "spades"}, {"rank": "4", "suit": "spades"}, {"rank": "K", "suit": "clubs"}], "Maya": [{"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}], "River": [{"rank": "5", "suit": "spades"}, {"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "clubs"}]}


game_id: 73032622-899e-4779-b350-72833a0b1013
timestamp: 2026-01-24 18:52:01.363386
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "A", "suit": "spades"}
decision_reason: swapped 2 for A at pos 5
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 73032622-899e-4779-b350-72833a0b1013
timestamp: 2026-01-24 18:52:01.369166
player_id: cpu_0
player_name: Priya
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": "7", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: 73032622-899e-4779-b350-72833a0b1013
timestamp: 2026-01-24 18:52:01.375551
player_id: cpu_0
player_name: Priya
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped A for 4 at pos 3
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: 73032622-899e-4779-b350-72833a0b1013
timestamp: 2026-01-24 18:52:01.381865
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}]

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


game_id: 73032622-899e-4779-b350-72833a0b1013
timestamp: 2026-01-24 18:52:01.387967
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 4 for 10 at pos 5
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 73032622-899e-4779-b350-72833a0b1013
timestamp: 2026-01-24 18:52:01.394207
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: 10
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}]

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


game_id: 73032622-899e-4779-b350-72833a0b1013
timestamp: 2026-01-24 18:52:01.406031
player_id: cpu_3
player_name: Sofia
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 73032622-899e-4779-b350-72833a0b1013
timestamp: 2026-01-24 18:52:01.411695
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped 2 for 9 at pos 2
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "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": false}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 73032622-899e-4779-b350-72833a0b1013
timestamp: 2026-01-24 18:52:01.417322
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: 73032622-899e-4779-b350-72833a0b1013
timestamp: 2026-01-24 18:52:01.429196
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 73032622-899e-4779-b350-72833a0b1013
timestamp: 2026-01-24 18:52:01.434854
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "hearts"}
decision_reason: swapped 4 for 3 at pos 3
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 73032622-899e-4779-b350-72833a0b1013
timestamp: 2026-01-24 18:52:01.440228
player_id: cpu_2
player_name: River
action: take_discard
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 3 from discard
visible_opponents_json:
{"Priya": [{"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "K", "suit": "clubs"}], "Maya": [{"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}], "Sofia": [{"rank": "K", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}]}


game_id: 73032622-899e-4779-b350-72833a0b1013
timestamp: 2026-01-24 18:52:01.445825
player_id: cpu_2
player_name: River
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 3 for 5 at pos 1
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}]

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


game_id: 73032622-899e-4779-b350-72833a0b1013
timestamp: 2026-01-24 18:52:01.451342
player_id: cpu_3
player_name: Sofia
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "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": false}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 73032622-899e-4779-b350-72833a0b1013
timestamp: 2026-01-24 18:52:01.457163
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped A for 3 at pos 4
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 73032622-899e-4779-b350-72833a0b1013
timestamp: 2026-01-24 18:52:01.463028
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}], "River": [{"rank": "3", "suit": "hearts"}, {"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "clubs"}], "Sofia": [{"rank": "K", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "hearts"}]}


game_id: 73032622-899e-4779-b350-72833a0b1013
timestamp: 2026-01-24 18:52:01.468945
player_id: cpu_0
player_name: Priya
action: discard
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: discarded J
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.487343
player_id: cpu_0
player_name: River
action: take_discard
card_rank: A
card_suit: spades
decision_reason: took A from discard
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "2", "suit": "hearts"}, {"rank": "6", "suit": "diamonds"}], "Sofia": [{"rank": "A", "suit": "clubs"}, {"rank": "Q", "suit": "spades"}], "Marcus": [{"rank": "8", "suit": "clubs"}, {"rank": "2", "suit": "spades"}]}


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.492889
player_id: cpu_0
player_name: River
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped A for 9 at pos 4
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "2", "suit": "hearts"}, {"rank": "6", "suit": "diamonds"}], "Sofia": [{"rank": "A", "suit": "clubs"}, {"rank": "Q", "suit": "spades"}], "Marcus": [{"rank": "8", "suit": "clubs"}, {"rank": "2", "suit": "spades"}]}


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.498300
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "4", "suit": "clubs"}, {"rank": "A", "suit": "spades"}], "Sofia": [{"rank": "A", "suit": "clubs"}, {"rank": "Q", "suit": "spades"}], "Marcus": [{"rank": "8", "suit": "clubs"}, {"rank": "2", "suit": "spades"}]}


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.504135
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 3 for 6 at pos 3
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "4", "suit": "clubs"}, {"rank": "A", "suit": "spades"}], "Sofia": [{"rank": "A", "suit": "clubs"}, {"rank": "Q", "suit": "spades"}], "Marcus": [{"rank": "8", "suit": "clubs"}, {"rank": "2", "suit": "spades"}]}


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.510122
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": true}]

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


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.516072
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped 6 for Q at pos 5
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.522848
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.528964
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 7 for 8 at pos 0
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.535302
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.547486
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}]

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


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.559079
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.575762
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 7 for 4 at pos 3
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}]


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.581168
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 4 from discard
visible_opponents_json:
{"Kenji": [{"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "spades"}], "Sofia": [{"rank": "A", "suit": "clubs"}, {"rank": "6", "suit": "diamonds"}], "Marcus": [{"rank": "7", "suit": "hearts"}, {"rank": "7", "suit": "clubs"}, {"rank": "2", "suit": "spades"}]}


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.587430
player_id: cpu_0
player_name: River
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 4 for Q at pos 5
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.593829
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "4", "suit": "clubs"}, {"rank": "A", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}], "Sofia": [{"rank": "A", "suit": "clubs"}, {"rank": "6", "suit": "diamonds"}], "Marcus": [{"rank": "7", "suit": "hearts"}, {"rank": "7", "suit": "clubs"}, {"rank": "2", "suit": "spades"}]}


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.600155
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped K for 3 at pos 3
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}]

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


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.606357
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 3 from discard
visible_opponents_json:
{"River": [{"rank": "4", "suit": "clubs"}, {"rank": "A", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}], "Kenji": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}], "Marcus": [{"rank": "7", "suit": "hearts"}, {"rank": "7", "suit": "clubs"}, {"rank": "2", "suit": "spades"}]}


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.612388
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 3 for 6 at pos 5
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.618350
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 10
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.630339
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 9
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.642014
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}]

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


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.660561
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped 2 for 3 at pos 5
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.667121
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: took 3 from discard
visible_opponents_json:
{"River": [{"rank": "4", "suit": "clubs"}, {"rank": "A", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}], "Kenji": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}], "Sofia": [{"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}]}


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.673588
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 3 for 7 at pos 0
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.679537
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}], "Sofia": [{"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "Marcus": [{"rank": "3", "suit": "spades"}, {"rank": "7", "suit": "clubs"}, {"rank": "2", "suit": "spades"}]}


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.691437
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "4", "suit": "clubs"}, {"rank": "A", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}], "Sofia": [{"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "Marcus": [{"rank": "3", "suit": "spades"}, {"rank": "7", "suit": "clubs"}, {"rank": "2", "suit": "spades"}]}


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.702556
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: K
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": "J", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.708078
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped K for 5 at pos 3
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.715586
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.724385
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 5 for 7 at pos 3
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.730473
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}], "Sofia": [{"rank": "A", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "Marcus": [{"rank": "3", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}]}


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.736197
player_id: cpu_0
player_name: River
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 5 for 5 at pos 3
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.741859
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "clubs"}, {"rank": "A", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}], "Sofia": [{"rank": "A", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "Marcus": [{"rank": "3", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}]}


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.753356
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.758943
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped A for Q at pos 2
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.764612
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 10
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.776088
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.788370
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 9
card_suit: spades
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "clubs"}, {"rank": "A", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}], "Sofia": [{"rank": "A", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "Marcus": [{"rank": "3", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}]}


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.806601
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 4 for J at pos 1
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.812724
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "clubs"}, {"rank": "A", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}], "Kenji": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}], "Sofia": [{"rank": "A", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}]}


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.818729
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 3 for 5 at pos 3
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.829112
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 5 from discard
visible_opponents_json:
{"Kenji": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}], "Sofia": [{"rank": "A", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "Marcus": [{"rank": "3", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}]}


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.834912
player_id: cpu_0
player_name: River
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 5 for 6 at pos 0
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.840676
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "5", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "clubs"}, {"rank": "A", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}], "Sofia": [{"rank": "A", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "Marcus": [{"rank": "3", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}]}


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.852068
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.863349
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.868934
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "A", "suit": "hearts"}
decision_reason: swapped 5 for A at pos 1
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.874624
player_id: cpu_0
player_name: River
action: take_discard
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: took A from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.880495
player_id: cpu_0
player_name: River
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped A for 8 at pos 1
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.886959
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "5", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "clubs"}, {"rank": "A", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}], "Sofia": [{"rank": "A", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "Marcus": [{"rank": "3", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}]}


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.893167
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "K", "suit": "spades"}
decision_reason: swapped 3 for K at pos 5
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.899133
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: K
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took K from discard
visible_opponents_json:
{"River": [{"rank": "5", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "clubs"}, {"rank": "A", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}], "Kenji": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}], "Marcus": [{"rank": "3", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}]}


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.905047
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped K for 4 at pos 1
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.910813
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: 0012b1ed-ac5d-4ada-b345-468b1f84e237
timestamp: 2026-01-24 18:52:01.916767
player_id: cpu_3
player_name: Marcus
action: discard
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: discarded 10
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:01.932928
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: 2
card_suit: spades
decision_reason: took 2 from discard
hand_json:
[{"rank": "Q", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "7", "suit": "clubs"}, {"rank": "9", "suit": "hearts"}], "Sofia": [{"rank": "J", "suit": "hearts"}, {"rank": "Q", "suit": "spades"}], "Sage": [{"rank": "8", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}]}


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:01.938603
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped 2 for Q at pos 0
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "7", "suit": "clubs"}, {"rank": "9", "suit": "hearts"}], "Sofia": [{"rank": "J", "suit": "hearts"}, {"rank": "Q", "suit": "spades"}], "Sage": [{"rank": "8", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}]}


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:01.944128
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "spades"}, {"rank": "10", "suit": "clubs"}], "Sofia": [{"rank": "J", "suit": "hearts"}, {"rank": "Q", "suit": "spades"}], "Sage": [{"rank": "8", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}]}


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:01.955365
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took Q from discard
hand_json:
[{"rank": "A", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "spades"}, {"rank": "10", "suit": "clubs"}], "Priya": [{"rank": "7", "suit": "clubs"}, {"rank": "9", "suit": "hearts"}], "Sage": [{"rank": "8", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}]}


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:01.961090
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "A", "suit": "spades"}
decision_reason: swapped Q for A at pos 0
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "spades"}, {"rank": "10", "suit": "clubs"}], "Priya": [{"rank": "7", "suit": "clubs"}, {"rank": "9", "suit": "hearts"}], "Sage": [{"rank": "8", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}]}


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:01.970492
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "A", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "spades"}, {"rank": "10", "suit": "clubs"}], "Priya": [{"rank": "7", "suit": "clubs"}, {"rank": "9", "suit": "hearts"}], "Sofia": [{"rank": "Q", "suit": "hearts"}, {"rank": "J", "suit": "hearts"}, {"rank": "Q", "suit": "spades"}]}


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:01.976644
player_id: cpu_3
player_name: Sage
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": "5", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "spades"}, {"rank": "10", "suit": "clubs"}], "Priya": [{"rank": "7", "suit": "clubs"}, {"rank": "9", "suit": "hearts"}], "Sofia": [{"rank": "Q", "suit": "hearts"}, {"rank": "J", "suit": "hearts"}, {"rank": "Q", "suit": "spades"}]}


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:01.982637
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "A", "suit": "spades"}
decision_reason: took 8 from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "7", "suit": "clubs"}, {"rank": "9", "suit": "hearts"}], "Sofia": [{"rank": "Q", "suit": "hearts"}, {"rank": "J", "suit": "hearts"}, {"rank": "Q", "suit": "spades"}], "Sage": [{"rank": "7", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}]}


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:01.988254
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped 8 for 10 at pos 4
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "7", "suit": "clubs"}, {"rank": "9", "suit": "hearts"}], "Sofia": [{"rank": "Q", "suit": "hearts"}, {"rank": "J", "suit": "hearts"}, {"rank": "Q", "suit": "spades"}], "Sage": [{"rank": "7", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}]}


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:01.994335
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "spades"}, {"rank": "8", "suit": "clubs"}], "Sofia": [{"rank": "Q", "suit": "hearts"}, {"rank": "J", "suit": "hearts"}, {"rank": "Q", "suit": "spades"}], "Sage": [{"rank": "7", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}]}


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.000111
player_id: cpu_1
player_name: Priya
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped 4 for 9 at pos 3
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "spades"}, {"rank": "8", "suit": "clubs"}], "Sofia": [{"rank": "Q", "suit": "hearts"}, {"rank": "J", "suit": "hearts"}, {"rank": "Q", "suit": "spades"}], "Sage": [{"rank": "7", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}]}


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.006638
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.012753
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped J for 9 at pos 5
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": true}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.019045
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: J
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.038021
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.043984
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 7 for 8 at pos 4
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.049761
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "spades"}, {"rank": "7", "suit": "hearts"}], "Sofia": [{"rank": "Q", "suit": "hearts"}, {"rank": "J", "suit": "hearts"}, {"rank": "Q", "suit": "spades"}, {"rank": "J", "suit": "clubs"}], "Sage": [{"rank": "7", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}]}


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.055678
player_id: cpu_1
player_name: Priya
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 4 for 5 at pos 0
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "spades"}, {"rank": "7", "suit": "hearts"}], "Sofia": [{"rank": "Q", "suit": "hearts"}, {"rank": "J", "suit": "hearts"}, {"rank": "Q", "suit": "spades"}, {"rank": "J", "suit": "clubs"}], "Sage": [{"rank": "7", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}]}


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.065139
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": true}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.070986
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "K", "suit": "clubs"}
decision_reason: swapped 5 for K at pos 4
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": true}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.076669
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took K from discard
visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "spades"}, {"rank": "7", "suit": "hearts"}], "Priya": [{"rank": "4", "suit": "diamonds"}, {"rank": "7", "suit": "clubs"}, {"rank": "4", "suit": "spades"}], "Sofia": [{"rank": "Q", "suit": "hearts"}, {"rank": "J", "suit": "hearts"}, {"rank": "Q", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "J", "suit": "clubs"}]}


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.081917
player_id: cpu_3
player_name: Sage
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped K for 7 at pos 2
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.087841
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.093979
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 7 for 6 at pos 1
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.100080
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.106059
player_id: cpu_1
player_name: Priya
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 2 for 7 at pos 2
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.115087
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": true}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.120724
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped 7 for Q at pos 0
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": true}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.126864
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: 10
card_suit: diamonds
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": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.140058
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.151863
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.168604
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 8 for J at pos 2
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": true}]


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.175054
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "spades"}, {"rank": "7", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}], "Priya": [{"rank": "4", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "4", "suit": "spades"}], "Sofia": [{"rank": "7", "suit": "clubs"}, {"rank": "8", "suit": "hearts"}, {"rank": "Q", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "J", "suit": "clubs"}]}


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.187187
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "4", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "4", "suit": "spades"}], "Sofia": [{"rank": "7", "suit": "clubs"}, {"rank": "8", "suit": "hearts"}, {"rank": "Q", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "J", "suit": "clubs"}], "Sage": [{"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}]}


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.193323
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 3 for 7 at pos 1
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.199194
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}], "Sofia": [{"rank": "7", "suit": "clubs"}, {"rank": "8", "suit": "hearts"}, {"rank": "Q", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "J", "suit": "clubs"}], "Sage": [{"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}]}


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.205599
player_id: cpu_1
player_name: Priya
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 2 for 4 at pos 0
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.211762
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": true}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.217633
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped 4 for Q at pos 3
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": true}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.223502
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: Q
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}], "Priya": [{"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}, {"rank": "4", "suit": "spades"}], "Sofia": [{"rank": "7", "suit": "clubs"}, {"rank": "8", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}, {"rank": "J", "suit": "clubs"}]}


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.235268
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: 9
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.241050
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 9
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 9 for 6 at pos 5
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": true}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.246966
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.252447
player_id: cpu_1
player_name: Priya
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped K for 4 at pos 3
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.258251
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": true}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.264859
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 4 for J at pos 5
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.270758
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: 9
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "9", "suit": "clubs"}], "Priya": [{"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}], "Sofia": [{"rank": "7", "suit": "clubs"}, {"rank": "8", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}, {"rank": "4", "suit": "spades"}]}


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.282835
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: 9
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 9 from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": true}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.288868
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 9
card_suit: spades
discard_top_json: {"rank": "K", "suit": "hearts"}
decision_reason: swapped 9 for K at pos 2
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": true}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.294244
player_id: cpu_1
player_name: Priya
action: take_discard
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took K from discard
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.299603
player_id: cpu_1
player_name: Priya
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped K for J at pos 5
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.305133
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.310739
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped A for 8 at pos 2
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.316545
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "9", "suit": "spades"}, {"rank": "7", "suit": "hearts"}, {"rank": "9", "suit": "clubs"}], "Priya": [{"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}], "Sofia": [{"rank": "7", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}, {"rank": "4", "suit": "spades"}]}


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.322270
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 3 for 5 at pos 3
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.328364
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": true}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.334686
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped 5 for 9 at pos 2
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": true}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.340821
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.346691
player_id: cpu_1
player_name: Priya
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "A", "suit": "hearts"}
decision_reason: swapped 3 for A at pos 4
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.352469
player_id: cpu_2
player_name: Sofia
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": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.358541
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped A for 7 at pos 0
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.364560
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.370803
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 5 for 6 at pos 1
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.376535
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": true}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.382121
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: swapped 6 for 9 at pos 5
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.388351
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.394262
player_id: cpu_1
player_name: Priya
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped A for 3 at pos 4
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.400093
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.406009
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 3 for 5 at pos 4
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.411771
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.417754
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped 5 for 4 at pos 4
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.423974
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.430167
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 4 for 7 at pos 4
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.435944
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: 10
card_suit: spades
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.447093
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.458694
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.464723
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 2 for 5 at pos 1
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.470871
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.482774
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}], "Sofia": [{"rank": "A", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "4", "suit": "spades"}], "Sage": [{"rank": "2", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}, {"rank": "5", "suit": "spades"}]}


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.497238
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}], "Priya": [{"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}], "Sage": [{"rank": "2", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}, {"rank": "5", "suit": "spades"}]}


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.525653
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 5 for 6 at pos 5
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.532138
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "5", "suit": "clubs"}], "Sofia": [{"rank": "A", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "4", "suit": "spades"}], "Sage": [{"rank": "2", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}, {"rank": "5", "suit": "spades"}]}


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.544430
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "5", "suit": "clubs"}], "Priya": [{"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}], "Sage": [{"rank": "2", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}, {"rank": "5", "suit": "spades"}]}


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.556391
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "5", "suit": "clubs"}], "Priya": [{"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}], "Sofia": [{"rank": "A", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "4", "suit": "spades"}]}


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.597813
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 10
card_suit: spades
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 10 for 6 at pos 1
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.604492
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "5", "suit": "clubs"}], "Priya": [{"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}], "Sofia": [{"rank": "A", "suit": "hearts"}, {"rank": "10", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "4", "suit": "spades"}]}


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.617101
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: 9
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}], "Sofia": [{"rank": "A", "suit": "hearts"}, {"rank": "10", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "4", "suit": "spades"}], "Sage": [{"rank": "2", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}, {"rank": "5", "suit": "spades"}]}


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.623430
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 9
card_suit: clubs
discard_top_json: {"rank": "K", "suit": "spades"}
decision_reason: swapped 9 for K at pos 3
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.629379
player_id: cpu_1
player_name: Priya
action: take_discard
card_rank: K
card_suit: spades
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: took K from discard
visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}, {"rank": "9", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}, {"rank": "5", "suit": "clubs"}], "Sofia": [{"rank": "A", "suit": "hearts"}, {"rank": "10", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "4", "suit": "spades"}], "Sage": [{"rank": "2", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}, {"rank": "5", "suit": "spades"}]}


game_id: 5f7043c7-792d-4b34-b527-2cc1e80fb245
timestamp: 2026-01-24 18:52:02.635809
player_id: cpu_1
player_name: Priya
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "A", "suit": "clubs"}
decision_reason: swapped K for A at pos 4
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:02.653681
player_id: cpu_0
player_name: Maya
action: take_discard
card_rank: 5
card_suit: spades
decision_reason: took 5 from discard
hand_json:
[{"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:02.659247
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 5 for 7 at pos 5
hand_json:
[{"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:02.664883
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: 7
card_suit: spades
decision_reason: took 7 from discard
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:02.670338
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped 7 for Q at pos 5
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:02.676382
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Maya": [{"rank": "5", "suit": "diamonds"}, {"rank": "10", "suit": "spades"}, {"rank": "5", "suit": "spades"}], "Kenji": [{"rank": "4", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}], "Marcus": [{"rank": "4", "suit": "spades"}, {"rank": "7", "suit": "clubs"}]}


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:02.682197
player_id: cpu_2
player_name: Sage
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped A for 8 at pos 3
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Maya": [{"rank": "5", "suit": "diamonds"}, {"rank": "10", "suit": "spades"}, {"rank": "5", "suit": "spades"}], "Kenji": [{"rank": "4", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}], "Marcus": [{"rank": "4", "suit": "spades"}, {"rank": "7", "suit": "clubs"}]}


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:02.687821
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 9
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:02.699017
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:02.704611
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped 6 for 10 at pos 3
hand_json:
[{"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:02.710633
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:02.716423
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 2 for 7 at pos 5
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:02.722388
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:02.727973
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped 6 for J at pos 5
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:02.733602
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:02.739180
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 3 for 7 at pos 3
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:02.745104
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:02.756861
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:02.762894
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped 5 for 3 at pos 0
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:02.768970
player_id: cpu_2
player_name: Sage
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": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:02.775604
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 3 for 6 at pos 2
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:02.781517
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 9
card_suit: spades
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:02.794218
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "5", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}], "Sage": [{"rank": "3", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}], "Marcus": [{"rank": "4", "suit": "spades"}, {"rank": "3", "suit": "spades"}]}


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:02.800352
player_id: cpu_0
player_name: Maya
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped A for 6 at pos 3
hand_json:
[{"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:02.806423
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:02.817478
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:02.829165
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "5", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}, {"rank": "5", "suit": "spades"}], "Kenji": [{"rank": "5", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}], "Sage": [{"rank": "3", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}]}


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:02.836596
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "hearts"}
decision_reason: swapped 4 for 3 at pos 5
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:02.842410
player_id: cpu_0
player_name: Maya
action: take_discard
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:02.849339
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 3 for 5 at pos 2
hand_json:
[{"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:02.856090
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 5 from discard
visible_opponents_json:
{"Maya": [{"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "5", "suit": "spades"}], "Sage": [{"rank": "3", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}], "Marcus": [{"rank": "4", "suit": "spades"}, {"rank": "3", "suit": "spades"}, {"rank": "4", "suit": "hearts"}]}


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:02.862661
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 5 for Q at pos 3
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:02.868692
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 10
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "5", "suit": "spades"}], "Kenji": [{"rank": "5", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}], "Marcus": [{"rank": "4", "suit": "spades"}, {"rank": "3", "suit": "spades"}, {"rank": "4", "suit": "hearts"}]}


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:02.881108
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:02.895785
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:02.901764
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "A", "suit": "diamonds"}
decision_reason: swapped 6 for A at pos 4
hand_json:
[{"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:02.907921
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took A from discard
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:02.913929
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped A for 5 at pos 0
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:02.919711
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "6", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}], "Marcus": [{"rank": "4", "suit": "spades"}, {"rank": "3", "suit": "spades"}, {"rank": "4", "suit": "hearts"}]}


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:02.925747
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 2 for 6 at pos 5
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:02.931679
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "6", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}], "Sage": [{"rank": "3", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}]}


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:02.943071
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:02.948757
player_id: cpu_0
player_name: Maya
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": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:02.954150
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:02.960256
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 3 for 5 at pos 3
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:02.966901
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:02.973205
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped 2 for 3 at pos 2
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:02.979264
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: took 3 from discard
visible_opponents_json:
{"Maya": [{"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "5", "suit": "clubs"}, {"rank": "5", "suit": "spades"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}], "Sage": [{"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}]}


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:02.985225
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "K", "suit": "diamonds"}
decision_reason: swapped 3 for K at pos 0
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:02.991107
player_id: cpu_0
player_name: Maya
action: take_discard
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: took K from discard
hand_json:
[{"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:02.997377
player_id: cpu_0
player_name: Maya
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped K for 5 at pos 4
hand_json:
[{"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:03.003506
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:03.009613
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped K for 4 at pos 1
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:03.016139
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:03.028041
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:03.039393
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: A
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:03.045121
player_id: cpu_0
player_name: Maya
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped A for 8 at pos 0
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:03.050678
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:03.056373
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped 2 for 3 at pos 3
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:03.061870
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: K
card_suit: spades
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "A", "suit": "spades"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}], "Marcus": [{"rank": "3", "suit": "clubs"}, {"rank": "4", "suit": "spades"}, {"rank": "3", "suit": "spades"}, {"rank": "4", "suit": "hearts"}]}


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:03.067837
player_id: cpu_2
player_name: Sage
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "A", "suit": "hearts"}
decision_reason: swapped K for A at pos 3
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:03.074082
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: took A from discard
visible_opponents_json:
{"Maya": [{"rank": "A", "suit": "spades"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}], "Sage": [{"rank": "2", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "clubs"}]}


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:03.080593
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped A for 4 at pos 2
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:03.086664
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 10
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:03.098722
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:03.111019
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:03.129030
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 5 for 10 at pos 1
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:03.135592
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}], "Sage": [{"rank": "2", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "clubs"}], "Marcus": [{"rank": "3", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "spades"}, {"rank": "4", "suit": "hearts"}]}


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:03.147657
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "A", "suit": "spades"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}], "Sage": [{"rank": "2", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "clubs"}], "Marcus": [{"rank": "3", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "spades"}, {"rank": "4", "suit": "hearts"}]}


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:03.154275
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped 3 for 9 at pos 4
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:03.160413
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "A", "suit": "spades"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}], "Marcus": [{"rank": "3", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "spades"}, {"rank": "4", "suit": "hearts"}]}


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:03.167291
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 5 for 4 at pos 4
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:03.173161
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: J
card_suit: spades
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:03.184660
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: Q
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}], "Sage": [{"rank": "2", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}], "Marcus": [{"rank": "3", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "spades"}, {"rank": "4", "suit": "hearts"}]}


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:03.196168
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:03.251555
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 6 for 8 at pos 2
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:03.257672
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 10
card_suit: spades
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "A", "suit": "spades"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "6", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}], "Marcus": [{"rank": "3", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "spades"}, {"rank": "4", "suit": "hearts"}]}


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:03.271337
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "A", "suit": "spades"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "6", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}], "Sage": [{"rank": "2", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}]}


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:03.284652
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "6", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}], "Sage": [{"rank": "2", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}], "Marcus": [{"rank": "3", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "spades"}, {"rank": "4", "suit": "hearts"}]}


game_id: c7ce92cb-7adb-4ff7-835e-fa205d98dfdf
timestamp: 2026-01-24 18:52:03.290971
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 9 for 7 at pos 1
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.308294
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"River": [{"rank": "7", "suit": "spades"}, {"rank": "5", "suit": "spades"}], "Sofia": [{"rank": "8", "suit": "diamonds"}, {"rank": "10", "suit": "diamonds"}], "Diego": [{"rank": "8", "suit": "clubs"}, {"rank": "8", "suit": "spades"}]}


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.313948
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped K for 4 at pos 1
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"River": [{"rank": "7", "suit": "spades"}, {"rank": "5", "suit": "spades"}], "Sofia": [{"rank": "8", "suit": "diamonds"}, {"rank": "10", "suit": "diamonds"}], "Diego": [{"rank": "8", "suit": "clubs"}, {"rank": "8", "suit": "spades"}]}


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.319727
player_id: cpu_1
player_name: River
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.325603
player_id: cpu_1
player_name: River
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 4 for 7 at pos 2
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.331601
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.337772
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 7 for 10 at pos 3
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.343820
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}]

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


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.349973
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 5 for 8 at pos 2
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}]

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


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.356208
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: J
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"River": [{"rank": "4", "suit": "hearts"}, {"rank": "5", "suit": "spades"}], "Sofia": [{"rank": "8", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}], "Diego": [{"rank": "5", "suit": "diamonds"}, {"rank": "8", "suit": "spades"}]}


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.367917
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: Q
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.379677
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.398341
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 4 for 7 at pos 1
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}]


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.404448
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "4", "suit": "hearts"}, {"rank": "5", "suit": "spades"}], "Sofia": [{"rank": "8", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}], "Diego": [{"rank": "4", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}, {"rank": "8", "suit": "spades"}]}


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.416744
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: K
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}], "Sofia": [{"rank": "8", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}], "Diego": [{"rank": "4", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}, {"rank": "8", "suit": "spades"}]}


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.423473
player_id: cpu_1
player_name: River
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped K for 5 at pos 3
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.429423
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 5 from discard
visible_opponents_json:
{"Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}], "River": [{"rank": "4", "suit": "hearts"}, {"rank": "K", "suit": "spades"}], "Diego": [{"rank": "4", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}, {"rank": "8", "suit": "spades"}]}


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.435449
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 5 for 6 at pos 2
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.441328
player_id: cpu_3
player_name: Diego
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}]

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


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.447293
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 6 for 8 at pos 3
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}]

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


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.453293
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 10
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "4", "suit": "hearts"}, {"rank": "K", "suit": "spades"}], "Sofia": [{"rank": "8", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}, {"rank": "7", "suit": "spades"}], "Diego": [{"rank": "4", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}]}


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.464959
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.470727
player_id: cpu_1
player_name: River
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped 2 for 4 at pos 2
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.476688
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.482364
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 4 for 8 at pos 1
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.487931
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: 9
card_suit: spades
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}]

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


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.499698
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "2", "suit": "clubs"}, {"rank": "K", "suit": "spades"}], "Sofia": [{"rank": "4", "suit": "hearts"}, {"rank": "5", "suit": "spades"}, {"rank": "7", "suit": "spades"}], "Diego": [{"rank": "4", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}]}


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.512412
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.518445
player_id: cpu_1
player_name: River
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "2", "suit": "hearts"}
decision_reason: swapped A for 2 at pos 1
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.525230
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.531590
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 2 for 7 at pos 3
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.538294
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}], "River": [{"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "clubs"}, {"rank": "K", "suit": "spades"}], "Sofia": [{"rank": "4", "suit": "hearts"}, {"rank": "5", "suit": "spades"}, {"rank": "2", "suit": "hearts"}]}


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.544105
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 3 for 6 at pos 3
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}]

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


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.550501
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "clubs"}, {"rank": "K", "suit": "spades"}], "Sofia": [{"rank": "4", "suit": "hearts"}, {"rank": "5", "suit": "spades"}, {"rank": "2", "suit": "hearts"}], "Diego": [{"rank": "4", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}]}


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.556521
player_id: cpu_0
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 3
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.562502
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.568951
player_id: cpu_1
player_name: River
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped 5 for Q at pos 4
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.574803
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.586991
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}]

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


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.598484
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.604181
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 3 for 7 at pos 2
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.610348
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.616988
player_id: cpu_1
player_name: River
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped 5 for 3 at pos 0
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.623171
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: took 3 from discard
visible_opponents_json:
{"Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}], "River": [{"rank": "5", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "5", "suit": "clubs"}], "Diego": [{"rank": "4", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}]}


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.629314
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 3 for 5 at pos 2
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.635788
player_id: cpu_3
player_name: Diego
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: took 5 from discard
visible_opponents_json:
{"Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}], "River": [{"rank": "5", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "5", "suit": "clubs"}], "Sofia": [{"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "hearts"}]}


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.641388
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped 5 for Q at pos 5
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.647972
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: A
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.653681
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "3", "suit": "hearts"}
decision_reason: swapped A for 3 at pos 2
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.661135
player_id: cpu_1
player_name: River
action: take_discard
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.667814
player_id: cpu_1
player_name: River
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 3 for 5 at pos 0
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.674120
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.679856
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped 2 for 4 at pos 1
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.685632
player_id: cpu_3
player_name: Diego
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.691442
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 4 for 6 at pos 4
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.697296
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 10
card_suit: spades
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.708872
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.721096
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.738973
player_id: cpu_3
player_name: Diego
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped K for 5 at pos 2
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.745030
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "5", "suit": "clubs"}], "Sofia": [{"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "hearts"}], "Diego": [{"rank": "4", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}, {"rank": "5", "suit": "spades"}]}


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.750926
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped 4 for 3 at pos 4
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.757149
player_id: cpu_1
player_name: River
action: take_discard
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: took 3 from discard
visible_opponents_json:
{"Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}], "Sofia": [{"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "hearts"}], "Diego": [{"rank": "4", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}, {"rank": "5", "suit": "spades"}]}


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.763078
player_id: cpu_1
player_name: River
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 3 for 5 at pos 4
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.769037
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}], "River": [{"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "clubs"}], "Diego": [{"rank": "4", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}, {"rank": "5", "suit": "spades"}]}


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.780776
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: Q
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: ec5d7af3-ce8a-41b4-ac10-df9cb6ba005f
timestamp: 2026-01-24 18:52:03.786849
player_id: cpu_3
player_name: Diego
action: discard
card_rank: Q
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: discarded Q
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:03.804161
player_id: cpu_0
player_name: Priya
action: take_discard
card_rank: K
card_suit: diamonds
decision_reason: took K from discard
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:03.809792
player_id: cpu_0
player_name: Priya
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped K for Q at pos 1
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:03.816283
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "K", "suit": "diamonds"}, {"rank": "6", "suit": "diamonds"}], "Marcus": [{"rank": "6", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}], "Kenji": [{"rank": "Q", "suit": "hearts"}, {"rank": "8", "suit": "spades"}]}


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:03.822380
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "A", "suit": "clubs"}
decision_reason: swapped 4 for A at pos 4
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "K", "suit": "diamonds"}, {"rank": "6", "suit": "diamonds"}], "Marcus": [{"rank": "6", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}], "Kenji": [{"rank": "Q", "suit": "hearts"}, {"rank": "8", "suit": "spades"}]}


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:03.828022
player_id: cpu_2
player_name: Marcus
action: take_discard
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took A from discard
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:03.833657
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped A for 6 at pos 2
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:03.839244
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:03.844871
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped 6 for Q at pos 2
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:03.851076
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:03.856926
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 3 for 6 at pos 5
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:03.863298
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}]

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


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:03.869564
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 7 for 10 at pos 5
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:03.876152
player_id: cpu_2
player_name: Marcus
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:03.882775
player_id: cpu_2
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 2
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:03.888714
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took A from discard
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:03.894757
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped A for 8 at pos 4
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:03.900142
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:03.906081
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped 2 for 3 at pos 5
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:03.911826
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:03.917641
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 3 for 7 at pos 5
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:03.923345
player_id: cpu_2
player_name: Marcus
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:03.934801
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:03.946696
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:03.952513
player_id: cpu_0
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 2
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:03.958501
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:03.971219
player_id: cpu_2
player_name: Marcus
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "K", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "Sage": [{"rank": "A", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}], "Kenji": [{"rank": "6", "suit": "clubs"}, {"rank": "A", "suit": "clubs"}]}


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:03.977055
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 2 for 4 at pos 5
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:03.983728
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: took 4 from discard
visible_opponents_json:
{"Priya": [{"rank": "K", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "Sage": [{"rank": "A", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}], "Marcus": [{"rank": "2", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}]}


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:03.990025
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 4 for 6 at pos 2
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:03.996091
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: 9
card_suit: spades
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:04.011760
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "K", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "Marcus": [{"rank": "2", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}], "Kenji": [{"rank": "4", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}]}


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:04.024126
player_id: cpu_2
player_name: Marcus
action: draw_deck
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:04.029889
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "hearts"}
decision_reason: swapped 5 for 3 at pos 0
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:04.036523
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:04.042758
player_id: cpu_3
player_name: Kenji
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": "8", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:04.050984
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "A", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}], "Marcus": [{"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}], "Kenji": [{"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}]}


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:04.057507
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 5 for 9 at pos 0
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:04.063832
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "5", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "Marcus": [{"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}], "Kenji": [{"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}]}


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:04.069634
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 7 for J at pos 1
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:04.075292
player_id: cpu_2
player_name: Marcus
action: draw_deck
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:04.082682
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped K for 5 at pos 0
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:04.088698
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:04.094400
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped 2 for 3 at pos 2
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:04.100637
player_id: cpu_0
player_name: Priya
action: take_discard
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:04.106974
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 3 for 5 at pos 0
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:04.112704
player_id: cpu_1
player_name: Sage
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": "5", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:04.118855
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 5 for 7 at pos 1
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:04.124858
player_id: cpu_2
player_name: Marcus
action: draw_deck
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:04.137061
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:04.149341
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:04.170176
player_id: cpu_1
player_name: Sage
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped K for 5 at pos 1
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:04.176807
player_id: cpu_2
player_name: Marcus
action: draw_deck
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "3", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}], "Kenji": [{"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}]}


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:04.189728
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "3", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}], "Marcus": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}]}


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:04.202045
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}], "Marcus": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}], "Kenji": [{"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}]}


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:04.208138
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 3 for 8 at pos 3
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:04.214975
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: J
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:04.226058
player_id: cpu_2
player_name: Marcus
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "3", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "spades"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}], "Kenji": [{"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}]}


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:04.231263
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped A for 4 at pos 4
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:04.237438
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "3", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "spades"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}], "Marcus": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}]}


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:04.249694
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:04.262106
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "3", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "spades"}], "Marcus": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}], "Kenji": [{"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}]}


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:04.268704
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 5 for 5 at pos 0
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:04.275393
player_id: cpu_2
player_name: Marcus
action: draw_deck
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:04.286720
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "3", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "spades"}], "Sage": [{"rank": "5", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}], "Marcus": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}]}


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:04.292129
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 3 for 5 at pos 5
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:04.297834
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: Q
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "5", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}], "Marcus": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}], "Kenji": [{"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}]}


game_id: e56bf952-31b0-453f-8bbb-34f03c2ef72c
timestamp: 2026-01-24 18:52:04.303472
player_id: cpu_0
player_name: Priya
action: discard
card_rank: Q
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: discarded Q
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: 778f2ad2-1ac4-45ae-b107-3d4cc6c8a383
timestamp: 2026-01-24 18:52:04.320732
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: A
card_suit: hearts
decision_reason: took A from discard
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "9", "suit": "clubs"}, {"rank": "9", "suit": "diamonds"}], "Kenji": [{"rank": "6", "suit": "diamonds"}, {"rank": "Q", "suit": "hearts"}], "River": [{"rank": "6", "suit": "clubs"}, {"rank": "Q", "suit": "spades"}]}


game_id: 778f2ad2-1ac4-45ae-b107-3d4cc6c8a383
timestamp: 2026-01-24 18:52:04.326208
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped A for 5 at pos 5
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Priya": [{"rank": "9", "suit": "clubs"}, {"rank": "9", "suit": "diamonds"}], "Kenji": [{"rank": "6", "suit": "diamonds"}, {"rank": "Q", "suit": "hearts"}], "River": [{"rank": "6", "suit": "clubs"}, {"rank": "Q", "suit": "spades"}]}


game_id: 778f2ad2-1ac4-45ae-b107-3d4cc6c8a383
timestamp: 2026-01-24 18:52:04.332297
player_id: cpu_1
player_name: Priya
action: take_discard
card_rank: 5
card_suit: clubs
decision_reason: took 5 from discard
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": true}]

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


game_id: 778f2ad2-1ac4-45ae-b107-3d4cc6c8a383
timestamp: 2026-01-24 18:52:04.338712
player_id: cpu_1
player_name: Priya
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: swapped 5 for 9 at pos 1
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": true}]

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


game_id: 778f2ad2-1ac4-45ae-b107-3d4cc6c8a383
timestamp: 2026-01-24 18:52:04.344568
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Sofia": [{"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}], "Priya": [{"rank": "5", "suit": "clubs"}, {"rank": "9", "suit": "diamonds"}], "River": [{"rank": "6", "suit": "clubs"}, {"rank": "Q", "suit": "spades"}]}


game_id: 778f2ad2-1ac4-45ae-b107-3d4cc6c8a383
timestamp: 2026-01-24 18:52:04.350967
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped 5 for Q at pos 3
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Sofia": [{"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}], "Priya": [{"rank": "5", "suit": "clubs"}, {"rank": "9", "suit": "diamonds"}], "River": [{"rank": "6", "suit": "clubs"}, {"rank": "Q", "suit": "spades"}]}


game_id: 778f2ad2-1ac4-45ae-b107-3d4cc6c8a383
timestamp: 2026-01-24 18:52:04.357249
player_id: cpu_3
player_name: River
action: take_discard
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took Q from discard
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Sofia": [{"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}], "Priya": [{"rank": "5", "suit": "clubs"}, {"rank": "9", "suit": "diamonds"}], "Kenji": [{"rank": "6", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}]}


game_id: 778f2ad2-1ac4-45ae-b107-3d4cc6c8a383
timestamp: 2026-01-24 18:52:04.363665
player_id: cpu_3
player_name: River
action: swap
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped Q for 4 at pos 2
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Sofia": [{"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}], "Priya": [{"rank": "5", "suit": "clubs"}, {"rank": "9", "suit": "diamonds"}], "Kenji": [{"rank": "6", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}]}


game_id: 778f2ad2-1ac4-45ae-b107-3d4cc6c8a383
timestamp: 2026-01-24 18:52:04.370486
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Priya": [{"rank": "5", "suit": "clubs"}, {"rank": "9", "suit": "diamonds"}], "Kenji": [{"rank": "6", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}], "River": [{"rank": "6", "suit": "clubs"}, {"rank": "Q", "suit": "hearts"}, {"rank": "Q", "suit": "spades"}]}


game_id: 778f2ad2-1ac4-45ae-b107-3d4cc6c8a383
timestamp: 2026-01-24 18:52:04.382968
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": true}]

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


game_id: 778f2ad2-1ac4-45ae-b107-3d4cc6c8a383
timestamp: 2026-01-24 18:52:04.388570
player_id: cpu_1
player_name: Priya
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 4 for 9 at pos 5
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 778f2ad2-1ac4-45ae-b107-3d4cc6c8a383
timestamp: 2026-01-24 18:52:04.394127
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 778f2ad2-1ac4-45ae-b107-3d4cc6c8a383
timestamp: 2026-01-24 18:52:04.399875
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped 8 for 10 at pos 5
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}]

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


game_id: 778f2ad2-1ac4-45ae-b107-3d4cc6c8a383
timestamp: 2026-01-24 18:52:04.405573
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": true}]

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


game_id: 778f2ad2-1ac4-45ae-b107-3d4cc6c8a383
timestamp: 2026-01-24 18:52:04.412469
player_id: cpu_3
player_name: River
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 3 for J at pos 3
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": true}]

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


game_id: 778f2ad2-1ac4-45ae-b107-3d4cc6c8a383
timestamp: 2026-01-24 18:52:04.418284
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "5", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}], "Kenji": [{"rank": "6", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}, {"rank": "8", "suit": "hearts"}], "River": [{"rank": "6", "suit": "clubs"}, {"rank": "Q", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "Q", "suit": "spades"}]}


game_id: 778f2ad2-1ac4-45ae-b107-3d4cc6c8a383
timestamp: 2026-01-24 18:52:04.423845
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped A for 3 at pos 4
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 778f2ad2-1ac4-45ae-b107-3d4cc6c8a383
timestamp: 2026-01-24 18:52:04.429356
player_id: cpu_1
player_name: Priya
action: take_discard
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"Sofia": [{"rank": "A", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}], "Kenji": [{"rank": "6", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}, {"rank": "8", "suit": "hearts"}], "River": [{"rank": "6", "suit": "clubs"}, {"rank": "Q", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "Q", "suit": "spades"}]}


game_id: 778f2ad2-1ac4-45ae-b107-3d4cc6c8a383
timestamp: 2026-01-24 18:52:04.435158
player_id: cpu_1
player_name: Priya
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 3 for 5 at pos 1
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"Sofia": [{"rank": "A", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}], "Kenji": [{"rank": "6", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}, {"rank": "8", "suit": "hearts"}], "River": [{"rank": "6", "suit": "clubs"}, {"rank": "Q", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "Q", "suit": "spades"}]}


game_id: 778f2ad2-1ac4-45ae-b107-3d4cc6c8a383
timestamp: 2026-01-24 18:52:04.441463
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}]

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


game_id: 778f2ad2-1ac4-45ae-b107-3d4cc6c8a383
timestamp: 2026-01-24 18:52:04.449318
player_id: cpu_2
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 0
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}]

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


game_id: 778f2ad2-1ac4-45ae-b107-3d4cc6c8a383
timestamp: 2026-01-24 18:52:04.455523
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": true}]

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


game_id: 778f2ad2-1ac4-45ae-b107-3d4cc6c8a383
timestamp: 2026-01-24 18:52:04.461116
player_id: cpu_3
player_name: River
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped 7 for Q at pos 2
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": true}]

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


game_id: 778f2ad2-1ac4-45ae-b107-3d4cc6c8a383
timestamp: 2026-01-24 18:52:04.466801
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 9
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 778f2ad2-1ac4-45ae-b107-3d4cc6c8a383
timestamp: 2026-01-24 18:52:04.479186
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 778f2ad2-1ac4-45ae-b107-3d4cc6c8a383
timestamp: 2026-01-24 18:52:04.491228
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}]

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


game_id: 778f2ad2-1ac4-45ae-b107-3d4cc6c8a383
timestamp: 2026-01-24 18:52:04.497089
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 3 for 8 at pos 5
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 778f2ad2-1ac4-45ae-b107-3d4cc6c8a383
timestamp: 2026-01-24 18:52:04.503197
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 8 from discard
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": true}]

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


game_id: 778f2ad2-1ac4-45ae-b107-3d4cc6c8a383
timestamp: 2026-01-24 18:52:04.509098
player_id: cpu_3
player_name: River
action: swap
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped 8 for Q at pos 5
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}]

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


game_id: 778f2ad2-1ac4-45ae-b107-3d4cc6c8a383
timestamp: 2026-01-24 18:52:04.515152
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}], "Kenji": [{"rank": "5", "suit": "clubs"}, {"rank": "6", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}], "River": [{"rank": "6", "suit": "clubs"}, {"rank": "7", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "8", "suit": "hearts"}]}


game_id: 778f2ad2-1ac4-45ae-b107-3d4cc6c8a383
timestamp: 2026-01-24 18:52:04.527043
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "A", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}], "Kenji": [{"rank": "5", "suit": "clubs"}, {"rank": "6", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}], "River": [{"rank": "6", "suit": "clubs"}, {"rank": "7", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "8", "suit": "hearts"}]}


game_id: 778f2ad2-1ac4-45ae-b107-3d4cc6c8a383
timestamp: 2026-01-24 18:52:04.538483
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sofia": [{"rank": "A", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}], "Priya": [{"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}], "River": [{"rank": "6", "suit": "clubs"}, {"rank": "7", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "8", "suit": "hearts"}]}


game_id: 778f2ad2-1ac4-45ae-b107-3d4cc6c8a383
timestamp: 2026-01-24 18:52:04.544108
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped K for 6 at pos 2
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sofia": [{"rank": "A", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}], "Priya": [{"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}], "River": [{"rank": "6", "suit": "clubs"}, {"rank": "7", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "8", "suit": "hearts"}]}


game_id: 778f2ad2-1ac4-45ae-b107-3d4cc6c8a383
timestamp: 2026-01-24 18:52:04.549755
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}]

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


game_id: 778f2ad2-1ac4-45ae-b107-3d4cc6c8a383
timestamp: 2026-01-24 18:52:04.555275
player_id: cpu_3
player_name: River
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 6 for 5 at pos 4
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": true}]

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


game_id: 778f2ad2-1ac4-45ae-b107-3d4cc6c8a383
timestamp: 2026-01-24 18:52:04.560728
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}], "Kenji": [{"rank": "5", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}], "River": [{"rank": "6", "suit": "clubs"}, {"rank": "7", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "6", "suit": "diamonds"}, {"rank": "8", "suit": "hearts"}]}


game_id: 778f2ad2-1ac4-45ae-b107-3d4cc6c8a383
timestamp: 2026-01-24 18:52:04.572106
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "A", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}], "Kenji": [{"rank": "5", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}], "River": [{"rank": "6", "suit": "clubs"}, {"rank": "7", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "6", "suit": "diamonds"}, {"rank": "8", "suit": "hearts"}]}


game_id: 778f2ad2-1ac4-45ae-b107-3d4cc6c8a383
timestamp: 2026-01-24 18:52:04.584235
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sofia": [{"rank": "A", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}], "Priya": [{"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}], "River": [{"rank": "6", "suit": "clubs"}, {"rank": "7", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "6", "suit": "diamonds"}, {"rank": "8", "suit": "hearts"}]}


game_id: 778f2ad2-1ac4-45ae-b107-3d4cc6c8a383
timestamp: 2026-01-24 18:52:04.590025
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped K for 5 at pos 0
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sofia": [{"rank": "A", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}], "Priya": [{"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}], "River": [{"rank": "6", "suit": "clubs"}, {"rank": "7", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "6", "suit": "diamonds"}, {"rank": "8", "suit": "hearts"}]}


game_id: 778f2ad2-1ac4-45ae-b107-3d4cc6c8a383
timestamp: 2026-01-24 18:52:04.596489
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": true}]

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


game_id: 778f2ad2-1ac4-45ae-b107-3d4cc6c8a383
timestamp: 2026-01-24 18:52:04.602205
player_id: cpu_3
player_name: River
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 5 for 8 at pos 5
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 778f2ad2-1ac4-45ae-b107-3d4cc6c8a383
timestamp: 2026-01-24 18:52:04.607972
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}], "Kenji": [{"rank": "K", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}], "River": [{"rank": "6", "suit": "clubs"}, {"rank": "7", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "6", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}]}


game_id: 778f2ad2-1ac4-45ae-b107-3d4cc6c8a383
timestamp: 2026-01-24 18:52:04.618932
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "A", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}], "Kenji": [{"rank": "K", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}], "River": [{"rank": "6", "suit": "clubs"}, {"rank": "7", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "6", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}]}


game_id: 778f2ad2-1ac4-45ae-b107-3d4cc6c8a383
timestamp: 2026-01-24 18:52:04.624289
player_id: cpu_1
player_name: Priya
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": "3", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 778f2ad2-1ac4-45ae-b107-3d4cc6c8a383
timestamp: 2026-01-24 18:52:04.630853
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 778f2ad2-1ac4-45ae-b107-3d4cc6c8a383
timestamp: 2026-01-24 18:52:04.637365
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 4 for 5 at pos 3
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 778f2ad2-1ac4-45ae-b107-3d4cc6c8a383
timestamp: 2026-01-24 18:52:04.643772
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 778f2ad2-1ac4-45ae-b107-3d4cc6c8a383
timestamp: 2026-01-24 18:52:04.650182
player_id: cpu_3
player_name: River
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 5 for 7 at pos 2
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 778f2ad2-1ac4-45ae-b107-3d4cc6c8a383
timestamp: 2026-01-24 18:52:04.656627
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}], "Kenji": [{"rank": "K", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}], "River": [{"rank": "6", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "6", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}]}


game_id: 778f2ad2-1ac4-45ae-b107-3d4cc6c8a383
timestamp: 2026-01-24 18:52:04.669274
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 778f2ad2-1ac4-45ae-b107-3d4cc6c8a383
timestamp: 2026-01-24 18:52:04.680814
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


