# moves

game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.453510
player_id: cpu_1
player_name: Maya
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped A for 7 at pos 5
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.459952
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}]

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


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.472195
player_id: cpu_3
player_name: Priya
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": "A", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.478399
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 7 for 9 at pos 2
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.488355
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.500810
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: J
card_suit: spades
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.513399
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "A", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}], "Maya": [{"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}], "Priya": [{"rank": "7", "suit": "spades"}, {"rank": "2", "suit": "clubs"}]}


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.519867
player_id: cpu_2
player_name: Sage
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped K for 4 at pos 2
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}]

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


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.525854
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.532130
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 4 for 7 at pos 2
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.538366
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}], "Sage": [{"rank": "K", "suit": "hearts"}, {"rank": "3", "suit": "spades"}], "Priya": [{"rank": "4", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}]}


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.544737
player_id: cpu_0
player_name: River
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 2 for 5 at pos 3
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.551177
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 10
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "A", "suit": "spades"}, {"rank": "2", "suit": "hearts"}], "Sage": [{"rank": "K", "suit": "hearts"}, {"rank": "3", "suit": "spades"}], "Priya": [{"rank": "4", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}]}


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.557950
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 10
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped 10 for 3 at pos 1
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.564246
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}]

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


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.570055
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "K", "suit": "diamonds"}
decision_reason: swapped 3 for K at pos 0
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}]

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


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.575775
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: took K from discard
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.581378
player_id: cpu_3
player_name: Priya
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped K for 4 at pos 2
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.587215
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.593237
player_id: cpu_0
player_name: River
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 4 for J at pos 4
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.599662
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.605748
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped 6 for 10 at pos 1
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.611796
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}]

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


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.618189
player_id: cpu_2
player_name: Sage
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped K for 3 at pos 0
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}]

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


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.624441
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.630185
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "A", "suit": "diamonds"}
decision_reason: swapped 3 for A at pos 0
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.636148
player_id: cpu_0
player_name: River
action: take_discard
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took A from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.642001
player_id: cpu_0
player_name: River
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped A for 6 at pos 5
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.647885
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.653743
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 6 for 7 at pos 4
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.659564
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}]

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


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.665575
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 7 for 8 at pos 5
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.671652
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.677849
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 8 for 5 at pos 4
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.686126
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.692416
player_id: cpu_0
player_name: River
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: swapped 5 for 10 at pos 1
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.699408
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.711899
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.717733
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 6 for 7 at pos 5
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.723592
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.729775
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 7 for 8 at pos 4
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.735878
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.748637
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: Q
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "5", "suit": "clubs"}, {"rank": "A", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}], "Sage": [{"rank": "K", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "3", "suit": "spades"}, {"rank": "6", "suit": "spades"}], "Priya": [{"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}, {"rank": "7", "suit": "diamonds"}]}


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.765162
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: K
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.771502
player_id: cpu_2
player_name: Sage
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped K for 6 at pos 5
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.777854
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.784095
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 6 for 7 at pos 4
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.790030
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 7 from discard
visible_opponents_json:
{"Maya": [{"rank": "3", "suit": "diamonds"}, {"rank": "6", "suit": "clubs"}, {"rank": "6", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}], "Sage": [{"rank": "K", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "3", "suit": "spades"}, {"rank": "K", "suit": "spades"}], "Priya": [{"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}, {"rank": "6", "suit": "spades"}]}


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.796391
player_id: cpu_0
player_name: River
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "2", "suit": "diamonds"}
decision_reason: swapped 7 for 2 at pos 0
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.802556
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 2 from discard
visible_opponents_json:
{"River": [{"rank": "7", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "A", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}], "Sage": [{"rank": "K", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "3", "suit": "spades"}, {"rank": "K", "suit": "spades"}], "Priya": [{"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}, {"rank": "6", "suit": "spades"}]}


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.809562
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 2 for 6 at pos 1
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.816192
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.823065
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "A", "suit": "clubs"}
decision_reason: swapped 6 for A at pos 1
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.829773
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took A from discard
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 14f664a4-a8fd-45b3-a126-edfaee3120b5
timestamp: 2026-01-25 00:10:13.836544
player_id: cpu_3
player_name: Priya
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped A for 6 at pos 4
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": true}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:13.856618
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 7
card_suit: spades
decision_reason: took 7 from discard
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:13.864320
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped 7 for 9 at pos 1
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:13.870490
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: K
card_suit: spades
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:13.877351
player_id: cpu_1
player_name: Sage
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped K for 3 at pos 4
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:13.883579
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:13.895696
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:13.901945
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped K for 10 at pos 1
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:13.908432
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:13.915298
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped A for 7 at pos 1
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:13.921436
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:13.933476
player_id: cpu_2
player_name: River
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:13.939554
player_id: cpu_2
player_name: River
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: swapped 7 for 9 at pos 3
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:13.945719
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: J
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:13.957859
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:13.969883
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}], "River": [{"rank": "5", "suit": "clubs"}, {"rank": "7", "suit": "hearts"}], "Marcus": [{"rank": "K", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}]}


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:13.976250
player_id: cpu_1
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 1
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:13.982663
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:13.997429
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
visible_opponents_json:
{"Sofia": [{"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}], "Sage": [{"rank": "2", "suit": "clubs"}, {"rank": "4", "suit": "spades"}, {"rank": "K", "suit": "spades"}], "River": [{"rank": "5", "suit": "clubs"}, {"rank": "7", "suit": "hearts"}]}


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:14.005199
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped 3 for 4 at pos 5
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:14.012927
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 4 from discard
visible_opponents_json:
{"Sage": [{"rank": "2", "suit": "clubs"}, {"rank": "4", "suit": "spades"}, {"rank": "K", "suit": "spades"}], "River": [{"rank": "5", "suit": "clubs"}, {"rank": "7", "suit": "hearts"}], "Marcus": [{"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}]}


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:14.019674
player_id: cpu_0
player_name: Sofia
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": "J", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:14.026442
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:14.033388
player_id: cpu_1
player_name: Sage
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped A for 4 at pos 1
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:14.040131
player_id: cpu_2
player_name: River
action: take_discard
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 4 from discard
visible_opponents_json:
{"Sofia": [{"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}], "Sage": [{"rank": "2", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}], "Marcus": [{"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}]}


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:14.046658
player_id: cpu_2
player_name: River
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 4 for 7 at pos 3
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:14.053199
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:14.065381
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:14.077657
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:14.084339
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "A", "suit": "diamonds"}
decision_reason: swapped 2 for A at pos 1
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:14.090760
player_id: cpu_2
player_name: River
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": "2", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:14.097102
player_id: cpu_2
player_name: River
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped A for 5 at pos 1
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:14.106190
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 5 from discard
visible_opponents_json:
{"Sofia": [{"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}], "Sage": [{"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "spades"}, {"rank": "K", "suit": "spades"}], "River": [{"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}]}


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:14.112620
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "A", "suit": "clubs"}
decision_reason: swapped 5 for A at pos 2
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:14.118808
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took A from discard
visible_opponents_json:
{"Sage": [{"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "spades"}, {"rank": "K", "suit": "spades"}], "River": [{"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}], "Marcus": [{"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}]}


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:14.125507
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "A", "suit": "spades"}
decision_reason: swapped A for A at pos 4
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:14.131964
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: A
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took A from discard
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:14.138472
player_id: cpu_1
player_name: Sage
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped A for 5 at pos 5
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:14.144614
player_id: cpu_2
player_name: River
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:14.150824
player_id: cpu_2
player_name: River
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 5 for 6 at pos 2
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:14.157346
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:14.163956
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 6 for Q at pos 4
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:14.170956
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:14.177327
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped K for 4 at pos 2
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:14.183828
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:14.190133
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 4 for 7 at pos 3
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:14.197695
player_id: cpu_2
player_name: River
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:14.204163
player_id: cpu_2
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 4
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:14.210462
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:14.216557
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 5 for 6 at pos 4
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:14.222931
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:14.229045
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 6 for 6 at pos 5
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:14.235578
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:14.242175
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 6 for 8 at pos 2
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:14.248619
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:14.255020
player_id: cpu_2
player_name: River
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "2", "suit": "diamonds"}
decision_reason: swapped 4 for 2 at pos 0
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:14.261526
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:14.268132
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 2 for 5 at pos 2
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:14.274270
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: d9398fa4-c496-441c-ad56-67cf289a17b9
timestamp: 2026-01-25 00:10:14.280308
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 5 for J at pos 0
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 2294a615-a680-412e-8e9f-57f0339bec54
timestamp: 2026-01-25 00:10:14.296913
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: 2
card_suit: clubs
decision_reason: took 2 from discard
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 2294a615-a680-412e-8e9f-57f0339bec54
timestamp: 2026-01-25 00:10:14.302957
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped 2 for 10 at pos 0
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 2294a615-a680-412e-8e9f-57f0339bec54
timestamp: 2026-01-25 00:10:14.309186
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: K
card_suit: spades
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": true}]

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


game_id: 2294a615-a680-412e-8e9f-57f0339bec54
timestamp: 2026-01-25 00:10:14.315641
player_id: cpu_1
player_name: Priya
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped K for J at pos 5
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 2294a615-a680-412e-8e9f-57f0339bec54
timestamp: 2026-01-25 00:10:14.321765
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: 2294a615-a680-412e-8e9f-57f0339bec54
timestamp: 2026-01-25 00:10:14.334374
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: 2294a615-a680-412e-8e9f-57f0339bec54
timestamp: 2026-01-25 00:10:14.340252
player_id: cpu_3
player_name: River
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 2 for J at pos 3
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: 2294a615-a680-412e-8e9f-57f0339bec54
timestamp: 2026-01-25 00:10:14.346590
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 2294a615-a680-412e-8e9f-57f0339bec54
timestamp: 2026-01-25 00:10:14.359042
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 2294a615-a680-412e-8e9f-57f0339bec54
timestamp: 2026-01-25 00:10:14.364894
player_id: cpu_1
player_name: Priya
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 6 for 5 at pos 0
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 2294a615-a680-412e-8e9f-57f0339bec54
timestamp: 2026-01-25 00:10:14.371009
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: 2294a615-a680-412e-8e9f-57f0339bec54
timestamp: 2026-01-25 00:10:14.376751
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 5 for 6 at pos 2
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: 2294a615-a680-412e-8e9f-57f0339bec54
timestamp: 2026-01-25 00:10:14.382709
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: 2294a615-a680-412e-8e9f-57f0339bec54
timestamp: 2026-01-25 00:10:14.388867
player_id: cpu_3
player_name: River
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "2", "suit": "hearts"}
decision_reason: swapped 6 for 2 at pos 0
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: 2294a615-a680-412e-8e9f-57f0339bec54
timestamp: 2026-01-25 00:10:14.394914
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: 9
card_suit: clubs
discard_top_json: {"rank": "2", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "6", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}, {"rank": "K", "suit": "spades"}], "Kenji": [{"rank": "5", "suit": "clubs"}, {"rank": "4", "suit": "spades"}], "River": [{"rank": "6", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}]}


game_id: 2294a615-a680-412e-8e9f-57f0339bec54
timestamp: 2026-01-25 00:10:14.407471
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 2294a615-a680-412e-8e9f-57f0339bec54
timestamp: 2026-01-25 00:10:14.413498
player_id: cpu_1
player_name: Priya
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped 5 for 3 at pos 4
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 2294a615-a680-412e-8e9f-57f0339bec54
timestamp: 2026-01-25 00:10:14.419833
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: 2294a615-a680-412e-8e9f-57f0339bec54
timestamp: 2026-01-25 00:10:14.428167
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 3 for 5 at pos 2
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: 2294a615-a680-412e-8e9f-57f0339bec54
timestamp: 2026-01-25 00:10:14.434774
player_id: cpu_3
player_name: River
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": "6", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: 2294a615-a680-412e-8e9f-57f0339bec54
timestamp: 2026-01-25 00:10:14.440852
player_id: cpu_3
player_name: River
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 5 for 6 at pos 0
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: 2294a615-a680-412e-8e9f-57f0339bec54
timestamp: 2026-01-25 00:10:14.447321
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 6 from discard
visible_opponents_json:
{"Priya": [{"rank": "6", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}, {"rank": "5", "suit": "hearts"}, {"rank": "K", "suit": "spades"}], "Kenji": [{"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}], "River": [{"rank": "5", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}]}


game_id: 2294a615-a680-412e-8e9f-57f0339bec54
timestamp: 2026-01-25 00:10:14.453649
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "A", "suit": "clubs"}
decision_reason: swapped 6 for A at pos 2
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 2294a615-a680-412e-8e9f-57f0339bec54
timestamp: 2026-01-25 00:10:14.460149
player_id: cpu_1
player_name: Priya
action: take_discard
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took A from discard
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 2294a615-a680-412e-8e9f-57f0339bec54
timestamp: 2026-01-25 00:10:14.466417
player_id: cpu_1
player_name: Priya
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped A for 6 at pos 0
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 2294a615-a680-412e-8e9f-57f0339bec54
timestamp: 2026-01-25 00:10:14.472724
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: 2294a615-a680-412e-8e9f-57f0339bec54
timestamp: 2026-01-25 00:10:14.478977
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 6 for 7 at pos 1
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: 2294a615-a680-412e-8e9f-57f0339bec54
timestamp: 2026-01-25 00:10:14.485384
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: 2294a615-a680-412e-8e9f-57f0339bec54
timestamp: 2026-01-25 00:10:14.491638
player_id: cpu_3
player_name: River
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 7 for 9 at pos 2
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: 2294a615-a680-412e-8e9f-57f0339bec54
timestamp: 2026-01-25 00:10:14.498169
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 2294a615-a680-412e-8e9f-57f0339bec54
timestamp: 2026-01-25 00:10:14.504937
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 3 for 6 at pos 2
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 2294a615-a680-412e-8e9f-57f0339bec54
timestamp: 2026-01-25 00:10:14.511879
player_id: cpu_1
player_name: Priya
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 2294a615-a680-412e-8e9f-57f0339bec54
timestamp: 2026-01-25 00:10:14.520838
player_id: cpu_1
player_name: Priya
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 6 for 7 at pos 3
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 2294a615-a680-412e-8e9f-57f0339bec54
timestamp: 2026-01-25 00:10:14.527075
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: 2294a615-a680-412e-8e9f-57f0339bec54
timestamp: 2026-01-25 00:10:14.533505
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 7 for Q at pos 5
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: 2294a615-a680-412e-8e9f-57f0339bec54
timestamp: 2026-01-25 00:10:14.539900
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: 2294a615-a680-412e-8e9f-57f0339bec54
timestamp: 2026-01-25 00:10:14.546735
player_id: cpu_3
player_name: River
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped 3 for Q at pos 4
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: 2294a615-a680-412e-8e9f-57f0339bec54
timestamp: 2026-01-25 00:10:14.553485
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 2294a615-a680-412e-8e9f-57f0339bec54
timestamp: 2026-01-25 00:10:14.560356
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: swapped 4 for 10 at pos 4
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 2294a615-a680-412e-8e9f-57f0339bec54
timestamp: 2026-01-25 00:10:14.566866
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 2294a615-a680-412e-8e9f-57f0339bec54
timestamp: 2026-01-25 00:10:14.579666
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: 2294a615-a680-412e-8e9f-57f0339bec54
timestamp: 2026-01-25 00:10:14.585928
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped K for 7 at pos 5
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 2294a615-a680-412e-8e9f-57f0339bec54
timestamp: 2026-01-25 00:10:14.592312
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: 2294a615-a680-412e-8e9f-57f0339bec54
timestamp: 2026-01-25 00:10:14.598971
player_id: cpu_3
player_name: River
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 7 for 5 at pos 5
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: 2294a615-a680-412e-8e9f-57f0339bec54
timestamp: 2026-01-25 00:10:14.605404
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 2294a615-a680-412e-8e9f-57f0339bec54
timestamp: 2026-01-25 00:10:14.612249
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 5 for 6 at pos 5
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 2294a615-a680-412e-8e9f-57f0339bec54
timestamp: 2026-01-25 00:10:14.619240
player_id: cpu_1
player_name: Priya
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 6 from discard
visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}], "Kenji": [{"rank": "6", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}, {"rank": "K", "suit": "clubs"}], "River": [{"rank": "5", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}, {"rank": "7", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "7", "suit": "diamonds"}]}


game_id: 2294a615-a680-412e-8e9f-57f0339bec54
timestamp: 2026-01-25 00:10:14.626508
player_id: cpu_1
player_name: Priya
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 6 for 8 at pos 2
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 2294a615-a680-412e-8e9f-57f0339bec54
timestamp: 2026-01-25 00:10:14.633411
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: J
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 2294a615-a680-412e-8e9f-57f0339bec54
timestamp: 2026-01-25 00:10:14.640179
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: J
card_suit: spades
discard_top_json: {"rank": "K", "suit": "diamonds"}
decision_reason: swapped J for K at pos 0
hand_json:
[{"rank": "J", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 6b40903a-6fd5-4ae1-9f28-db5fe681bcf5
timestamp: 2026-01-25 00:10:14.658801
player_id: cpu_0
player_name: Sage
action: take_discard
card_rank: 2
card_suit: spades
decision_reason: took 2 from discard
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Diego": [{"rank": "A", "suit": "spades"}, {"rank": "6", "suit": "hearts"}], "Sofia": [{"rank": "A", "suit": "clubs"}, {"rank": "Q", "suit": "clubs"}], "Kenji": [{"rank": "9", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}]}


game_id: 6b40903a-6fd5-4ae1-9f28-db5fe681bcf5
timestamp: 2026-01-25 00:10:14.665247
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: swapped 2 for 10 at pos 1
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Diego": [{"rank": "A", "suit": "spades"}, {"rank": "6", "suit": "hearts"}], "Sofia": [{"rank": "A", "suit": "clubs"}, {"rank": "Q", "suit": "clubs"}], "Kenji": [{"rank": "9", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}]}


game_id: 6b40903a-6fd5-4ae1-9f28-db5fe681bcf5
timestamp: 2026-01-25 00:10:14.671960
player_id: cpu_1
player_name: Diego
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": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: 6b40903a-6fd5-4ae1-9f28-db5fe681bcf5
timestamp: 2026-01-25 00:10:14.678869
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 3 for 6 at pos 4
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: 6b40903a-6fd5-4ae1-9f28-db5fe681bcf5
timestamp: 2026-01-25 00:10:14.685335
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": true}]

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


game_id: 6b40903a-6fd5-4ae1-9f28-db5fe681bcf5
timestamp: 2026-01-25 00:10:14.691918
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped 6 for Q at pos 5
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 6b40903a-6fd5-4ae1-9f28-db5fe681bcf5
timestamp: 2026-01-25 00:10:14.698480
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}]

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


game_id: 6b40903a-6fd5-4ae1-9f28-db5fe681bcf5
timestamp: 2026-01-25 00:10:14.705137
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 7 for 9 at pos 2
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}]

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


game_id: 6b40903a-6fd5-4ae1-9f28-db5fe681bcf5
timestamp: 2026-01-25 00:10:14.711330
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: K
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}]

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


game_id: 6b40903a-6fd5-4ae1-9f28-db5fe681bcf5
timestamp: 2026-01-25 00:10:14.717926
player_id: cpu_0
player_name: Sage
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped K for 8 at pos 5
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 6b40903a-6fd5-4ae1-9f28-db5fe681bcf5
timestamp: 2026-01-25 00:10:14.724169
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: 6b40903a-6fd5-4ae1-9f28-db5fe681bcf5
timestamp: 2026-01-25 00:10:14.730466
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 8 for 6 at pos 1
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: 6b40903a-6fd5-4ae1-9f28-db5fe681bcf5
timestamp: 2026-01-25 00:10:14.737074
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 6b40903a-6fd5-4ae1-9f28-db5fe681bcf5
timestamp: 2026-01-25 00:10:14.743173
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped 6 for 10 at pos 2
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 6b40903a-6fd5-4ae1-9f28-db5fe681bcf5
timestamp: 2026-01-25 00:10:14.749416
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}]

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


game_id: 6b40903a-6fd5-4ae1-9f28-db5fe681bcf5
timestamp: 2026-01-25 00:10:14.755967
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 2 for 7 at pos 2
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}]

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


game_id: 6b40903a-6fd5-4ae1-9f28-db5fe681bcf5
timestamp: 2026-01-25 00:10:14.762493
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 6b40903a-6fd5-4ae1-9f28-db5fe681bcf5
timestamp: 2026-01-25 00:10:14.768982
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 5 for 4 at pos 2
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 6b40903a-6fd5-4ae1-9f28-db5fe681bcf5
timestamp: 2026-01-25 00:10:14.775436
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: 6b40903a-6fd5-4ae1-9f28-db5fe681bcf5
timestamp: 2026-01-25 00:10:14.781245
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 4 for Q at pos 5
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 6b40903a-6fd5-4ae1-9f28-db5fe681bcf5
timestamp: 2026-01-25 00:10:14.787244
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 6b40903a-6fd5-4ae1-9f28-db5fe681bcf5
timestamp: 2026-01-25 00:10:14.793741
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 2 for 6 at pos 2
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 6b40903a-6fd5-4ae1-9f28-db5fe681bcf5
timestamp: 2026-01-25 00:10:14.800347
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}]

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


game_id: 6b40903a-6fd5-4ae1-9f28-db5fe681bcf5
timestamp: 2026-01-25 00:10:14.806291
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped 6 for 3 at pos 0
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}]

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


game_id: 6b40903a-6fd5-4ae1-9f28-db5fe681bcf5
timestamp: 2026-01-25 00:10:14.813572
player_id: cpu_0
player_name: Sage
action: take_discard
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 6b40903a-6fd5-4ae1-9f28-db5fe681bcf5
timestamp: 2026-01-25 00:10:14.820539
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 3 for 5 at pos 2
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 6b40903a-6fd5-4ae1-9f28-db5fe681bcf5
timestamp: 2026-01-25 00:10:14.827742
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 6b40903a-6fd5-4ae1-9f28-db5fe681bcf5
timestamp: 2026-01-25 00:10:14.834265
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 7 for 8 at pos 1
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 6b40903a-6fd5-4ae1-9f28-db5fe681bcf5
timestamp: 2026-01-25 00:10:14.840125
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 6b40903a-6fd5-4ae1-9f28-db5fe681bcf5
timestamp: 2026-01-25 00:10:14.854064
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}]

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


game_id: 6b40903a-6fd5-4ae1-9f28-db5fe681bcf5
timestamp: 2026-01-25 00:10:14.860905
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 8 for J at pos 4
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}]

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


game_id: 6b40903a-6fd5-4ae1-9f28-db5fe681bcf5
timestamp: 2026-01-25 00:10:14.867539
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 6b40903a-6fd5-4ae1-9f28-db5fe681bcf5
timestamp: 2026-01-25 00:10:14.881378
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 6b40903a-6fd5-4ae1-9f28-db5fe681bcf5
timestamp: 2026-01-25 00:10:14.887786
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 7 for J at pos 3
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 6b40903a-6fd5-4ae1-9f28-db5fe681bcf5
timestamp: 2026-01-25 00:10:14.894216
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "spades"}], "Diego": [{"rank": "7", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}, {"rank": "7", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}], "Kenji": [{"rank": "6", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}, {"rank": "8", "suit": "clubs"}]}


game_id: 6b40903a-6fd5-4ae1-9f28-db5fe681bcf5
timestamp: 2026-01-25 00:10:14.900226
player_id: cpu_2
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 5
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 6b40903a-6fd5-4ae1-9f28-db5fe681bcf5
timestamp: 2026-01-25 00:10:14.907181
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}]

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


game_id: 6b40903a-6fd5-4ae1-9f28-db5fe681bcf5
timestamp: 2026-01-25 00:10:14.913749
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 6 for 8 at pos 4
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}]

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


game_id: 6b40903a-6fd5-4ae1-9f28-db5fe681bcf5
timestamp: 2026-01-25 00:10:14.920350
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Diego": [{"rank": "7", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}, {"rank": "7", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}], "Sofia": [{"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}], "Kenji": [{"rank": "6", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}]}


game_id: 6b40903a-6fd5-4ae1-9f28-db5fe681bcf5
timestamp: 2026-01-25 00:10:14.933344
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 6b40903a-6fd5-4ae1-9f28-db5fe681bcf5
timestamp: 2026-01-25 00:10:14.940207
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 8 for 4 at pos 0
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 6b40903a-6fd5-4ae1-9f28-db5fe681bcf5
timestamp: 2026-01-25 00:10:14.949786
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 6b40903a-6fd5-4ae1-9f28-db5fe681bcf5
timestamp: 2026-01-25 00:10:14.956931
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 4 for 5 at pos 0
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 6b40903a-6fd5-4ae1-9f28-db5fe681bcf5
timestamp: 2026-01-25 00:10:14.963897
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}]

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


game_id: 6b40903a-6fd5-4ae1-9f28-db5fe681bcf5
timestamp: 2026-01-25 00:10:14.970713
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 5 for 6 at pos 0
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}]

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


game_id: 6b40903a-6fd5-4ae1-9f28-db5fe681bcf5
timestamp: 2026-01-25 00:10:14.977779
player_id: cpu_0
player_name: Sage
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 6 from discard
visible_opponents_json:
{"Diego": [{"rank": "8", "suit": "diamonds"}, {"rank": "7", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}, {"rank": "7", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}], "Sofia": [{"rank": "4", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}], "Kenji": [{"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}]}


game_id: 6b40903a-6fd5-4ae1-9f28-db5fe681bcf5
timestamp: 2026-01-25 00:10:14.984785
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 6 for 6 at pos 0
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: c00d4a29-8f68-4ac6-b2e7-7b1504139c82
timestamp: 2026-01-25 00:10:15.003558
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: c00d4a29-8f68-4ac6-b2e7-7b1504139c82
timestamp: 2026-01-25 00:10:15.016327
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: c00d4a29-8f68-4ac6-b2e7-7b1504139c82
timestamp: 2026-01-25 00:10:15.030183
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}]

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


game_id: c00d4a29-8f68-4ac6-b2e7-7b1504139c82
timestamp: 2026-01-25 00:10:15.043675
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: c00d4a29-8f68-4ac6-b2e7-7b1504139c82
timestamp: 2026-01-25 00:10:15.062674
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped K for 7 at pos 4
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]


game_id: c00d4a29-8f68-4ac6-b2e7-7b1504139c82
timestamp: 2026-01-25 00:10:15.069293
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: c00d4a29-8f68-4ac6-b2e7-7b1504139c82
timestamp: 2026-01-25 00:10:15.075803
player_id: cpu_1
player_name: River
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped 3 for 9 at pos 1
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: c00d4a29-8f68-4ac6-b2e7-7b1504139c82
timestamp: 2026-01-25 00:10:15.082273
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}]

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


game_id: c00d4a29-8f68-4ac6-b2e7-7b1504139c82
timestamp: 2026-01-25 00:10:15.088876
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped 4 for 4 at pos 2
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}]

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


game_id: c00d4a29-8f68-4ac6-b2e7-7b1504139c82
timestamp: 2026-01-25 00:10:15.094965
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: c00d4a29-8f68-4ac6-b2e7-7b1504139c82
timestamp: 2026-01-25 00:10:15.101505
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 4 for 7 at pos 2
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: c00d4a29-8f68-4ac6-b2e7-7b1504139c82
timestamp: 2026-01-25 00:10:15.108234
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: c00d4a29-8f68-4ac6-b2e7-7b1504139c82
timestamp: 2026-01-25 00:10:15.115104
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped A for 5 at pos 2
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: c00d4a29-8f68-4ac6-b2e7-7b1504139c82
timestamp: 2026-01-25 00:10:15.121715
player_id: cpu_1
player_name: River
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: c00d4a29-8f68-4ac6-b2e7-7b1504139c82
timestamp: 2026-01-25 00:10:15.128442
player_id: cpu_1
player_name: River
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 5 for Q at pos 5
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: c00d4a29-8f68-4ac6-b2e7-7b1504139c82
timestamp: 2026-01-25 00:10:15.134957
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}]

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


game_id: c00d4a29-8f68-4ac6-b2e7-7b1504139c82
timestamp: 2026-01-25 00:10:15.148379
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: c00d4a29-8f68-4ac6-b2e7-7b1504139c82
timestamp: 2026-01-25 00:10:15.154479
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "A", "suit": "clubs"}
decision_reason: swapped 9 for A at pos 0
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: c00d4a29-8f68-4ac6-b2e7-7b1504139c82
timestamp: 2026-01-25 00:10:15.160598
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took A from discard
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: c00d4a29-8f68-4ac6-b2e7-7b1504139c82
timestamp: 2026-01-25 00:10:15.167247
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped A for 10 at pos 5
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: c00d4a29-8f68-4ac6-b2e7-7b1504139c82
timestamp: 2026-01-25 00:10:15.173802
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: c00d4a29-8f68-4ac6-b2e7-7b1504139c82
timestamp: 2026-01-25 00:10:15.180253
player_id: cpu_1
player_name: River
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped 7 for 10 at pos 3
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: c00d4a29-8f68-4ac6-b2e7-7b1504139c82
timestamp: 2026-01-25 00:10:15.187059
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}], "River": [{"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}, {"rank": "7", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}], "Priya": [{"rank": "9", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}]}


game_id: c00d4a29-8f68-4ac6-b2e7-7b1504139c82
timestamp: 2026-01-25 00:10:15.193806
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "2", "suit": "diamonds"}
decision_reason: swapped 8 for 2 at pos 3
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}]

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


game_id: c00d4a29-8f68-4ac6-b2e7-7b1504139c82
timestamp: 2026-01-25 00:10:15.200453
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: c00d4a29-8f68-4ac6-b2e7-7b1504139c82
timestamp: 2026-01-25 00:10:15.207491
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 2 for 9 at pos 0
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: c00d4a29-8f68-4ac6-b2e7-7b1504139c82
timestamp: 2026-01-25 00:10:15.214416
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: c00d4a29-8f68-4ac6-b2e7-7b1504139c82
timestamp: 2026-01-25 00:10:15.221371
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "2", "suit": "clubs"}
decision_reason: swapped 4 for 2 at pos 3
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: c00d4a29-8f68-4ac6-b2e7-7b1504139c82
timestamp: 2026-01-25 00:10:15.227695
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": "2", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: c00d4a29-8f68-4ac6-b2e7-7b1504139c82
timestamp: 2026-01-25 00:10:15.233704
player_id: cpu_1
player_name: River
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 2 for 7 at pos 3
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: c00d4a29-8f68-4ac6-b2e7-7b1504139c82
timestamp: 2026-01-25 00:10:15.239742
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}]

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


game_id: c00d4a29-8f68-4ac6-b2e7-7b1504139c82
timestamp: 2026-01-25 00:10:15.246552
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 7 for 8 at pos 3
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}]

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


game_id: c00d4a29-8f68-4ac6-b2e7-7b1504139c82
timestamp: 2026-01-25 00:10:15.253014
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: c00d4a29-8f68-4ac6-b2e7-7b1504139c82
timestamp: 2026-01-25 00:10:15.259739
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped 8 for Q at pos 3
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: c00d4a29-8f68-4ac6-b2e7-7b1504139c82
timestamp: 2026-01-25 00:10:15.266411
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: c00d4a29-8f68-4ac6-b2e7-7b1504139c82
timestamp: 2026-01-25 00:10:15.273065
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 6 for J at pos 0
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: c00d4a29-8f68-4ac6-b2e7-7b1504139c82
timestamp: 2026-01-25 00:10:15.279739
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: c00d4a29-8f68-4ac6-b2e7-7b1504139c82
timestamp: 2026-01-25 00:10:15.286058
player_id: cpu_1
player_name: River
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "2", "suit": "spades"}
decision_reason: swapped 6 for 2 at pos 0
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: c00d4a29-8f68-4ac6-b2e7-7b1504139c82
timestamp: 2026-01-25 00:10:15.292277
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}]

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


game_id: c00d4a29-8f68-4ac6-b2e7-7b1504139c82
timestamp: 2026-01-25 00:10:15.299158
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 2 for 7 at pos 3
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}]

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


game_id: c00d4a29-8f68-4ac6-b2e7-7b1504139c82
timestamp: 2026-01-25 00:10:15.305599
player_id: cpu_3
player_name: Priya
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": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: c00d4a29-8f68-4ac6-b2e7-7b1504139c82
timestamp: 2026-01-25 00:10:15.311902
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 7 for 8 at pos 3
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: c00d4a29-8f68-4ac6-b2e7-7b1504139c82
timestamp: 2026-01-25 00:10:15.318498
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: c00d4a29-8f68-4ac6-b2e7-7b1504139c82
timestamp: 2026-01-25 00:10:15.325460
player_id: cpu_0
player_name: Sofia
action: discard
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: discarded Q
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 3556ae44-ab97-4b9a-b0b4-f3a61867373f
timestamp: 2026-01-25 00:10:15.346792
player_id: cpu_0
player_name: Priya
action: take_discard
card_rank: 2
card_suit: spades
decision_reason: took 2 from discard
hand_json:
[{"rank": "Q", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}]

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


game_id: 3556ae44-ab97-4b9a-b0b4-f3a61867373f
timestamp: 2026-01-25 00:10:15.352759
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped 2 for Q at pos 0
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}]

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


game_id: 3556ae44-ab97-4b9a-b0b4-f3a61867373f
timestamp: 2026-01-25 00:10:15.358795
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: 3556ae44-ab97-4b9a-b0b4-f3a61867373f
timestamp: 2026-01-25 00:10:15.371098
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 3556ae44-ab97-4b9a-b0b4-f3a61867373f
timestamp: 2026-01-25 00:10:15.385794
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: 3556ae44-ab97-4b9a-b0b4-f3a61867373f
timestamp: 2026-01-25 00:10:15.431430
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped 2 for 4 at pos 4
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]


game_id: 3556ae44-ab97-4b9a-b0b4-f3a61867373f
timestamp: 2026-01-25 00:10:15.437748
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: 3556ae44-ab97-4b9a-b0b4-f3a61867373f
timestamp: 2026-01-25 00:10:15.443928
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": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: 3556ae44-ab97-4b9a-b0b4-f3a61867373f
timestamp: 2026-01-25 00:10:15.450027
player_id: cpu_0
player_name: Priya
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: took 5 from discard
visible_opponents_json:
{"Kenji": [{"rank": "A", "suit": "spades"}, {"rank": "K", "suit": "spades"}], "Sofia": [{"rank": "K", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}], "Marcus": [{"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}]}


game_id: 3556ae44-ab97-4b9a-b0b4-f3a61867373f
timestamp: 2026-01-25 00:10:15.456719
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 5 for 10 at pos 3
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}]

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


game_id: 3556ae44-ab97-4b9a-b0b4-f3a61867373f
timestamp: 2026-01-25 00:10:15.463478
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
visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "5", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}], "Sofia": [{"rank": "K", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}], "Marcus": [{"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}]}


game_id: 3556ae44-ab97-4b9a-b0b4-f3a61867373f
timestamp: 2026-01-25 00:10:15.469906
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 3 for 8 at pos 1
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: 3556ae44-ab97-4b9a-b0b4-f3a61867373f
timestamp: 2026-01-25 00:10:15.476279
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 3556ae44-ab97-4b9a-b0b4-f3a61867373f
timestamp: 2026-01-25 00:10:15.482675
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped 4 for J at pos 3
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 3556ae44-ab97-4b9a-b0b4-f3a61867373f
timestamp: 2026-01-25 00:10:15.488829
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: 3556ae44-ab97-4b9a-b0b4-f3a61867373f
timestamp: 2026-01-25 00:10:15.501775
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}]

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


game_id: 3556ae44-ab97-4b9a-b0b4-f3a61867373f
timestamp: 2026-01-25 00:10:15.508115
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "2", "suit": "clubs"}
decision_reason: swapped 5 for 2 at pos 5
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 3556ae44-ab97-4b9a-b0b4-f3a61867373f
timestamp: 2026-01-25 00:10:15.515994
player_id: cpu_1
player_name: Kenji
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": "J", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: 3556ae44-ab97-4b9a-b0b4-f3a61867373f
timestamp: 2026-01-25 00:10:15.522160
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped 2 for 3 at pos 1
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: 3556ae44-ab97-4b9a-b0b4-f3a61867373f
timestamp: 2026-01-25 00:10:15.528752
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}]

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


game_id: 3556ae44-ab97-4b9a-b0b4-f3a61867373f
timestamp: 2026-01-25 00:10:15.534931
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 3 for 6 at pos 5
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 3556ae44-ab97-4b9a-b0b4-f3a61867373f
timestamp: 2026-01-25 00:10:15.540995
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 6 from discard
visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "5", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}], "Kenji": [{"rank": "2", "suit": "clubs"}, {"rank": "A", "suit": "spades"}, {"rank": "K", "suit": "spades"}], "Sofia": [{"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}]}


game_id: 3556ae44-ab97-4b9a-b0b4-f3a61867373f
timestamp: 2026-01-25 00:10:15.548400
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 6 for 6 at pos 3
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: 3556ae44-ab97-4b9a-b0b4-f3a61867373f
timestamp: 2026-01-25 00:10:15.554871
player_id: cpu_0
player_name: Priya
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 3556ae44-ab97-4b9a-b0b4-f3a61867373f
timestamp: 2026-01-25 00:10:15.561301
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 6 for 6 at pos 2
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 3556ae44-ab97-4b9a-b0b4-f3a61867373f
timestamp: 2026-01-25 00:10:15.567691
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: 3556ae44-ab97-4b9a-b0b4-f3a61867373f
timestamp: 2026-01-25 00:10:15.574049
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 6 for J at pos 0
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: 3556ae44-ab97-4b9a-b0b4-f3a61867373f
timestamp: 2026-01-25 00:10:15.580870
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 3556ae44-ab97-4b9a-b0b4-f3a61867373f
timestamp: 2026-01-25 00:10:15.594316
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: 3556ae44-ab97-4b9a-b0b4-f3a61867373f
timestamp: 2026-01-25 00:10:15.606693
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 3556ae44-ab97-4b9a-b0b4-f3a61867373f
timestamp: 2026-01-25 00:10:15.613068
player_id: cpu_0
player_name: Priya
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped A for 6 at pos 2
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 3556ae44-ab97-4b9a-b0b4-f3a61867373f
timestamp: 2026-01-25 00:10:15.619195
player_id: cpu_1
player_name: Kenji
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": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: 3556ae44-ab97-4b9a-b0b4-f3a61867373f
timestamp: 2026-01-25 00:10:15.625252
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 6 for 7 at pos 3
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: 3556ae44-ab97-4b9a-b0b4-f3a61867373f
timestamp: 2026-01-25 00:10:15.631799
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took 7 from discard
visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}], "Kenji": [{"rank": "6", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "A", "suit": "spades"}, {"rank": "6", "suit": "clubs"}, {"rank": "K", "suit": "spades"}], "Marcus": [{"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}, {"rank": "6", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}]}


game_id: 3556ae44-ab97-4b9a-b0b4-f3a61867373f
timestamp: 2026-01-25 00:10:15.637925
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 7 for 5 at pos 1
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 3556ae44-ab97-4b9a-b0b4-f3a61867373f
timestamp: 2026-01-25 00:10:15.644357
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took 5 from discard
visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}], "Kenji": [{"rank": "6", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "A", "suit": "spades"}, {"rank": "6", "suit": "clubs"}, {"rank": "K", "suit": "spades"}], "Sofia": [{"rank": "7", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}]}


game_id: 3556ae44-ab97-4b9a-b0b4-f3a61867373f
timestamp: 2026-01-25 00:10:15.650981
player_id: cpu_3
player_name: Marcus
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": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: 3556ae44-ab97-4b9a-b0b4-f3a61867373f
timestamp: 2026-01-25 00:10:15.657004
player_id: cpu_0
player_name: Priya
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 3556ae44-ab97-4b9a-b0b4-f3a61867373f
timestamp: 2026-01-25 00:10:15.663240
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 6 for 6 at pos 1
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 3556ae44-ab97-4b9a-b0b4-f3a61867373f
timestamp: 2026-01-25 00:10:15.669607
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: 3556ae44-ab97-4b9a-b0b4-f3a61867373f
timestamp: 2026-01-25 00:10:15.676061
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 6 for Q at pos 5
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 3556ae44-ab97-4b9a-b0b4-f3a61867373f
timestamp: 2026-01-25 00:10:15.682821
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 3556ae44-ab97-4b9a-b0b4-f3a61867373f
timestamp: 2026-01-25 00:10:15.689862
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 4 for J at pos 0
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 3556ae44-ab97-4b9a-b0b4-f3a61867373f
timestamp: 2026-01-25 00:10:15.696237
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: 3556ae44-ab97-4b9a-b0b4-f3a61867373f
timestamp: 2026-01-25 00:10:15.702618
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 4 for 5 at pos 3
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": true}]

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


game_id: db45daa2-46fe-44ee-86f3-a5bc63ffd91f
timestamp: 2026-01-25 00:10:15.720962
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: K
card_suit: spades
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "Q", "suit": "spades"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "7", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Kenji": [{"rank": "J", "suit": "spades"}, {"rank": "3", "suit": "spades"}]}


game_id: db45daa2-46fe-44ee-86f3-a5bc63ffd91f
timestamp: 2026-01-25 00:10:15.728058
player_id: cpu_0
player_name: Maya
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: swapped K for 9 at pos 2
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "Q", "suit": "spades"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "7", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Kenji": [{"rank": "J", "suit": "spades"}, {"rank": "3", "suit": "spades"}]}


game_id: db45daa2-46fe-44ee-86f3-a5bc63ffd91f
timestamp: 2026-01-25 00:10:15.734994
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Maya": [{"rank": "K", "suit": "spades"}, {"rank": "9", "suit": "spades"}], "River": [{"rank": "7", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Kenji": [{"rank": "J", "suit": "spades"}, {"rank": "3", "suit": "spades"}]}


game_id: db45daa2-46fe-44ee-86f3-a5bc63ffd91f
timestamp: 2026-01-25 00:10:15.743062
player_id: cpu_1
player_name: Priya
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped A for Q at pos 1
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Maya": [{"rank": "K", "suit": "spades"}, {"rank": "9", "suit": "spades"}], "River": [{"rank": "7", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Kenji": [{"rank": "J", "suit": "spades"}, {"rank": "3", "suit": "spades"}]}


game_id: db45daa2-46fe-44ee-86f3-a5bc63ffd91f
timestamp: 2026-01-25 00:10:15.750135
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Maya": [{"rank": "K", "suit": "spades"}, {"rank": "9", "suit": "spades"}], "Priya": [{"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "spades"}], "Kenji": [{"rank": "J", "suit": "spades"}, {"rank": "3", "suit": "spades"}]}


game_id: db45daa2-46fe-44ee-86f3-a5bc63ffd91f
timestamp: 2026-01-25 00:10:15.756922
player_id: cpu_2
player_name: River
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped A for J at pos 0
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Maya": [{"rank": "K", "suit": "spades"}, {"rank": "9", "suit": "spades"}], "Priya": [{"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "spades"}], "Kenji": [{"rank": "J", "suit": "spades"}, {"rank": "3", "suit": "spades"}]}


game_id: db45daa2-46fe-44ee-86f3-a5bc63ffd91f
timestamp: 2026-01-25 00:10:15.763749
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took J from discard
hand_json:
[{"rank": "J", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Maya": [{"rank": "K", "suit": "spades"}, {"rank": "9", "suit": "spades"}], "Priya": [{"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "A", "suit": "hearts"}, {"rank": "7", "suit": "hearts"}, {"rank": "A", "suit": "spades"}]}


game_id: db45daa2-46fe-44ee-86f3-a5bc63ffd91f
timestamp: 2026-01-25 00:10:15.770734
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped J for 5 at pos 3
hand_json:
[{"rank": "J", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Maya": [{"rank": "K", "suit": "spades"}, {"rank": "9", "suit": "spades"}], "Priya": [{"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "A", "suit": "hearts"}, {"rank": "7", "suit": "hearts"}, {"rank": "A", "suit": "spades"}]}


game_id: db45daa2-46fe-44ee-86f3-a5bc63ffd91f
timestamp: 2026-01-25 00:10:15.778001
player_id: cpu_0
player_name: Maya
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "A", "suit": "hearts"}, {"rank": "7", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Kenji": [{"rank": "J", "suit": "spades"}, {"rank": "J", "suit": "hearts"}, {"rank": "3", "suit": "spades"}]}


game_id: db45daa2-46fe-44ee-86f3-a5bc63ffd91f
timestamp: 2026-01-25 00:10:15.785748
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped 5 for 9 at pos 3
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "A", "suit": "hearts"}, {"rank": "7", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Kenji": [{"rank": "J", "suit": "spades"}, {"rank": "J", "suit": "hearts"}, {"rank": "3", "suit": "spades"}]}


game_id: db45daa2-46fe-44ee-86f3-a5bc63ffd91f
timestamp: 2026-01-25 00:10:15.793205
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: db45daa2-46fe-44ee-86f3-a5bc63ffd91f
timestamp: 2026-01-25 00:10:15.803035
player_id: cpu_1
player_name: Priya
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "A", "suit": "clubs"}
decision_reason: swapped 2 for A at pos 1
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: db45daa2-46fe-44ee-86f3-a5bc63ffd91f
timestamp: 2026-01-25 00:10:15.810792
player_id: cpu_2
player_name: River
action: take_discard
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took A from discard
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}]

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


game_id: db45daa2-46fe-44ee-86f3-a5bc63ffd91f
timestamp: 2026-01-25 00:10:15.819728
player_id: cpu_2
player_name: River
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped A for 7 at pos 2
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}]

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


game_id: db45daa2-46fe-44ee-86f3-a5bc63ffd91f
timestamp: 2026-01-25 00:10:15.826605
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "J", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: db45daa2-46fe-44ee-86f3-a5bc63ffd91f
timestamp: 2026-01-25 00:10:15.833076
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped 7 for J at pos 0
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: db45daa2-46fe-44ee-86f3-a5bc63ffd91f
timestamp: 2026-01-25 00:10:15.840308
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "A", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "A", "suit": "spades"}], "Kenji": [{"rank": "7", "suit": "hearts"}, {"rank": "J", "suit": "hearts"}, {"rank": "3", "suit": "spades"}]}


game_id: db45daa2-46fe-44ee-86f3-a5bc63ffd91f
timestamp: 2026-01-25 00:10:15.847052
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "K", "suit": "diamonds"}
decision_reason: swapped 6 for K at pos 0
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "2", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "A", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "A", "suit": "spades"}], "Kenji": [{"rank": "7", "suit": "hearts"}, {"rank": "J", "suit": "hearts"}, {"rank": "3", "suit": "spades"}]}


game_id: db45daa2-46fe-44ee-86f3-a5bc63ffd91f
timestamp: 2026-01-25 00:10:15.853663
player_id: cpu_1
player_name: Priya
action: take_discard
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took K from discard
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: db45daa2-46fe-44ee-86f3-a5bc63ffd91f
timestamp: 2026-01-25 00:10:15.860305
player_id: cpu_1
player_name: Priya
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "2", "suit": "diamonds"}
decision_reason: swapped K for 2 at pos 4
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: db45daa2-46fe-44ee-86f3-a5bc63ffd91f
timestamp: 2026-01-25 00:10:15.867756
player_id: cpu_2
player_name: River
action: take_discard
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}]

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


game_id: db45daa2-46fe-44ee-86f3-a5bc63ffd91f
timestamp: 2026-01-25 00:10:15.877481
player_id: cpu_2
player_name: River
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "A", "suit": "hearts"}
decision_reason: swapped 2 for A at pos 0
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}]

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


game_id: db45daa2-46fe-44ee-86f3-a5bc63ffd91f
timestamp: 2026-01-25 00:10:15.885457
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took A from discard
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: db45daa2-46fe-44ee-86f3-a5bc63ffd91f
timestamp: 2026-01-25 00:10:15.893350
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped A for J at pos 3
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: db45daa2-46fe-44ee-86f3-a5bc63ffd91f
timestamp: 2026-01-25 00:10:15.900347
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: db45daa2-46fe-44ee-86f3-a5bc63ffd91f
timestamp: 2026-01-25 00:10:15.907474
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped 6 for 4 at pos 5
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: db45daa2-46fe-44ee-86f3-a5bc63ffd91f
timestamp: 2026-01-25 00:10:15.914276
player_id: cpu_1
player_name: Priya
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: db45daa2-46fe-44ee-86f3-a5bc63ffd91f
timestamp: 2026-01-25 00:10:15.921231
player_id: cpu_1
player_name: Priya
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 4 for 6 at pos 2
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: db45daa2-46fe-44ee-86f3-a5bc63ffd91f
timestamp: 2026-01-25 00:10:15.928190
player_id: cpu_2
player_name: River
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}]

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


game_id: db45daa2-46fe-44ee-86f3-a5bc63ffd91f
timestamp: 2026-01-25 00:10:15.935067
player_id: cpu_2
player_name: River
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 6 for 5 at pos 4
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}]

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


game_id: db45daa2-46fe-44ee-86f3-a5bc63ffd91f
timestamp: 2026-01-25 00:10:15.941902
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: db45daa2-46fe-44ee-86f3-a5bc63ffd91f
timestamp: 2026-01-25 00:10:15.948419
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 5 for 7 at pos 0
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: db45daa2-46fe-44ee-86f3-a5bc63ffd91f
timestamp: 2026-01-25 00:10:15.955380
player_id: cpu_0
player_name: Maya
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: db45daa2-46fe-44ee-86f3-a5bc63ffd91f
timestamp: 2026-01-25 00:10:15.962274
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped 7 for 4 at pos 4
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: db45daa2-46fe-44ee-86f3-a5bc63ffd91f
timestamp: 2026-01-25 00:10:15.968745
player_id: cpu_1
player_name: Priya
action: take_discard
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: db45daa2-46fe-44ee-86f3-a5bc63ffd91f
timestamp: 2026-01-25 00:10:15.975466
player_id: cpu_1
player_name: Priya
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 4 for 4 at pos 5
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: db45daa2-46fe-44ee-86f3-a5bc63ffd91f
timestamp: 2026-01-25 00:10:15.982519
player_id: cpu_2
player_name: River
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}]

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


game_id: db45daa2-46fe-44ee-86f3-a5bc63ffd91f
timestamp: 2026-01-25 00:10:15.989310
player_id: cpu_2
player_name: River
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 4 for 6 at pos 4
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}]

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


game_id: db45daa2-46fe-44ee-86f3-a5bc63ffd91f
timestamp: 2026-01-25 00:10:15.996317
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: db45daa2-46fe-44ee-86f3-a5bc63ffd91f
timestamp: 2026-01-25 00:10:16.003232
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 6 for 4 at pos 1
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: db45daa2-46fe-44ee-86f3-a5bc63ffd91f
timestamp: 2026-01-25 00:10:16.009440
player_id: cpu_0
player_name: Maya
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: db45daa2-46fe-44ee-86f3-a5bc63ffd91f
timestamp: 2026-01-25 00:10:16.015830
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 4 for 7 at pos 4
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: db45daa2-46fe-44ee-86f3-a5bc63ffd91f
timestamp: 2026-01-25 00:10:16.022369
player_id: cpu_1
player_name: Priya
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: db45daa2-46fe-44ee-86f3-a5bc63ffd91f
timestamp: 2026-01-25 00:10:16.029540
player_id: cpu_1
player_name: Priya
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped 7 for 10 at pos 0
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: db45daa2-46fe-44ee-86f3-a5bc63ffd91f
timestamp: 2026-01-25 00:10:16.036754
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}]

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


game_id: db45daa2-46fe-44ee-86f3-a5bc63ffd91f
timestamp: 2026-01-25 00:10:16.055080
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: db45daa2-46fe-44ee-86f3-a5bc63ffd91f
timestamp: 2026-01-25 00:10:16.062063
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 7 for 5 at pos 4
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: db45daa2-46fe-44ee-86f3-a5bc63ffd91f
timestamp: 2026-01-25 00:10:16.068954
player_id: cpu_0
player_name: Maya
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": "6", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: db45daa2-46fe-44ee-86f3-a5bc63ffd91f
timestamp: 2026-01-25 00:10:16.075300
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 5 for 6 at pos 0
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: 9d8df7a7-86bd-4327-bee2-56383a560381
timestamp: 2026-01-25 00:10:16.095002
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: 2
card_suit: clubs
decision_reason: took 2 from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": true}]

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


game_id: 9d8df7a7-86bd-4327-bee2-56383a560381
timestamp: 2026-01-25 00:10:16.101946
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 2 for 9 at pos 5
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 9d8df7a7-86bd-4327-bee2-56383a560381
timestamp: 2026-01-25 00:10:16.108486
player_id: cpu_1
player_name: Sofia
action: draw_deck
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Diego": [{"rank": "5", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}], "Maya": [{"rank": "9", "suit": "hearts"}, {"rank": "10", "suit": "clubs"}], "River": [{"rank": "6", "suit": "clubs"}, {"rank": "A", "suit": "spades"}]}


game_id: 9d8df7a7-86bd-4327-bee2-56383a560381
timestamp: 2026-01-25 00:10:16.115002
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 7 for J at pos 2
hand_json:
[{"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Diego": [{"rank": "5", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}], "Maya": [{"rank": "9", "suit": "hearts"}, {"rank": "10", "suit": "clubs"}], "River": [{"rank": "6", "suit": "clubs"}, {"rank": "A", "suit": "spades"}]}


game_id: 9d8df7a7-86bd-4327-bee2-56383a560381
timestamp: 2026-01-25 00:10:16.121671
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 9d8df7a7-86bd-4327-bee2-56383a560381
timestamp: 2026-01-25 00:10:16.135363
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 9d8df7a7-86bd-4327-bee2-56383a560381
timestamp: 2026-01-25 00:10:16.144291
player_id: cpu_3
player_name: River
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped K for 6 at pos 1
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 9d8df7a7-86bd-4327-bee2-56383a560381
timestamp: 2026-01-25 00:10:16.151145
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: 9
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 9d8df7a7-86bd-4327-bee2-56383a560381
timestamp: 2026-01-25 00:10:16.165040
player_id: cpu_1
player_name: Sofia
action: draw_deck
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 9d8df7a7-86bd-4327-bee2-56383a560381
timestamp: 2026-01-25 00:10:16.171714
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 5 for 7 at pos 2
hand_json:
[{"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 9d8df7a7-86bd-4327-bee2-56383a560381
timestamp: 2026-01-25 00:10:16.178669
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 9d8df7a7-86bd-4327-bee2-56383a560381
timestamp: 2026-01-25 00:10:16.186164
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped 7 for 10 at pos 4
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 9d8df7a7-86bd-4327-bee2-56383a560381
timestamp: 2026-01-25 00:10:16.193616
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 9d8df7a7-86bd-4327-bee2-56383a560381
timestamp: 2026-01-25 00:10:16.200109
player_id: cpu_3
player_name: River
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped 5 for 3 at pos 2
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 9d8df7a7-86bd-4327-bee2-56383a560381
timestamp: 2026-01-25 00:10:16.206457
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 3 from discard
visible_opponents_json:
{"Sofia": [{"rank": "5", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}], "Maya": [{"rank": "9", "suit": "hearts"}, {"rank": "7", "suit": "diamonds"}], "River": [{"rank": "K", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "A", "suit": "spades"}]}


game_id: 9d8df7a7-86bd-4327-bee2-56383a560381
timestamp: 2026-01-25 00:10:16.212949
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "2", "suit": "spades"}
decision_reason: swapped 3 for 2 at pos 0
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 9d8df7a7-86bd-4327-bee2-56383a560381
timestamp: 2026-01-25 00:10:16.220345
player_id: cpu_1
player_name: Sofia
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "2", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 9d8df7a7-86bd-4327-bee2-56383a560381
timestamp: 2026-01-25 00:10:16.232807
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 9d8df7a7-86bd-4327-bee2-56383a560381
timestamp: 2026-01-25 00:10:16.239335
player_id: cpu_2
player_name: Maya
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped K for 9 at pos 2
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 9d8df7a7-86bd-4327-bee2-56383a560381
timestamp: 2026-01-25 00:10:16.246005
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 9d8df7a7-86bd-4327-bee2-56383a560381
timestamp: 2026-01-25 00:10:16.252571
player_id: cpu_3
player_name: River
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 4 for 5 at pos 2
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 9d8df7a7-86bd-4327-bee2-56383a560381
timestamp: 2026-01-25 00:10:16.262751
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 9d8df7a7-86bd-4327-bee2-56383a560381
timestamp: 2026-01-25 00:10:16.270267
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped 5 for Q at pos 4
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 9d8df7a7-86bd-4327-bee2-56383a560381
timestamp: 2026-01-25 00:10:16.276693
player_id: cpu_1
player_name: Sofia
action: draw_deck
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Diego": [{"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}, {"rank": "5", "suit": "clubs"}, {"rank": "2", "suit": "clubs"}], "Maya": [{"rank": "K", "suit": "hearts"}, {"rank": "7", "suit": "diamonds"}], "River": [{"rank": "K", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}]}


game_id: 9d8df7a7-86bd-4327-bee2-56383a560381
timestamp: 2026-01-25 00:10:16.283708
player_id: cpu_1
player_name: Sofia
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": "10", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 9d8df7a7-86bd-4327-bee2-56383a560381
timestamp: 2026-01-25 00:10:16.290888
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 9d8df7a7-86bd-4327-bee2-56383a560381
timestamp: 2026-01-25 00:10:16.297267
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 5 for 7 at pos 4
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 9d8df7a7-86bd-4327-bee2-56383a560381
timestamp: 2026-01-25 00:10:16.304110
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 9d8df7a7-86bd-4327-bee2-56383a560381
timestamp: 2026-01-25 00:10:16.311271
player_id: cpu_3
player_name: River
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped 7 for Q at pos 3
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 9d8df7a7-86bd-4327-bee2-56383a560381
timestamp: 2026-01-25 00:10:16.317896
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 9d8df7a7-86bd-4327-bee2-56383a560381
timestamp: 2026-01-25 00:10:16.324833
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 5 for J at pos 2
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 9d8df7a7-86bd-4327-bee2-56383a560381
timestamp: 2026-01-25 00:10:16.331297
player_id: cpu_1
player_name: Sofia
action: draw_deck
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 9d8df7a7-86bd-4327-bee2-56383a560381
timestamp: 2026-01-25 00:10:16.337825
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped K for 3 at pos 2
hand_json:
[{"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 9d8df7a7-86bd-4327-bee2-56383a560381
timestamp: 2026-01-25 00:10:16.348247
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 9d8df7a7-86bd-4327-bee2-56383a560381
timestamp: 2026-01-25 00:10:16.354761
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 3 for 5 at pos 4
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 9d8df7a7-86bd-4327-bee2-56383a560381
timestamp: 2026-01-25 00:10:16.361006
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 9d8df7a7-86bd-4327-bee2-56383a560381
timestamp: 2026-01-25 00:10:16.367504
player_id: cpu_3
player_name: River
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 5 for 7 at pos 3
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 9d8df7a7-86bd-4327-bee2-56383a560381
timestamp: 2026-01-25 00:10:16.374037
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 9d8df7a7-86bd-4327-bee2-56383a560381
timestamp: 2026-01-25 00:10:16.380412
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 7 for 7 at pos 3
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 9d8df7a7-86bd-4327-bee2-56383a560381
timestamp: 2026-01-25 00:10:16.386889
player_id: cpu_1
player_name: Sofia
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 9d8df7a7-86bd-4327-bee2-56383a560381
timestamp: 2026-01-25 00:10:16.393425
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 7 for Q at pos 1
hand_json:
[{"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 9d8df7a7-86bd-4327-bee2-56383a560381
timestamp: 2026-01-25 00:10:16.400111
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: K
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 9d8df7a7-86bd-4327-bee2-56383a560381
timestamp: 2026-01-25 00:10:16.406744
player_id: cpu_2
player_name: Maya
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped K for 3 at pos 4
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 9d8df7a7-86bd-4327-bee2-56383a560381
timestamp: 2026-01-25 00:10:16.413285
player_id: cpu_3
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": "6", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 9d8df7a7-86bd-4327-bee2-56383a560381
timestamp: 2026-01-25 00:10:16.419310
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 3
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}]

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


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

visible_opponents_json:
{"Diego": [{"rank": "8", "suit": "hearts"}, {"rank": "8", "suit": "spades"}], "Priya": [{"rank": "6", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "River": [{"rank": "Q", "suit": "spades"}, {"rank": "Q", "suit": "clubs"}]}


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

visible_opponents_json:
{"Diego": [{"rank": "8", "suit": "hearts"}, {"rank": "8", "suit": "spades"}], "Priya": [{"rank": "6", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "River": [{"rank": "Q", "suit": "spades"}, {"rank": "Q", "suit": "clubs"}]}


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

visible_opponents_json:
{"Sage": [{"rank": "7", "suit": "diamonds"}, {"rank": "9", "suit": "diamonds"}], "Priya": [{"rank": "6", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "River": [{"rank": "Q", "suit": "spades"}, {"rank": "Q", "suit": "clubs"}]}


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

visible_opponents_json:
{"Sage": [{"rank": "7", "suit": "diamonds"}, {"rank": "9", "suit": "diamonds"}], "Priya": [{"rank": "6", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "River": [{"rank": "Q", "suit": "spades"}, {"rank": "Q", "suit": "clubs"}]}


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

visible_opponents_json:
{"Sage": [{"rank": "7", "suit": "diamonds"}, {"rank": "9", "suit": "diamonds"}], "Diego": [{"rank": "7", "suit": "clubs"}, {"rank": "8", "suit": "spades"}], "River": [{"rank": "Q", "suit": "spades"}, {"rank": "Q", "suit": "clubs"}]}


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

visible_opponents_json:
{"Sage": [{"rank": "7", "suit": "diamonds"}, {"rank": "9", "suit": "diamonds"}], "Diego": [{"rank": "7", "suit": "clubs"}, {"rank": "8", "suit": "spades"}], "River": [{"rank": "Q", "suit": "spades"}, {"rank": "Q", "suit": "clubs"}]}


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

visible_opponents_json:
{"Sage": [{"rank": "7", "suit": "diamonds"}, {"rank": "9", "suit": "diamonds"}], "Diego": [{"rank": "7", "suit": "clubs"}, {"rank": "8", "suit": "spades"}], "Priya": [{"rank": "2", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}]}


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

visible_opponents_json:
{"Sage": [{"rank": "7", "suit": "diamonds"}, {"rank": "9", "suit": "diamonds"}], "Diego": [{"rank": "7", "suit": "clubs"}, {"rank": "8", "suit": "spades"}], "Priya": [{"rank": "2", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}]}


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

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


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

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


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

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


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

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


game_id: ffe49435-f97f-4c38-a5b6-c3cabd1bcda6
timestamp: 2026-01-25 00:10:16.522437
player_id: cpu_2
player_name: Priya
action: draw_deck
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


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

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


game_id: ffe49435-f97f-4c38-a5b6-c3cabd1bcda6
timestamp: 2026-01-25 00:10:16.535143
player_id: cpu_3
player_name: River
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": "4", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


game_id: ffe49435-f97f-4c38-a5b6-c3cabd1bcda6
timestamp: 2026-01-25 00:10:16.586820
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


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

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


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

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


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

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


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

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


game_id: ffe49435-f97f-4c38-a5b6-c3cabd1bcda6
timestamp: 2026-01-25 00:10:16.637877
player_id: cpu_2
player_name: Priya
action: draw_deck
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


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

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


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

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


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

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


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

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


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

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


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


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

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


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

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


game_id: ffe49435-f97f-4c38-a5b6-c3cabd1bcda6
timestamp: 2026-01-25 00:10:16.705402
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: Q
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


