# moves

game_id: bf1dc4e1-f32d-4d74-936e-46c3f2c1dccf
timestamp: 2026-01-24 18:51:57.454076
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: 9
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}], "River": [{"rank": "5", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "5", "suit": "hearts"}, {"rank": "7", "suit": "diamonds"}], "Diego": [{"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}]}


game_id: bf1dc4e1-f32d-4d74-936e-46c3f2c1dccf
timestamp: 2026-01-24 18:51:57.466468
player_id: cpu_1
player_name: Sofia
action: draw_deck
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}], "River": [{"rank": "5", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "5", "suit": "hearts"}, {"rank": "7", "suit": "diamonds"}], "Diego": [{"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}]}


game_id: bf1dc4e1-f32d-4d74-936e-46c3f2c1dccf
timestamp: 2026-01-24 18:51:57.472401
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 4 for 6 at pos 3
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}]

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


game_id: bf1dc4e1-f32d-4d74-936e-46c3f2c1dccf
timestamp: 2026-01-24 18:51:57.478405
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: bf1dc4e1-f32d-4d74-936e-46c3f2c1dccf
timestamp: 2026-01-24 18:51:57.490195
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}], "Sofia": [{"rank": "A", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}], "River": [{"rank": "5", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "5", "suit": "hearts"}, {"rank": "7", "suit": "diamonds"}]}


game_id: bf1dc4e1-f32d-4d74-936e-46c3f2c1dccf
timestamp: 2026-01-24 18:51:57.496722
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 3 for 5 at pos 4
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}]

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


game_id: bf1dc4e1-f32d-4d74-936e-46c3f2c1dccf
timestamp: 2026-01-24 18:51:57.502709
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "A", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}], "River": [{"rank": "5", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "5", "suit": "hearts"}, {"rank": "7", "suit": "diamonds"}], "Diego": [{"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "clubs"}]}


game_id: bf1dc4e1-f32d-4d74-936e-46c3f2c1dccf
timestamp: 2026-01-24 18:51:57.508622
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 4 for 5 at pos 4
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}]

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


game_id: bf1dc4e1-f32d-4d74-936e-46c3f2c1dccf
timestamp: 2026-01-24 18:51:57.514427
player_id: cpu_1
player_name: Sofia
action: draw_deck
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}]

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


game_id: bf1dc4e1-f32d-4d74-936e-46c3f2c1dccf
timestamp: 2026-01-24 18:51:57.520340
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "A", "suit": "spades"}
decision_reason: swapped A for A at pos 5
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: bf1dc4e1-f32d-4d74-936e-46c3f2c1dccf
timestamp: 2026-01-24 18:51:57.526703
player_id: cpu_2
player_name: River
action: take_discard
card_rank: A
card_suit: spades
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: took A from discard
visible_opponents_json:
{"Sage": [{"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}], "Sofia": [{"rank": "A", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}], "Diego": [{"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "clubs"}]}


game_id: bf1dc4e1-f32d-4d74-936e-46c3f2c1dccf
timestamp: 2026-01-24 18:51:57.532378
player_id: cpu_2
player_name: River
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped A for 7 at pos 5
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: bf1dc4e1-f32d-4d74-936e-46c3f2c1dccf
timestamp: 2026-01-24 18:51:57.538026
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}]

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


game_id: bf1dc4e1-f32d-4d74-936e-46c3f2c1dccf
timestamp: 2026-01-24 18:51:57.549658
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}]

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


game_id: bf1dc4e1-f32d-4d74-936e-46c3f2c1dccf
timestamp: 2026-01-24 18:51:57.561862
player_id: cpu_1
player_name: Sofia
action: draw_deck
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: bf1dc4e1-f32d-4d74-936e-46c3f2c1dccf
timestamp: 2026-01-24 18:51:57.581559
player_id: cpu_2
player_name: River
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "2", "suit": "spades"}
decision_reason: swapped 5 for 2 at pos 3
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}]


game_id: bf1dc4e1-f32d-4d74-936e-46c3f2c1dccf
timestamp: 2026-01-24 18:51:57.587747
player_id: cpu_3
player_name: Diego
action: take_discard
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 2 from discard
visible_opponents_json:
{"Sage": [{"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}], "Sofia": [{"rank": "A", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}], "River": [{"rank": "5", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}, {"rank": "A", "suit": "spades"}]}


game_id: bf1dc4e1-f32d-4d74-936e-46c3f2c1dccf
timestamp: 2026-01-24 18:51:57.593737
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped 2 for 3 at pos 4
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}]

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


game_id: bf1dc4e1-f32d-4d74-936e-46c3f2c1dccf
timestamp: 2026-01-24 18:51:57.599616
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "A", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}], "River": [{"rank": "5", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Diego": [{"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "spades"}]}


game_id: bf1dc4e1-f32d-4d74-936e-46c3f2c1dccf
timestamp: 2026-01-24 18:51:57.611412
player_id: cpu_1
player_name: Sofia
action: draw_deck
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}], "River": [{"rank": "5", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Diego": [{"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "spades"}]}


game_id: bf1dc4e1-f32d-4d74-936e-46c3f2c1dccf
timestamp: 2026-01-24 18:51:57.624204
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: bf1dc4e1-f32d-4d74-936e-46c3f2c1dccf
timestamp: 2026-01-24 18:51:57.630239
player_id: cpu_2
player_name: River
action: swap
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 8 for 6 at pos 0
hand_json:
[{"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: bf1dc4e1-f32d-4d74-936e-46c3f2c1dccf
timestamp: 2026-01-24 18:51:57.636814
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}]

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


game_id: bf1dc4e1-f32d-4d74-936e-46c3f2c1dccf
timestamp: 2026-01-24 18:51:57.649693
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "A", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}], "River": [{"rank": "8", "suit": "hearts"}, {"rank": "5", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Diego": [{"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "spades"}]}


game_id: bf1dc4e1-f32d-4d74-936e-46c3f2c1dccf
timestamp: 2026-01-24 18:51:57.662333
player_id: cpu_1
player_name: Sofia
action: draw_deck
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}], "River": [{"rank": "8", "suit": "hearts"}, {"rank": "5", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Diego": [{"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "spades"}]}


game_id: bf1dc4e1-f32d-4d74-936e-46c3f2c1dccf
timestamp: 2026-01-24 18:51:57.668127
player_id: cpu_1
player_name: Sofia
action: discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: discarded 7
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:57.685114
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:57.691037
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped 5 for Q at pos 4
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:57.696986
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took Q from discard
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:57.702954
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped Q for 7 at pos 0
hand_json:
[{"rank": "Q", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:57.708907
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Maya": [{"rank": "2", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}], "Marcus": [{"rank": "Q", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}, {"rank": "Q", "suit": "diamonds"}], "River": [{"rank": "4", "suit": "clubs"}, {"rank": "J", "suit": "spades"}]}


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:57.714574
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 7 for J at pos 2
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Maya": [{"rank": "2", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}], "Marcus": [{"rank": "Q", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}, {"rank": "Q", "suit": "diamonds"}], "River": [{"rank": "4", "suit": "clubs"}, {"rank": "J", "suit": "spades"}]}


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:57.720379
player_id: cpu_3
player_name: River
action: take_discard
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took J from discard
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:57.726504
player_id: cpu_3
player_name: River
action: swap
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: swapped J for 10 at pos 2
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:57.732176
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:57.749604
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:57.762616
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Maya": [{"rank": "2", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}], "Marcus": [{"rank": "Q", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}, {"rank": "Q", "suit": "diamonds"}], "River": [{"rank": "4", "suit": "clubs"}, {"rank": "J", "suit": "diamonds"}, {"rank": "J", "suit": "spades"}]}


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:57.769011
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 6 for 7 at pos 2
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Maya": [{"rank": "2", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}], "Marcus": [{"rank": "Q", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}, {"rank": "Q", "suit": "diamonds"}], "River": [{"rank": "4", "suit": "clubs"}, {"rank": "J", "suit": "diamonds"}, {"rank": "J", "suit": "spades"}]}


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:57.775352
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:57.782166
player_id: cpu_3
player_name: River
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 7 for J at pos 2
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:57.788906
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "Q", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}, {"rank": "Q", "suit": "diamonds"}], "Kenji": [{"rank": "6", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}], "River": [{"rank": "4", "suit": "clubs"}, {"rank": "7", "suit": "clubs"}, {"rank": "J", "suit": "spades"}]}


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:57.796068
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 3 for 5 at pos 4
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:57.801809
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 5 from discard
visible_opponents_json:
{"Maya": [{"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}], "Kenji": [{"rank": "6", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}], "River": [{"rank": "4", "suit": "clubs"}, {"rank": "7", "suit": "clubs"}, {"rank": "J", "suit": "spades"}]}


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:57.807846
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 5 for 8 at pos 5
hand_json:
[{"rank": "Q", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:57.813730
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:57.819387
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 4 for 6 at pos 2
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:57.825051
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:57.830862
player_id: cpu_3
player_name: River
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped 6 for J at pos 5
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:57.836536
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:57.848231
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 8 from discard
hand_json:
[{"rank": "Q", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:57.854049
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped 8 for Q at pos 0
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:57.860134
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:57.873192
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:57.879198
player_id: cpu_3
player_name: River
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 5 for 7 at pos 2
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:57.884825
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "8", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}, {"rank": "Q", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}], "Kenji": [{"rank": "4", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}], "River": [{"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "spades"}, {"rank": "6", "suit": "spades"}]}


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:57.895883
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:57.901423
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 7 for Q at pos 3
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:57.907190
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}], "Marcus": [{"rank": "8", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}, {"rank": "7", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}], "River": [{"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "spades"}, {"rank": "6", "suit": "spades"}]}


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:57.912841
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped 3 for 4 at pos 2
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:57.918634
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:57.924001
player_id: cpu_3
player_name: River
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "A", "suit": "diamonds"}
decision_reason: swapped 4 for A at pos 3
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:57.930032
player_id: cpu_0
player_name: Maya
action: take_discard
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took A from discard
visible_opponents_json:
{"Marcus": [{"rank": "8", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}, {"rank": "7", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}], "Kenji": [{"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}], "River": [{"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "spades"}, {"rank": "4", "suit": "spades"}, {"rank": "6", "suit": "spades"}]}


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:57.936058
player_id: cpu_0
player_name: Maya
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped A for 3 at pos 4
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:57.941785
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:57.947674
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 3 for 8 at pos 0
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:57.953462
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 10
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:57.964832
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:57.976672
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: A
card_suit: spades
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:57.983357
player_id: cpu_0
player_name: Maya
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "K", "suit": "hearts"}
decision_reason: swapped A for K at pos 1
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:57.989101
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: took K from discard
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:57.995622
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped K for 7 at pos 3
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:58.004491
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "A", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}], "Marcus": [{"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}], "River": [{"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "spades"}, {"rank": "4", "suit": "spades"}, {"rank": "6", "suit": "spades"}]}


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:58.016006
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "A", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}], "Marcus": [{"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}], "Kenji": [{"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}]}


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:58.021918
player_id: cpu_3
player_name: River
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 3 for 6 at pos 5
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:58.027366
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 9
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:58.039126
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:58.045036
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 2 for 5 at pos 2
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:58.051014
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: K
card_suit: spades
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "A", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}], "Marcus": [{"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}], "River": [{"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "spades"}, {"rank": "4", "suit": "spades"}, {"rank": "3", "suit": "spades"}]}


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:58.057029
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped K for 3 at pos 2
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:58.063401
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:58.070001
player_id: cpu_3
player_name: River
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 3 for 5 at pos 2
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:58.076885
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}], "Kenji": [{"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}], "River": [{"rank": "4", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}, {"rank": "4", "suit": "spades"}, {"rank": "3", "suit": "spades"}]}


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:58.089478
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:58.100718
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:58.118558
player_id: cpu_3
player_name: River
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped K for 4 at pos 0
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:58.128486
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}], "Kenji": [{"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}], "River": [{"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}, {"rank": "4", "suit": "spades"}, {"rank": "3", "suit": "spades"}]}


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:58.134914
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "A", "suit": "spades"}
decision_reason: swapped 2 for A at pos 1
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:58.142964
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: A
card_suit: spades
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: took A from discard
visible_opponents_json:
{"Maya": [{"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}], "Kenji": [{"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}], "River": [{"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}, {"rank": "4", "suit": "spades"}, {"rank": "3", "suit": "spades"}]}


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:58.148711
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped A for 5 at pos 5
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:58.154699
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}], "Marcus": [{"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "River": [{"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}, {"rank": "4", "suit": "spades"}, {"rank": "3", "suit": "spades"}]}


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:58.165923
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:58.171767
player_id: cpu_3
player_name: River
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped 2 for 4 at pos 3
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:58.177463
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:58.183249
player_id: cpu_0
player_name: Maya
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped A for Q at pos 5
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:58.190746
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: 9
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:58.206785
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Marcus": [{"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "River": [{"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "spades"}]}


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:58.216457
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 5 for 4 at pos 4
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:58.223158
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:58.235176
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:58.246520
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Kenji": [{"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}], "River": [{"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "spades"}]}


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:58.324548
player_id: cpu_3
player_name: River
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 5 for 6 at pos 1
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:58.330259
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Kenji": [{"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}], "River": [{"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}, {"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "spades"}]}


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:58.342717
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Kenji": [{"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}], "River": [{"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}, {"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "spades"}]}


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:58.354894
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Marcus": [{"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "River": [{"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}, {"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "spades"}]}


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:58.395126
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "A", "suit": "hearts"}
decision_reason: swapped 5 for A at pos 4
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}]


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:58.401233
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took A from discard
visible_opponents_json:
{"Maya": [{"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Marcus": [{"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}, {"rank": "5", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "River": [{"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}, {"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "spades"}]}


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:58.407635
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped A for 5 at pos 4
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:58.414061
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 5 from discard
visible_opponents_json:
{"Maya": [{"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Marcus": [{"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}, {"rank": "5", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Kenji": [{"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}]}


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:58.420119
player_id: cpu_3
player_name: River
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped 5 for 4 at pos 4
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:58.426310
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}, {"rank": "5", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Kenji": [{"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}], "River": [{"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}, {"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "3", "suit": "spades"}]}


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:58.437952
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:58.449310
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 3c2ca635-513d-4f84-8f99-07a47f593608
timestamp: 2026-01-24 18:51:58.454964
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 4 for 6 at pos 5
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.471804
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: A
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "6", "suit": "diamonds"}, {"rank": "J", "suit": "clubs"}], "Sage": [{"rank": "K", "suit": "hearts"}, {"rank": "2", "suit": "hearts"}], "Priya": [{"rank": "Q", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}]}


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.477486
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "2", "suit": "clubs"}
decision_reason: swapped A for 2 at pos 0
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "6", "suit": "diamonds"}, {"rank": "J", "suit": "clubs"}], "Sage": [{"rank": "K", "suit": "hearts"}, {"rank": "2", "suit": "hearts"}], "Priya": [{"rank": "Q", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}]}


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.483530
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.489566
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 2 for J at pos 4
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.495518
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 9
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.501523
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 9
card_suit: spades
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped 9 for 9 at pos 3
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.507429
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.513777
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped 6 for Q at pos 1
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.520049
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}]

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


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.532628
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: A
card_suit: diamonds
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": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.538238
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped A for 6 at pos 0
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.543956
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.549657
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped 6 for 9 at pos 3
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.555424
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.566962
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}], "Sage": [{"rank": "K", "suit": "hearts"}, {"rank": "6", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}], "Priya": [{"rank": "6", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}]}


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.580302
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.598239
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 5 for 6 at pos 3
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}]


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.604633
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 6 from discard
visible_opponents_json:
{"Sofia": [{"rank": "A", "suit": "spades"}, {"rank": "4", "suit": "spades"}, {"rank": "A", "suit": "hearts"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}], "Sage": [{"rank": "K", "suit": "hearts"}, {"rank": "5", "suit": "spades"}, {"rank": "2", "suit": "hearts"}]}


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.610980
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "hearts"}
decision_reason: swapped 6 for 3 at pos 4
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.617728
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 3 from discard
visible_opponents_json:
{"Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}], "Sage": [{"rank": "K", "suit": "hearts"}, {"rank": "5", "suit": "spades"}, {"rank": "2", "suit": "hearts"}], "Priya": [{"rank": "6", "suit": "hearts"}, {"rank": "6", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}]}


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.624491
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "K", "suit": "spades"}
decision_reason: swapped 3 for K at pos 5
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.630109
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: K
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took K from discard
visible_opponents_json:
{"Sofia": [{"rank": "A", "suit": "spades"}, {"rank": "4", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}], "Sage": [{"rank": "K", "suit": "hearts"}, {"rank": "5", "suit": "spades"}, {"rank": "2", "suit": "hearts"}], "Priya": [{"rank": "6", "suit": "hearts"}, {"rank": "6", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}]}


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.636459
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "A", "suit": "diamonds"}
decision_reason: swapped K for A at pos 0
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.642154
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took A from discard
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.647952
player_id: cpu_2
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 3
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.653494
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.662800
player_id: cpu_3
player_name: Priya
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped K for 6 at pos 1
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.668310
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.679802
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.685433
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 8 for 5 at pos 3
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.691243
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: J
card_suit: spades
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.704792
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.711182
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 3 for 4 at pos 3
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.717119
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "spades"}, {"rank": "8", "suit": "spades"}, {"rank": "2", "suit": "clubs"}], "Sage": [{"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}], "Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "spades"}, {"rank": "6", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}]}


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.723087
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped A for 4 at pos 2
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.728899
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.734531
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped 4 for Q at pos 5
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.740225
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "A", "suit": "spades"}, {"rank": "A", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}], "Kenji": [{"rank": "K", "suit": "spades"}, {"rank": "8", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "4", "suit": "spades"}], "Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "spades"}, {"rank": "6", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}]}


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.752391
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.758421
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped 7 for 10 at pos 2
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.764643
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.770766
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 4 for 9 at pos 1
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.777048
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.783261
player_id: cpu_1
player_name: Kenji
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": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.788932
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "A", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}], "Kenji": [{"rank": "K", "suit": "spades"}, {"rank": "7", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}, {"rank": "4", "suit": "spades"}], "Priya": [{"rank": "K", "suit": "clubs"}, {"rank": "7", "suit": "spades"}, {"rank": "3", "suit": "spades"}, {"rank": "6", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}]}


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.794801
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped 3 for Q at pos 2
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.800607
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.806454
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 2 for 7 at pos 2
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.812615
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.824635
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.830801
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 3 for 7 at pos 3
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.837350
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 10
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.849478
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.855483
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: swapped 6 for 10 at pos 0
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.861106
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}, {"rank": "4", "suit": "spades"}], "Sage": [{"rank": "K", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}], "Priya": [{"rank": "6", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "spades"}, {"rank": "6", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}]}


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.867431
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped K for 4 at pos 1
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.873422
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.879110
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 4 for J at pos 2
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.885245
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "A", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}], "Kenji": [{"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}, {"rank": "4", "suit": "spades"}], "Priya": [{"rank": "6", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "spades"}, {"rank": "6", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}]}


game_id: 858c59fe-d409-497d-9413-87bf155499dc
timestamp: 2026-01-24 18:51:58.891105
player_id: cpu_2
player_name: Sage
action: discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: discarded 6
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: b2ee4fb3-a7ca-43a6-a461-ba7f78f3941c
timestamp: 2026-01-24 18:51:58.908771
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: 9
card_suit: spades
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: b2ee4fb3-a7ca-43a6-a461-ba7f78f3941c
timestamp: 2026-01-24 18:51:58.915103
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 9
card_suit: spades
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 9 for 5 at pos 3
hand_json:
[{"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: b2ee4fb3-a7ca-43a6-a461-ba7f78f3941c
timestamp: 2026-01-24 18:51:58.920937
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: A
card_suit: spades
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: b2ee4fb3-a7ca-43a6-a461-ba7f78f3941c
timestamp: 2026-01-24 18:51:58.926913
player_id: cpu_1
player_name: River
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped A for 5 at pos 4
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: b2ee4fb3-a7ca-43a6-a461-ba7f78f3941c
timestamp: 2026-01-24 18:51:58.933291
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: b2ee4fb3-a7ca-43a6-a461-ba7f78f3941c
timestamp: 2026-01-24 18:51:58.945858
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: b2ee4fb3-a7ca-43a6-a461-ba7f78f3941c
timestamp: 2026-01-24 18:51:58.952120
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped A for 8 at pos 3
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: b2ee4fb3-a7ca-43a6-a461-ba7f78f3941c
timestamp: 2026-01-24 18:51:58.958034
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: b2ee4fb3-a7ca-43a6-a461-ba7f78f3941c
timestamp: 2026-01-24 18:51:58.969252
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: b2ee4fb3-a7ca-43a6-a461-ba7f78f3941c
timestamp: 2026-01-24 18:51:58.976066
player_id: cpu_1
player_name: River
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped 3 for 3 at pos 3
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: b2ee4fb3-a7ca-43a6-a461-ba7f78f3941c
timestamp: 2026-01-24 18:51:58.981877
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: b2ee4fb3-a7ca-43a6-a461-ba7f78f3941c
timestamp: 2026-01-24 18:51:58.987485
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 3 for 6 at pos 4
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: b2ee4fb3-a7ca-43a6-a461-ba7f78f3941c
timestamp: 2026-01-24 18:51:58.993098
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: b2ee4fb3-a7ca-43a6-a461-ba7f78f3941c
timestamp: 2026-01-24 18:51:58.998774
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 3 for 5 at pos 2
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: b2ee4fb3-a7ca-43a6-a461-ba7f78f3941c
timestamp: 2026-01-24 18:51:59.005302
player_id: cpu_0
player_name: Priya
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: took 5 from discard
visible_opponents_json:
{"River": [{"rank": "A", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "K", "suit": "spades"}], "Sofia": [{"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "clubs"}], "Kenji": [{"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}]}


game_id: b2ee4fb3-a7ca-43a6-a461-ba7f78f3941c
timestamp: 2026-01-24 18:51:59.010721
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped 5 for 9 at pos 3
hand_json:
[{"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: b2ee4fb3-a7ca-43a6-a461-ba7f78f3941c
timestamp: 2026-01-24 18:51:59.017166
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: b2ee4fb3-a7ca-43a6-a461-ba7f78f3941c
timestamp: 2026-01-24 18:51:59.029494
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: b2ee4fb3-a7ca-43a6-a461-ba7f78f3941c
timestamp: 2026-01-24 18:51:59.041388
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: b2ee4fb3-a7ca-43a6-a461-ba7f78f3941c
timestamp: 2026-01-24 18:51:59.047048
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 4 for 8 at pos 1
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: b2ee4fb3-a7ca-43a6-a461-ba7f78f3941c
timestamp: 2026-01-24 18:51:59.053573
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: b2ee4fb3-a7ca-43a6-a461-ba7f78f3941c
timestamp: 2026-01-24 18:51:59.059611
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 3 for 6 at pos 1
hand_json:
[{"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: b2ee4fb3-a7ca-43a6-a461-ba7f78f3941c
timestamp: 2026-01-24 18:51:59.065326
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "Sofia": [{"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "clubs"}], "Kenji": [{"rank": "4", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}]}


game_id: b2ee4fb3-a7ca-43a6-a461-ba7f78f3941c
timestamp: 2026-01-24 18:51:59.071081
player_id: cpu_1
player_name: River
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 4 for 8 at pos 2
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: b2ee4fb3-a7ca-43a6-a461-ba7f78f3941c
timestamp: 2026-01-24 18:51:59.076746
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: Q
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "K", "suit": "spades"}], "Kenji": [{"rank": "4", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}]}


game_id: b2ee4fb3-a7ca-43a6-a461-ba7f78f3941c
timestamp: 2026-01-24 18:51:59.088239
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: b2ee4fb3-a7ca-43a6-a461-ba7f78f3941c
timestamp: 2026-01-24 18:51:59.101108
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: b2ee4fb3-a7ca-43a6-a461-ba7f78f3941c
timestamp: 2026-01-24 18:51:59.119936
player_id: cpu_1
player_name: River
action: swap
card_rank: J
card_suit: spades
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped J for 7 at pos 0
hand_json:
[{"rank": "J", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]


game_id: b2ee4fb3-a7ca-43a6-a461-ba7f78f3941c
timestamp: 2026-01-24 18:51:59.126536
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "J", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "K", "suit": "spades"}], "Kenji": [{"rank": "4", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}]}


game_id: b2ee4fb3-a7ca-43a6-a461-ba7f78f3941c
timestamp: 2026-01-24 18:51:59.138037
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "J", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "K", "suit": "spades"}], "Sofia": [{"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "clubs"}]}


game_id: b2ee4fb3-a7ca-43a6-a461-ba7f78f3941c
timestamp: 2026-01-24 18:51:59.143682
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped K for 4 at pos 1
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: b2ee4fb3-a7ca-43a6-a461-ba7f78f3941c
timestamp: 2026-01-24 18:51:59.149507
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "J", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "K", "suit": "spades"}], "Sofia": [{"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "clubs"}], "Kenji": [{"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}]}


game_id: b2ee4fb3-a7ca-43a6-a461-ba7f78f3941c
timestamp: 2026-01-24 18:51:59.155266
player_id: cpu_0
player_name: Priya
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped K for 5 at pos 3
hand_json:
[{"rank": "Q", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.177478
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.189427
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.200091
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took J from discard
hand_json:
[{"rank": "7", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.205735
player_id: cpu_2
player_name: Sage
action: swap
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped J for 9 at pos 2
hand_json:
[{"rank": "7", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.211334
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.216978
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 2 for 5 at pos 1
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.222645
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.228271
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 3 for 6 at pos 1
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.233952
player_id: cpu_1
player_name: River
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.239555
player_id: cpu_1
player_name: River
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped 6 for 10 at pos 1
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.245699
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.251741
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped 5 for 10 at pos 1
hand_json:
[{"rank": "7", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.257328
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.269555
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.275130
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped 3 for Q at pos 4
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.281284
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.287800
player_id: cpu_1
player_name: River
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped K for 6 at pos 1
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.294392
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "7", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.300362
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 6 for J at pos 2
hand_json:
[{"rank": "7", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.306097
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "3", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "spades"}], "River": [{"rank": "K", "suit": "diamonds"}, {"rank": "6", "suit": "diamonds"}, {"rank": "6", "suit": "clubs"}], "Sage": [{"rank": "7", "suit": "spades"}, {"rank": "5", "suit": "clubs"}, {"rank": "6", "suit": "hearts"}, {"rank": "J", "suit": "hearts"}]}


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.312021
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 2 for 4 at pos 3
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.321625
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.332990
player_id: cpu_1
player_name: River
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.338604
player_id: cpu_1
player_name: River
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped 6 for 9 at pos 5
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.344243
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.350039
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 8 for J at pos 5
hand_json:
[{"rank": "7", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.356185
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.361902
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped A for 7 at pos 5
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.369749
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "K", "suit": "diamonds"}, {"rank": "6", "suit": "diamonds"}, {"rank": "6", "suit": "clubs"}, {"rank": "6", "suit": "spades"}], "Sage": [{"rank": "7", "suit": "spades"}, {"rank": "5", "suit": "clubs"}, {"rank": "6", "suit": "hearts"}, {"rank": "8", "suit": "diamonds"}], "Marcus": [{"rank": "2", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}]}


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.375856
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped A for 3 at pos 1
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.382278
player_id: cpu_1
player_name: River
action: take_discard
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.388821
player_id: cpu_1
player_name: River
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 3 for 6 at pos 2
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.394999
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "7", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.401503
player_id: cpu_2
player_name: Sage
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": "7", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.407447
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "3", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.413678
player_id: cpu_3
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 4
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.419075
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.430422
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: K
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.436339
player_id: cpu_1
player_name: River
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped K for 6 at pos 4
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.441977
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "7", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.447671
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 6 for 8 at pos 5
hand_json:
[{"rank": "7", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.457172
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.462944
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "K", "suit": "hearts"}
decision_reason: swapped 5 for K at pos 0
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.469546
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took K from discard
visible_opponents_json:
{"River": [{"rank": "K", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "6", "suit": "spades"}], "Sage": [{"rank": "7", "suit": "spades"}, {"rank": "5", "suit": "clubs"}, {"rank": "6", "suit": "hearts"}, {"rank": "6", "suit": "diamonds"}, {"rank": "6", "suit": "clubs"}], "Marcus": [{"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}]}


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.475492
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped K for 3 at pos 4
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.481915
player_id: cpu_1
player_name: River
action: take_discard
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.488121
player_id: cpu_1
player_name: River
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 3 for 6 at pos 5
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.494040
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: A
card_suit: spades
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.500034
player_id: cpu_2
player_name: Sage
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped A for 7 at pos 0
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.506697
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.517928
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.523403
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 4 for 7 at pos 5
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.529136
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.534772
player_id: cpu_1
player_name: River
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped A for 3 at pos 2
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.541007
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.547021
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 3 for 6 at pos 2
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.552922
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}], "River": [{"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "spades"}], "Sage": [{"rank": "A", "suit": "spades"}, {"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}, {"rank": "6", "suit": "diamonds"}, {"rank": "6", "suit": "clubs"}]}


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.565041
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.577345
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.584074
player_id: cpu_1
player_name: River
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: swapped 4 for 9 at pos 0
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.590235
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.596375
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 3 for 6 at pos 3
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.602138
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}], "River": [{"rank": "4", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "spades"}], "Sage": [{"rank": "A", "suit": "spades"}, {"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}, {"rank": "3", "suit": "clubs"}, {"rank": "6", "suit": "clubs"}]}


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.613656
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "4", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "spades"}], "Sage": [{"rank": "A", "suit": "spades"}, {"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}, {"rank": "3", "suit": "clubs"}, {"rank": "6", "suit": "clubs"}], "Marcus": [{"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}]}


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.619544
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "2", "suit": "clubs"}
decision_reason: swapped 4 for 2 at pos 2
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.625397
player_id: cpu_1
player_name: River
action: take_discard
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.631161
player_id: cpu_1
player_name: River
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped 2 for 4 at pos 0
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.636744
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.642149
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 4 for 6 at pos 5
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.648013
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}], "River": [{"rank": "2", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "spades"}], "Sage": [{"rank": "A", "suit": "spades"}, {"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}, {"rank": "3", "suit": "clubs"}, {"rank": "4", "suit": "spades"}]}


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.659258
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 10
card_suit: spades
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.671060
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.849403
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "2", "suit": "spades"}
decision_reason: swapped 5 for 2 at pos 2
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.855170
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 2 from discard
visible_opponents_json:
{"River": [{"rank": "2", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "spades"}], "Sage": [{"rank": "A", "suit": "spades"}, {"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}, {"rank": "3", "suit": "clubs"}, {"rank": "4", "suit": "spades"}], "Marcus": [{"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "5", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}]}


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.860898
player_id: cpu_0
player_name: Sofia
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": "Q", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.866794
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}], "Sage": [{"rank": "A", "suit": "spades"}, {"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}, {"rank": "3", "suit": "clubs"}, {"rank": "4", "suit": "spades"}], "Marcus": [{"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "5", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}]}


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.879123
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}], "River": [{"rank": "2", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "spades"}], "Marcus": [{"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "5", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}]}


game_id: a27e6e1f-e6a3-4a1a-8b0e-a20c4ab37a7d
timestamp: 2026-01-24 18:51:59.885224
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 3 for 5 at pos 1
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:51:59.903394
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: 6
card_suit: hearts
decision_reason: took 6 from discard
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:51:59.909683
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 6 for 7 at pos 1
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:51:59.915467
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:51:59.922044
player_id: cpu_1
player_name: Priya
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped 3 for Q at pos 1
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:51:59.927682
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:51:59.933177
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 10 for 8 at pos 4
hand_json:
[{"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:51:59.939135
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": true}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:51:59.944788
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped 6 for 9 at pos 5
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:51:59.950502
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:51:59.961853
player_id: cpu_1
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": "3", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:51:59.973627
player_id: cpu_2
player_name: Sage
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": "J", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:51:59.979884
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 7 for 10 at pos 4
hand_json:
[{"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:51:59.986320
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:51:59.998832
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "3", "suit": "clubs"}, {"rank": "4", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Sage": [{"rank": "A", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}], "Diego": [{"rank": "7", "suit": "clubs"}, {"rank": "6", "suit": "clubs"}]}


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.011454
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "6", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "6", "suit": "diamonds"}], "Sage": [{"rank": "A", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}], "Diego": [{"rank": "7", "suit": "clubs"}, {"rank": "6", "suit": "clubs"}]}


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.018098
player_id: cpu_1
player_name: Priya
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped 2 for 4 at pos 2
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.024092
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.030998
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 4 for 9 at pos 2
hand_json:
[{"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.037717
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: A
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "6", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "6", "suit": "diamonds"}], "Priya": [{"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}], "Sage": [{"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}, {"rank": "7", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}]}


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.043975
player_id: cpu_3
player_name: Diego
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped A for 7 at pos 0
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.049773
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}], "Sage": [{"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}, {"rank": "7", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}], "Diego": [{"rank": "A", "suit": "spades"}, {"rank": "6", "suit": "clubs"}]}


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.055691
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 5 for 6 at pos 1
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.061532
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.067639
player_id: cpu_1
player_name: Priya
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped 2 for 3 at pos 1
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.073833
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.079963
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 3 for 7 at pos 4
hand_json:
[{"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.086614
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: 9
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.099731
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.112532
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.141600
player_id: cpu_3
player_name: Diego
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "K", "suit": "diamonds"}
decision_reason: swapped A for K at pos 3
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.149368
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took K from discard
visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}], "Sage": [{"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}, {"rank": "3", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}], "Diego": [{"rank": "A", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}]}


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.155279
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped K for 6 at pos 4
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.161250
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "5", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}], "Sage": [{"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}, {"rank": "3", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}], "Diego": [{"rank": "A", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}]}


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.167351
player_id: cpu_1
player_name: Priya
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "2", "suit": "hearts"}
decision_reason: swapped 5 for 2 at pos 3
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.173856
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: took 2 from discard
visible_opponents_json:
{"Marcus": [{"rank": "5", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}], "Priya": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}], "Diego": [{"rank": "A", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}]}


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.179941
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped 2 for 4 at pos 2
hand_json:
[{"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.186129
player_id: cpu_3
player_name: Diego
action: take_discard
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.192267
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 4 for 6 at pos 5
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.198164
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.204173
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped K for 5 at pos 1
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.210236
player_id: cpu_1
player_name: Priya
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.216325
player_id: cpu_1
player_name: Priya
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped 5 for 3 at pos 0
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.222855
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.235517
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.241458
player_id: cpu_3
player_name: Diego
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped K for 4 at pos 5
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.248017
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.253746
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "A", "suit": "clubs"}
decision_reason: swapped 4 for A at pos 0
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.259639
player_id: cpu_1
player_name: Priya
action: take_discard
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: took A from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.265160
player_id: cpu_1
player_name: Priya
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped A for 5 at pos 0
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.271033
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 10
card_suit: spades
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "4", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}], "Priya": [{"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}], "Diego": [{"rank": "A", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}]}


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.282867
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.289243
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 5 for Q at pos 1
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.295667
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.301850
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped 3 for 4 at pos 0
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.308317
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.319985
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "3", "suit": "spades"}, {"rank": "K", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}], "Priya": [{"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}], "Diego": [{"rank": "A", "suit": "spades"}, {"rank": "5", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}]}


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.325672
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 2 for 4 at pos 5
hand_json:
[{"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.331150
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: 10
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.342796
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.354551
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "3", "suit": "spades"}, {"rank": "K", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}], "Sage": [{"rank": "A", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "clubs"}], "Diego": [{"rank": "A", "suit": "spades"}, {"rank": "5", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}]}


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.360631
player_id: cpu_1
player_name: Priya
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 7 for 7 at pos 5
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.366834
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.373010
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 3 for 4 at pos 3
hand_json:
[{"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.378724
player_id: cpu_3
player_name: Diego
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: took 4 from discard
visible_opponents_json:
{"Marcus": [{"rank": "3", "suit": "spades"}, {"rank": "K", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}], "Priya": [{"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}, {"rank": "7", "suit": "hearts"}], "Sage": [{"rank": "A", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "clubs"}]}


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.384092
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 4 for 5 at pos 1
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.389915
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}, {"rank": "7", "suit": "hearts"}], "Sage": [{"rank": "A", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "clubs"}], "Diego": [{"rank": "A", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}]}


game_id: d98e2ce7-8086-4d72-887d-a94e6842cfa3
timestamp: 2026-01-24 18:52:00.395982
player_id: cpu_0
player_name: Marcus
action: discard
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: discarded J
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": true}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.413939
player_id: cpu_0
player_name: Sage
action: take_discard
card_rank: 5
card_suit: hearts
decision_reason: took 5 from discard
hand_json:
[{"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.420538
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "2", "suit": "hearts"}
decision_reason: swapped 5 for 2 at pos 5
hand_json:
[{"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.427089
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: 2
card_suit: hearts
decision_reason: took 2 from discard
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.433145
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 2 for 8 at pos 1
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.439031
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.444833
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 2 for 6 at pos 3
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.450727
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Sage": [{"rank": "5", "suit": "spades"}, {"rank": "Q", "suit": "spades"}, {"rank": "5", "suit": "hearts"}], "Kenji": [{"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}], "Diego": [{"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}]}


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.456408
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "A", "suit": "spades"}
decision_reason: swapped 6 for A at pos 3
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Sage": [{"rank": "5", "suit": "spades"}, {"rank": "Q", "suit": "spades"}, {"rank": "5", "suit": "hearts"}], "Kenji": [{"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}], "Diego": [{"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}]}


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.462316
player_id: cpu_0
player_name: Sage
action: take_discard
card_rank: A
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took A from discard
hand_json:
[{"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.468154
player_id: cpu_0
player_name: Sage
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped A for Q at pos 4
hand_json:
[{"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.474115
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 10
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.485799
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.491561
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 4 for 5 at pos 1
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.497318
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.503512
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 5 for 7 at pos 4
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.509967
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.522467
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 9
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "5", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "5", "suit": "hearts"}], "Diego": [{"rank": "4", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}], "Marcus": [{"rank": "6", "suit": "spades"}, {"rank": "6", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}]}


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.534776
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: J
card_suit: spades
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.554655
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 4 for 6 at pos 0
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.560166
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}], "Diego": [{"rank": "4", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}], "Marcus": [{"rank": "4", "suit": "spades"}, {"rank": "6", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}]}


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.565943
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 3 for 5 at pos 2
hand_json:
[{"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.571906
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}, {"rank": "5", "suit": "hearts"}], "Diego": [{"rank": "4", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}], "Marcus": [{"rank": "4", "suit": "spades"}, {"rank": "6", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}]}


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.577937
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 4 for 8 at pos 2
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.583991
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}, {"rank": "5", "suit": "hearts"}], "Kenji": [{"rank": "2", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}], "Marcus": [{"rank": "4", "suit": "spades"}, {"rank": "6", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}]}


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.590283
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 5 for J at pos 5
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.596245
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.602048
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped A for 6 at pos 3
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.607921
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.613531
player_id: cpu_0
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 5
hand_json:
[{"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.620019
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 9
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.632060
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: K
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.638575
player_id: cpu_2
player_name: Diego
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped K for 5 at pos 5
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.644732
player_id: cpu_3
player_name: Marcus
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": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.651417
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped 5 for 3 at pos 1
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.657385
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.663089
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 2 for 4 at pos 5
hand_json:
[{"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.669098
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: took 4 from discard
visible_opponents_json:
{"Sage": [{"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}], "Diego": [{"rank": "4", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}, {"rank": "K", "suit": "spades"}], "Marcus": [{"rank": "4", "suit": "spades"}, {"rank": "5", "suit": "clubs"}, {"rank": "A", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}]}


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.675021
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 4 for J at pos 5
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.680615
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.691999
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.697672
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 3 for 5 at pos 1
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.703599
player_id: cpu_0
player_name: Sage
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.709196
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped 5 for Q at pos 0
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.715260
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.728486
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}], "Kenji": [{"rank": "2", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}], "Marcus": [{"rank": "4", "suit": "spades"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}]}


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.740317
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.746275
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped K for 5 at pos 4
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.752145
player_id: cpu_0
player_name: Sage
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": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.758135
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 5 for 7 at pos 3
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.764026
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}], "Diego": [{"rank": "4", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}, {"rank": "K", "suit": "spades"}], "Marcus": [{"rank": "4", "suit": "spades"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}]}


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.769995
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped 2 for 4 at pos 2
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.776038
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: took 4 from discard
visible_opponents_json:
{"Sage": [{"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}], "Kenji": [{"rank": "2", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}], "Marcus": [{"rank": "4", "suit": "spades"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}]}


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.781770
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 4 for Q at pos 4
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.787889
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.794124
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped K for 4 at pos 0
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.800171
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.813119
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.824328
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.830078
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 6 for 8 at pos 0
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.835900
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.842246
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "hearts"}
decision_reason: swapped K for 3 at pos 1
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.848571
player_id: cpu_0
player_name: Sage
action: take_discard
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 3 from discard
visible_opponents_json:
{"Kenji": [{"rank": "2", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}], "Diego": [{"rank": "6", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "K", "suit": "spades"}], "Marcus": [{"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}]}


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.854652
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 3 for 5 at pos 0
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.861402
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "3", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}], "Diego": [{"rank": "6", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "K", "suit": "spades"}], "Marcus": [{"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}]}


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.867658
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped A for 3 at pos 0
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.873697
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.883182
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 3 for 6 at pos 0
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.889267
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.901453
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: Q
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.913533
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.971093
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 5 for 9 at pos 4
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.977684
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "3", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "5", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}], "Marcus": [{"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}]}


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.984192
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 5 for 10 at pos 2
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.990038
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "3", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "5", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}], "Diego": [{"rank": "3", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}, {"rank": "2", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "K", "suit": "spades"}]}


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:00.996082
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 5 for 7 at pos 2
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:01.003057
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "5", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}], "Diego": [{"rank": "3", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}, {"rank": "2", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "K", "suit": "spades"}], "Marcus": [{"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}, {"rank": "5", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}]}


game_id: 6454104c-3132-4203-a7b7-e01eaebbe26d
timestamp: 2026-01-24 18:52:01.009204
player_id: cpu_0
player_name: Sage
action: discard
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: discarded J
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


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

visible_opponents_json:
{"Maya": [{"rank": "7", "suit": "spades"}, {"rank": "3", "suit": "clubs"}], "River": [{"rank": "J", "suit": "spades"}, {"rank": "Q", "suit": "clubs"}], "Sofia": [{"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "spades"}]}


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

visible_opponents_json:
{"Maya": [{"rank": "7", "suit": "spades"}, {"rank": "3", "suit": "clubs"}], "River": [{"rank": "J", "suit": "spades"}, {"rank": "Q", "suit": "clubs"}], "Sofia": [{"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "spades"}]}


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


