# moves

game_id: 6aa04199-c521-4dee-9009-e7cb07322b54
timestamp: 2026-01-25 00:09:58.187463
player_id: cpu_3
player_name: Sage
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped K for 3 at pos 5
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 6aa04199-c521-4dee-9009-e7cb07322b54
timestamp: 2026-01-25 00:09:58.193608
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}]

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


game_id: 6aa04199-c521-4dee-9009-e7cb07322b54
timestamp: 2026-01-25 00:09:58.200772
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "2", "suit": "clubs"}
decision_reason: swapped 3 for 2 at pos 0
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}]

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


game_id: 6aa04199-c521-4dee-9009-e7cb07322b54
timestamp: 2026-01-25 00:09:58.206542
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 2 from discard
visible_opponents_json:
{"Marcus": [{"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}], "River": [{"rank": "5", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "Sage": [{"rank": "K", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}]}


game_id: 6aa04199-c521-4dee-9009-e7cb07322b54
timestamp: 2026-01-25 00:09:58.212820
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 2 for 7 at pos 0
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 6aa04199-c521-4dee-9009-e7cb07322b54
timestamp: 2026-01-25 00:09:58.218891
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}], "Kenji": [{"rank": "2", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}], "Sage": [{"rank": "K", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}]}


game_id: 6aa04199-c521-4dee-9009-e7cb07322b54
timestamp: 2026-01-25 00:09:58.230885
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 6aa04199-c521-4dee-9009-e7cb07322b54
timestamp: 2026-01-25 00:09:58.237086
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped 6 for Q at pos 2
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 6aa04199-c521-4dee-9009-e7cb07322b54
timestamp: 2026-01-25 00:09:58.242971
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}]

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


game_id: 6aa04199-c521-4dee-9009-e7cb07322b54
timestamp: 2026-01-25 00:09:58.254822
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
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 6aa04199-c521-4dee-9009-e7cb07322b54
timestamp: 2026-01-25 00:09:58.269436
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}], "Kenji": [{"rank": "2", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}], "Sage": [{"rank": "K", "suit": "clubs"}, {"rank": "6", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}]}


game_id: 6aa04199-c521-4dee-9009-e7cb07322b54
timestamp: 2026-01-25 00:09:58.275712
player_id: cpu_2
player_name: River
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 3 for 5 at pos 2
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: 6aa04199-c521-4dee-9009-e7cb07322b54
timestamp: 2026-01-25 00:09:58.282369
player_id: cpu_3
player_name: Sage
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": "7", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 6aa04199-c521-4dee-9009-e7cb07322b54
timestamp: 2026-01-25 00:09:58.288720
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 5 for 6 at pos 2
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 6aa04199-c521-4dee-9009-e7cb07322b54
timestamp: 2026-01-25 00:09:58.294261
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "2", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}], "River": [{"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "spades"}], "Sage": [{"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}]}


game_id: 6aa04199-c521-4dee-9009-e7cb07322b54
timestamp: 2026-01-25 00:09:58.300944
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "K", "suit": "spades"}
decision_reason: swapped 3 for K at pos 5
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 6aa04199-c521-4dee-9009-e7cb07322b54
timestamp: 2026-01-25 00:09:58.306838
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: K
card_suit: spades
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: took K from discard
visible_opponents_json:
{"Marcus": [{"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}], "River": [{"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "spades"}], "Sage": [{"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}]}


game_id: 6aa04199-c521-4dee-9009-e7cb07322b54
timestamp: 2026-01-25 00:09:58.312894
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped K for 8 at pos 1
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 6aa04199-c521-4dee-9009-e7cb07322b54
timestamp: 2026-01-25 00:09:58.319180
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: 6aa04199-c521-4dee-9009-e7cb07322b54
timestamp: 2026-01-25 00:09:58.332006
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 6aa04199-c521-4dee-9009-e7cb07322b54
timestamp: 2026-01-25 00:09:58.338217
player_id: cpu_3
player_name: Sage
action: swap
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped J for 7 at pos 0
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 6aa04199-c521-4dee-9009-e7cb07322b54
timestamp: 2026-01-25 00:09:58.344147
player_id: cpu_0
player_name: Marcus
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": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 6aa04199-c521-4dee-9009-e7cb07322b54
timestamp: 2026-01-25 00:09:58.350067
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 7 for J at pos 4
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 6aa04199-c521-4dee-9009-e7cb07322b54
timestamp: 2026-01-25 00:09:58.356419
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 6aa04199-c521-4dee-9009-e7cb07322b54
timestamp: 2026-01-25 00:09:58.367441
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped A for 10 at pos 3
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 6aa04199-c521-4dee-9009-e7cb07322b54
timestamp: 2026-01-25 00:09:58.373572
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Kenji": [{"rank": "2", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}], "Sage": [{"rank": "J", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}]}


game_id: 6aa04199-c521-4dee-9009-e7cb07322b54
timestamp: 2026-01-25 00:09:58.385332
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 6aa04199-c521-4dee-9009-e7cb07322b54
timestamp: 2026-01-25 00:09:58.391088
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 4 for J at pos 0
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 6aa04199-c521-4dee-9009-e7cb07322b54
timestamp: 2026-01-25 00:09:58.396958
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 6aa04199-c521-4dee-9009-e7cb07322b54
timestamp: 2026-01-25 00:09:58.409349
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 9
card_suit: spades
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 6aa04199-c521-4dee-9009-e7cb07322b54
timestamp: 2026-01-25 00:09:58.415406
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 9
card_suit: spades
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped 9 for 4 at pos 5
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": true}]

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


game_id: 6aa04199-c521-4dee-9009-e7cb07322b54
timestamp: 2026-01-25 00:09:58.421725
player_id: cpu_2
player_name: River
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: took 4 from discard
visible_opponents_json:
{"Marcus": [{"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Kenji": [{"rank": "2", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}, {"rank": "9", "suit": "spades"}], "Sage": [{"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}]}


game_id: 6aa04199-c521-4dee-9009-e7cb07322b54
timestamp: 2026-01-25 00:09:58.428201
player_id: cpu_2
player_name: River
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 4 for 9 at pos 5
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 6aa04199-c521-4dee-9009-e7cb07322b54
timestamp: 2026-01-25 00:09:58.434719
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 6aa04199-c521-4dee-9009-e7cb07322b54
timestamp: 2026-01-25 00:09:58.440810
player_id: cpu_3
player_name: Sage
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped A for 5 at pos 2
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 6aa04199-c521-4dee-9009-e7cb07322b54
timestamp: 2026-01-25 00:09:58.446431
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 5 from discard
visible_opponents_json:
{"Kenji": [{"rank": "2", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}, {"rank": "9", "suit": "spades"}], "River": [{"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "4", "suit": "hearts"}], "Sage": [{"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}]}


game_id: 6aa04199-c521-4dee-9009-e7cb07322b54
timestamp: 2026-01-25 00:09:58.452090
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 5 for 7 at pos 4
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 6b11f70f-fdad-4435-9a36-afdc08bf79de
timestamp: 2026-01-25 00:09:58.469018
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}]

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


game_id: 6b11f70f-fdad-4435-9a36-afdc08bf79de
timestamp: 2026-01-25 00:09:58.475213
player_id: cpu_0
player_name: River
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped 7 for Q at pos 2
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}]

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


game_id: 6b11f70f-fdad-4435-9a36-afdc08bf79de
timestamp: 2026-01-25 00:09:58.481186
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: 6b11f70f-fdad-4435-9a36-afdc08bf79de
timestamp: 2026-01-25 00:09:58.487212
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 4 for 6 at pos 0
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: 6b11f70f-fdad-4435-9a36-afdc08bf79de
timestamp: 2026-01-25 00:09:58.493389
player_id: cpu_2
player_name: Marcus
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "8", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}]

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


game_id: 6b11f70f-fdad-4435-9a36-afdc08bf79de
timestamp: 2026-01-25 00:09:58.499317
player_id: cpu_2
player_name: Marcus
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": "J", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}]

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


game_id: 6b11f70f-fdad-4435-9a36-afdc08bf79de
timestamp: 2026-01-25 00:09:58.505471
player_id: cpu_3
player_name: Maya
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}]

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


game_id: 6b11f70f-fdad-4435-9a36-afdc08bf79de
timestamp: 2026-01-25 00:09:58.511326
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 5 for 8 at pos 0
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}]

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


game_id: 6b11f70f-fdad-4435-9a36-afdc08bf79de
timestamp: 2026-01-25 00:09:58.517196
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}]

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


game_id: 6b11f70f-fdad-4435-9a36-afdc08bf79de
timestamp: 2026-01-25 00:09:58.523341
player_id: cpu_0
player_name: River
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped A for 7 at pos 2
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}]

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


game_id: 6b11f70f-fdad-4435-9a36-afdc08bf79de
timestamp: 2026-01-25 00:09:58.529357
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: 6b11f70f-fdad-4435-9a36-afdc08bf79de
timestamp: 2026-01-25 00:09:58.535401
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped 7 for 10 at pos 4
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: 6b11f70f-fdad-4435-9a36-afdc08bf79de
timestamp: 2026-01-25 00:09:58.541675
player_id: cpu_2
player_name: Marcus
action: draw_deck
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}]

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


game_id: 6b11f70f-fdad-4435-9a36-afdc08bf79de
timestamp: 2026-01-25 00:09:58.554126
player_id: cpu_3
player_name: Maya
action: draw_deck
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}]

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


game_id: 6b11f70f-fdad-4435-9a36-afdc08bf79de
timestamp: 2026-01-25 00:09:58.565627
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}]

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


game_id: 6b11f70f-fdad-4435-9a36-afdc08bf79de
timestamp: 2026-01-25 00:09:58.583687
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "2", "suit": "spades"}
decision_reason: swapped 7 for 2 at pos 1
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}]


game_id: 6b11f70f-fdad-4435-9a36-afdc08bf79de
timestamp: 2026-01-25 00:09:58.589489
player_id: cpu_2
player_name: Marcus
action: take_discard
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: took 2 from discard
visible_opponents_json:
{"River": [{"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Diego": [{"rank": "4", "suit": "spades"}, {"rank": "7", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}, {"rank": "7", "suit": "spades"}], "Maya": [{"rank": "5", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "5", "suit": "spades"}]}


game_id: 6b11f70f-fdad-4435-9a36-afdc08bf79de
timestamp: 2026-01-25 00:09:58.595533
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 2 for 6 at pos 0
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}]

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


game_id: 6b11f70f-fdad-4435-9a36-afdc08bf79de
timestamp: 2026-01-25 00:09:58.601776
player_id: cpu_3
player_name: Maya
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: took 6 from discard
visible_opponents_json:
{"River": [{"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Diego": [{"rank": "4", "suit": "spades"}, {"rank": "7", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}, {"rank": "7", "suit": "spades"}], "Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}]}


game_id: 6b11f70f-fdad-4435-9a36-afdc08bf79de
timestamp: 2026-01-25 00:09:58.607992
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "2", "suit": "hearts"}
decision_reason: swapped 6 for 2 at pos 5
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: 6b11f70f-fdad-4435-9a36-afdc08bf79de
timestamp: 2026-01-25 00:09:58.614200
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: took 2 from discard
visible_opponents_json:
{"Diego": [{"rank": "4", "suit": "spades"}, {"rank": "7", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}, {"rank": "7", "suit": "spades"}], "Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}], "Maya": [{"rank": "5", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "6", "suit": "clubs"}]}


game_id: 6b11f70f-fdad-4435-9a36-afdc08bf79de
timestamp: 2026-01-25 00:09:58.620407
player_id: cpu_0
player_name: River
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped 2 for 4 at pos 3
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}]

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


game_id: 6b11f70f-fdad-4435-9a36-afdc08bf79de
timestamp: 2026-01-25 00:09:58.626471
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: 6b11f70f-fdad-4435-9a36-afdc08bf79de
timestamp: 2026-01-25 00:09:58.632614
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 4 for 7 at pos 3
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: 6b11f70f-fdad-4435-9a36-afdc08bf79de
timestamp: 2026-01-25 00:09:58.639445
player_id: cpu_2
player_name: Marcus
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}]

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


game_id: 6b11f70f-fdad-4435-9a36-afdc08bf79de
timestamp: 2026-01-25 00:09:58.645811
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 7 for 10 at pos 5
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}]

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


game_id: 6b11f70f-fdad-4435-9a36-afdc08bf79de
timestamp: 2026-01-25 00:09:58.652947
player_id: cpu_3
player_name: Maya
action: draw_deck
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: 6b11f70f-fdad-4435-9a36-afdc08bf79de
timestamp: 2026-01-25 00:09:58.658892
player_id: cpu_3
player_name: Maya
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped K for 6 at pos 5
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 6b11f70f-fdad-4435-9a36-afdc08bf79de
timestamp: 2026-01-25 00:09:58.666289
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}]

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


game_id: 6b11f70f-fdad-4435-9a36-afdc08bf79de
timestamp: 2026-01-25 00:09:58.672359
player_id: cpu_0
player_name: River
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped 6 for 3 at pos 0
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}]

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


game_id: 6b11f70f-fdad-4435-9a36-afdc08bf79de
timestamp: 2026-01-25 00:09:58.678323
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: 6b11f70f-fdad-4435-9a36-afdc08bf79de
timestamp: 2026-01-25 00:09:58.684311
player_id: cpu_1
player_name: Diego
action: swap
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped J for 4 at pos 5
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": true}]

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


game_id: 6b11f70f-fdad-4435-9a36-afdc08bf79de
timestamp: 2026-01-25 00:09:58.690619
player_id: cpu_2
player_name: Marcus
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}]

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


game_id: 6b11f70f-fdad-4435-9a36-afdc08bf79de
timestamp: 2026-01-25 00:09:58.696953
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 4 for 7 at pos 5
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 6b11f70f-fdad-4435-9a36-afdc08bf79de
timestamp: 2026-01-25 00:09:58.703261
player_id: cpu_3
player_name: Maya
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 6b11f70f-fdad-4435-9a36-afdc08bf79de
timestamp: 2026-01-25 00:09:58.709866
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 7 for 4 at pos 1
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 6b11f70f-fdad-4435-9a36-afdc08bf79de
timestamp: 2026-01-25 00:09:58.715920
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}]

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


game_id: 6b11f70f-fdad-4435-9a36-afdc08bf79de
timestamp: 2026-01-25 00:09:58.722551
player_id: cpu_0
player_name: River
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 4 for 6 at pos 0
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": true}]

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


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:58.738813
player_id: cpu_0
player_name: Priya
action: take_discard
card_rank: 4
card_suit: spades
decision_reason: took 4 from discard
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:58.744452
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 4 for Q at pos 1
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:58.750184
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:58.756077
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped 5 for Q at pos 2
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:58.761894
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"Priya": [{"rank": "4", "suit": "spades"}, {"rank": "7", "suit": "spades"}], "Sage": [{"rank": "10", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}], "Maya": [{"rank": "K", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}]}


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:58.774210
player_id: cpu_3
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": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:58.786744
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:58.804224
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped 7 for 10 at pos 1
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}]


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:58.810374
player_id: cpu_2
player_name: River
action: take_discard
card_rank: 10
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 10 from discard
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": true}]

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


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:58.816412
player_id: cpu_2
player_name: River
action: swap
card_rank: 10
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 10 for 8 at pos 2
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": true}]

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


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:58.824204
player_id: cpu_3
player_name: Maya
action: draw_deck
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:58.840102
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "7", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}], "River": [{"rank": "A", "suit": "spades"}, {"rank": "10", "suit": "spades"}, {"rank": "10", "suit": "clubs"}], "Maya": [{"rank": "K", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}]}


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:58.847074
player_id: cpu_0
player_name: Priya
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped A for 7 at pos 5
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:58.854173
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:58.861781
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 7 for 6 at pos 4
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:58.869401
player_id: cpu_2
player_name: River
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": true}]

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


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:58.875711
player_id: cpu_2
player_name: River
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped 6 for 10 at pos 2
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": true}]

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


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:58.882622
player_id: cpu_3
player_name: Maya
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "4", "suit": "spades"}, {"rank": "A", "suit": "hearts"}], "Sage": [{"rank": "7", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}, {"rank": "5", "suit": "spades"}], "River": [{"rank": "A", "suit": "spades"}, {"rank": "6", "suit": "diamonds"}, {"rank": "10", "suit": "clubs"}]}


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:58.891817
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "A", "suit": "diamonds"}
decision_reason: swapped 5 for A at pos 1
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:58.898789
player_id: cpu_0
player_name: Priya
action: take_discard
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took A from discard
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:58.907510
player_id: cpu_0
player_name: Priya
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped A for 9 at pos 2
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:58.914303
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:58.921242
player_id: cpu_1
player_name: Sage
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped A for 7 at pos 1
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:58.928760
player_id: cpu_2
player_name: River
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": true}]

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


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:58.936100
player_id: cpu_2
player_name: River
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped 7 for 10 at pos 5
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:58.942067
player_id: cpu_3
player_name: Maya
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:58.955141
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:58.961942
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 7 for 8 at pos 4
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:58.968102
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:58.974058
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "2", "suit": "diamonds"}
decision_reason: swapped 10 for 2 at pos 3
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:58.979874
player_id: cpu_2
player_name: River
action: take_discard
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:58.985889
player_id: cpu_2
player_name: River
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 2 for 7 at pos 5
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:58.992115
player_id: cpu_3
player_name: Maya
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 7 from discard
visible_opponents_json:
{"Priya": [{"rank": "4", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}], "Sage": [{"rank": "A", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}, {"rank": "10", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}, {"rank": "5", "suit": "spades"}], "River": [{"rank": "A", "suit": "spades"}, {"rank": "6", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}]}


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:58.998380
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "2", "suit": "spades"}
decision_reason: swapped 7 for 2 at pos 3
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:59.004661
player_id: cpu_0
player_name: Priya
action: take_discard
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:59.018394
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 2 for 7 at pos 4
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:59.025008
player_id: cpu_1
player_name: Sage
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": "9", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:59.031133
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 7 for 10 at pos 3
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:59.037170
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:59.048302
player_id: cpu_3
player_name: Maya
action: draw_deck
card_rank: 9
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:59.060406
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:59.066816
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 4 for 6 at pos 3
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:59.072841
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:59.078752
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 6 for 7 at pos 3
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:59.084884
player_id: cpu_2
player_name: River
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 7 from discard
visible_opponents_json:
{"Priya": [{"rank": "4", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}, {"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "hearts"}], "Sage": [{"rank": "A", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}, {"rank": "7", "suit": "spades"}, {"rank": "5", "suit": "spades"}], "Maya": [{"rank": "K", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "7", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}]}


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:59.092176
player_id: cpu_2
player_name: River
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 7 for 6 at pos 3
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:59.098624
player_id: cpu_3
player_name: Maya
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 6 from discard
visible_opponents_json:
{"Priya": [{"rank": "4", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}, {"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "hearts"}], "Sage": [{"rank": "A", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}, {"rank": "7", "suit": "spades"}, {"rank": "5", "suit": "spades"}], "River": [{"rank": "A", "suit": "spades"}, {"rank": "6", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}]}


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:59.104925
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 6 for 7 at pos 3
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:59.111218
player_id: cpu_0
player_name: Priya
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:59.117631
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 7 for 8 at pos 0
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:59.123768
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:59.130678
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 6 for 9 at pos 0
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:59.137002
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:59.143381
player_id: cpu_2
player_name: River
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 4 for 7 at pos 3
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:59.149613
player_id: cpu_3
player_name: Maya
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 2b32a390-5ce6-456f-a860-d35805273e63
timestamp: 2026-01-25 00:09:59.155935
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "K", "suit": "spades"}
decision_reason: swapped 7 for K at pos 2
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.174111
player_id: cpu_0
player_name: Sage
action: take_discard
card_rank: 9
card_suit: diamonds
decision_reason: took 9 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Sofia": [{"rank": "J", "suit": "spades"}, {"rank": "10", "suit": "clubs"}], "Kenji": [{"rank": "6", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}], "Priya": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "clubs"}]}


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.180730
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: swapped 9 for 10 at pos 1
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Sofia": [{"rank": "J", "suit": "spades"}, {"rank": "10", "suit": "clubs"}], "Kenji": [{"rank": "6", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}], "Priya": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "clubs"}]}


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.187111
player_id: cpu_1
player_name: Sofia
action: take_discard
card_rank: 10
card_suit: hearts
decision_reason: took 10 from discard
hand_json:
[{"rank": "J", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": true}]

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


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.193008
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 10 for 5 at pos 2
hand_json:
[{"rank": "J", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": true}]

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


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.198486
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 5
card_suit: clubs
decision_reason: took 5 from discard
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Sage": [{"rank": "9", "suit": "diamonds"}, {"rank": "9", "suit": "hearts"}, {"rank": "9", "suit": "spades"}], "Sofia": [{"rank": "J", "suit": "spades"}, {"rank": "10", "suit": "hearts"}, {"rank": "10", "suit": "clubs"}], "Priya": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "clubs"}]}


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.204234
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "2", "suit": "hearts"}
decision_reason: swapped 5 for 2 at pos 2
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Sage": [{"rank": "9", "suit": "diamonds"}, {"rank": "9", "suit": "hearts"}, {"rank": "9", "suit": "spades"}], "Sofia": [{"rank": "J", "suit": "spades"}, {"rank": "10", "suit": "hearts"}, {"rank": "10", "suit": "clubs"}], "Priya": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "clubs"}]}


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.210255
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 2
card_suit: hearts
decision_reason: took 2 from discard
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Sage": [{"rank": "9", "suit": "diamonds"}, {"rank": "9", "suit": "hearts"}, {"rank": "9", "suit": "spades"}], "Sofia": [{"rank": "J", "suit": "spades"}, {"rank": "10", "suit": "hearts"}, {"rank": "10", "suit": "clubs"}], "Kenji": [{"rank": "6", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "5", "suit": "spades"}]}


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.230124
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "A", "suit": "clubs"}
decision_reason: swapped 2 for A at pos 3
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Sage": [{"rank": "9", "suit": "diamonds"}, {"rank": "9", "suit": "hearts"}, {"rank": "9", "suit": "spades"}], "Sofia": [{"rank": "J", "suit": "spades"}, {"rank": "10", "suit": "hearts"}, {"rank": "10", "suit": "clubs"}], "Kenji": [{"rank": "6", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "5", "suit": "spades"}]}


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.236315
player_id: cpu_0
player_name: Sage
action: take_discard
card_rank: A
card_suit: clubs
decision_reason: took A from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.242638
player_id: cpu_0
player_name: Sage
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped A for 9 at pos 1
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.249182
player_id: cpu_1
player_name: Sofia
action: draw_deck
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": true}]

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


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.261541
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Sage": [{"rank": "A", "suit": "clubs"}, {"rank": "9", "suit": "hearts"}, {"rank": "9", "suit": "spades"}], "Sofia": [{"rank": "J", "suit": "spades"}, {"rank": "10", "suit": "hearts"}, {"rank": "10", "suit": "clubs"}], "Priya": [{"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "hearts"}]}


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.267644
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped K for 6 at pos 1
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Sage": [{"rank": "A", "suit": "clubs"}, {"rank": "9", "suit": "hearts"}, {"rank": "9", "suit": "spades"}], "Sofia": [{"rank": "J", "suit": "spades"}, {"rank": "10", "suit": "hearts"}, {"rank": "10", "suit": "clubs"}], "Priya": [{"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "hearts"}]}


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.273409
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Sage": [{"rank": "A", "suit": "clubs"}, {"rank": "9", "suit": "hearts"}, {"rank": "9", "suit": "spades"}], "Sofia": [{"rank": "J", "suit": "spades"}, {"rank": "10", "suit": "hearts"}, {"rank": "10", "suit": "clubs"}], "Kenji": [{"rank": "K", "suit": "hearts"}, {"rank": "5", "suit": "clubs"}, {"rank": "5", "suit": "spades"}]}


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.279249
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped 6 for 4 at pos 4
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Sage": [{"rank": "A", "suit": "clubs"}, {"rank": "9", "suit": "hearts"}, {"rank": "9", "suit": "spades"}], "Sofia": [{"rank": "J", "suit": "spades"}, {"rank": "10", "suit": "hearts"}, {"rank": "10", "suit": "clubs"}], "Kenji": [{"rank": "K", "suit": "hearts"}, {"rank": "5", "suit": "clubs"}, {"rank": "5", "suit": "spades"}]}


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.285078
player_id: cpu_0
player_name: Sage
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.291213
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped 4 for 9 at pos 2
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.297878
player_id: cpu_1
player_name: Sofia
action: draw_deck
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "A", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}, {"rank": "9", "suit": "spades"}], "Kenji": [{"rank": "K", "suit": "hearts"}, {"rank": "5", "suit": "clubs"}, {"rank": "5", "suit": "spades"}], "Priya": [{"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "6", "suit": "diamonds"}]}


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.304047
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped 6 for J at pos 0
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": true}]

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


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.309890
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: Q
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.323207
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}]

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


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.329116
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped 6 for 3 at pos 0
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}]

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


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.335564
player_id: cpu_0
player_name: Sage
action: take_discard
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.341639
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped 3 for 9 at pos 4
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.347773
player_id: cpu_1
player_name: Sofia
action: draw_deck
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": true}]

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


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.354103
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: swapped 7 for 10 at pos 2
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": true}]

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


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.360175
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "A", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}], "Sofia": [{"rank": "6", "suit": "spades"}, {"rank": "7", "suit": "clubs"}, {"rank": "10", "suit": "clubs"}], "Priya": [{"rank": "6", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "6", "suit": "diamonds"}]}


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.366744
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "A", "suit": "hearts"}
decision_reason: swapped 7 for A at pos 5
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.372990
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took A from discard
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}]

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


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.379573
player_id: cpu_3
player_name: Priya
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped A for 6 at pos 0
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}]

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


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.385938
player_id: cpu_0
player_name: Sage
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.392041
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 6 for 5 at pos 0
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.398105
player_id: cpu_1
player_name: Sofia
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": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": true}]

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


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.404306
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped 5 for 10 at pos 5
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.410482
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.416444
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 10 for J at pos 0
hand_json:
[{"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.422460
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}]

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


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.428200
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 4 for 6 at pos 4
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}]

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


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.434220
player_id: cpu_0
player_name: Sage
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.440381
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 6 for 8 at pos 3
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.446152
player_id: cpu_1
player_name: Sofia
action: draw_deck
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.452474
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 4 for 7 at pos 2
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.458458
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.464526
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 7 for 10 at pos 0
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.471125
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}]

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


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.483709
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.489646
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "hearts"}
decision_reason: swapped 7 for 3 at pos 5
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}]

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


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.495295
player_id: cpu_1
player_name: Sofia
action: take_discard
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.502715
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 3 for 6 at pos 0
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.508722
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.514766
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": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.521064
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 7 from discard
visible_opponents_json:
{"Sage": [{"rank": "6", "suit": "clubs"}, {"rank": "A", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}, {"rank": "6", "suit": "diamonds"}, {"rank": "3", "suit": "clubs"}, {"rank": "7", "suit": "hearts"}], "Sofia": [{"rank": "3", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}], "Kenji": [{"rank": "6", "suit": "spades"}, {"rank": "K", "suit": "hearts"}, {"rank": "5", "suit": "clubs"}, {"rank": "5", "suit": "spades"}, {"rank": "7", "suit": "spades"}]}


game_id: 156ad50d-5da1-4335-ac84-c6b95fb7351e
timestamp: 2026-01-25 00:09:59.526987
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "A", "suit": "diamonds"}
decision_reason: swapped 7 for A at pos 5
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.544819
player_id: cpu_0
player_name: Maya
action: take_discard
card_rank: 7
card_suit: diamonds
decision_reason: took 7 from discard
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Sage": [{"rank": "2", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}], "Diego": [{"rank": "Q", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Sofia": [{"rank": "9", "suit": "hearts"}, {"rank": "9", "suit": "diamonds"}]}


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.551134
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 7 for 5 at pos 2
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Sage": [{"rank": "2", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}], "Diego": [{"rank": "Q", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Sofia": [{"rank": "9", "suit": "hearts"}, {"rank": "9", "suit": "diamonds"}]}


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.557225
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 5
card_suit: diamonds
decision_reason: took 5 from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Maya": [{"rank": "J", "suit": "diamonds"}, {"rank": "7", "suit": "diamonds"}, {"rank": "8", "suit": "spades"}], "Diego": [{"rank": "Q", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Sofia": [{"rank": "9", "suit": "hearts"}, {"rank": "9", "suit": "diamonds"}]}


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.563120
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped 5 for 10 at pos 2
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Maya": [{"rank": "J", "suit": "diamonds"}, {"rank": "7", "suit": "diamonds"}, {"rank": "8", "suit": "spades"}], "Diego": [{"rank": "Q", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Sofia": [{"rank": "9", "suit": "hearts"}, {"rank": "9", "suit": "diamonds"}]}


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.569357
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.575089
player_id: cpu_2
player_name: Diego
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped K for Q at pos 1
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.581498
player_id: cpu_3
player_name: Sofia
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.594059
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.600330
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 2 for J at pos 1
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.606828
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.613331
player_id: cpu_1
player_name: Sage
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped A for 5 at pos 2
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.619481
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"Maya": [{"rank": "2", "suit": "clubs"}, {"rank": "7", "suit": "diamonds"}, {"rank": "8", "suit": "spades"}], "Sage": [{"rank": "2", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Sofia": [{"rank": "9", "suit": "hearts"}, {"rank": "9", "suit": "diamonds"}]}


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.625536
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 5 for 7 at pos 2
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"Maya": [{"rank": "2", "suit": "clubs"}, {"rank": "7", "suit": "diamonds"}, {"rank": "8", "suit": "spades"}], "Sage": [{"rank": "2", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Sofia": [{"rank": "9", "suit": "hearts"}, {"rank": "9", "suit": "diamonds"}]}


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.632108
player_id: cpu_3
player_name: Sofia
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.637716
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped 7 for 9 at pos 0
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.643553
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.649501
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 6 for 8 at pos 5
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.655386
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.661074
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped 3 for 4 at pos 5
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.666953
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.672997
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 4 for 5 at pos 2
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.679154
player_id: cpu_3
player_name: Sofia
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": "hearts", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.685323
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 5 for 9 at pos 4
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.691233
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.697419
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 5 for 7 at pos 2
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.703309
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.714792
player_id: cpu_2
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": "9", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.721068
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 6 for J at pos 4
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.727211
player_id: cpu_3
player_name: Sofia
action: draw_deck
card_rank: 9
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.740068
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.746229
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped 8 for 3 at pos 4
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.752018
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 3 from discard
visible_opponents_json:
{"Maya": [{"rank": "2", "suit": "clubs"}, {"rank": "5", "suit": "clubs"}, {"rank": "8", "suit": "hearts"}, {"rank": "6", "suit": "spades"}], "Diego": [{"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}, {"rank": "A", "suit": "clubs"}], "Sofia": [{"rank": "7", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}]}


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.757621
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 3 for 6 at pos 3
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.763559
player_id: cpu_2
player_name: Diego
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": "9", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.769713
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped 6 for 4 at pos 3
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.775682
player_id: cpu_3
player_name: Sofia
action: take_discard
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 4 from discard
visible_opponents_json:
{"Maya": [{"rank": "2", "suit": "clubs"}, {"rank": "5", "suit": "clubs"}, {"rank": "8", "suit": "hearts"}, {"rank": "6", "suit": "spades"}], "Sage": [{"rank": "2", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "3", "suit": "clubs"}], "Diego": [{"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "6", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}, {"rank": "A", "suit": "clubs"}]}


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.781785
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 4 for 7 at pos 0
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.787846
player_id: cpu_0
player_name: Maya
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": "4", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.793630
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 7 for 8 at pos 4
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.799666
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.811253
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.817536
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 4 for 6 at pos 3
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.823473
player_id: cpu_3
player_name: Sofia
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": "4", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.829600
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 6 for 6 at pos 5
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.837127
player_id: cpu_0
player_name: Maya
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.843143
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 6 for 7 at pos 4
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.849168
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 7 from discard
visible_opponents_json:
{"Maya": [{"rank": "2", "suit": "clubs"}, {"rank": "5", "suit": "clubs"}, {"rank": "6", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}], "Diego": [{"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "6", "suit": "clubs"}, {"rank": "A", "suit": "clubs"}], "Sofia": [{"rank": "4", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}]}


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.856548
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "A", "suit": "spades"}
decision_reason: swapped 7 for A at pos 4
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.862579
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: A
card_suit: spades
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took A from discard
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.868749
player_id: cpu_2
player_name: Diego
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped A for 6 at pos 4
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.875066
player_id: cpu_3
player_name: Sofia
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.880909
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "K", "suit": "spades"}
decision_reason: swapped 6 for K at pos 2
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.887554
player_id: cpu_0
player_name: Maya
action: take_discard
card_rank: K
card_suit: spades
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took K from discard
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.895989
player_id: cpu_0
player_name: Maya
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped K for 6 at pos 4
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.902083
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.907951
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 4
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.913768
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.920005
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped 7 for 9 at pos 0
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.926014
player_id: cpu_3
player_name: Sofia
action: draw_deck
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.932065
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped K for 6 at pos 2
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.938502
player_id: cpu_0
player_name: Maya
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.952341
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 6 for 4 at pos 0
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.965204
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 5e3d77d5-894f-4da8-8b70-adf3fea6ea2c
timestamp: 2026-01-25 00:09:59.970892
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 4 for 6 at pos 4
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:09:59.987458
player_id: cpu_0
player_name: Priya
action: take_discard
card_rank: 4
card_suit: spades
decision_reason: took 4 from discard
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:09:59.993331
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 4 for 8 at pos 2
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:09:59.999261
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: 8
card_suit: diamonds
decision_reason: took 8 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.005155
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 8 for 4 at pos 1
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.011039
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 4
card_suit: clubs
decision_reason: took 4 from discard
hand_json:
[{"rank": "8", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": true}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.017453
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped 4 for 10 at pos 5
hand_json:
[{"rank": "8", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.024001
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.035872
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: J
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.048265
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.053909
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 2 for 8 at pos 1
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.059803
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.066108
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped 6 for 3 at pos 4
hand_json:
[{"rank": "8", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.072366
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.078637
player_id: cpu_3
player_name: River
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 3 for 7 at pos 2
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.085022
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Diego": [{"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "8", "suit": "hearts"}], "Sage": [{"rank": "6", "suit": "hearts"}, {"rank": "6", "suit": "spades"}, {"rank": "4", "suit": "clubs"}], "River": [{"rank": "3", "suit": "diamonds"}, {"rank": "6", "suit": "clubs"}]}


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.097360
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: A
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.104061
player_id: cpu_1
player_name: Diego
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped A for 8 at pos 4
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.110018
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: Q
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.121869
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.134595
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Diego": [{"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Sage": [{"rank": "6", "suit": "hearts"}, {"rank": "6", "suit": "spades"}, {"rank": "4", "suit": "clubs"}], "River": [{"rank": "3", "suit": "diamonds"}, {"rank": "6", "suit": "clubs"}]}


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.140489
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 3 for 5 at pos 4
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.146993
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.153120
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 5
card_suit: spades
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": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.159155
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "4", "suit": "spades"}, {"rank": "3", "suit": "clubs"}], "Diego": [{"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "5", "suit": "spades"}, {"rank": "A", "suit": "spades"}], "River": [{"rank": "3", "suit": "diamonds"}, {"rank": "6", "suit": "clubs"}]}


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.165198
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: swapped 3 for 9 at pos 3
hand_json:
[{"rank": "8", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.171546
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "4", "suit": "spades"}, {"rank": "3", "suit": "clubs"}], "Diego": [{"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "5", "suit": "spades"}, {"rank": "A", "suit": "spades"}], "Sage": [{"rank": "6", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}, {"rank": "6", "suit": "spades"}, {"rank": "4", "suit": "clubs"}]}


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.191332
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.198892
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped 2 for 4 at pos 2
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.204733
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.210626
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 4 for 5 at pos 0
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.216704
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "8", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.223113
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 5 for 6 at pos 1
hand_json:
[{"rank": "8", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.229401
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: took 6 from discard
visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "clubs"}], "Diego": [{"rank": "4", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "5", "suit": "spades"}, {"rank": "A", "suit": "spades"}], "Sage": [{"rank": "5", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}, {"rank": "6", "suit": "spades"}, {"rank": "4", "suit": "clubs"}]}


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.235837
player_id: cpu_3
player_name: River
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped 6 for Q at pos 1
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.242034
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.248791
player_id: cpu_0
player_name: Priya
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped K for 3 at pos 4
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.254370
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.260191
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 3 for 5 at pos 3
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.266232
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "8", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.272041
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 5 for 6 at pos 4
hand_json:
[{"rank": "8", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.278200
player_id: cpu_3
player_name: River
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": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.283962
player_id: cpu_3
player_name: River
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "K", "suit": "clubs"}
decision_reason: swapped 6 for K at pos 0
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.289984
player_id: cpu_0
player_name: Priya
action: take_discard
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took K from discard
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.296326
player_id: cpu_0
player_name: Priya
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped K for 4 at pos 0
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.302466
player_id: cpu_1
player_name: Diego
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": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.310608
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 4 for 7 at pos 2
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.316503
player_id: cpu_2
player_name: Sage
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": "8", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.322784
player_id: cpu_2
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 0
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.328262
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.334007
player_id: cpu_3
player_name: River
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped K for 6 at pos 0
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.339690
player_id: cpu_0
player_name: Priya
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.345698
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped 6 for 3 at pos 5
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.351677
player_id: cpu_1
player_name: Diego
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": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.357495
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped 3 for 4 at pos 0
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.363668
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.369827
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 2 for 7 at pos 0
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.375842
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.381813
player_id: cpu_3
player_name: River
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 7 for 9 at pos 3
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.388413
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.404360
player_id: cpu_1
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": "3", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.410499
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped 7 for Q at pos 5
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.416701
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.422972
player_id: cpu_2
player_name: Sage
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped A for 5 at pos 1
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.429503
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.435953
player_id: cpu_3
player_name: River
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 5 for 7 at pos 3
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.442449
player_id: cpu_0
player_name: Priya
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 7 from discard
visible_opponents_json:
{"Diego": [{"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}, {"rank": "3", "suit": "clubs"}, {"rank": "A", "suit": "spades"}, {"rank": "7", "suit": "spades"}], "Sage": [{"rank": "2", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}, {"rank": "5", "suit": "spades"}, {"rank": "4", "suit": "clubs"}], "River": [{"rank": "K", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}, {"rank": "6", "suit": "clubs"}]}


game_id: f4f6d237-200d-48e6-af7b-b1d73f643123
timestamp: 2026-01-25 00:10:00.448687
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "K", "suit": "spades"}
decision_reason: swapped 7 for K at pos 1
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: c40fd0a2-c143-423e-ba02-9457c10ac66f
timestamp: 2026-01-25 00:10:00.469921
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: c40fd0a2-c143-423e-ba02-9457c10ac66f
timestamp: 2026-01-25 00:10:00.475751
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 2 for 6 at pos 4
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: c40fd0a2-c143-423e-ba02-9457c10ac66f
timestamp: 2026-01-25 00:10:00.481428
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: J
card_suit: spades
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}]

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


game_id: c40fd0a2-c143-423e-ba02-9457c10ac66f
timestamp: 2026-01-25 00:10:00.493475
player_id: cpu_2
player_name: Marcus
action: draw_deck
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: c40fd0a2-c143-423e-ba02-9457c10ac66f
timestamp: 2026-01-25 00:10:00.499787
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 10 for 5 at pos 4
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: c40fd0a2-c143-423e-ba02-9457c10ac66f
timestamp: 2026-01-25 00:10:00.509853
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: c40fd0a2-c143-423e-ba02-9457c10ac66f
timestamp: 2026-01-25 00:10:00.516230
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 5 for 7 at pos 4
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: c40fd0a2-c143-423e-ba02-9457c10ac66f
timestamp: 2026-01-25 00:10:00.522483
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: c40fd0a2-c143-423e-ba02-9457c10ac66f
timestamp: 2026-01-25 00:10:00.528702
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "K", "suit": "hearts"}
decision_reason: swapped 8 for K at pos 5
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": true}]

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


game_id: c40fd0a2-c143-423e-ba02-9457c10ac66f
timestamp: 2026-01-25 00:10:00.534645
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: took K from discard
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}]

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


game_id: c40fd0a2-c143-423e-ba02-9457c10ac66f
timestamp: 2026-01-25 00:10:00.540811
player_id: cpu_1
player_name: Maya
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "A", "suit": "diamonds"}
decision_reason: swapped K for A at pos 0
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}]

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


game_id: c40fd0a2-c143-423e-ba02-9457c10ac66f
timestamp: 2026-01-25 00:10:00.547069
player_id: cpu_2
player_name: Marcus
action: take_discard
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: took A from discard
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: c40fd0a2-c143-423e-ba02-9457c10ac66f
timestamp: 2026-01-25 00:10:00.553299
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped A for 10 at pos 1
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: c40fd0a2-c143-423e-ba02-9457c10ac66f
timestamp: 2026-01-25 00:10:00.563249
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: c40fd0a2-c143-423e-ba02-9457c10ac66f
timestamp: 2026-01-25 00:10:00.569811
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 3 for 5 at pos 1
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: c40fd0a2-c143-423e-ba02-9457c10ac66f
timestamp: 2026-01-25 00:10:00.579455
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": true}]

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


game_id: c40fd0a2-c143-423e-ba02-9457c10ac66f
timestamp: 2026-01-25 00:10:00.585891
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 5 for 8 at pos 5
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: c40fd0a2-c143-423e-ba02-9457c10ac66f
timestamp: 2026-01-25 00:10:00.592124
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}]

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


game_id: c40fd0a2-c143-423e-ba02-9457c10ac66f
timestamp: 2026-01-25 00:10:00.604890
player_id: cpu_2
player_name: Marcus
action: draw_deck
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: c40fd0a2-c143-423e-ba02-9457c10ac66f
timestamp: 2026-01-25 00:10:00.611056
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 4 for 10 at pos 4
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: c40fd0a2-c143-423e-ba02-9457c10ac66f
timestamp: 2026-01-25 00:10:00.616909
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: c40fd0a2-c143-423e-ba02-9457c10ac66f
timestamp: 2026-01-25 00:10:00.623573
player_id: cpu_3
player_name: Sage
action: swap
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: swapped Q for 10 at pos 2
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: c40fd0a2-c143-423e-ba02-9457c10ac66f
timestamp: 2026-01-25 00:10:00.629211
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: c40fd0a2-c143-423e-ba02-9457c10ac66f
timestamp: 2026-01-25 00:10:00.635200
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 8 for 5 at pos 3
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: c40fd0a2-c143-423e-ba02-9457c10ac66f
timestamp: 2026-01-25 00:10:00.640863
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 5 from discard
visible_opponents_json:
{"Kenji": [{"rank": "3", "suit": "clubs"}, {"rank": "8", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}], "Marcus": [{"rank": "A", "suit": "diamonds"}, {"rank": "6", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}], "Sage": [{"rank": "3", "suit": "spades"}, {"rank": "Q", "suit": "spades"}, {"rank": "5", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}]}


game_id: c40fd0a2-c143-423e-ba02-9457c10ac66f
timestamp: 2026-01-25 00:10:00.646532
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 5 for 7 at pos 5
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: c40fd0a2-c143-423e-ba02-9457c10ac66f
timestamp: 2026-01-25 00:10:00.652306
player_id: cpu_2
player_name: Marcus
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: c40fd0a2-c143-423e-ba02-9457c10ac66f
timestamp: 2026-01-25 00:10:00.658569
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 7 for 4 at pos 0
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: c40fd0a2-c143-423e-ba02-9457c10ac66f
timestamp: 2026-01-25 00:10:00.664321
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: c40fd0a2-c143-423e-ba02-9457c10ac66f
timestamp: 2026-01-25 00:10:00.670340
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped 4 for Q at pos 2
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: c40fd0a2-c143-423e-ba02-9457c10ac66f
timestamp: 2026-01-25 00:10:00.676301
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 9
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: c40fd0a2-c143-423e-ba02-9457c10ac66f
timestamp: 2026-01-25 00:10:00.683118
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 9
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 9 for 7 at pos 0
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: c40fd0a2-c143-423e-ba02-9457c10ac66f
timestamp: 2026-01-25 00:10:00.689169
player_id: cpu_1
player_name: Maya
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": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: c40fd0a2-c143-423e-ba02-9457c10ac66f
timestamp: 2026-01-25 00:10:00.694962
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 7 for 7 at pos 4
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: c40fd0a2-c143-423e-ba02-9457c10ac66f
timestamp: 2026-01-25 00:10:00.700665
player_id: cpu_2
player_name: Marcus
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": "7", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: c40fd0a2-c143-423e-ba02-9457c10ac66f
timestamp: 2026-01-25 00:10:00.706401
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 7 for 8 at pos 2
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: c40fd0a2-c143-423e-ba02-9457c10ac66f
timestamp: 2026-01-25 00:10:00.712068
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: K
card_suit: spades
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: c40fd0a2-c143-423e-ba02-9457c10ac66f
timestamp: 2026-01-25 00:10:00.719698
player_id: cpu_3
player_name: Sage
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped K for 5 at pos 4
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: c40fd0a2-c143-423e-ba02-9457c10ac66f
timestamp: 2026-01-25 00:10:00.725650
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: c40fd0a2-c143-423e-ba02-9457c10ac66f
timestamp: 2026-01-25 00:10:00.731605
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: swapped 5 for 9 at pos 0
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: c40fd0a2-c143-423e-ba02-9457c10ac66f
timestamp: 2026-01-25 00:10:00.737514
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: c40fd0a2-c143-423e-ba02-9457c10ac66f
timestamp: 2026-01-25 00:10:00.743791
player_id: cpu_1
player_name: Maya
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped A for 7 at pos 4
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: c40fd0a2-c143-423e-ba02-9457c10ac66f
timestamp: 2026-01-25 00:10:00.749732
player_id: cpu_2
player_name: Marcus
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: c40fd0a2-c143-423e-ba02-9457c10ac66f
timestamp: 2026-01-25 00:10:00.755661
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 7 for Q at pos 5
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: c40fd0a2-c143-423e-ba02-9457c10ac66f
timestamp: 2026-01-25 00:10:00.762290
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: c40fd0a2-c143-423e-ba02-9457c10ac66f
timestamp: 2026-01-25 00:10:00.774132
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 10
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: c40fd0a2-c143-423e-ba02-9457c10ac66f
timestamp: 2026-01-25 00:10:00.780029
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 10
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 10 for J at pos 1
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: c40fd0a2-c143-423e-ba02-9457c10ac66f
timestamp: 2026-01-25 00:10:00.785834
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: c40fd0a2-c143-423e-ba02-9457c10ac66f
timestamp: 2026-01-25 00:10:00.792200
player_id: cpu_1
player_name: Maya
action: discard
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: discarded J
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:00.809532
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:00.816028
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: swapped 2 for 9 at pos 4
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:00.822320
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:00.828363
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 3 for 7 at pos 1
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:00.834714
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:00.850361
player_id: cpu_3
player_name: Sofia
action: take_discard
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: took 8 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:00.856298
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped 8 for Q at pos 1
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:00.863071
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 10
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:00.876131
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:00.882229
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped A for 6 at pos 3
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:00.888300
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:00.894780
player_id: cpu_2
player_name: Maya
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped K for 3 at pos 1
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:00.901229
player_id: cpu_3
player_name: Sofia
action: take_discard
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:00.906944
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 3 for 8 at pos 1
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:00.912764
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 9
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}], "Maya": [{"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}], "Sofia": [{"rank": "3", "suit": "spades"}, {"rank": "K", "suit": "clubs"}]}


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:00.925083
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:00.937014
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: J
card_suit: spades
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:00.968123
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "A", "suit": "hearts"}
decision_reason: swapped 4 for A at pos 5
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:00.973916
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took A from discard
visible_opponents_json:
{"Marcus": [{"rank": "2", "suit": "hearts"}, {"rank": "2", "suit": "spades"}, {"rank": "4", "suit": "spades"}], "Maya": [{"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}], "Sofia": [{"rank": "3", "suit": "spades"}, {"rank": "K", "suit": "clubs"}]}


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:00.979760
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "2", "suit": "diamonds"}
decision_reason: swapped A for 2 at pos 0
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:00.985808
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 2 from discard
visible_opponents_json:
{"Marcus": [{"rank": "2", "suit": "hearts"}, {"rank": "2", "suit": "spades"}, {"rank": "4", "suit": "spades"}], "Kenji": [{"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}], "Sofia": [{"rank": "3", "suit": "spades"}, {"rank": "K", "suit": "clubs"}]}


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:00.991926
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "A", "suit": "diamonds"}
decision_reason: swapped 2 for A at pos 5
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:00.998317
player_id: cpu_3
player_name: Sofia
action: take_discard
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took A from discard
visible_opponents_json:
{"Marcus": [{"rank": "2", "suit": "hearts"}, {"rank": "2", "suit": "spades"}, {"rank": "4", "suit": "spades"}], "Kenji": [{"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}], "Maya": [{"rank": "K", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}]}


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:01.004868
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped A for 3 at pos 1
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:01.011155
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:01.019053
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped 3 for 4 at pos 5
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:01.025617
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:01.032791
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 4 for 4 at pos 2
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:01.038561
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:01.045358
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped 4 for Q at pos 3
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:01.051841
player_id: cpu_3
player_name: Sofia
action: draw_deck
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:01.058177
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 6 for 5 at pos 0
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:01.064525
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:01.071020
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 5 for 8 at pos 3
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:01.077749
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:01.083841
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 9 for 4 at pos 5
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": true}]

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


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:01.090336
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:01.096428
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 4 for J at pos 0
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:01.102715
player_id: cpu_3
player_name: Sofia
action: draw_deck
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:01.109273
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 6 for 5 at pos 4
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:01.115762
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:01.124150
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 5 for 7 at pos 0
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:01.130927
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": true}]

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


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:01.137858
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped 7 for 9 at pos 5
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}]

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


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:01.144421
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:01.156836
player_id: cpu_3
player_name: Sofia
action: draw_deck
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:01.162953
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 4 for 6 at pos 0
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:01.169235
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:01.175342
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "K", "suit": "hearts"}
decision_reason: swapped 6 for K at pos 1
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:01.181654
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took K from discard
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}]

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


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:01.187638
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped K for 7 at pos 5
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:01.193636
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
visible_opponents_json:
{"Marcus": [{"rank": "5", "suit": "spades"}, {"rank": "6", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "spades"}], "Kenji": [{"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}, {"rank": "4", "suit": "spades"}, {"rank": "A", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}], "Sofia": [{"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "6", "suit": "clubs"}]}


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:01.199801
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "A", "suit": "spades"}
decision_reason: swapped 7 for A at pos 4
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:01.205741
player_id: cpu_3
player_name: Sofia
action: take_discard
card_rank: A
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took A from discard
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: d1cdfb27-2ed8-4ac2-ac03-ed7100540fee
timestamp: 2026-01-25 00:10:01.211528
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped A for 6 at pos 4
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": true}]

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


game_id: 7773a3f8-0e65-4df4-8940-d222518310f1
timestamp: 2026-01-25 00:10:01.229708
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: 7
card_suit: hearts
decision_reason: took 7 from discard
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 7773a3f8-0e65-4df4-8940-d222518310f1
timestamp: 2026-01-25 00:10:01.236532
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped 7 for 9 at pos 2
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 7773a3f8-0e65-4df4-8940-d222518310f1
timestamp: 2026-01-25 00:10:01.242911
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: 10
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}]

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


game_id: 7773a3f8-0e65-4df4-8940-d222518310f1
timestamp: 2026-01-25 00:10:01.249189
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 10
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped 10 for Q at pos 2
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}]

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


game_id: 7773a3f8-0e65-4df4-8940-d222518310f1
timestamp: 2026-01-25 00:10:01.255358
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 7773a3f8-0e65-4df4-8940-d222518310f1
timestamp: 2026-01-25 00:10:01.261856
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 3 for 5 at pos 2
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


