# moves

game_id: ffe49435-f97f-4c38-a5b6-c3cabd1bcda6
timestamp: 2026-01-25 00:10:16.721768
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: ffe49435-f97f-4c38-a5b6-c3cabd1bcda6
timestamp: 2026-01-25 00:10:16.728806
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped 5 for 10 at pos 1
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: ffe49435-f97f-4c38-a5b6-c3cabd1bcda6
timestamp: 2026-01-25 00:10:16.736210
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: ffe49435-f97f-4c38-a5b6-c3cabd1bcda6
timestamp: 2026-01-25 00:10:16.742945
player_id: cpu_1
player_name: Diego
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped K for 3 at pos 1
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: ffe49435-f97f-4c38-a5b6-c3cabd1bcda6
timestamp: 2026-01-25 00:10:16.749170
player_id: cpu_2
player_name: Priya
action: take_discard
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took 3 from discard
visible_opponents_json:
{"Sage": [{"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "spades"}, {"rank": "6", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}], "Diego": [{"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}], "River": [{"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "spades"}]}


game_id: ffe49435-f97f-4c38-a5b6-c3cabd1bcda6
timestamp: 2026-01-25 00:10:16.755350
player_id: cpu_2
player_name: Priya
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped 3 for 4 at pos 5
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: ffe49435-f97f-4c38-a5b6-c3cabd1bcda6
timestamp: 2026-01-25 00:10:16.761370
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took 4 from discard
visible_opponents_json:
{"Sage": [{"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "spades"}, {"rank": "6", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}], "Diego": [{"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}], "Priya": [{"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}]}


game_id: ffe49435-f97f-4c38-a5b6-c3cabd1bcda6
timestamp: 2026-01-25 00:10:16.768211
player_id: cpu_3
player_name: River
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 4 for 7 at pos 4
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: ffe49435-f97f-4c38-a5b6-c3cabd1bcda6
timestamp: 2026-01-25 00:10:16.774758
player_id: cpu_0
player_name: Sage
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: ffe49435-f97f-4c38-a5b6-c3cabd1bcda6
timestamp: 2026-01-25 00:10:16.780806
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped 7 for J at pos 5
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: ffe49435-f97f-4c38-a5b6-c3cabd1bcda6
timestamp: 2026-01-25 00:10:16.787189
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: ffe49435-f97f-4c38-a5b6-c3cabd1bcda6
timestamp: 2026-01-25 00:10:16.793395
player_id: cpu_1
player_name: Diego
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped A for 7 at pos 2
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: ffe49435-f97f-4c38-a5b6-c3cabd1bcda6
timestamp: 2026-01-25 00:10:16.800014
player_id: cpu_2
player_name: Priya
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: ffe49435-f97f-4c38-a5b6-c3cabd1bcda6
timestamp: 2026-01-25 00:10:16.806691
player_id: cpu_2
player_name: Priya
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 7 for 5 at pos 4
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: ffe49435-f97f-4c38-a5b6-c3cabd1bcda6
timestamp: 2026-01-25 00:10:16.813282
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: ffe49435-f97f-4c38-a5b6-c3cabd1bcda6
timestamp: 2026-01-25 00:10:16.819567
player_id: cpu_3
player_name: River
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 5 for 6 at pos 5
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: ffe49435-f97f-4c38-a5b6-c3cabd1bcda6
timestamp: 2026-01-25 00:10:16.826111
player_id: cpu_0
player_name: Sage
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: ffe49435-f97f-4c38-a5b6-c3cabd1bcda6
timestamp: 2026-01-25 00:10:16.832388
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 6 for 7 at pos 5
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: ffe49435-f97f-4c38-a5b6-c3cabd1bcda6
timestamp: 2026-01-25 00:10:16.838717
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: ffe49435-f97f-4c38-a5b6-c3cabd1bcda6
timestamp: 2026-01-25 00:10:16.845422
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 7 for 5 at pos 3
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: ffe49435-f97f-4c38-a5b6-c3cabd1bcda6
timestamp: 2026-01-25 00:10:16.851928
player_id: cpu_2
player_name: Priya
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: ffe49435-f97f-4c38-a5b6-c3cabd1bcda6
timestamp: 2026-01-25 00:10:16.858977
player_id: cpu_2
player_name: Priya
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 5 for 7 at pos 4
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: ffe49435-f97f-4c38-a5b6-c3cabd1bcda6
timestamp: 2026-01-25 00:10:16.866648
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: ffe49435-f97f-4c38-a5b6-c3cabd1bcda6
timestamp: 2026-01-25 00:10:16.873914
player_id: cpu_3
player_name: River
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped 7 for 10 at pos 1
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: ffe49435-f97f-4c38-a5b6-c3cabd1bcda6
timestamp: 2026-01-25 00:10:16.881304
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: ffe49435-f97f-4c38-a5b6-c3cabd1bcda6
timestamp: 2026-01-25 00:10:16.888231
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped 6 for 3 at pos 2
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: ffe49435-f97f-4c38-a5b6-c3cabd1bcda6
timestamp: 2026-01-25 00:10:16.895146
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: ffe49435-f97f-4c38-a5b6-c3cabd1bcda6
timestamp: 2026-01-25 00:10:16.902372
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 3 for 7 at pos 3
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: ffe49435-f97f-4c38-a5b6-c3cabd1bcda6
timestamp: 2026-01-25 00:10:16.911019
player_id: cpu_2
player_name: Priya
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: ffe49435-f97f-4c38-a5b6-c3cabd1bcda6
timestamp: 2026-01-25 00:10:16.919716
player_id: cpu_2
player_name: Priya
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 7 for J at pos 0
hand_json:
[{"rank": "7", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:16.941450
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: K
card_suit: clubs
decision_reason: took K from discard
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Sage": [{"rank": "10", "suit": "spades"}, {"rank": "5", "suit": "spades"}], "Kenji": [{"rank": "Q", "suit": "clubs"}, {"rank": "8", "suit": "hearts"}], "Priya": [{"rank": "5", "suit": "hearts"}, {"rank": "7", "suit": "diamonds"}]}


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:16.948533
player_id: cpu_0
player_name: Diego
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped K for 9 at pos 4
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Sage": [{"rank": "10", "suit": "spades"}, {"rank": "5", "suit": "spades"}], "Kenji": [{"rank": "Q", "suit": "clubs"}, {"rank": "8", "suit": "hearts"}], "Priya": [{"rank": "5", "suit": "hearts"}, {"rank": "7", "suit": "diamonds"}]}


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:16.956716
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:16.964780
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped 4 for 10 at pos 2
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:16.972712
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:16.980360
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped 5 for Q at pos 0
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:16.987738
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:16.995874
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 6 for 7 at pos 5
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.003401
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.011720
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped 8 for 3 at pos 5
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": true}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.019869
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}, {"rank": "8", "suit": "clubs"}], "Kenji": [{"rank": "5", "suit": "diamonds"}, {"rank": "8", "suit": "hearts"}], "Priya": [{"rank": "5", "suit": "hearts"}, {"rank": "6", "suit": "diamonds"}]}


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.026657
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: swapped 3 for 9 at pos 0
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}, {"rank": "8", "suit": "clubs"}], "Kenji": [{"rank": "5", "suit": "diamonds"}, {"rank": "8", "suit": "hearts"}], "Priya": [{"rank": "5", "suit": "hearts"}, {"rank": "6", "suit": "diamonds"}]}


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.034707
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.050774
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.066830
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": true}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.074885
player_id: cpu_0
player_name: Diego
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped A for 8 at pos 5
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.082548
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 9
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.098561
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}], "Sage": [{"rank": "3", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}], "Priya": [{"rank": "5", "suit": "hearts"}, {"rank": "6", "suit": "diamonds"}]}


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.114652
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}], "Sage": [{"rank": "3", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}], "Kenji": [{"rank": "5", "suit": "diamonds"}, {"rank": "8", "suit": "hearts"}]}


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.155871
player_id: cpu_1
player_name: Sage
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped A for 5 at pos 4
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}]


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.164607
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 5 from discard
visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}], "Sage": [{"rank": "3", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Priya": [{"rank": "5", "suit": "hearts"}, {"rank": "6", "suit": "diamonds"}]}


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.172706
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "2", "suit": "diamonds"}
decision_reason: swapped 5 for 2 at pos 3
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.180850
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 2 from discard
visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}], "Sage": [{"rank": "3", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Kenji": [{"rank": "5", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}, {"rank": "8", "suit": "hearts"}]}


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.188936
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 2 for 6 at pos 5
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.198654
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "3", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Kenji": [{"rank": "5", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}, {"rank": "8", "suit": "hearts"}], "Priya": [{"rank": "5", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}]}


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.206651
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "A", "suit": "hearts"}
decision_reason: swapped 2 for A at pos 5
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.214673
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: took A from discard
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.222568
player_id: cpu_1
player_name: Sage
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "K", "suit": "hearts"}
decision_reason: swapped A for K at pos 1
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.230708
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: took K from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.239636
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped K for 8 at pos 4
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.247516
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.256608
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 7 for J at pos 3
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.264803
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: J
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.328242
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.341744
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.348246
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "2", "suit": "spades"}
decision_reason: swapped 6 for 2 at pos 5
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.354488
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.361411
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 2 for 7 at pos 3
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.368276
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 7 from discard
visible_opponents_json:
{"Sage": [{"rank": "3", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Kenji": [{"rank": "5", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}, {"rank": "K", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}], "Priya": [{"rank": "5", "suit": "hearts"}, {"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}]}


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.374811
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 7 for J at pos 1
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.381287
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "hearts"}, {"rank": "7", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "clubs"}], "Kenji": [{"rank": "5", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}, {"rank": "K", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}], "Priya": [{"rank": "5", "suit": "hearts"}, {"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}]}


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.389530
player_id: cpu_1
player_name: Sage
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped A for 4 at pos 2
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.396804
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.403838
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 4 for 6 at pos 5
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.410607
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.417865
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: swapped 6 for 10 at pos 4
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.434185
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: A
card_suit: spades
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.439872
player_id: cpu_0
player_name: Diego
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped A for 7 at pos 1
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.445946
player_id: cpu_1
player_name: Sage
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": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.452035
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped 7 for 3 at pos 3
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.458406
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.464467
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 3 for 5 at pos 0
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.470474
player_id: cpu_3
player_name: Priya
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": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.476728
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 5 for 6 at pos 4
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.482956
player_id: cpu_0
player_name: Diego
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": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.489172
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped 6 for Q at pos 2
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.495209
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.501431
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 5 for 7 at pos 3
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.507507
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.514046
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped 7 for 4 at pos 1
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.520632
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.527293
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 4 for 5 at pos 1
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.533808
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.540394
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped 6 for Q at pos 3
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.546643
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.552918
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 3 for 5 at pos 3
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.559325
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.565659
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 5 for 7 at pos 1
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.571735
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: f1e8bc02-e359-4fdf-87b9-d392277ad2f6
timestamp: 2026-01-25 00:10:17.577982
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped 7 for 4 at pos 2
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.595899
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: 7
card_suit: diamonds
decision_reason: took 7 from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "clubs"}, {"rank": "8", "suit": "diamonds"}], "Diego": [{"rank": "9", "suit": "clubs"}, {"rank": "K", "suit": "spades"}], "Maya": [{"rank": "10", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}]}


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.601999
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped 7 for J at pos 2
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "clubs"}, {"rank": "8", "suit": "diamonds"}], "Diego": [{"rank": "9", "suit": "clubs"}, {"rank": "K", "suit": "spades"}], "Maya": [{"rank": "10", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}]}


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.607890
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.613875
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 5 for 8 at pos 4
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.619845
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.626173
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: swapped 5 for 9 at pos 1
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.632564
player_id: cpu_3
player_name: Maya
action: draw_deck
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.639105
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 4 for 10 at pos 1
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.645357
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: A
card_suit: spades
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.651488
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped A for 7 at pos 2
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.657874
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.670874
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.684127
player_id: cpu_3
player_name: Maya
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.693477
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped 7 for 3 at pos 0
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.699247
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.705114
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 3 for 6 at pos 1
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.711338
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 6 from discard
visible_opponents_json:
{"Marcus": [{"rank": "3", "suit": "clubs"}, {"rank": "A", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Diego": [{"rank": "5", "suit": "spades"}, {"rank": "K", "suit": "spades"}], "Maya": [{"rank": "7", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "7", "suit": "spades"}]}


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.717328
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "2", "suit": "diamonds"}
decision_reason: swapped 6 for 2 at pos 1
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.723420
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 2 from discard
visible_opponents_json:
{"Marcus": [{"rank": "3", "suit": "clubs"}, {"rank": "A", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Sage": [{"rank": "6", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "clubs"}], "Maya": [{"rank": "7", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "7", "suit": "spades"}]}


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.729260
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 2 for 5 at pos 1
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.736186
player_id: cpu_3
player_name: Maya
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.742167
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 5 for 7 at pos 0
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.748765
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.761429
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.767262
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 2 for 6 at pos 1
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.773006
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.778980
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 6 for 6 at pos 5
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.784990
player_id: cpu_3
player_name: Maya
action: draw_deck
card_rank: 10
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.796902
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "clubs"}], "Diego": [{"rank": "2", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "6", "suit": "clubs"}], "Maya": [{"rank": "5", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "7", "suit": "spades"}]}


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.803233
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped 3 for Q at pos 3
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.809627
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.815774
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 4 for 5 at pos 4
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.822003
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.828282
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 5 for 6 at pos 5
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.835114
player_id: cpu_3
player_name: Maya
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took 6 from discard
visible_opponents_json:
{"Marcus": [{"rank": "3", "suit": "clubs"}, {"rank": "A", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}], "Sage": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}, {"rank": "4", "suit": "spades"}], "Diego": [{"rank": "2", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "5", "suit": "clubs"}]}


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.841329
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 6 for 7 at pos 3
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.847696
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.854246
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped 2 for 3 at pos 1
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.860924
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.867415
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped 3 for 4 at pos 4
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.873786
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.879748
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 4 for 5 at pos 5
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.885475
player_id: cpu_3
player_name: Maya
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.891431
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 5 for 6 at pos 3
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.897314
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.909269
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.922362
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.928481
player_id: cpu_2
player_name: Diego
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped A for 4 at pos 5
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.934479
player_id: cpu_3
player_name: Maya
action: take_discard
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.940588
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 4 for 8 at pos 4
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.946605
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}], "Diego": [{"rank": "2", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}], "Maya": [{"rank": "5", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "5", "suit": "clubs"}, {"rank": "4", "suit": "spades"}]}


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.958385
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "2", "suit": "clubs"}, {"rank": "A", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}], "Diego": [{"rank": "2", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}], "Maya": [{"rank": "5", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "5", "suit": "clubs"}, {"rank": "4", "suit": "spades"}]}


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.964161
player_id: cpu_1
player_name: Sage
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped A for 3 at pos 4
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.970752
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.976801
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 3 for 5 at pos 0
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.984282
player_id: cpu_3
player_name: Maya
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": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.990328
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped 5 for Q at pos 5
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:17.996264
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "clubs"}], "Diego": [{"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}], "Maya": [{"rank": "5", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "5", "suit": "clubs"}, {"rank": "4", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}]}


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:18.008751
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:18.021199
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:18.027402
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 9 for 5 at pos 4
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:18.033524
player_id: cpu_3
player_name: Maya
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:18.039712
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 5 for Q at pos 2
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:18.046370
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 9
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "clubs"}], "Diego": [{"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "9", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}], "Maya": [{"rank": "5", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "5", "suit": "hearts"}, {"rank": "5", "suit": "clubs"}, {"rank": "4", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}]}


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:18.058962
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "2", "suit": "clubs"}, {"rank": "A", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}], "Diego": [{"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "9", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}], "Maya": [{"rank": "5", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "5", "suit": "hearts"}, {"rank": "5", "suit": "clubs"}, {"rank": "4", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}]}


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:18.065110
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 4 for 4 at pos 5
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:18.071446
player_id: cpu_2
player_name: Diego
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": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: d5647458-87ac-4fb4-863e-4acc166fb50f
timestamp: 2026-01-25 00:10:18.077688
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped 4 for 9 at pos 4
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: da639f23-d087-4715-85eb-cdbd0b80f554
timestamp: 2026-01-25 00:10:18.098226
player_id: cpu_0
player_name: Priya
action: take_discard
card_rank: 4
card_suit: clubs
decision_reason: took 4 from discard
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

visible_opponents_json:
{"Sage": [{"rank": "J", "suit": "diamonds"}, {"rank": "6", "suit": "diamonds"}], "Diego": [{"rank": "7", "suit": "clubs"}, {"rank": "6", "suit": "clubs"}], "Marcus": [{"rank": "2", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}]}


game_id: da639f23-d087-4715-85eb-cdbd0b80f554
timestamp: 2026-01-25 00:10:18.105159
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 4 for 7 at pos 1
hand_json:
[{"rank": "3", "suit": "diamonds", "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": "A", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

visible_opponents_json:
{"Sage": [{"rank": "J", "suit": "diamonds"}, {"rank": "6", "suit": "diamonds"}], "Diego": [{"rank": "7", "suit": "clubs"}, {"rank": "6", "suit": "clubs"}], "Marcus": [{"rank": "2", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}]}


game_id: da639f23-d087-4715-85eb-cdbd0b80f554
timestamp: 2026-01-25 00:10:18.111914
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 7
card_suit: hearts
decision_reason: took 7 from discard
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: da639f23-d087-4715-85eb-cdbd0b80f554
timestamp: 2026-01-25 00:10:18.118208
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 7 for J at pos 1
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: da639f23-d087-4715-85eb-cdbd0b80f554
timestamp: 2026-01-25 00:10:18.124461
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: da639f23-d087-4715-85eb-cdbd0b80f554
timestamp: 2026-01-25 00:10:18.137046
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: A
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: da639f23-d087-4715-85eb-cdbd0b80f554
timestamp: 2026-01-25 00:10:18.143318
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "2", "suit": "diamonds"}
decision_reason: swapped A for 2 at pos 1
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: da639f23-d087-4715-85eb-cdbd0b80f554
timestamp: 2026-01-25 00:10:18.149565
player_id: cpu_0
player_name: Priya
action: take_discard
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "3", "suit": "diamonds", "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": "A", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: da639f23-d087-4715-85eb-cdbd0b80f554
timestamp: 2026-01-25 00:10:18.155807
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 2 for 4 at pos 1
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: da639f23-d087-4715-85eb-cdbd0b80f554
timestamp: 2026-01-25 00:10:18.162334
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: da639f23-d087-4715-85eb-cdbd0b80f554
timestamp: 2026-01-25 00:10:18.168638
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 4 for 7 at pos 1
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: da639f23-d087-4715-85eb-cdbd0b80f554
timestamp: 2026-01-25 00:10:18.176095
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: da639f23-d087-4715-85eb-cdbd0b80f554
timestamp: 2026-01-25 00:10:18.182139
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 7 for 9 at pos 4
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: da639f23-d087-4715-85eb-cdbd0b80f554
timestamp: 2026-01-25 00:10:18.188350
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: da639f23-d087-4715-85eb-cdbd0b80f554
timestamp: 2026-01-25 00:10:18.194685
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 4 for 8 at pos 3
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: da639f23-d087-4715-85eb-cdbd0b80f554
timestamp: 2026-01-25 00:10:18.200853
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: 10
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: da639f23-d087-4715-85eb-cdbd0b80f554
timestamp: 2026-01-25 00:10:18.213479
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: K
card_suit: spades
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: da639f23-d087-4715-85eb-cdbd0b80f554
timestamp: 2026-01-25 00:10:18.219497
player_id: cpu_1
player_name: Sage
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped K for 6 at pos 5
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: da639f23-d087-4715-85eb-cdbd0b80f554
timestamp: 2026-01-25 00:10:18.225506
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: da639f23-d087-4715-85eb-cdbd0b80f554
timestamp: 2026-01-25 00:10:18.231799
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 6 for 8 at pos 2
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: da639f23-d087-4715-85eb-cdbd0b80f554
timestamp: 2026-01-25 00:10:18.238176
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: J
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: da639f23-d087-4715-85eb-cdbd0b80f554
timestamp: 2026-01-25 00:10:18.254514
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "spades"}], "Diego": [{"rank": "7", "suit": "clubs"}, {"rank": "6", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}], "Marcus": [{"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}]}


game_id: da639f23-d087-4715-85eb-cdbd0b80f554
timestamp: 2026-01-25 00:10:18.260527
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped 6 for Q at pos 3
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: da639f23-d087-4715-85eb-cdbd0b80f554
timestamp: 2026-01-25 00:10:18.266428
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: da639f23-d087-4715-85eb-cdbd0b80f554
timestamp: 2026-01-25 00:10:18.277965
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: da639f23-d087-4715-85eb-cdbd0b80f554
timestamp: 2026-01-25 00:10:18.284134
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 4 for 7 at pos 1
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: da639f23-d087-4715-85eb-cdbd0b80f554
timestamp: 2026-01-25 00:10:18.290068
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 7 from discard
visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}], "Sage": [{"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "spades"}], "Diego": [{"rank": "4", "suit": "hearts"}, {"rank": "6", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}]}


game_id: da639f23-d087-4715-85eb-cdbd0b80f554
timestamp: 2026-01-25 00:10:18.296214
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 7 for 7 at pos 2
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: da639f23-d087-4715-85eb-cdbd0b80f554
timestamp: 2026-01-25 00:10:18.301826
player_id: cpu_0
player_name: Priya
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: da639f23-d087-4715-85eb-cdbd0b80f554
timestamp: 2026-01-25 00:10:18.307799
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "A", "suit": "diamonds"}
decision_reason: swapped 7 for A at pos 4
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: da639f23-d087-4715-85eb-cdbd0b80f554
timestamp: 2026-01-25 00:10:18.314193
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took A from discard
visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}, {"rank": "7", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}], "Diego": [{"rank": "4", "suit": "hearts"}, {"rank": "6", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}], "Marcus": [{"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "spades"}, {"rank": "7", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}]}


game_id: da639f23-d087-4715-85eb-cdbd0b80f554
timestamp: 2026-01-25 00:10:18.320403
player_id: cpu_1
player_name: Sage
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped A for 4 at pos 1
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: da639f23-d087-4715-85eb-cdbd0b80f554
timestamp: 2026-01-25 00:10:18.326510
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: da639f23-d087-4715-85eb-cdbd0b80f554
timestamp: 2026-01-25 00:10:18.332480
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 4 for 7 at pos 4
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: da639f23-d087-4715-85eb-cdbd0b80f554
timestamp: 2026-01-25 00:10:18.338504
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: da639f23-d087-4715-85eb-cdbd0b80f554
timestamp: 2026-01-25 00:10:18.344797
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "A", "suit": "clubs"}
decision_reason: swapped 7 for A at pos 4
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: da639f23-d087-4715-85eb-cdbd0b80f554
timestamp: 2026-01-25 00:10:18.350562
player_id: cpu_0
player_name: Priya
action: take_discard
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took A from discard
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: da639f23-d087-4715-85eb-cdbd0b80f554
timestamp: 2026-01-25 00:10:18.356616
player_id: cpu_0
player_name: Priya
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": "3", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: da639f23-d087-4715-85eb-cdbd0b80f554
timestamp: 2026-01-25 00:10:18.362871
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: da639f23-d087-4715-85eb-cdbd0b80f554
timestamp: 2026-01-25 00:10:18.369147
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 7 for 5 at pos 4
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: da639f23-d087-4715-85eb-cdbd0b80f554
timestamp: 2026-01-25 00:10:18.375592
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: da639f23-d087-4715-85eb-cdbd0b80f554
timestamp: 2026-01-25 00:10:18.381376
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 5 for 6 at pos 2
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.399212
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 9
card_suit: spades
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.411792
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": true}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.417793
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: swapped 8 for 10 at pos 5
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.423745
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.429361
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 6 for 5 at pos 1
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.435090
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.440647
player_id: cpu_3
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": "10", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.446760
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: A
card_suit: spades
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.452559
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped A for 8 at pos 2
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.458295
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: took 8 from discard
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.464424
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 8 for 6 at pos 2
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.470475
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.476688
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped 6 for 3 at pos 4
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.482922
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.490717
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 3 for 5 at pos 0
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.496492
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.502704
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 5 for 8 at pos 3
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.510135
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.516216
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 3 for 8 at pos 2
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.522476
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.528600
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 4 for 6 at pos 1
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.534599
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.540916
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 6 for 10 at pos 1
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.546835
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.560002
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.566398
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 2 for 8 at pos 5
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.572559
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.578717
player_id: cpu_2
player_name: Maya
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "2", "suit": "diamonds"}
decision_reason: swapped A for 2 at pos 3
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.584693
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.590904
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 2 for 6 at pos 1
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.597184
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 6 from discard
visible_opponents_json:
{"Kenji": [{"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}], "Maya": [{"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}, {"rank": "6", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}], "Marcus": [{"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}]}


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.603070
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 6 for J at pos 5
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.609091
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 10
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.615421
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 10
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "hearts"}
decision_reason: swapped 10 for 3 at pos 4
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.621502
player_id: cpu_2
player_name: Maya
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": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.627430
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 3 for 6 at pos 4
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.633637
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.640105
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 6 for 5 at pos 2
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.646399
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.652499
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "K", "suit": "clubs"}
decision_reason: swapped 5 for K at pos 0
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.658453
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took K from discard
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.664756
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped K for 10 at pos 4
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.671612
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: K
card_suit: spades
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.678064
player_id: cpu_2
player_name: Maya
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped K for 4 at pos 1
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.685019
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.693214
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 4 for 6 at pos 2
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.700129
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.707030
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "K", "suit": "hearts"}
decision_reason: swapped 6 for K at pos 4
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.713321
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took K from discard
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.719390
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped K for 4 at pos 0
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.725780
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.732053
player_id: cpu_2
player_name: Maya
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": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.738298
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.744383
player_id: cpu_3
player_name: Marcus
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": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.750690
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 9
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.763486
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 0b8925b6-5955-4633-818c-e3fb641060fb
timestamp: 2026-01-25 00:10:18.770752
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "2", "suit": "clubs"}
decision_reason: swapped 6 for 2 at pos 1
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:18.788450
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:18.794809
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 4 for 8 at pos 2
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:18.801264
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:18.807555
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "A", "suit": "diamonds"}
decision_reason: swapped 6 for A at pos 1
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:18.814096
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took A from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:18.820269
player_id: cpu_2
player_name: Maya
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: swapped A for 10 at pos 3
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:18.827270
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:18.833785
player_id: cpu_3
player_name: River
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: swapped 2 for 9 at pos 1
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:18.843448
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:18.849533
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 3 for 8 at pos 4
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:18.855993
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:18.862632
player_id: cpu_1
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": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:18.869149
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:18.875638
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 2 for 7 at pos 1
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:18.881735
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:18.895472
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:18.910956
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:18.946747
player_id: cpu_3
player_name: River
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "K", "suit": "clubs"}
decision_reason: swapped A for K at pos 5
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:18.953390
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: took K from discard
visible_opponents_json:
{"Kenji": [{"rank": "6", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "6", "suit": "spades"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}], "River": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}]}


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:18.959781
player_id: cpu_0
player_name: Diego
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped K for 4 at pos 2
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:18.966384
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: took 4 from discard
visible_opponents_json:
{"Diego": [{"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}], "River": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}]}


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:18.972784
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 4 for 7 at pos 2
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:18.979373
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Diego": [{"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}], "Kenji": [{"rank": "6", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}, {"rank": "6", "suit": "spades"}], "River": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}]}


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:18.985700
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 6 for Q at pos 4
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:18.992321
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:18.998402
player_id: cpu_3
player_name: River
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "A", "suit": "clubs"}
decision_reason: swapped K for A at pos 5
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:19.004651
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took A from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:19.010470
player_id: cpu_0
player_name: Diego
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped A for 3 at pos 4
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:19.016474
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:19.022948
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 3 for 6 at pos 1
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:19.029233
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:19.035743
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 3 for 6 at pos 4
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:19.041741
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:19.055824
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: J
card_suit: spades
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:19.069227
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: K
card_suit: spades
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:19.075197
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped K for 6 at pos 4
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:19.081257
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:19.087469
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped 2 for 3 at pos 4
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:19.093958
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: took 3 from discard
visible_opponents_json:
{"Diego": [{"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "clubs"}], "Kenji": [{"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "spades"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}]}


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:19.100614
player_id: cpu_3
player_name: River
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "A", "suit": "spades"}
decision_reason: swapped 3 for A at pos 4
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:19.106547
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: A
card_suit: spades
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: took A from discard
visible_opponents_json:
{"Kenji": [{"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "spades"}], "Maya": [{"rank": "2", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}], "River": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}]}


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:19.113013
player_id: cpu_0
player_name: Diego
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped A for 5 at pos 1
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:19.119508
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:19.126183
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 5 for J at pos 0
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:19.132783
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:19.140188
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 3 for 5 at pos 2
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:19.148394
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:19.160352
player_id: cpu_3
player_name: River
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "K", "suit": "hearts"}
decision_reason: swapped 5 for K at pos 2
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:19.167008
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took K from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:19.173505
player_id: cpu_0
player_name: Diego
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "A", "suit": "spades"}
decision_reason: swapped K for A at pos 1
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:19.179861
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: A
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took A from discard
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:19.186378
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped A for 5 at pos 0
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:19.192950
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:19.200933
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 5 for 6 at pos 5
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:19.207985
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:19.214508
player_id: cpu_3
player_name: River
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped 6 for 4 at pos 0
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:19.221365
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:19.227987
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 4 for 5 at pos 5
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:19.234915
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:19.241665
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "A", "suit": "hearts"}
decision_reason: swapped 5 for A at pos 5
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:19.248469
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took A from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 323a8d82-0872-4239-9bc2-1432175481cb
timestamp: 2026-01-25 00:10:19.256804
player_id: cpu_2
player_name: Maya
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped A for 4 at pos 0
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.285250
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: 6
card_suit: clubs
decision_reason: took 6 from discard
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}]

visible_opponents_json:
{"Sage": [{"rank": "7", "suit": "clubs"}, {"rank": "A", "suit": "spades"}], "Maya": [{"rank": "8", "suit": "diamonds"}, {"rank": "Q", "suit": "diamonds"}], "Kenji": [{"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "clubs"}]}


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.292046
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 6 for 10 at pos 5
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"Sage": [{"rank": "7", "suit": "clubs"}, {"rank": "A", "suit": "spades"}], "Maya": [{"rank": "8", "suit": "diamonds"}, {"rank": "Q", "suit": "diamonds"}], "Kenji": [{"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "clubs"}]}


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.298715
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 10
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}]

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


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.312223
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.318345
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 2 for Q at pos 4
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.325169
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.331409
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped 2 for 3 at pos 5
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.337736
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": "K", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.343964
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped 3 for 9 at pos 1
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.351104
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}]

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


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.367427
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: took 8 from discard
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.373794
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped 8 for J at pos 5
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}]

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


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.380316
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.387006
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped 4 for Q at pos 4
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.393264
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.406751
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 10
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "3", "suit": "clubs"}, {"rank": "6", "suit": "clubs"}], "Maya": [{"rank": "8", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}, {"rank": "8", "suit": "spades"}], "Kenji": [{"rank": "2", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}]}


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.419280
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}]

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


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.425373
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 4 for 8 at pos 2
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}]

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


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.431763
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 9
card_suit: spades
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.445540
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "7", "suit": "clubs"}, {"rank": "A", "suit": "spades"}], "Maya": [{"rank": "4", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "8", "suit": "spades"}], "Kenji": [{"rank": "2", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}]}


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.455237
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 6 for 8 at pos 2
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.461910
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "3", "suit": "clubs"}, {"rank": "6", "suit": "diamonds"}, {"rank": "6", "suit": "clubs"}], "Maya": [{"rank": "4", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "8", "suit": "spades"}], "Kenji": [{"rank": "2", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}]}


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.477568
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}]

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


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.484794
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 3 for 8 at pos 5
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.491442
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "3", "suit": "clubs"}, {"rank": "6", "suit": "diamonds"}, {"rank": "6", "suit": "clubs"}], "Sage": [{"rank": "7", "suit": "clubs"}, {"rank": "A", "suit": "spades"}], "Maya": [{"rank": "4", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}]}


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.497994
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped 3 for 4 at pos 4
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.504680
player_id: cpu_0
player_name: Marcus
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": "K", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.510710
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 4 for 6 at pos 2
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.517141
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 6 from discard
visible_opponents_json:
{"Marcus": [{"rank": "3", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}], "Maya": [{"rank": "4", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}], "Kenji": [{"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "clubs"}]}


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.523243
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 6 for 7 at pos 2
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}]

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


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.529399
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.542182
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.548969
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 4 for 5 at pos 2
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.555199
player_id: cpu_0
player_name: Marcus
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": "K", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.561330
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 5 for 6 at pos 5
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.567605
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}]

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


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.573813
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 6 for 7 at pos 5
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.580105
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 7 from discard
visible_opponents_json:
{"Marcus": [{"rank": "3", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}], "Sage": [{"rank": "6", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}, {"rank": "6", "suit": "clubs"}], "Kenji": [{"rank": "2", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "clubs"}]}


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.586019
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped 7 for Q at pos 1
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.592169
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.598189
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 6 for 7 at pos 0
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.604487
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.610992
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "K", "suit": "hearts"}
decision_reason: swapped 7 for K at pos 0
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.617113
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took K from discard
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.624524
player_id: cpu_1
player_name: Sage
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped K for 6 at pos 2
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.630511
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.637794
player_id: cpu_2
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 1
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.645326
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.651706
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "K", "suit": "spades"}
decision_reason: swapped 7 for K at pos 3
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.658049
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: K
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took K from discard
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.664237
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped K for 7 at pos 0
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.670418
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.676284
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "2", "suit": "hearts"}
decision_reason: swapped 7 for 2 at pos 1
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.682325
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 17767c8f-4b59-47fe-a6fe-5dd872232a18
timestamp: 2026-01-25 00:10:19.688386
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 2 for 6 at pos 1
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:19.707540
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:19.713633
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 8 for Q at pos 2
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:19.719532
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: 9
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:19.727147
player_id: cpu_1
player_name: Priya
action: swap
card_rank: 9
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 9 for J at pos 3
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:19.733694
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Maya": [{"rank": "8", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}], "Priya": [{"rank": "5", "suit": "diamonds"}, {"rank": "9", "suit": "spades"}], "Kenji": [{"rank": "2", "suit": "diamonds"}, {"rank": "6", "suit": "diamonds"}]}


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:19.747402
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}]

visible_opponents_json:
{"Maya": [{"rank": "8", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}], "Priya": [{"rank": "5", "suit": "diamonds"}, {"rank": "9", "suit": "spades"}], "Sage": [{"rank": "2", "suit": "spades"}, {"rank": "8", "suit": "hearts"}]}


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:19.753364
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 4 for 6 at pos 5
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"Maya": [{"rank": "8", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}], "Priya": [{"rank": "5", "suit": "diamonds"}, {"rank": "9", "suit": "spades"}], "Sage": [{"rank": "2", "suit": "spades"}, {"rank": "8", "suit": "hearts"}]}


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:19.759389
player_id: cpu_0
player_name: Maya
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": "4", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:19.765422
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "A", "suit": "clubs"}
decision_reason: swapped 6 for A at pos 1
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:19.771395
player_id: cpu_1
player_name: Priya
action: take_discard
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took A from discard
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:19.777730
player_id: cpu_1
player_name: Priya
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped A for 9 at pos 3
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:19.786382
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}]

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


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:19.798781
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:19.804490
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 2 for 4 at pos 5
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:19.810219
player_id: cpu_0
player_name: Maya
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:19.816399
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 4
card_suit: clubs
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": "6", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:19.822221
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:19.828293
player_id: cpu_1
player_name: Priya
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 6 for 7 at pos 0
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:19.834536
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "6", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}, {"rank": "6", "suit": "hearts"}], "Priya": [{"rank": "6", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Kenji": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}]}


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:19.840437
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 3 for 8 at pos 5
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:19.846460
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:19.852691
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "K", "suit": "diamonds"}
decision_reason: swapped K for K at pos 2
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:19.858961
player_id: cpu_0
player_name: Maya
action: take_discard
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took K from discard
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:19.865252
player_id: cpu_0
player_name: Maya
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped K for 6 at pos 1
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:19.871363
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:19.883529
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: K
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:19.889323
player_id: cpu_2
player_name: Sage
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped K for 3 at pos 5
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:19.895698
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:19.908435
player_id: cpu_0
player_name: Maya
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": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:19.914754
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped 4 for 9 at pos 5
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:19.921192
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "K", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}, {"rank": "6", "suit": "hearts"}, {"rank": "4", "suit": "spades"}], "Sage": [{"rank": "2", "suit": "spades"}, {"rank": "K", "suit": "spades"}], "Kenji": [{"rank": "2", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}]}


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:19.927266
player_id: cpu_1
player_name: Priya
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "2", "suit": "hearts"}
decision_reason: swapped 6 for 2 at pos 2
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:19.933391
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:19.939589
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: swapped 2 for 10 at pos 2
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:19.945244
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "K", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}, {"rank": "6", "suit": "hearts"}, {"rank": "4", "suit": "spades"}], "Priya": [{"rank": "6", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}, {"rank": "6", "suit": "clubs"}, {"rank": "A", "suit": "clubs"}], "Sage": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "spades"}]}


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:19.950957
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped A for 3 at pos 4
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:19.956717
player_id: cpu_0
player_name: Maya
action: take_discard
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:19.962150
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped 3 for Q at pos 3
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:19.968420
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:19.974738
player_id: cpu_1
player_name: Priya
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped A for 6 at pos 0
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:19.981198
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:19.987243
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 6 for 7 at pos 3
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:19.993111
player_id: cpu_3
player_name: Kenji
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": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:19.999059
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 7 for 8 at pos 3
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:20.005400
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 10
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:20.017750
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:20.023919
player_id: cpu_1
player_name: Priya
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped 5 for 4 at pos 4
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:20.030331
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


