# moves

game_id: 7773a3f8-0e65-4df4-8940-d222518310f1
timestamp: 2026-01-25 00:10:01.268117
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 7773a3f8-0e65-4df4-8940-d222518310f1
timestamp: 2026-01-25 00:10:01.274727
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 5 for 6 at pos 4
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 7773a3f8-0e65-4df4-8940-d222518310f1
timestamp: 2026-01-25 00:10:01.280853
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 7773a3f8-0e65-4df4-8940-d222518310f1
timestamp: 2026-01-25 00:10:01.287178
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 6 for 7 at pos 2
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 7773a3f8-0e65-4df4-8940-d222518310f1
timestamp: 2026-01-25 00:10:01.293815
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}]

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


game_id: 7773a3f8-0e65-4df4-8940-d222518310f1
timestamp: 2026-01-25 00:10:01.300391
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: swapped 7 for 10 at pos 4
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": true}]

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


game_id: 7773a3f8-0e65-4df4-8940-d222518310f1
timestamp: 2026-01-25 00:10:01.306851
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 7773a3f8-0e65-4df4-8940-d222518310f1
timestamp: 2026-01-25 00:10:01.321570
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 7773a3f8-0e65-4df4-8940-d222518310f1
timestamp: 2026-01-25 00:10:01.327753
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 7 for 7 at pos 1
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 7773a3f8-0e65-4df4-8940-d222518310f1
timestamp: 2026-01-25 00:10:01.334615
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 7773a3f8-0e65-4df4-8940-d222518310f1
timestamp: 2026-01-25 00:10:01.342895
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped 7 for J at pos 0
hand_json:
[{"rank": "7", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 7773a3f8-0e65-4df4-8940-d222518310f1
timestamp: 2026-01-25 00:10:01.350187
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": true}]

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


game_id: 7773a3f8-0e65-4df4-8940-d222518310f1
timestamp: 2026-01-25 00:10:01.357050
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped 8 for 10 at pos 2
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": true}]

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


game_id: 7773a3f8-0e65-4df4-8940-d222518310f1
timestamp: 2026-01-25 00:10:01.362991
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "7", "suit": "spades"}, {"rank": "6", "suit": "spades"}, {"rank": "2", "suit": "clubs"}], "Diego": [{"rank": "4", "suit": "hearts"}, {"rank": "8", "suit": "hearts"}, {"rank": "7", "suit": "hearts"}, {"rank": "10", "suit": "diamonds"}], "Sage": [{"rank": "2", "suit": "diamonds"}, {"rank": "7", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}, {"rank": "3", "suit": "clubs"}]}


game_id: 7773a3f8-0e65-4df4-8940-d222518310f1
timestamp: 2026-01-25 00:10:01.369378
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped 3 for 10 at pos 5
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 7773a3f8-0e65-4df4-8940-d222518310f1
timestamp: 2026-01-25 00:10:01.375551
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 7773a3f8-0e65-4df4-8940-d222518310f1
timestamp: 2026-01-25 00:10:01.381649
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped 3 for 9 at pos 2
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 7773a3f8-0e65-4df4-8940-d222518310f1
timestamp: 2026-01-25 00:10:01.388216
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 7773a3f8-0e65-4df4-8940-d222518310f1
timestamp: 2026-01-25 00:10:01.394786
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 5 for 7 at pos 0
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 7773a3f8-0e65-4df4-8940-d222518310f1
timestamp: 2026-01-25 00:10:01.401984
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": true}]

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


game_id: 7773a3f8-0e65-4df4-8940-d222518310f1
timestamp: 2026-01-25 00:10:01.408709
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 7 for 10 at pos 5
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 7773a3f8-0e65-4df4-8940-d222518310f1
timestamp: 2026-01-25 00:10:01.415956
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 7773a3f8-0e65-4df4-8940-d222518310f1
timestamp: 2026-01-25 00:10:01.422531
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 4
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 7773a3f8-0e65-4df4-8940-d222518310f1
timestamp: 2026-01-25 00:10:01.429273
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 7773a3f8-0e65-4df4-8940-d222518310f1
timestamp: 2026-01-25 00:10:01.435778
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 4 for 7 at pos 1
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 7773a3f8-0e65-4df4-8940-d222518310f1
timestamp: 2026-01-25 00:10:01.442481
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 7773a3f8-0e65-4df4-8940-d222518310f1
timestamp: 2026-01-25 00:10:01.448434
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "A", "suit": "spades"}
decision_reason: swapped 7 for A at pos 4
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 7773a3f8-0e65-4df4-8940-d222518310f1
timestamp: 2026-01-25 00:10:01.454183
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: A
card_suit: spades
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took A from discard
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 7773a3f8-0e65-4df4-8940-d222518310f1
timestamp: 2026-01-25 00:10:01.459971
player_id: cpu_1
player_name: Diego
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped A for 8 at pos 2
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 7773a3f8-0e65-4df4-8940-d222518310f1
timestamp: 2026-01-25 00:10:01.466347
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 7773a3f8-0e65-4df4-8940-d222518310f1
timestamp: 2026-01-25 00:10:01.472196
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "K", "suit": "hearts"}
decision_reason: swapped 7 for K at pos 3
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 7773a3f8-0e65-4df4-8940-d222518310f1
timestamp: 2026-01-25 00:10:01.478311
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took K from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 7773a3f8-0e65-4df4-8940-d222518310f1
timestamp: 2026-01-25 00:10:01.484308
player_id: cpu_3
player_name: Sage
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped K for 5 at pos 4
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 7773a3f8-0e65-4df4-8940-d222518310f1
timestamp: 2026-01-25 00:10:01.494523
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 7773a3f8-0e65-4df4-8940-d222518310f1
timestamp: 2026-01-25 00:10:01.500688
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 5 for 7 at pos 4
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 7773a3f8-0e65-4df4-8940-d222518310f1
timestamp: 2026-01-25 00:10:01.506631
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 7773a3f8-0e65-4df4-8940-d222518310f1
timestamp: 2026-01-25 00:10:01.513120
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 7 for 8 at pos 3
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 7773a3f8-0e65-4df4-8940-d222518310f1
timestamp: 2026-01-25 00:10:01.519260
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 7773a3f8-0e65-4df4-8940-d222518310f1
timestamp: 2026-01-25 00:10:01.533418
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 7773a3f8-0e65-4df4-8940-d222518310f1
timestamp: 2026-01-25 00:10:01.542372
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "K", "suit": "diamonds"}
decision_reason: swapped 5 for K at pos 3
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 7773a3f8-0e65-4df4-8940-d222518310f1
timestamp: 2026-01-25 00:10:01.551651
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took K from discard
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 7773a3f8-0e65-4df4-8940-d222518310f1
timestamp: 2026-01-25 00:10:01.560919
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped K for 6 at pos 2
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 7773a3f8-0e65-4df4-8940-d222518310f1
timestamp: 2026-01-25 00:10:01.567648
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 7773a3f8-0e65-4df4-8940-d222518310f1
timestamp: 2026-01-25 00:10:01.574301
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 6 for 7 at pos 3
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 7773a3f8-0e65-4df4-8940-d222518310f1
timestamp: 2026-01-25 00:10:01.585903
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 7 from discard
visible_opponents_json:
{"Kenji": [{"rank": "5", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}], "Diego": [{"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "spades"}, {"rank": "6", "suit": "spades"}, {"rank": "7", "suit": "hearts"}, {"rank": "7", "suit": "spades"}], "Sage": [{"rank": "2", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}, {"rank": "3", "suit": "spades"}, {"rank": "5", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}]}


game_id: 7773a3f8-0e65-4df4-8940-d222518310f1
timestamp: 2026-01-25 00:10:01.596905
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 7 for 4 at pos 0
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.619090
player_id: cpu_0
player_name: Maya
action: take_discard
card_rank: 6
card_suit: hearts
decision_reason: took 6 from discard
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.625172
player_id: cpu_0
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": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.631443
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}]

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


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.637851
player_id: cpu_1
player_name: Priya
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped 5 for 10 at pos 4
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}]

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


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.644237
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.651512
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped 5 for Q at pos 4
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.658039
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}]

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


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.664182
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 3 for 6 at pos 4
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}]

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


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.670572
player_id: cpu_0
player_name: Maya
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.676692
player_id: cpu_0
player_name: Maya
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": "A", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.682718
player_id: cpu_1
player_name: Priya
action: take_discard
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}]

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


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.688679
player_id: cpu_1
player_name: Priya
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 2 for 5 at pos 4
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}]

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


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.694204
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.700344
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 5 for 8 at pos 1
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.706365
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}]

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


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.718808
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.730846
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}]

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


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.737177
player_id: cpu_1
player_name: Priya
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 5 for J at pos 0
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}]

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


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.743690
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.749058
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "2", "suit": "spades"}
decision_reason: swapped Q for 2 at pos 2
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.755468
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 2 from discard
visible_opponents_json:
{"Maya": [{"rank": "A", "suit": "spades"}, {"rank": "6", "suit": "spades"}, {"rank": "6", "suit": "hearts"}], "Priya": [{"rank": "5", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}], "Kenji": [{"rank": "8", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}, {"rank": "Q", "suit": "spades"}, {"rank": "5", "suit": "spades"}]}


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.761431
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped 2 for 3 at pos 4
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}]

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


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.767280
player_id: cpu_0
player_name: Maya
action: take_discard
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 3 from discard
visible_opponents_json:
{"Priya": [{"rank": "5", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}], "Kenji": [{"rank": "8", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}, {"rank": "Q", "suit": "spades"}, {"rank": "5", "suit": "spades"}], "Sage": [{"rank": "2", "suit": "hearts"}, {"rank": "2", "suit": "spades"}]}


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.773007
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 3 for 6 at pos 1
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.778827
player_id: cpu_1
player_name: Priya
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}]

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


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.784813
player_id: cpu_1
player_name: Priya
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "A", "suit": "diamonds"}
decision_reason: swapped 6 for A at pos 5
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.790623
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took A from discard
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.796475
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped A for Q at pos 2
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.802464
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}]

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


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.808287
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: swapped 2 for 9 at pos 0
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}]

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


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.814343
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.827146
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.832687
player_id: cpu_1
player_name: Priya
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped A for 6 at pos 5
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.838184
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.844136
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 6 for 8 at pos 0
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.849905
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}]

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


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.855829
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped 4 for Q at pos 1
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}]

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


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.862101
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "5", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}, {"rank": "A", "suit": "clubs"}], "Kenji": [{"rank": "6", "suit": "spades"}, {"rank": "5", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}], "Sage": [{"rank": "2", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "2", "suit": "spades"}]}


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.873927
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.881604
player_id: cpu_1
player_name: Priya
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 4 for 5 at pos 0
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.888272
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.894370
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 5 for 6 at pos 0
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.900839
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}]

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


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.907004
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 6 for 8 at pos 3
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}]

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


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.913484
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "4", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}, {"rank": "A", "suit": "clubs"}], "Kenji": [{"rank": "5", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}], "Sage": [{"rank": "2", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "6", "suit": "spades"}, {"rank": "2", "suit": "spades"}]}


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.919667
player_id: cpu_0
player_name: Maya
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped K for 6 at pos 4
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.925829
player_id: cpu_1
player_name: Priya
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.932274
player_id: cpu_1
player_name: Priya
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped 6 for 9 at pos 2
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.938532
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.944795
player_id: cpu_2
player_name: Kenji
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": "5", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.950842
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}]

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


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.958964
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "K", "suit": "spades"}
decision_reason: swapped 7 for K at pos 5
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.964755
player_id: cpu_0
player_name: Maya
action: take_discard
card_rank: K
card_suit: spades
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took K from discard
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: b11991e3-4f8c-4f66-ac67-b83187799c06
timestamp: 2026-01-25 00:10:01.970745
player_id: cpu_0
player_name: Maya
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped K for 3 at pos 1
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": true}]

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


game_id: b999c160-ff32-439d-9107-fe475f1a295d
timestamp: 2026-01-25 00:10:01.987754
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: K
card_suit: diamonds
decision_reason: took K from discard
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}]

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


game_id: b999c160-ff32-439d-9107-fe475f1a295d
timestamp: 2026-01-25 00:10:01.994029
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped K for J at pos 3
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}]

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


game_id: b999c160-ff32-439d-9107-fe475f1a295d
timestamp: 2026-01-25 00:10:02.000356
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: b999c160-ff32-439d-9107-fe475f1a295d
timestamp: 2026-01-25 00:10:02.007080
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped 7 for 10 at pos 3
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: b999c160-ff32-439d-9107-fe475f1a295d
timestamp: 2026-01-25 00:10:02.014327
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}]

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


game_id: b999c160-ff32-439d-9107-fe475f1a295d
timestamp: 2026-01-25 00:10:02.021121
player_id: cpu_2
player_name: Sage
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped A for 3 at pos 0
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}]

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


game_id: b999c160-ff32-439d-9107-fe475f1a295d
timestamp: 2026-01-25 00:10:02.027245
player_id: cpu_3
player_name: Maya
action: take_discard
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: b999c160-ff32-439d-9107-fe475f1a295d
timestamp: 2026-01-25 00:10:02.033646
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: swapped 3 for 9 at pos 4
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: b999c160-ff32-439d-9107-fe475f1a295d
timestamp: 2026-01-25 00:10:02.039246
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}]

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


game_id: b999c160-ff32-439d-9107-fe475f1a295d
timestamp: 2026-01-25 00:10:02.045157
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "A", "suit": "spades"}
decision_reason: swapped 5 for A at pos 1
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}]

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


game_id: b999c160-ff32-439d-9107-fe475f1a295d
timestamp: 2026-01-25 00:10:02.051064
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: A
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took A from discard
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: b999c160-ff32-439d-9107-fe475f1a295d
timestamp: 2026-01-25 00:10:02.057357
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped A for 5 at pos 4
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: b999c160-ff32-439d-9107-fe475f1a295d
timestamp: 2026-01-25 00:10:02.063441
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}]

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


game_id: b999c160-ff32-439d-9107-fe475f1a295d
timestamp: 2026-01-25 00:10:02.069430
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 5 for 8 at pos 1
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}]

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


game_id: b999c160-ff32-439d-9107-fe475f1a295d
timestamp: 2026-01-25 00:10:02.075376
player_id: cpu_3
player_name: Maya
action: draw_deck
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: b999c160-ff32-439d-9107-fe475f1a295d
timestamp: 2026-01-25 00:10:02.081442
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 3 for 6 at pos 1
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: b999c160-ff32-439d-9107-fe475f1a295d
timestamp: 2026-01-25 00:10:02.087603
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}]

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


game_id: b999c160-ff32-439d-9107-fe475f1a295d
timestamp: 2026-01-25 00:10:02.099394
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: J
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: b999c160-ff32-439d-9107-fe475f1a295d
timestamp: 2026-01-25 00:10:02.110950
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}]

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


game_id: b999c160-ff32-439d-9107-fe475f1a295d
timestamp: 2026-01-25 00:10:02.117278
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 3 for 5 at pos 1
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}]

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


game_id: b999c160-ff32-439d-9107-fe475f1a295d
timestamp: 2026-01-25 00:10:02.123279
player_id: cpu_3
player_name: Maya
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": "6", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: b999c160-ff32-439d-9107-fe475f1a295d
timestamp: 2026-01-25 00:10:02.129280
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped 5 for 9 at pos 5
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: b999c160-ff32-439d-9107-fe475f1a295d
timestamp: 2026-01-25 00:10:02.135103
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "A", "suit": "hearts"}, {"rank": "7", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "Sage": [{"rank": "A", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "clubs"}], "Maya": [{"rank": "3", "suit": "hearts"}, {"rank": "5", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}]}


game_id: b999c160-ff32-439d-9107-fe475f1a295d
timestamp: 2026-01-25 00:10:02.147109
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "5", "suit": "spades"}, {"rank": "A", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}], "Sage": [{"rank": "A", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "clubs"}], "Maya": [{"rank": "3", "suit": "hearts"}, {"rank": "5", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}]}


game_id: b999c160-ff32-439d-9107-fe475f1a295d
timestamp: 2026-01-25 00:10:02.153181
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 3 for 7 at pos 3
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: b999c160-ff32-439d-9107-fe475f1a295d
timestamp: 2026-01-25 00:10:02.159193
player_id: cpu_2
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": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}]

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


game_id: b999c160-ff32-439d-9107-fe475f1a295d
timestamp: 2026-01-25 00:10:02.165270
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 7 for 7 at pos 3
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}]

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


game_id: b999c160-ff32-439d-9107-fe475f1a295d
timestamp: 2026-01-25 00:10:02.171556
player_id: cpu_3
player_name: Maya
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": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: b999c160-ff32-439d-9107-fe475f1a295d
timestamp: 2026-01-25 00:10:02.177431
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "K", "suit": "hearts"}
decision_reason: swapped 7 for K at pos 3
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: b999c160-ff32-439d-9107-fe475f1a295d
timestamp: 2026-01-25 00:10:02.183465
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took K from discard
visible_opponents_json:
{"Kenji": [{"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "A", "suit": "spades"}], "Sage": [{"rank": "A", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "7", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}], "Maya": [{"rank": "3", "suit": "hearts"}, {"rank": "5", "suit": "hearts"}, {"rank": "7", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}]}


game_id: b999c160-ff32-439d-9107-fe475f1a295d
timestamp: 2026-01-25 00:10:02.189495
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped K for 5 at pos 1
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}]

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


game_id: b999c160-ff32-439d-9107-fe475f1a295d
timestamp: 2026-01-25 00:10:02.197427
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: b999c160-ff32-439d-9107-fe475f1a295d
timestamp: 2026-01-25 00:10:02.207075
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 5 for Q at pos 2
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: b999c160-ff32-439d-9107-fe475f1a295d
timestamp: 2026-01-25 00:10:02.215314
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}]

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


game_id: b999c160-ff32-439d-9107-fe475f1a295d
timestamp: 2026-01-25 00:10:02.222259
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 2 for 7 at pos 3
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}]

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


game_id: b999c160-ff32-439d-9107-fe475f1a295d
timestamp: 2026-01-25 00:10:02.228953
player_id: cpu_3
player_name: Maya
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: b999c160-ff32-439d-9107-fe475f1a295d
timestamp: 2026-01-25 00:10:02.235373
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 7 for 6 at pos 0
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: b999c160-ff32-439d-9107-fe475f1a295d
timestamp: 2026-01-25 00:10:02.241379
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}]

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


game_id: b999c160-ff32-439d-9107-fe475f1a295d
timestamp: 2026-01-25 00:10:02.248029
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 6 for 4 at pos 0
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}]

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


game_id: b999c160-ff32-439d-9107-fe475f1a295d
timestamp: 2026-01-25 00:10:02.254478
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: b999c160-ff32-439d-9107-fe475f1a295d
timestamp: 2026-01-25 00:10:02.260333
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 4 for 5 at pos 2
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: b999c160-ff32-439d-9107-fe475f1a295d
timestamp: 2026-01-25 00:10:02.266244
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}]

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


game_id: b999c160-ff32-439d-9107-fe475f1a295d
timestamp: 2026-01-25 00:10:02.272855
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "K", "suit": "spades"}
decision_reason: swapped 5 for K at pos 5
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.290355
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Marcus": [{"rank": "4", "suit": "hearts"}, {"rank": "Q", "suit": "spades"}], "Maya": [{"rank": "A", "suit": "hearts"}, {"rank": "10", "suit": "spades"}], "Sofia": [{"rank": "9", "suit": "diamonds"}, {"rank": "J", "suit": "spades"}]}


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.296720
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 2 for 8 at pos 4
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Marcus": [{"rank": "4", "suit": "hearts"}, {"rank": "Q", "suit": "spades"}], "Maya": [{"rank": "A", "suit": "hearts"}, {"rank": "10", "suit": "spades"}], "Sofia": [{"rank": "9", "suit": "diamonds"}, {"rank": "J", "suit": "spades"}]}


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.306916
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 8 from discard
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}], "Maya": [{"rank": "A", "suit": "hearts"}, {"rank": "10", "suit": "spades"}], "Sofia": [{"rank": "9", "suit": "diamonds"}, {"rank": "J", "suit": "spades"}]}


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.313030
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped 8 for Q at pos 3
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}], "Maya": [{"rank": "A", "suit": "hearts"}, {"rank": "10", "suit": "spades"}], "Sofia": [{"rank": "9", "suit": "diamonds"}, {"rank": "J", "suit": "spades"}]}


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.319293
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 10
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": true}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.325258
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 10
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped 10 for 4 at pos 2
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": true}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.331707
player_id: cpu_3
player_name: Sofia
action: take_discard
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.337901
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped 4 for J at pos 5
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.344892
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: 9
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.359980
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.366410
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 6 for 8 at pos 3
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.372724
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 8 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}], "Marcus": [{"rank": "4", "suit": "hearts"}, {"rank": "6", "suit": "diamonds"}], "Sofia": [{"rank": "9", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}]}


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.378872
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 8 for 5 at pos 0
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}], "Marcus": [{"rank": "4", "suit": "hearts"}, {"rank": "6", "suit": "diamonds"}], "Sofia": [{"rank": "9", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}]}


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.385290
player_id: cpu_3
player_name: Sofia
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.391475
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 5 for 9 at pos 0
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.397100
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "4", "suit": "hearts"}, {"rank": "6", "suit": "diamonds"}], "Maya": [{"rank": "8", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "10", "suit": "clubs"}, {"rank": "10", "suit": "spades"}], "Sofia": [{"rank": "5", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}]}


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.410057
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.416440
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 7 for J at pos 2
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.422296
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": true}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.428404
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped 5 for 10 at pos 2
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": true}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.434591
player_id: cpu_3
player_name: Sofia
action: draw_deck
card_rank: A
card_suit: spades
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.440356
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped A for 5 at pos 0
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.446330
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 5 from discard
visible_opponents_json:
{"Marcus": [{"rank": "4", "suit": "hearts"}, {"rank": "7", "suit": "hearts"}, {"rank": "6", "suit": "diamonds"}], "Maya": [{"rank": "8", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "5", "suit": "clubs"}, {"rank": "10", "suit": "spades"}], "Sofia": [{"rank": "A", "suit": "spades"}, {"rank": "4", "suit": "spades"}]}


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.452162
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 5 for 5 at pos 0
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.457975
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.463892
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 5 for 7 at pos 2
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.469966
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": true}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.475860
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped 7 for 10 at pos 5
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.482533
player_id: cpu_3
player_name: Sofia
action: draw_deck
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.495043
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.503760
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "K", "suit": "hearts"}
decision_reason: swapped 7 for K at pos 5
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.510088
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took K from discard
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.516279
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped K for 6 at pos 3
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.522551
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.527984
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 6 for 8 at pos 0
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.534206
player_id: cpu_3
player_name: Sofia
action: draw_deck
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Diego": [{"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "7", "suit": "clubs"}], "Marcus": [{"rank": "4", "suit": "hearts"}, {"rank": "5", "suit": "spades"}, {"rank": "K", "suit": "hearts"}], "Maya": [{"rank": "6", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}, {"rank": "5", "suit": "clubs"}, {"rank": "7", "suit": "hearts"}]}


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.540186
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 3 for 7 at pos 3
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.546186
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.552361
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: swapped 7 for 10 at pos 1
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.558012
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.564014
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "K", "suit": "clubs"}
decision_reason: swapped 6 for K at pos 0
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.570387
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took K from discard
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.576203
player_id: cpu_2
player_name: Maya
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped K for 7 at pos 5
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.582132
player_id: cpu_3
player_name: Sofia
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.588186
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 7 for 8 at pos 1
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.594006
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.600927
player_id: cpu_0
player_name: Diego
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped A for 7 at pos 1
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.607823
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.614052
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 7 for 8 at pos 4
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.621227
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: K
card_suit: spades
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.628056
player_id: cpu_2
player_name: Maya
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped K for 6 at pos 0
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.635119
player_id: cpu_3
player_name: Sofia
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.643102
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 6 for 4 at pos 2
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.649205
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.655475
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 4 for 7 at pos 5
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.662135
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.669733
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "2", "suit": "clubs"}
decision_reason: swapped 7 for 2 at pos 5
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.675564
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.681711
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 2 for 5 at pos 2
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.688485
player_id: cpu_3
player_name: Sofia
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.696527
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 5 for 7 at pos 1
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.706630
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 2cb9ebf1-42b5-4f49-9e2c-2ee5714bbd77
timestamp: 2026-01-25 00:10:02.712953
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 7 for J at pos 3
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:02.730562
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 6
card_suit: hearts
decision_reason: took 6 from discard
hand_json:
[{"rank": "A", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}]

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


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:02.736668
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 6 for 8 at pos 1
hand_json:
[{"rank": "A", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}]

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


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:02.742626
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:02.755022
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:02.767416
player_id: cpu_3
player_name: Maya
action: draw_deck
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:02.800227
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 4 for 6 at pos 0
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:02.806473
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:02.812810
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 2 for 4 at pos 0
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:02.818755
player_id: cpu_3
player_name: Maya
action: draw_deck
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:02.825024
player_id: cpu_3
player_name: Maya
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "A", "suit": "diamonds"}
decision_reason: swapped K for A at pos 5
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:02.831224
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: took A from discard
visible_opponents_json:
{"Sage": [{"rank": "4", "suit": "spades"}, {"rank": "3", "suit": "spades"}], "Kenji": [{"rank": "2", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}], "Maya": [{"rank": "K", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}]}


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:02.837291
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped A for 6 at pos 1
hand_json:
[{"rank": "A", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}]

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


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:02.843419
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:02.855442
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:02.866943
player_id: cpu_3
player_name: Maya
action: draw_deck
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:02.896834
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped 5 for Q at pos 5
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:02.903366
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: J
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "A", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}], "Sage": [{"rank": "4", "suit": "spades"}, {"rank": "3", "suit": "spades"}, {"rank": "5", "suit": "spades"}], "Maya": [{"rank": "K", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}]}


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:02.915253
player_id: cpu_3
player_name: Maya
action: draw_deck
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "A", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}], "Sage": [{"rank": "4", "suit": "spades"}, {"rank": "3", "suit": "spades"}, {"rank": "5", "suit": "spades"}], "Kenji": [{"rank": "2", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}]}


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:02.921216
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "A", "suit": "clubs"}
decision_reason: swapped 3 for A at pos 1
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:02.927260
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took A from discard
visible_opponents_json:
{"Sage": [{"rank": "4", "suit": "spades"}, {"rank": "3", "suit": "spades"}, {"rank": "5", "suit": "spades"}], "Kenji": [{"rank": "2", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}], "Maya": [{"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}]}


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:02.933094
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped A for 10 at pos 4
hand_json:
[{"rank": "A", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}]

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


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:02.939538
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:02.946161
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped 3 for 4 at pos 1
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:02.952503
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 4 from discard
visible_opponents_json:
{"Sofia": [{"rank": "A", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Sage": [{"rank": "4", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "5", "suit": "spades"}], "Maya": [{"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}]}


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:02.958368
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped 4 for 10 at pos 1
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:02.964361
player_id: cpu_3
player_name: Maya
action: draw_deck
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:02.970559
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 5 for 8 at pos 2
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:02.976715
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 10
card_suit: spades
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}]

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


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:02.988647
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:02.995198
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "K", "suit": "diamonds"}
decision_reason: swapped 6 for K at pos 3
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:03.001984
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took K from discard
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:03.008124
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped K for 4 at pos 1
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:03.014356
player_id: cpu_3
player_name: Maya
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:03.020746
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 4 for 5 at pos 2
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:03.027172
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took 5 from discard
visible_opponents_json:
{"Sage": [{"rank": "4", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}, {"rank": "3", "suit": "spades"}, {"rank": "5", "suit": "spades"}], "Kenji": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}], "Maya": [{"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}]}


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:03.033637
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "A", "suit": "spades"}
decision_reason: swapped 5 for A at pos 0
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}]

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


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:03.040129
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: A
card_suit: spades
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took A from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:03.046871
player_id: cpu_1
player_name: Sage
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped A for 6 at pos 3
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:03.053600
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:03.059650
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 6 for J at pos 2
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:03.065998
player_id: cpu_3
player_name: Maya
action: draw_deck
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:03.072091
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped 2 for 4 at pos 2
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:03.078412
player_id: cpu_0
player_name: Sofia
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": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}]

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


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:03.084800
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "2", "suit": "diamonds"}
decision_reason: swapped 4 for 2 at pos 2
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}]

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


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:03.091057
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:03.097282
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 2 for 5 at pos 5
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:03.103762
player_id: cpu_2
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": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:03.109982
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 5 for 6 at pos 2
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:03.116474
player_id: cpu_3
player_name: Maya
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:03.123257
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: swapped 6 for 9 at pos 4
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:03.134290
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}]

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


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:03.146632
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:03.153051
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 2
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:03.159284
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:03.165240
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "hearts"}
decision_reason: swapped 8 for 3 at pos 4
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:03.171057
player_id: cpu_3
player_name: Maya
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:03.179420
player_id: cpu_3
player_name: Maya
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped A for 6 at pos 4
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:03.185909
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "3", "suit": "hearts"}
decision_reason: took 6 from discard
visible_opponents_json:
{"Sage": [{"rank": "4", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "A", "suit": "spades"}, {"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}], "Kenji": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}, {"rank": "8", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}], "Maya": [{"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}]}


game_id: 0abee280-4060-41c9-9638-531f290bc27b
timestamp: 2026-01-25 00:10:03.192204
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 6 for J at pos 5
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.211036
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.217348
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped K for 6 at pos 2
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.224138
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.230320
player_id: cpu_1
player_name: River
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped 4 for 10 at pos 4
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.236712
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.249391
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.255434
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 4 for 7 at pos 1
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.261210
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.273797
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.280090
player_id: cpu_1
player_name: River
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 2 for 4 at pos 4
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.287209
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.293304
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 4 for 6 at pos 4
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.299809
player_id: cpu_3
player_name: Marcus
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": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.306132
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "A", "suit": "diamonds"}
decision_reason: swapped 6 for A at pos 0
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.312479
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: took A from discard
visible_opponents_json:
{"River": [{"rank": "3", "suit": "clubs"}, {"rank": "A", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}], "Diego": [{"rank": "5", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}], "Marcus": [{"rank": "6", "suit": "hearts"}, {"rank": "4", "suit": "spades"}, {"rank": "3", "suit": "spades"}]}


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.318696
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped A for 9 at pos 5
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.324605
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.331077
player_id: cpu_1
player_name: River
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 5 for Q at pos 5
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.338018
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.344755
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "hearts"}
decision_reason: swapped 6 for 3 at pos 3
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.351964
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.358957
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 3 for 6 at pos 0
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.369481
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.376326
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 6 for 9 at pos 0
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.383477
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.390194
player_id: cpu_1
player_name: River
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 2 for 5 at pos 5
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.396401
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.402988
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 3 for 6 at pos 3
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.409350
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.415229
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 2
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.421405
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.434765
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.447573
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.454284
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped 5 for Q at pos 1
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.461004
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.467184
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 8 for 6 at pos 4
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.473384
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 6 from discard
visible_opponents_json:
{"River": [{"rank": "3", "suit": "clubs"}, {"rank": "A", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}], "Diego": [{"rank": "5", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}], "Marcus": [{"rank": "3", "suit": "hearts"}, {"rank": "4", "suit": "spades"}, {"rank": "6", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "8", "suit": "diamonds"}]}


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.479930
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "K", "suit": "spades"}
decision_reason: swapped 6 for K at pos 3
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.486129
player_id: cpu_1
player_name: River
action: take_discard
card_rank: K
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took K from discard
visible_opponents_json:
{"Sofia": [{"rank": "6", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}, {"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}], "Diego": [{"rank": "5", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}], "Marcus": [{"rank": "3", "suit": "hearts"}, {"rank": "4", "suit": "spades"}, {"rank": "6", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "8", "suit": "diamonds"}]}


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.492539
player_id: cpu_1
player_name: River
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped K for 3 at pos 1
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.498826
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.504992
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 3 for 5 at pos 0
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.511307
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.517841
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 5 for 8 at pos 4
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.524076
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.537738
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.544737
player_id: cpu_1
player_name: River
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped A for 9 at pos 0
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.551377
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.561024
player_id: cpu_2
player_name: Diego
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped A for 5 at pos 1
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.567745
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.574014
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 5 for 6 at pos 2
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.580376
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 6 from discard
visible_opponents_json:
{"River": [{"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}], "Diego": [{"rank": "3", "suit": "clubs"}, {"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}], "Marcus": [{"rank": "3", "suit": "hearts"}, {"rank": "4", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "5", "suit": "hearts"}]}


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.589448
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped 6 for J at pos 1
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.595961
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.602280
player_id: cpu_1
player_name: River
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "A", "suit": "hearts"}
decision_reason: swapped K for A at pos 0
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.609247
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took A from discard
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.616133
player_id: cpu_2
player_name: Diego
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped A for 4 at pos 4
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.622814
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}]

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


game_id: 7fe3d0b0-1708-4fd8-9b6f-3734e9c69aa2
timestamp: 2026-01-25 00:10:03.629806
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 4 for 5 at pos 2
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": true}]

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


game_id: 65c2fed5-5f22-422d-b9da-66ff1fe747a5
timestamp: 2026-01-25 00:10:03.648380
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: 6
card_suit: clubs
decision_reason: took 6 from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 65c2fed5-5f22-422d-b9da-66ff1fe747a5
timestamp: 2026-01-25 00:10:03.654510
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 6 for J at pos 4
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 65c2fed5-5f22-422d-b9da-66ff1fe747a5
timestamp: 2026-01-25 00:10:03.660924
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: 65c2fed5-5f22-422d-b9da-66ff1fe747a5
timestamp: 2026-01-25 00:10:03.667462
player_id: cpu_1
player_name: Maya
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped A for 6 at pos 5
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 65c2fed5-5f22-422d-b9da-66ff1fe747a5
timestamp: 2026-01-25 00:10:03.673938
player_id: cpu_2
player_name: Marcus
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}]

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


game_id: 65c2fed5-5f22-422d-b9da-66ff1fe747a5
timestamp: 2026-01-25 00:10:03.680332
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped 6 for 9 at pos 2
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}]

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


game_id: 65c2fed5-5f22-422d-b9da-66ff1fe747a5
timestamp: 2026-01-25 00:10:03.686791
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 65c2fed5-5f22-422d-b9da-66ff1fe747a5
timestamp: 2026-01-25 00:10:03.693403
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 6 for Q at pos 0
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 65c2fed5-5f22-422d-b9da-66ff1fe747a5
timestamp: 2026-01-25 00:10:03.699968
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 10
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 65c2fed5-5f22-422d-b9da-66ff1fe747a5
timestamp: 2026-01-25 00:10:03.712759
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 65c2fed5-5f22-422d-b9da-66ff1fe747a5
timestamp: 2026-01-25 00:10:03.719176
player_id: cpu_1
player_name: Maya
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped A for Q at pos 2
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 65c2fed5-5f22-422d-b9da-66ff1fe747a5
timestamp: 2026-01-25 00:10:03.725525
player_id: cpu_2
player_name: Marcus
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}]

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


game_id: 65c2fed5-5f22-422d-b9da-66ff1fe747a5
timestamp: 2026-01-25 00:10:03.731845
player_id: cpu_2
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 2
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}]

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


game_id: 65c2fed5-5f22-422d-b9da-66ff1fe747a5
timestamp: 2026-01-25 00:10:03.738776
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: K
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": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 65c2fed5-5f22-422d-b9da-66ff1fe747a5
timestamp: 2026-01-25 00:10:03.744787
player_id: cpu_3
player_name: Priya
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped K for 6 at pos 0
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 65c2fed5-5f22-422d-b9da-66ff1fe747a5
timestamp: 2026-01-25 00:10:03.751410
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: took 6 from discard
visible_opponents_json:
{"Maya": [{"rank": "5", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}], "Marcus": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}], "Priya": [{"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "spades"}, {"rank": "5", "suit": "hearts"}]}


game_id: 65c2fed5-5f22-422d-b9da-66ff1fe747a5
timestamp: 2026-01-25 00:10:03.757316
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 6 for 5 at pos 1
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 65c2fed5-5f22-422d-b9da-66ff1fe747a5
timestamp: 2026-01-25 00:10:03.763322
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 65c2fed5-5f22-422d-b9da-66ff1fe747a5
timestamp: 2026-01-25 00:10:03.769713
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "K", "suit": "diamonds"}
decision_reason: swapped 5 for K at pos 4
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 65c2fed5-5f22-422d-b9da-66ff1fe747a5
timestamp: 2026-01-25 00:10:03.776054
player_id: cpu_2
player_name: Marcus
action: take_discard
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: took K from discard
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}]

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


game_id: 65c2fed5-5f22-422d-b9da-66ff1fe747a5
timestamp: 2026-01-25 00:10:03.782740
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped K for 8 at pos 4
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}]

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


game_id: 65c2fed5-5f22-422d-b9da-66ff1fe747a5
timestamp: 2026-01-25 00:10:03.789479
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 65c2fed5-5f22-422d-b9da-66ff1fe747a5
timestamp: 2026-01-25 00:10:03.796007
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 8 for 5 at pos 2
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 65c2fed5-5f22-422d-b9da-66ff1fe747a5
timestamp: 2026-01-25 00:10:03.802403
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 65c2fed5-5f22-422d-b9da-66ff1fe747a5
timestamp: 2026-01-25 00:10:03.808417
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 5 for 6 at pos 1
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 65c2fed5-5f22-422d-b9da-66ff1fe747a5
timestamp: 2026-01-25 00:10:03.814754
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 65c2fed5-5f22-422d-b9da-66ff1fe747a5
timestamp: 2026-01-25 00:10:03.820774
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "A", "suit": "diamonds"}
decision_reason: swapped 6 for A at pos 0
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 65c2fed5-5f22-422d-b9da-66ff1fe747a5
timestamp: 2026-01-25 00:10:03.827023
player_id: cpu_2
player_name: Marcus
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": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}]

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


game_id: 65c2fed5-5f22-422d-b9da-66ff1fe747a5
timestamp: 2026-01-25 00:10:03.833742
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped A for 4 at pos 0
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}]

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


game_id: 65c2fed5-5f22-422d-b9da-66ff1fe747a5
timestamp: 2026-01-25 00:10:03.840101
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 65c2fed5-5f22-422d-b9da-66ff1fe747a5
timestamp: 2026-01-25 00:10:03.846512
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 4 for 8 at pos 2
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 65c2fed5-5f22-422d-b9da-66ff1fe747a5
timestamp: 2026-01-25 00:10:03.853023
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 65c2fed5-5f22-422d-b9da-66ff1fe747a5
timestamp: 2026-01-25 00:10:03.859664
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 2 for 6 at pos 4
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 65c2fed5-5f22-422d-b9da-66ff1fe747a5
timestamp: 2026-01-25 00:10:03.866001
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 65c2fed5-5f22-422d-b9da-66ff1fe747a5
timestamp: 2026-01-25 00:10:03.872341
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 6 for J at pos 3
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 65c2fed5-5f22-422d-b9da-66ff1fe747a5
timestamp: 2026-01-25 00:10:03.878954
player_id: cpu_2
player_name: Marcus
action: draw_deck
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}]

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


game_id: 65c2fed5-5f22-422d-b9da-66ff1fe747a5
timestamp: 2026-01-25 00:10:03.891929
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 65c2fed5-5f22-422d-b9da-66ff1fe747a5
timestamp: 2026-01-25 00:10:03.905044
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 65c2fed5-5f22-422d-b9da-66ff1fe747a5
timestamp: 2026-01-25 00:10:03.911348
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped 9 for 10 at pos 2
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:03.929364
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: K
card_suit: diamonds
decision_reason: took K from discard
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:03.935657
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped K for Q at pos 1
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:03.942212
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 10
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:03.954797
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 10
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 10 from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": true}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:03.964451
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 10
card_suit: spades
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 10 for J at pos 2
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": true}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:03.971625
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Sofia": [{"rank": "K", "suit": "diamonds"}, {"rank": "10", "suit": "diamonds"}], "Sage": [{"rank": "5", "suit": "spades"}, {"rank": "3", "suit": "spades"}], "Diego": [{"rank": "8", "suit": "diamonds"}, {"rank": "10", "suit": "spades"}, {"rank": "10", "suit": "hearts"}]}


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:03.977756
player_id: cpu_3
player_name: Priya
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped K for 9 at pos 2
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Sofia": [{"rank": "K", "suit": "diamonds"}, {"rank": "10", "suit": "diamonds"}], "Sage": [{"rank": "5", "suit": "spades"}, {"rank": "3", "suit": "spades"}], "Diego": [{"rank": "8", "suit": "diamonds"}, {"rank": "10", "suit": "spades"}, {"rank": "10", "suit": "hearts"}]}


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:03.984500
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:03.990981
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 7 for 10 at pos 3
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:03.997389
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.003489
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "2", "suit": "spades"}
decision_reason: swapped 3 for 2 at pos 2
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.009823
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": true}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.017969
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped 2 for 10 at pos 2
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": true}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.024184
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.032336
player_id: cpu_3
player_name: Priya
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: swapped A for 9 at pos 4
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.038711
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.044709
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped K for 7 at pos 3
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.051255
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.063714
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": true}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.070204
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: swapped 6 for 10 at pos 5
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.076214
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.088305
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.094335
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "A", "suit": "diamonds"}
decision_reason: swapped 3 for A at pos 5
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.101345
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: took A from discard
visible_opponents_json:
{"Sofia": [{"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}], "Diego": [{"rank": "8", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}, {"rank": "6", "suit": "hearts"}], "Priya": [{"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}]}


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.107908
player_id: cpu_1
player_name: Sage
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped A for 5 at pos 1
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.114339
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.120317
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 5 for 8 at pos 1
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.126232
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}], "Sage": [{"rank": "A", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}, {"rank": "3", "suit": "spades"}], "Diego": [{"rank": "5", "suit": "spades"}, {"rank": "2", "suit": "spades"}, {"rank": "6", "suit": "hearts"}]}


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.133400
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 7 for Q at pos 1
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.139531
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.151396
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.167999
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.174020
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 4 for 6 at pos 5
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.180130
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.192719
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "A", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}, {"rank": "3", "suit": "spades"}], "Diego": [{"rank": "5", "suit": "spades"}, {"rank": "2", "suit": "spades"}, {"rank": "4", "suit": "spades"}], "Priya": [{"rank": "7", "suit": "spades"}, {"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}]}


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.205514
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 10
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}], "Diego": [{"rank": "5", "suit": "spades"}, {"rank": "2", "suit": "spades"}, {"rank": "4", "suit": "spades"}], "Priya": [{"rank": "7", "suit": "spades"}, {"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}]}


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.223574
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 4 for 5 at pos 1
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.229472
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 5 from discard
visible_opponents_json:
{"Sofia": [{"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}], "Sage": [{"rank": "A", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}, {"rank": "3", "suit": "spades"}], "Diego": [{"rank": "4", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}, {"rank": "4", "suit": "spades"}]}


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.235317
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 5 for 7 at pos 1
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.241291
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: A
card_suit: spades
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "A", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}, {"rank": "3", "suit": "spades"}], "Diego": [{"rank": "4", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}, {"rank": "4", "suit": "spades"}], "Priya": [{"rank": "5", "suit": "spades"}, {"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}]}


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.247488
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped A for 3 at pos 5
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.253905
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "spades"}], "Diego": [{"rank": "4", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}, {"rank": "4", "suit": "spades"}], "Priya": [{"rank": "5", "suit": "spades"}, {"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}]}


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.266909
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.273088
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 6 for J at pos 4
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.279360
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.285633
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped 5 for 3 at pos 3
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.291345
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.297431
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 3 for 4 at pos 2
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.303431
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 4 from discard
visible_opponents_json:
{"Sofia": [{"rank": "K", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "spades"}], "Diego": [{"rank": "4", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}, {"rank": "6", "suit": "spades"}, {"rank": "4", "suit": "spades"}], "Priya": [{"rank": "5", "suit": "spades"}, {"rank": "K", "suit": "hearts"}, {"rank": "5", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}]}


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.309179
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 4 for 5 at pos 4
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.315261
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.321239
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 5 for 6 at pos 4
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.327774
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.334472
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "2", "suit": "clubs"}
decision_reason: swapped 6 for 2 at pos 0
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.341869
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.347981
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped 2 for 3 at pos 2
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.354313
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.360360
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 3 for 4 at pos 4
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.366141
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.372139
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 4 for 5 at pos 4
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.378155
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


