# moves

game_id: 8025c0dc-ed4e-4942-8c01-09110cda6619
timestamp: 2026-01-25 00:08:53.851724
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: 8025c0dc-ed4e-4942-8c01-09110cda6619
timestamp: 2026-01-25 00:08:53.857312
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped A for 5 at pos 5
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 766f0fac-f33d-4c0a-af92-ac66957d1fdd
timestamp: 2026-01-25 00:08:53.873805
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 3
card_suit: diamonds
decision_reason: took 3 from discard
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 766f0fac-f33d-4c0a-af92-ac66957d1fdd
timestamp: 2026-01-25 00:08:53.879823
player_id: cpu_0
player_name: River
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped 3 for J at pos 1
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 766f0fac-f33d-4c0a-af92-ac66957d1fdd
timestamp: 2026-01-25 00:08:53.885679
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}]

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


game_id: 766f0fac-f33d-4c0a-af92-ac66957d1fdd
timestamp: 2026-01-25 00:08:53.897876
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 766f0fac-f33d-4c0a-af92-ac66957d1fdd
timestamp: 2026-01-25 00:08:53.904253
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 6 for 8 at pos 2
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 766f0fac-f33d-4c0a-af92-ac66957d1fdd
timestamp: 2026-01-25 00:08:53.910272
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 9
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: 766f0fac-f33d-4c0a-af92-ac66957d1fdd
timestamp: 2026-01-25 00:08:53.922248
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 766f0fac-f33d-4c0a-af92-ac66957d1fdd
timestamp: 2026-01-25 00:08:53.933857
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}]

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


game_id: 766f0fac-f33d-4c0a-af92-ac66957d1fdd
timestamp: 2026-01-25 00:08:53.939817
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 2 for 7 at pos 2
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}]

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


game_id: 766f0fac-f33d-4c0a-af92-ac66957d1fdd
timestamp: 2026-01-25 00:08:53.947529
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 766f0fac-f33d-4c0a-af92-ac66957d1fdd
timestamp: 2026-01-25 00:08:53.959498
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: 766f0fac-f33d-4c0a-af92-ac66957d1fdd
timestamp: 2026-01-25 00:08:53.965427
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "hearts"}
decision_reason: swapped K for 3 at pos 0
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: 766f0fac-f33d-4c0a-af92-ac66957d1fdd
timestamp: 2026-01-25 00:08:53.971423
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 3 from discard
visible_opponents_json:
{"Sage": [{"rank": "2", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}], "Kenji": [{"rank": "6", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}], "Marcus": [{"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}]}


game_id: 766f0fac-f33d-4c0a-af92-ac66957d1fdd
timestamp: 2026-01-25 00:08:53.977561
player_id: cpu_0
player_name: River
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 3 for 5 at pos 4
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 766f0fac-f33d-4c0a-af92-ac66957d1fdd
timestamp: 2026-01-25 00:08:53.983860
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}]

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


game_id: 766f0fac-f33d-4c0a-af92-ac66957d1fdd
timestamp: 2026-01-25 00:08:53.992954
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 5 for 8 at pos 0
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}]

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


game_id: 766f0fac-f33d-4c0a-af92-ac66957d1fdd
timestamp: 2026-01-25 00:08:53.998748
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: A
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}], "Sage": [{"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}], "Marcus": [{"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}]}


game_id: 766f0fac-f33d-4c0a-af92-ac66957d1fdd
timestamp: 2026-01-25 00:08:54.004634
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped A for 6 at pos 2
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 766f0fac-f33d-4c0a-af92-ac66957d1fdd
timestamp: 2026-01-25 00:08:54.010235
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: 766f0fac-f33d-4c0a-af92-ac66957d1fdd
timestamp: 2026-01-25 00:08:54.016313
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 6 for Q at pos 5
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: 766f0fac-f33d-4c0a-af92-ac66957d1fdd
timestamp: 2026-01-25 00:08:54.022453
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 766f0fac-f33d-4c0a-af92-ac66957d1fdd
timestamp: 2026-01-25 00:08:54.028492
player_id: cpu_0
player_name: River
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped 2 for 3 at pos 1
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 766f0fac-f33d-4c0a-af92-ac66957d1fdd
timestamp: 2026-01-25 00:08:54.034576
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}]

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


game_id: 766f0fac-f33d-4c0a-af92-ac66957d1fdd
timestamp: 2026-01-25 00:08:54.040616
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped 5 for 10 at pos 3
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}]

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


game_id: 766f0fac-f33d-4c0a-af92-ac66957d1fdd
timestamp: 2026-01-25 00:08:54.046850
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 766f0fac-f33d-4c0a-af92-ac66957d1fdd
timestamp: 2026-01-25 00:08:54.052605
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 8 for 7 at pos 3
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 766f0fac-f33d-4c0a-af92-ac66957d1fdd
timestamp: 2026-01-25 00:08:54.058321
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: 766f0fac-f33d-4c0a-af92-ac66957d1fdd
timestamp: 2026-01-25 00:08:54.064171
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 7 for 6 at pos 3
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: 766f0fac-f33d-4c0a-af92-ac66957d1fdd
timestamp: 2026-01-25 00:08:54.069841
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 766f0fac-f33d-4c0a-af92-ac66957d1fdd
timestamp: 2026-01-25 00:08:54.075590
player_id: cpu_0
player_name: River
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 6 for 6 at pos 2
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 766f0fac-f33d-4c0a-af92-ac66957d1fdd
timestamp: 2026-01-25 00:08:54.081170
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}]

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


game_id: 766f0fac-f33d-4c0a-af92-ac66957d1fdd
timestamp: 2026-01-25 00:08:54.086857
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped 6 for 4 at pos 1
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}]

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


game_id: 766f0fac-f33d-4c0a-af92-ac66957d1fdd
timestamp: 2026-01-25 00:08:54.092995
player_id: cpu_2
player_name: Kenji
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": "J", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 766f0fac-f33d-4c0a-af92-ac66957d1fdd
timestamp: 2026-01-25 00:08:54.100775
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 4 for 8 at pos 3
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 766f0fac-f33d-4c0a-af92-ac66957d1fdd
timestamp: 2026-01-25 00:08:54.106816
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: 766f0fac-f33d-4c0a-af92-ac66957d1fdd
timestamp: 2026-01-25 00:08:54.112803
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": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: 766f0fac-f33d-4c0a-af92-ac66957d1fdd
timestamp: 2026-01-25 00:08:54.118932
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 766f0fac-f33d-4c0a-af92-ac66957d1fdd
timestamp: 2026-01-25 00:08:54.125148
player_id: cpu_0
player_name: River
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "K", "suit": "spades"}
decision_reason: swapped 7 for K at pos 3
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 766f0fac-f33d-4c0a-af92-ac66957d1fdd
timestamp: 2026-01-25 00:08:54.131148
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: K
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took K from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}]

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


game_id: 766f0fac-f33d-4c0a-af92-ac66957d1fdd
timestamp: 2026-01-25 00:08:54.137244
player_id: cpu_1
player_name: Sage
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped K for 6 at pos 1
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}]

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


game_id: 766f0fac-f33d-4c0a-af92-ac66957d1fdd
timestamp: 2026-01-25 00:08:54.143214
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 766f0fac-f33d-4c0a-af92-ac66957d1fdd
timestamp: 2026-01-25 00:08:54.149264
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 6 for J at pos 0
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 766f0fac-f33d-4c0a-af92-ac66957d1fdd
timestamp: 2026-01-25 00:08:54.154967
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: 766f0fac-f33d-4c0a-af92-ac66957d1fdd
timestamp: 2026-01-25 00:08:54.160398
player_id: cpu_3
player_name: Marcus
action: discard
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: discarded 9
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.177408
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.189507
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sofia": [{"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}], "Maya": [{"rank": "J", "suit": "diamonds"}, {"rank": "10", "suit": "clubs"}], "Priya": [{"rank": "J", "suit": "spades"}, {"rank": "J", "suit": "hearts"}]}


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.201710
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.207500
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 6 for J at pos 0
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.213241
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took J from discard
hand_json:
[{"rank": "J", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sofia": [{"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}], "Kenji": [{"rank": "7", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "6", "suit": "diamonds"}, {"rank": "10", "suit": "clubs"}]}


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.218840
player_id: cpu_3
player_name: Priya
action: swap
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped J for 10 at pos 3
hand_json:
[{"rank": "J", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sofia": [{"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}], "Kenji": [{"rank": "7", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "6", "suit": "diamonds"}, {"rank": "10", "suit": "clubs"}]}


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.224522
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "7", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "6", "suit": "diamonds"}, {"rank": "10", "suit": "clubs"}], "Priya": [{"rank": "J", "suit": "spades"}, {"rank": "J", "suit": "diamonds"}, {"rank": "J", "suit": "hearts"}]}


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.235964
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.241739
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 7 for 7 at pos 3
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.248215
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.254298
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped 7 for 10 at pos 4
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.260281
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.266343
player_id: cpu_3
player_name: Priya
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped K for J at pos 0
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.272355
player_id: cpu_0
player_name: Sofia
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": "7", "suit": "clubs"}, {"rank": "7", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "6", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}], "Priya": [{"rank": "K", "suit": "diamonds"}, {"rank": "J", "suit": "diamonds"}, {"rank": "J", "suit": "hearts"}]}


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.284825
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sofia": [{"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}], "Maya": [{"rank": "6", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}], "Priya": [{"rank": "K", "suit": "diamonds"}, {"rank": "J", "suit": "diamonds"}, {"rank": "J", "suit": "hearts"}]}


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.294524
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 4 for J at pos 2
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Sofia": [{"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}], "Maya": [{"rank": "6", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}], "Priya": [{"rank": "K", "suit": "diamonds"}, {"rank": "J", "suit": "diamonds"}, {"rank": "J", "suit": "hearts"}]}


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.300469
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.312926
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.318764
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 2 for J at pos 3
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.325018
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "7", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}, {"rank": "7", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "6", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}], "Priya": [{"rank": "K", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}, {"rank": "J", "suit": "hearts"}]}


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.337374
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.350405
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}], "Kenji": [{"rank": "7", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}, {"rank": "7", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}], "Priya": [{"rank": "K", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}, {"rank": "J", "suit": "hearts"}]}


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.356568
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 5 for 6 at pos 5
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.363065
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.368409
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 6 for J at pos 5
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.374277
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "7", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}, {"rank": "7", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "6", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "5", "suit": "hearts"}], "Priya": [{"rank": "K", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}, {"rank": "6", "suit": "hearts"}]}


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.385948
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}], "Maya": [{"rank": "6", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "5", "suit": "hearts"}], "Priya": [{"rank": "K", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}, {"rank": "6", "suit": "hearts"}]}


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.398441
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.408219
player_id: cpu_2
player_name: Maya
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped K for 7 at pos 4
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.414646
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.420510
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped 7 for 4 at pos 2
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.426303
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 4 from discard
visible_opponents_json:
{"Kenji": [{"rank": "7", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}, {"rank": "7", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "6", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}, {"rank": "5", "suit": "hearts"}], "Priya": [{"rank": "K", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}, {"rank": "6", "suit": "hearts"}]}


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.431928
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 4 for 9 at pos 0
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.437740
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "4", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}], "Maya": [{"rank": "6", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}, {"rank": "5", "suit": "hearts"}], "Priya": [{"rank": "K", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}, {"rank": "6", "suit": "hearts"}]}


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.443974
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 5 for 7 at pos 0
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.449733
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.455574
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "K", "suit": "clubs"}
decision_reason: swapped 7 for K at pos 2
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.468603
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took K from discard
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.475151
player_id: cpu_3
player_name: Priya
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped K for 7 at pos 2
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.481471
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.487491
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 7 for 4 at pos 1
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.493529
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.499334
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 4 for 7 at pos 3
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.507742
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.513425
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "2", "suit": "hearts"}
decision_reason: swapped 7 for 2 at pos 3
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.519394
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.525265
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 2 for 6 at pos 5
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.531222
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.537258
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 6 for 5 at pos 5
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.543092
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: K
card_suit: spades
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.549187
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped K for 5 at pos 0
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.555131
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.560904
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 5 for 7 at pos 2
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.566846
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.573477
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: swapped 7 for 9 at pos 4
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.579863
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.586141
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped A for 7 at pos 1
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.591821
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.597452
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped 7 for Q at pos 4
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.603322
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.608923
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 7 for 8 at pos 1
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.614593
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.620242
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 3 for 7 at pos 4
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.626142
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.632049
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 7 for 6 at pos 3
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.637618
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: bf69b8f6-e096-40da-9161-a02f246489d8
timestamp: 2026-01-25 00:08:54.643742
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 6 for 7 at pos 4
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:54.660513
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 2
card_suit: hearts
decision_reason: took 2 from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Marcus": [{"rank": "7", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}], "Kenji": [{"rank": "Q", "suit": "spades"}, {"rank": "9", "suit": "hearts"}], "River": [{"rank": "8", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}]}


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:54.666228
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 2 for 7 at pos 4
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Marcus": [{"rank": "7", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}], "Kenji": [{"rank": "Q", "suit": "spades"}, {"rank": "9", "suit": "hearts"}], "River": [{"rank": "8", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}]}


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:54.672034
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: 7
card_suit: clubs
decision_reason: took 7 from discard
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Sofia": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "hearts"}], "Kenji": [{"rank": "Q", "suit": "spades"}, {"rank": "9", "suit": "hearts"}], "River": [{"rank": "8", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}]}


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:54.677713
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 7 for 5 at pos 4
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Sofia": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "hearts"}], "Kenji": [{"rank": "Q", "suit": "spades"}, {"rank": "9", "suit": "hearts"}], "River": [{"rank": "8", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}]}


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:54.683577
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 5
card_suit: hearts
decision_reason: took 5 from discard
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:54.689205
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped 5 for Q at pos 0
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:54.695717
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: Q
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}]

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


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:54.707937
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}]

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


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:54.714430
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 3 for J at pos 5
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:54.720618
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Sofia": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "spades"}], "Kenji": [{"rank": "5", "suit": "hearts"}, {"rank": "9", "suit": "hearts"}], "River": [{"rank": "8", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}]}


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:54.726307
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 5 for 7 at pos 1
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Sofia": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "spades"}], "Kenji": [{"rank": "5", "suit": "hearts"}, {"rank": "9", "suit": "hearts"}], "River": [{"rank": "8", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}]}


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:54.732180
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:54.737832
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped 7 for 9 at pos 4
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:54.743706
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}]

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


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:54.749547
player_id: cpu_3
player_name: River
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped A for 8 at pos 0
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}]

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


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:54.755619
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 10
card_suit: spades
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:54.767921
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:54.774449
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped A for 7 at pos 4
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:54.780350
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:54.786593
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 7 for 7 at pos 1
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:54.792831
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}]

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


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:54.804754
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "5", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}], "Kenji": [{"rank": "5", "suit": "hearts"}, {"rank": "7", "suit": "clubs"}, {"rank": "7", "suit": "diamonds"}], "River": [{"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}]}


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:54.816502
player_id: cpu_1
player_name: Marcus
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": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:54.847232
player_id: cpu_3
player_name: River
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "2", "suit": "diamonds"}
decision_reason: swapped 4 for 2 at pos 1
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}]


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:54.853607
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 2 from discard
visible_opponents_json:
{"Marcus": [{"rank": "5", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}], "Kenji": [{"rank": "5", "suit": "hearts"}, {"rank": "7", "suit": "clubs"}, {"rank": "7", "suit": "diamonds"}], "River": [{"rank": "A", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}]}


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:54.860099
player_id: cpu_0
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": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:54.866090
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 3 from discard
visible_opponents_json:
{"Sofia": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}], "Kenji": [{"rank": "5", "suit": "hearts"}, {"rank": "7", "suit": "clubs"}, {"rank": "7", "suit": "diamonds"}], "River": [{"rank": "A", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}]}


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:54.872290
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 3 for 5 at pos 1
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:54.878194
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}], "Marcus": [{"rank": "3", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}], "River": [{"rank": "A", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}]}


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:54.891859
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}]

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


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:54.897860
player_id: cpu_3
player_name: River
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped K for 4 at pos 1
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}]

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


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:54.904189
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:54.910660
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "A", "suit": "spades"}
decision_reason: swapped 4 for A at pos 1
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:54.916844
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: A
card_suit: spades
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took A from discard
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:54.922969
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped A for 4 at pos 3
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:54.931232
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "2", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}], "Marcus": [{"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}], "River": [{"rank": "A", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}]}


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:54.937344
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 4 for 7 at pos 1
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:54.943257
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}]

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


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:54.949290
player_id: cpu_3
player_name: River
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: swapped 7 for 9 at pos 5
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}]

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


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:54.955208
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:54.962387
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "K", "suit": "spades"}
decision_reason: swapped 3 for K at pos 3
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:54.968957
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: K
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took K from discard
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:54.974944
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped K for 3 at pos 1
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:54.981230
player_id: cpu_2
player_name: Kenji
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": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:54.987020
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 3 for 7 at pos 4
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:54.993044
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}]

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


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:54.999155
player_id: cpu_3
player_name: River
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "K", "suit": "clubs"}
decision_reason: swapped 7 for K at pos 2
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}]

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


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:55.005628
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 9
card_suit: spades
discard_top_json: {"rank": "K", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:55.018274
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:55.030229
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:55.035998
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped K for 5 at pos 0
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:55.041917
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}]

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


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:55.047793
player_id: cpu_3
player_name: River
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 5 for 7 at pos 2
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}]

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


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:55.054159
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 7 from discard
visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}], "Kenji": [{"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "3", "suit": "spades"}], "River": [{"rank": "A", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}, {"rank": "7", "suit": "clubs"}]}


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:55.060647
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "2", "suit": "clubs"}
decision_reason: swapped 7 for 2 at pos 2
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:55.066915
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 2 from discard
visible_opponents_json:
{"Sofia": [{"rank": "2", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}, {"rank": "7", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}], "Kenji": [{"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "3", "suit": "spades"}], "River": [{"rank": "A", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}, {"rank": "7", "suit": "clubs"}]}


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:55.072995
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "A", "suit": "spades"}
decision_reason: swapped 2 for A at pos 3
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:55.079054
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "A", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:55.085269
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 8 for 6 at pos 5
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}]

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


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:55.090907
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "A", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}]

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


game_id: 7fc94611-fe40-4f70-93d8-ebde335b9745
timestamp: 2026-01-25 00:08:55.096946
player_id: cpu_3
player_name: River
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 6 for 7 at pos 5
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: 19177c5b-f304-486c-9f4d-91b5d02e0c98
timestamp: 2026-01-25 00:08:55.113562
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 7
card_suit: spades
decision_reason: took 7 from discard
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 19177c5b-f304-486c-9f4d-91b5d02e0c98
timestamp: 2026-01-25 00:08:55.119667
player_id: cpu_0
player_name: River
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped 7 for 3 at pos 4
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 19177c5b-f304-486c-9f4d-91b5d02e0c98
timestamp: 2026-01-25 00:08:55.125411
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: 3
card_suit: clubs
decision_reason: took 3 from discard
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: 19177c5b-f304-486c-9f4d-91b5d02e0c98
timestamp: 2026-01-25 00:08:55.131303
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 3 for 10 at pos 3
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: 19177c5b-f304-486c-9f4d-91b5d02e0c98
timestamp: 2026-01-25 00:08:55.136897
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: A
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": "2", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}]

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


game_id: 19177c5b-f304-486c-9f4d-91b5d02e0c98
timestamp: 2026-01-25 00:08:55.142706
player_id: cpu_2
player_name: Maya
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped A for 5 at pos 0
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}]

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


game_id: 19177c5b-f304-486c-9f4d-91b5d02e0c98
timestamp: 2026-01-25 00:08:55.148512
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": true}]

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


game_id: 19177c5b-f304-486c-9f4d-91b5d02e0c98
timestamp: 2026-01-25 00:08:55.154231
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped 5 for Q at pos 5
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 19177c5b-f304-486c-9f4d-91b5d02e0c98
timestamp: 2026-01-25 00:08:55.160039
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 19177c5b-f304-486c-9f4d-91b5d02e0c98
timestamp: 2026-01-25 00:08:55.165857
player_id: cpu_0
player_name: River
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 4 for 7 at pos 1
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 19177c5b-f304-486c-9f4d-91b5d02e0c98
timestamp: 2026-01-25 00:08:55.171844
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: 19177c5b-f304-486c-9f4d-91b5d02e0c98
timestamp: 2026-01-25 00:08:55.177735
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "A", "suit": "spades"}
decision_reason: swapped 7 for A at pos 4
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: 19177c5b-f304-486c-9f4d-91b5d02e0c98
timestamp: 2026-01-25 00:08:55.183536
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: A
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took A from discard
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}]

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


game_id: 19177c5b-f304-486c-9f4d-91b5d02e0c98
timestamp: 2026-01-25 00:08:55.189537
player_id: cpu_2
player_name: Maya
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "2", "suit": "diamonds"}
decision_reason: swapped A for 2 at pos 1
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}]

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


game_id: 19177c5b-f304-486c-9f4d-91b5d02e0c98
timestamp: 2026-01-25 00:08:55.195243
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 19177c5b-f304-486c-9f4d-91b5d02e0c98
timestamp: 2026-01-25 00:08:55.201426
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 2 for 5 at pos 5
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 19177c5b-f304-486c-9f4d-91b5d02e0c98
timestamp: 2026-01-25 00:08:55.207858
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 19177c5b-f304-486c-9f4d-91b5d02e0c98
timestamp: 2026-01-25 00:08:55.214071
player_id: cpu_0
player_name: River
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 5 for 7 at pos 4
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 19177c5b-f304-486c-9f4d-91b5d02e0c98
timestamp: 2026-01-25 00:08:55.220214
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: 19177c5b-f304-486c-9f4d-91b5d02e0c98
timestamp: 2026-01-25 00:08:55.225830
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped 7 for 4 at pos 2
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: 19177c5b-f304-486c-9f4d-91b5d02e0c98
timestamp: 2026-01-25 00:08:55.231684
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}]

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


game_id: 19177c5b-f304-486c-9f4d-91b5d02e0c98
timestamp: 2026-01-25 00:08:55.237490
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 4 for 6 at pos 4
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}]

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


game_id: 19177c5b-f304-486c-9f4d-91b5d02e0c98
timestamp: 2026-01-25 00:08:55.242935
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 19177c5b-f304-486c-9f4d-91b5d02e0c98
timestamp: 2026-01-25 00:08:55.248503
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "K", "suit": "hearts"}
decision_reason: swapped 6 for K at pos 0
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 19177c5b-f304-486c-9f4d-91b5d02e0c98
timestamp: 2026-01-25 00:08:55.254293
player_id: cpu_0
player_name: River
action: take_discard
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took K from discard
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 19177c5b-f304-486c-9f4d-91b5d02e0c98
timestamp: 2026-01-25 00:08:55.260098
player_id: cpu_0
player_name: River
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped K for 5 at pos 4
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 19177c5b-f304-486c-9f4d-91b5d02e0c98
timestamp: 2026-01-25 00:08:55.265630
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: 19177c5b-f304-486c-9f4d-91b5d02e0c98
timestamp: 2026-01-25 00:08:55.271554
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 5 for 7 at pos 1
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: 19177c5b-f304-486c-9f4d-91b5d02e0c98
timestamp: 2026-01-25 00:08:55.277964
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}]

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


game_id: 19177c5b-f304-486c-9f4d-91b5d02e0c98
timestamp: 2026-01-25 00:08:55.286296
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: swapped 7 for 9 at pos 5
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}]

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


game_id: 19177c5b-f304-486c-9f4d-91b5d02e0c98
timestamp: 2026-01-25 00:08:55.292165
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 19177c5b-f304-486c-9f4d-91b5d02e0c98
timestamp: 2026-01-25 00:08:55.304140
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 19177c5b-f304-486c-9f4d-91b5d02e0c98
timestamp: 2026-01-25 00:08:55.309803
player_id: cpu_0
player_name: River
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 5 for 8 at pos 2
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 19177c5b-f304-486c-9f4d-91b5d02e0c98
timestamp: 2026-01-25 00:08:55.315229
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: 19177c5b-f304-486c-9f4d-91b5d02e0c98
timestamp: 2026-01-25 00:08:55.321272
player_id: cpu_1
player_name: Diego
action: discard
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: discarded J
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": true}]

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


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.338449
player_id: cpu_0
player_name: Sage
action: take_discard
card_rank: 3
card_suit: spades
decision_reason: took 3 from discard
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "Q", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}], "Sofia": [{"rank": "3", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}], "Marcus": [{"rank": "2", "suit": "diamonds"}, {"rank": "10", "suit": "clubs"}]}


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.344056
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 3 for 8 at pos 4
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "Q", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}], "Sofia": [{"rank": "3", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}], "Marcus": [{"rank": "2", "suit": "diamonds"}, {"rank": "10", "suit": "clubs"}]}


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.349947
player_id: cpu_1
player_name: River
action: take_discard
card_rank: 8
card_suit: spades
decision_reason: took 8 from discard
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.355954
player_id: cpu_1
player_name: River
action: swap
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped 8 for Q at pos 0
hand_json:
[{"rank": "8", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.362059
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}]

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


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.368335
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 2 for 4 at pos 3
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}]

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


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.374130
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Sage": [{"rank": "A", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}], "River": [{"rank": "8", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}], "Sofia": [{"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "clubs"}]}


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.380102
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped 4 for 10 at pos 4
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Sage": [{"rank": "A", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}], "River": [{"rank": "8", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}], "Sofia": [{"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "clubs"}]}


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.386055
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.391883
player_id: cpu_0
player_name: Sage
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped A for 6 at pos 5
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.397689
player_id: cpu_1
player_name: River
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "8", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.403279
player_id: cpu_1
player_name: River
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 6 for 8 at pos 0
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.409091
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}]

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


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.420802
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.426914
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "K", "suit": "hearts"}
decision_reason: swapped 5 for K at pos 3
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.433295
player_id: cpu_0
player_name: Sage
action: take_discard
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took K from discard
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"River": [{"rank": "6", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}], "Sofia": [{"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "clubs"}], "Marcus": [{"rank": "2", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}]}


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.439294
player_id: cpu_0
player_name: Sage
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped K for 3 at pos 4
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"River": [{"rank": "6", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}], "Sofia": [{"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "clubs"}], "Marcus": [{"rank": "2", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}]}


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.445133
player_id: cpu_1
player_name: River
action: take_discard
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.450941
player_id: cpu_1
player_name: River
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: swapped 3 for 9 at pos 2
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.456882
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}], "River": [{"rank": "6", "suit": "clubs"}, {"rank": "3", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}], "Marcus": [{"rank": "2", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}]}


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.462556
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped 2 for 3 at pos 1
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}]

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


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.468746
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.474285
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 3 for 5 at pos 3
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.479914
player_id: cpu_0
player_name: Sage
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.486047
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "K", "suit": "diamonds"}
decision_reason: swapped 5 for K at pos 1
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.492309
player_id: cpu_1
player_name: River
action: take_discard
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took K from discard
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.498488
player_id: cpu_1
player_name: River
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped K for 6 at pos 0
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.504639
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}]

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


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.510756
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 6 for 6 at pos 2
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}]

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


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.517152
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.523397
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 6 for 7 at pos 0
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.529084
player_id: cpu_0
player_name: Sage
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": "J", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.535319
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 7 for J at pos 0
hand_json:
[{"rank": "7", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.541179
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.547545
player_id: cpu_1
player_name: River
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped K for 3 at pos 2
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.553368
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}]

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


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.559507
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 3 for 6 at pos 2
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}]

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


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.565710
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.571578
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 6 for 6 at pos 1
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.578219
player_id: cpu_0
player_name: Sage
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "7", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.584167
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 6 for 7 at pos 0
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.590223
player_id: cpu_1
player_name: River
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.595925
player_id: cpu_1
player_name: River
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped 7 for Q at pos 3
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.602091
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: K
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}]

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


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.608411
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped K for 3 at pos 2
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}]

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


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.614818
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.620770
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 3 for 6 at pos 0
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.626795
player_id: cpu_0
player_name: Sage
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.632526
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 6 for 5 at pos 3
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.638252
player_id: cpu_1
player_name: River
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.644171
player_id: cpu_1
player_name: River
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 5 for 7 at pos 3
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.649886
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}]

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


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.655854
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped 7 for 10 at pos 0
hand_json:
[{"rank": "7", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}]

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


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.662577
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: 830002cd-61f8-4d72-8bdf-0cad6736a7ef
timestamp: 2026-01-25 00:08:55.670975
player_id: cpu_3
player_name: Marcus
action: discard
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: discarded 10
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": true}]

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


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:55.689005
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: K
card_suit: spades
decision_reason: took K from discard
hand_json:
[{"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:55.698465
player_id: cpu_0
player_name: Diego
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped K for 3 at pos 1
hand_json:
[{"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:55.704343
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 3
card_suit: spades
decision_reason: took 3 from discard
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}]

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


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:55.710149
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 3 for 8 at pos 3
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}]

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


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:55.716114
player_id: cpu_2
player_name: Marcus
action: take_discard
card_rank: 8
card_suit: clubs
decision_reason: took 8 from discard
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:55.722070
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped 8 for 10 at pos 2
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:55.729357
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": true}]

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


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:55.735365
player_id: cpu_3
player_name: River
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped 2 for Q at pos 5
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:55.741409
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:55.747198
player_id: cpu_0
player_name: Diego
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped A for 10 at pos 0
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:55.752802
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}]

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


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:55.768226
player_id: cpu_2
player_name: Marcus
action: draw_deck
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:55.779964
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:55.786335
player_id: cpu_3
player_name: River
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: swapped 5 for 9 at pos 3
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:55.792213
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:55.804679
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Diego": [{"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "spades"}], "Marcus": [{"rank": "8", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}], "River": [{"rank": "5", "suit": "spades"}, {"rank": "5", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}]}


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:55.820759
player_id: cpu_2
player_name: Marcus
action: draw_deck
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Diego": [{"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "spades"}], "Sage": [{"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "spades"}], "River": [{"rank": "5", "suit": "spades"}, {"rank": "5", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}]}


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:55.826559
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped K for 8 at pos 2
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:55.832967
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:55.839338
player_id: cpu_3
player_name: River
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 2 for 5 at pos 0
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:55.845505
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "spades"}], "Marcus": [{"rank": "K", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}], "River": [{"rank": "2", "suit": "spades"}, {"rank": "5", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}]}


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:55.851804
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 6 for 8 at pos 2
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:55.857842
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Diego": [{"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "6", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "Marcus": [{"rank": "K", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}], "River": [{"rank": "2", "suit": "spades"}, {"rank": "5", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}]}


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:55.864057
player_id: cpu_1
player_name: Sage
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": "3", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}]

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


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:55.870772
player_id: cpu_2
player_name: Marcus
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:55.876976
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 4 for 5 at pos 0
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:55.882901
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:55.889016
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 1
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:55.894733
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:55.900944
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "A", "suit": "diamonds"}
decision_reason: swapped 7 for A at pos 4
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:55.906785
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took A from discard
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}]

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


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:55.912949
player_id: cpu_1
player_name: Sage
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped A for 3 at pos 3
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}]

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


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:55.919265
player_id: cpu_2
player_name: Marcus
action: take_discard
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:55.925700
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 3 for 4 at pos 1
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:55.931725
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:55.937589
player_id: cpu_3
player_name: River
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 4 for 5 at pos 1
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:55.943309
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: 10
card_suit: spades
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:55.955353
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 9
card_suit: spades
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}]

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


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:55.966871
player_id: cpu_2
player_name: Marcus
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:55.984568
player_id: cpu_3
player_name: River
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "K", "suit": "clubs"}
decision_reason: swapped 5 for K at pos 4
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}]


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:55.990576
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took K from discard
visible_opponents_json:
{"Sage": [{"rank": "2", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}], "Marcus": [{"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}], "River": [{"rank": "2", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}]}


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:55.996968
player_id: cpu_0
player_name: Diego
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped K for 7 at pos 4
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:56.003311
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 7 from discard
visible_opponents_json:
{"Diego": [{"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "6", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}, {"rank": "K", "suit": "clubs"}], "Marcus": [{"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}], "River": [{"rank": "2", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}]}


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:56.009258
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 7 for 8 at pos 5
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}]

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


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:56.015354
player_id: cpu_2
player_name: Marcus
action: draw_deck
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Diego": [{"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "6", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}, {"rank": "K", "suit": "clubs"}], "Sage": [{"rank": "2", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}], "River": [{"rank": "2", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}]}


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:56.021717
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "2", "suit": "clubs"}
decision_reason: swapped 7 for 2 at pos 3
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:56.027760
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:56.033501
player_id: cpu_3
player_name: River
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 2 for 5 at pos 3
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:56.039252
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:56.045201
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 5 for 6 at pos 2
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:56.052411
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}]

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


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:56.058410
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 6 for 7 at pos 5
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:56.064637
player_id: cpu_2
player_name: Marcus
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:56.070701
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 7 for 6 at pos 5
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}]

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


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:56.076536
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:56.082495
player_id: cpu_3
player_name: River
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 6 for Q at pos 2
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:56.088397
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:56.094904
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 4 for 5 at pos 2
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:56.100736
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: d83d0b84-e606-4823-9a49-2ff0c13560a6
timestamp: 2026-01-25 00:08:56.106999
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 5 for 6 at pos 5
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.124699
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 2
card_suit: spades
decision_reason: took 2 from discard
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Maya": [{"rank": "9", "suit": "spades"}, {"rank": "J", "suit": "diamonds"}], "Kenji": [{"rank": "Q", "suit": "hearts"}, {"rank": "10", "suit": "hearts"}], "Diego": [{"rank": "8", "suit": "hearts"}, {"rank": "8", "suit": "spades"}]}


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.130533
player_id: cpu_0
player_name: River
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped 2 for Q at pos 1
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Maya": [{"rank": "9", "suit": "spades"}, {"rank": "J", "suit": "diamonds"}], "Kenji": [{"rank": "Q", "suit": "hearts"}, {"rank": "10", "suit": "hearts"}], "Diego": [{"rank": "8", "suit": "hearts"}, {"rank": "8", "suit": "spades"}]}


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.136127
player_id: cpu_1
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": "K", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.142177
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 6 for J at pos 4
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.148157
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "2", "suit": "spades"}, {"rank": "7", "suit": "diamonds"}], "Maya": [{"rank": "9", "suit": "spades"}, {"rank": "6", "suit": "diamonds"}], "Diego": [{"rank": "8", "suit": "hearts"}, {"rank": "8", "suit": "spades"}]}


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.154447
player_id: cpu_2
player_name: Kenji
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": "5", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "2", "suit": "spades"}, {"rank": "7", "suit": "diamonds"}], "Maya": [{"rank": "9", "suit": "spades"}, {"rank": "6", "suit": "diamonds"}], "Diego": [{"rank": "8", "suit": "hearts"}, {"rank": "8", "suit": "spades"}]}


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.160458
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "2", "suit": "spades"}, {"rank": "7", "suit": "diamonds"}], "Maya": [{"rank": "9", "suit": "spades"}, {"rank": "6", "suit": "diamonds"}], "Kenji": [{"rank": "7", "suit": "clubs"}, {"rank": "10", "suit": "hearts"}]}


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.166824
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 6 for 4 at pos 1
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "2", "suit": "spades"}, {"rank": "7", "suit": "diamonds"}], "Maya": [{"rank": "9", "suit": "spades"}, {"rank": "6", "suit": "diamonds"}], "Kenji": [{"rank": "7", "suit": "clubs"}, {"rank": "10", "suit": "hearts"}]}


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.172949
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Maya": [{"rank": "9", "suit": "spades"}, {"rank": "6", "suit": "diamonds"}], "Kenji": [{"rank": "7", "suit": "clubs"}, {"rank": "10", "suit": "hearts"}], "Diego": [{"rank": "6", "suit": "clubs"}, {"rank": "8", "suit": "hearts"}, {"rank": "8", "suit": "spades"}]}


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.179229
player_id: cpu_0
player_name: River
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 4 for 7 at pos 3
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Maya": [{"rank": "9", "suit": "spades"}, {"rank": "6", "suit": "diamonds"}], "Kenji": [{"rank": "7", "suit": "clubs"}, {"rank": "10", "suit": "hearts"}], "Diego": [{"rank": "6", "suit": "clubs"}, {"rank": "8", "suit": "hearts"}, {"rank": "8", "suit": "spades"}]}


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.185697
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.191431
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped 7 for 9 at pos 2
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.197761
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.203624
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: swapped 5 for 10 at pos 4
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.209526
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.215163
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 3 for 8 at pos 2
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.221242
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.227024
player_id: cpu_0
player_name: River
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped K for 4 at pos 3
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.232977
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.238810
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 4 for 7 at pos 2
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.244590
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.250227
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 7 for 10 at pos 3
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.256654
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.262524
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "A", "suit": "clubs"}
decision_reason: swapped 7 for A at pos 4
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.268396
player_id: cpu_0
player_name: River
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": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.274232
player_id: cpu_0
player_name: River
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped A for 6 at pos 2
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.279964
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.286077
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 6 for 6 at pos 1
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.292288
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.298331
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 6 for 7 at pos 0
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.304634
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.310929
player_id: cpu_3
player_name: Diego
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped A for 8 at pos 3
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.316885
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.330060
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: J
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.343378
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.349112
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 3 for 7 at pos 3
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.354958
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.367153
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: took 7 from discard
visible_opponents_json:
{"Maya": [{"rank": "6", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "6", "suit": "diamonds"}], "Kenji": [{"rank": "6", "suit": "spades"}, {"rank": "3", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}], "Diego": [{"rank": "6", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}]}


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.373018
player_id: cpu_0
player_name: River
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 7 for J at pos 4
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.378965
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}], "Kenji": [{"rank": "6", "suit": "spades"}, {"rank": "3", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}], "Diego": [{"rank": "6", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}]}


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.390721
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.396395
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 3 for 6 at pos 0
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.402093
player_id: cpu_3
player_name: Diego
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 6 from discard
visible_opponents_json:
{"River": [{"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}], "Maya": [{"rank": "6", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "6", "suit": "diamonds"}], "Kenji": [{"rank": "3", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}]}


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.408014
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 6 for 7 at pos 4
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.413925
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.420059
player_id: cpu_0
player_name: River
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped 7 for 10 at pos 0
hand_json:
[{"rank": "7", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.425901
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "7", "suit": "spades"}, {"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}], "Kenji": [{"rank": "3", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}], "Diego": [{"rank": "6", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}]}


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.431912
player_id: cpu_1
player_name: Maya
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped K for 6 at pos 1
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.440179
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.446498
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 6 for 5 at pos 1
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.452760
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.458882
player_id: cpu_3
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 1
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.464944
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "7", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.470882
player_id: cpu_0
player_name: River
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 6 for 7 at pos 0
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.477340
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.483317
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped 7 for 3 at pos 3
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.489357
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.495282
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped 8 for 4 at pos 5
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": true}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.501896
player_id: cpu_3
player_name: Diego
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.507711
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 4 for 6 at pos 4
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.513749
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.519661
player_id: cpu_0
player_name: River
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 6 for 7 at pos 4
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.525547
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.531481
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "K", "suit": "clubs"}
decision_reason: swapped 7 for K at pos 0
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.537318
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: took K from discard
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": true}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.543491
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped K for 8 at pos 5
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.549468
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.555068
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 2 for 5 at pos 1
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.560817
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.566519
player_id: cpu_0
player_name: River
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 5 for 6 at pos 0
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.572001
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.577726
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 6 for 7 at pos 0
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.583235
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.589305
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 7 for 9 at pos 2
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.594990
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.601061
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped 2 for 4 at pos 4
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.607202
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.613730
player_id: cpu_0
player_name: River
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 4 for 6 at pos 4
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.619835
player_id: cpu_1
player_name: Maya
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": "6", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}]

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


game_id: 635f21e6-d8a8-41bd-a064-bed14dadcfa4
timestamp: 2026-01-25 00:08:56.625649
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 6 for 7 at pos 3
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": true}]

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


game_id: fa6b2518-e9e6-4dd3-b7f8-94cde189dc4b
timestamp: 2026-01-25 00:08:56.642205
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}]

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


game_id: fa6b2518-e9e6-4dd3-b7f8-94cde189dc4b
timestamp: 2026-01-25 00:08:56.653903
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: fa6b2518-e9e6-4dd3-b7f8-94cde189dc4b
timestamp: 2026-01-25 00:08:56.660135
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped 5 for Q at pos 1
hand_json:
[{"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: fa6b2518-e9e6-4dd3-b7f8-94cde189dc4b
timestamp: 2026-01-25 00:08:56.666325
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: fa6b2518-e9e6-4dd3-b7f8-94cde189dc4b
timestamp: 2026-01-25 00:08:56.672276
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped 4 for J at pos 0
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: fa6b2518-e9e6-4dd3-b7f8-94cde189dc4b
timestamp: 2026-01-25 00:08:56.678023
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: J
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took J from discard
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: fa6b2518-e9e6-4dd3-b7f8-94cde189dc4b
timestamp: 2026-01-25 00:08:56.684213
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: J
card_suit: spades
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped J for 8 at pos 4
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: fa6b2518-e9e6-4dd3-b7f8-94cde189dc4b
timestamp: 2026-01-25 00:08:56.690040
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: K
card_suit: spades
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}]

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


game_id: fa6b2518-e9e6-4dd3-b7f8-94cde189dc4b
timestamp: 2026-01-25 00:08:56.696029
player_id: cpu_0
player_name: River
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "A", "suit": "spades"}
decision_reason: swapped K for A at pos 1
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}]

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


game_id: fa6b2518-e9e6-4dd3-b7f8-94cde189dc4b
timestamp: 2026-01-25 00:08:56.702363
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: A
card_suit: spades
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took A from discard
hand_json:
[{"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: fa6b2518-e9e6-4dd3-b7f8-94cde189dc4b
timestamp: 2026-01-25 00:08:56.708300
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped A for 7 at pos 5
hand_json:
[{"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: fa6b2518-e9e6-4dd3-b7f8-94cde189dc4b
timestamp: 2026-01-25 00:08:56.714314
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: fa6b2518-e9e6-4dd3-b7f8-94cde189dc4b
timestamp: 2026-01-25 00:08:56.726083
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: fa6b2518-e9e6-4dd3-b7f8-94cde189dc4b
timestamp: 2026-01-25 00:08:56.740287
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}]

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


game_id: fa6b2518-e9e6-4dd3-b7f8-94cde189dc4b
timestamp: 2026-01-25 00:08:56.746841
player_id: cpu_0
player_name: River
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped K for 10 at pos 5
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: fa6b2518-e9e6-4dd3-b7f8-94cde189dc4b
timestamp: 2026-01-25 00:08:56.752783
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: fa6b2518-e9e6-4dd3-b7f8-94cde189dc4b
timestamp: 2026-01-25 00:08:56.758607
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "2", "suit": "clubs"}
decision_reason: swapped A for 2 at pos 2
hand_json:
[{"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: fa6b2518-e9e6-4dd3-b7f8-94cde189dc4b
timestamp: 2026-01-25 00:08:56.764629
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 2 from discard
visible_opponents_json:
{"River": [{"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}], "Marcus": [{"rank": "5", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "Kenji": [{"rank": "J", "suit": "diamonds"}, {"rank": "J", "suit": "spades"}, {"rank": "K", "suit": "hearts"}]}


game_id: fa6b2518-e9e6-4dd3-b7f8-94cde189dc4b
timestamp: 2026-01-25 00:08:56.770806
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 2 for 5 at pos 3
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: fa6b2518-e9e6-4dd3-b7f8-94cde189dc4b
timestamp: 2026-01-25 00:08:56.776873
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 5 from discard
visible_opponents_json:
{"River": [{"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}], "Marcus": [{"rank": "5", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "Sofia": [{"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "clubs"}]}


game_id: fa6b2518-e9e6-4dd3-b7f8-94cde189dc4b
timestamp: 2026-01-25 00:08:56.782966
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 5 for J at pos 1
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


